diff --git a/diagrams/dataset.svg b/diagrams/dataset.svg index 8a4d6f6..1d7add5 100644 --- a/diagrams/dataset.svg +++ b/diagrams/dataset.svg @@ -1,7 +1,7 @@ - eya_def_tools.data_models.dataset.Dataset:e->eya_def_tools.data_models.dataset.DatasetStatistic:w - - - + + + diff --git a/diagrams/eya_def_document.svg b/diagrams/eya_def_document.svg index ff14389..eab3209 100644 --- a/diagrams/eya_def_document.svg +++ b/diagrams/eya_def_document.svg @@ -1,45 +1,45 @@ - - - + + Entity Relationship Diagram - -Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> + +Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> eya_def_tools.data_models.dataset.Dataset - -Dataset - -label - -Optional[str] - -description - -Optional[str] - -comments - -Optional[str] - -assessment_period - -Optional[AssessmentPeriod(StrEnum)] - -dimensions - -Optional[list[DatasetDimension(StrEnum)]] - -statistics - -list[DatasetStatistic] + +Dataset + +label + +Optional[str] + +description + +Optional[str] + +comments + +Optional[str] + +assessment_period + +Optional[AssessmentPeriod(StrEnum)] + +dimensions + +Optional[list[DatasetDimension(StrEnum)]] + +statistics + +list[DatasetStatistic] @@ -47,1734 +47,1686 @@ eya_def_tools.data_models.dataset.DatasetStatistic - -DatasetStatistic - -description - -Optional[str] - -comments - -Optional[str] - -statistic_type - -UnionType[BasicStatisticType(StrEnum), ExceedanceLevelStatisticType] - -values - -Union[float, list[tuple[list[Union[int, float, str]], float]]] + +DatasetStatistic + +description + +Optional[str] + +comments + +Optional[str] + +statistic_type + +UnionType[BasicStatisticType(StrEnum), ExceedanceLevelStatisticType] + +values + +Union[float, list[tuple[list[Union[int, float, str]], float]]] eya_def_tools.data_models.dataset.Dataset:e->eya_def_tools.data_models.dataset.DatasetStatistic:w - - - + + + eya_def_tools.data_models.dataset.ExceedanceLevelStatisticType - -ExceedanceLevelStatisticType - -exceedance_level - -float + +ExceedanceLevelStatisticType + +exceedance_level + +float eya_def_tools.data_models.dataset.DatasetStatistic:e->eya_def_tools.data_models.dataset.ExceedanceLevelStatisticType:w - - - - - - + + + + + + eya_def_tools.data_models.energy_assessment.EnergyAssessment - -EnergyAssessment - -gross_energy_assessment - -GrossEnergyAssessment - -plant_performance_assessment - -PlantPerformanceAssessment - -net_energy_assessment - -NetEnergyAssessment + +EnergyAssessment + +gross_energy_assessment + +GrossEnergyAssessment + +plant_performance_assessment + +PlantPerformanceAssessment + +net_energy_assessment + +NetEnergyAssessment eya_def_tools.data_models.energy_assessment.GrossEnergyAssessment - - -GrossEnergyAssessment - -process_description - -AssessmentProcessDescription - -results - -EnergyAssessmentResults + + +GrossEnergyAssessment + +description + +Optional[str] + +comments + +Optional[str] + +results + +EnergyAssessmentResults eya_def_tools.data_models.energy_assessment.EnergyAssessment:e->eya_def_tools.data_models.energy_assessment.GrossEnergyAssessment:w - - - - - - + + + + + + eya_def_tools.data_models.energy_assessment.NetEnergyAssessment - - -NetEnergyAssessment - -process_description - -AssessmentProcessDescription - -results - -EnergyAssessmentResults + + +NetEnergyAssessment + +description + +Optional[str] + +comments + +Optional[str] + +results + +EnergyAssessmentResults eya_def_tools.data_models.energy_assessment.EnergyAssessment:e->eya_def_tools.data_models.energy_assessment.NetEnergyAssessment:w - - - - - - + + + + + + eya_def_tools.data_models.plant_performance.PlantPerformanceAssessment - -PlantPerformanceAssessment - -categories - -list[PlantPerformanceCategory] - -results - -PlantPerformanceResults + +PlantPerformanceAssessment + +categories + +list[PlantPerformanceCategory] + +results + +PlantPerformanceResults eya_def_tools.data_models.energy_assessment.EnergyAssessment:e->eya_def_tools.data_models.plant_performance.PlantPerformanceAssessment:w - - - - - - + + + + + + eya_def_tools.data_models.energy_assessment.EnergyAssessmentResults - - -EnergyAssessmentResults - -annual_energy_production - -list[Dataset] + + +EnergyAssessmentResults + +annual_energy_production + +list[Dataset] eya_def_tools.data_models.energy_assessment.GrossEnergyAssessment:e->eya_def_tools.data_models.energy_assessment.EnergyAssessmentResults:w - - - - - - - - - -eya_def_tools.data_models.process_description.AssessmentProcessDescription - - -AssessmentProcessDescription - -label - -str - -description - -str - -comments - -Optional[str] - - - - - -eya_def_tools.data_models.energy_assessment.GrossEnergyAssessment:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - - - - + + + + + + - + eya_def_tools.data_models.energy_assessment.NetEnergyAssessment:e->eya_def_tools.data_models.energy_assessment.EnergyAssessmentResults:w - - - - - - - - - -eya_def_tools.data_models.energy_assessment.NetEnergyAssessment:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - - - - + + + + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceCategory - - -PlantPerformanceCategory - -label - -PlantPerformanceCategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -subcategories - -list[PlantPerformanceSubcategory] - -results - -PlantPerformanceResults + + +PlantPerformanceCategory + +label + +PlantPerformanceCategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +subcategories + +list[PlantPerformanceSubcategory] + +results + +PlantPerformanceResults - + eya_def_tools.data_models.plant_performance.PlantPerformanceAssessment:e->eya_def_tools.data_models.plant_performance.PlantPerformanceCategory:w - - - + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceResults - - -PlantPerformanceResults - -efficiency - -list[Dataset] + + +PlantPerformanceResults + +efficiency + +list[Dataset] - + eya_def_tools.data_models.plant_performance.PlantPerformanceAssessment:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - + + + + + + eya_def_tools.data_models.energy_assessment.EnergyAssessmentResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + - + eya_def_tools.data_models.eya_def.EyaDefDocument - - -EyaDefDocument - -uri - -Optional[Url] - -schema_uri - -Url - -uuid - -Optional[UUID] - -title - -str - -description - -Optional[str] - -comments - -Optional[str] - -project_name - -str - -project_country - -Alpha2CountryCode(StrEnum) - -document_id - -Optional[str] - -document_version - -Optional[str] - -issue_date - -date - -contributors - -list[ReportContributor] - -issuing_organisations - -list[Organisation] - -receiving_organisations - -Optional[list[Organisation]] - -contract_reference - -Optional[str] - -confidentiality_classification - -Optional[str] - -epsg_srid - -int - -utc_offset - -float - -wind_farms - -list[WindFarmConfiguration] - -measurement_stations - -Annotated[Optional[list[dict[str, Any]]], IEATask43WraDataModel] - -reference_wind_farms - -Optional[list[ReferenceWindFarm]] - -reference_meteorological_datasets - -Optional[list[Union[ReferenceMeteorologicalDatasetMetadata, Annotated[list[dict[str, Any]], IEATask43WraDataModel]]]] - -wind_resource_assessments - -list[WindResourceAssessment] - -turbine_models - -Annotated[Optional[list[dict[str, Any]]], IEC61400x16PowerCurveDataModel] - -scenarios - -list[Scenario] + + +EyaDefDocument + +uri + +Optional[Url] + +schema_uri + +Url + +uuid + +Optional[UUID] + +title + +str + +description + +Optional[str] + +comments + +Optional[str] + +project_name + +str + +project_country + +Alpha2CountryCode(StrEnum) + +document_id + +Optional[str] + +document_version + +Optional[str] + +issue_date + +date + +contributors + +list[ReportContributor] + +issuing_organisations + +list[Organisation] + +receiving_organisations + +Optional[list[Organisation]] + +contract_reference + +Optional[str] + +confidentiality_classification + +Optional[str] + +epsg_srid + +int + +utc_offset + +float + +wind_farms + +list[WindFarmConfiguration] + +measurement_stations + +Annotated[Optional[list[dict[str, Any]]], IEATask43WraDataModel] + +reference_wind_farms + +Optional[list[ReferenceWindFarm]] + +reference_meteorological_datasets + +Optional[list[Union[ReferenceMeteorologicalDatasetMetadata, Annotated[list[dict[str, Any]], IEATask43WraDataModel]]]] + +wind_resource_assessments + +list[WindResourceAssessment] + +turbine_models + +Annotated[Optional[list[dict[str, Any]]], IEC61400x16PowerCurveDataModel] + +scenarios + +list[Scenario] - + eya_def_tools.data_models.eya_def_header.ReportContributor - - -ReportContributor - -name - -str - -email_address - -Optional[EmailStr] - -contributor_type - -ReportContributorType(StrEnum) - -contribution_comments - -Optional[str] - -completion_date - -Optional[date] + + +ReportContributor + +name + +str + +email_address + +Optional[EmailStr] + +contributor_type + +ReportContributorType(StrEnum) + +contribution_comments + +Optional[str] + +completion_date + +Optional[date] - + eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.eya_def_header.ReportContributor:w - - - + + + - + eya_def_tools.data_models.general.Organisation - - -Organisation - -name - -str - -abbreviation - -Optional[str] - -address - -Optional[str] - -contact_name - -Optional[str] + + +Organisation + +name + +str + +abbreviation + +Optional[str] + +address + +Optional[str] + +contact_name + +Optional[str] - + eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.general.Organisation:w - - - + + + - + eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.general.Organisation:w - - - - - + + + + + - + eya_def_tools.data_models.reference_met_data.ReferenceMeteorologicalDatasetMetadata - - -ReferenceMeteorologicalDatasetMetadata - -id - -str - -description - -str - -comments - -Optional[str] - -locations - -list[IdLocation] - -time_resolution - -TimeResolution - -start_date - -date - -end_date - -date + + +ReferenceMeteorologicalDatasetMetadata + +id + +str + +description + +str + +comments + +Optional[str] + +locations + +list[IdLocation] + +time_resolution + +TimeResolution + +start_date + +date + +end_date + +date - + eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.reference_met_data.ReferenceMeteorologicalDatasetMetadata:w - - - - - + + + + + - + eya_def_tools.data_models.reference_wind_farm.ReferenceWindFarm - - -ReferenceWindFarm - -id - -str - -description - -Optional[str] - -comments - -Optional[str] - -wind_farm_id - -str - -operational_datasets - -list[OperationalDatasetMetadata] + + +ReferenceWindFarm + +id + +str + +description + +Optional[str] + +comments + +Optional[str] + +wind_farm_id + +str + +operational_datasets + +list[OperationalDatasetMetadata] - + eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.reference_wind_farm.ReferenceWindFarm:w - - - - - + + + + + - + eya_def_tools.data_models.scenario.Scenario - - -Scenario - -id - -Optional[str] - -label - -str - -description - -Optional[str] - -comments - -Optional[str] - -is_main_scenario - -Optional[bool] - -operational_lifetime_length_years - -float - -wind_farm_ids - -list[str] - -turbine_wind_resource_assessment - -TurbineWindResourceAssessment - -energy_assessment - -EnergyAssessment + + +Scenario + +id + +Optional[str] + +label + +str + +description + +Optional[str] + +comments + +Optional[str] + +is_main_scenario + +Optional[bool] + +wind_farm_ids + +list[str] + +turbine_wind_resource_assessment + +TurbineWindResourceAssessment + +energy_assessment + +EnergyAssessment - + eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.scenario.Scenario:w - - - + + + - + eya_def_tools.data_models.wind_farm.WindFarmConfiguration - - -WindFarmConfiguration - -id - -str - -label - -str - -abbreviation - -Optional[str] - -description - -Optional[str] - -comments - -Optional[str] - -turbines - -list[TurbineConfiguration] - -relevance - -WindFarmRelevance(StrEnum) - -operational_lifetime_start_date - -date - -operational_lifetime_end_date - -Optional[date] - -installed_capacity - -float - -export_capacity - -Optional[float] - -restrictions - -Optional[list[OperationalRestriction]] + + +WindFarmConfiguration + +id + +str + +label + +str + +abbreviation + +Optional[str] + +description + +Optional[str] + +comments + +Optional[str] + +turbines + +list[TurbineConfiguration] + +relevance + +WindFarmRelevance(StrEnum) + +operational_lifetime_start_date + +date + +operational_lifetime_end_date + +date + +installed_capacity + +float + +export_capacity + +Optional[float] + +restrictions + +Optional[list[OperationalRestriction]] - + eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.wind_farm.WindFarmConfiguration:w - - - + + + - + eya_def_tools.data_models.wind_resource.WindResourceAssessment - - -WindResourceAssessment - -id - -str - -description - -Optional[str] - -comments - -Optional[str] - -input_characteristics - -WindResourceInputCharacteristics - -results - -WindResourceResults + + +WindResourceAssessment + +id + +str + +description + +Optional[str] + +comments + +Optional[str] + +input_characteristics + +WindResourceInputCharacteristics + +results + +WindResourceResults - + eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.wind_resource.WindResourceAssessment:w - - - + + + - + eya_def_tools.data_models.general.TimeResolution - - -TimeResolution - -value - -float - -unit - -TimeMeasurementUnit(StrEnum) + + +TimeResolution + +value + +float + +unit + +TimeMeasurementUnit(StrEnum) - + eya_def_tools.data_models.reference_met_data.ReferenceMeteorologicalDatasetMetadata:e->eya_def_tools.data_models.general.TimeResolution:w - - - - - - + + + + + + - + eya_def_tools.data_models.spatial.IdLocation - - -IdLocation - -id - -str - -x - -float - -y - -float + + +IdLocation + +id + +str + +x + +float + +y + +float - + eya_def_tools.data_models.reference_met_data.ReferenceMeteorologicalDatasetMetadata:e->eya_def_tools.data_models.spatial.IdLocation:w - - - + + + - + eya_def_tools.data_models.reference_wind_farm.OperationalDatasetMetadata - - -OperationalDatasetMetadata - -id - -str - -label - -Optional[str] - -description - -Optional[str] - -comments - -Optional[str] - -classification - -UnionType[SingleSourceDatasetClassification, DerivedDatasetClassification] - -supplying_organisation - -Organisation - -integrity_verification - -Optional[str] - -time_resolution - -Optional[TimeResolution] - -start_date - -date - -end_date - -date - -data_variables - -list[OperationalDataVariable] + + +OperationalDatasetMetadata + +id + +str + +label + +Optional[str] + +description + +Optional[str] + +comments + +Optional[str] + +classification + +UnionType[SingleSourceDatasetClassification, DerivedDatasetClassification] + +supplying_organisation + +Organisation + +integrity_verification + +Optional[str] + +time_resolution + +Optional[TimeResolution] + +start_date + +date + +end_date + +date + +data_variables + +list[OperationalDataVariable] - + eya_def_tools.data_models.reference_wind_farm.ReferenceWindFarm:e->eya_def_tools.data_models.reference_wind_farm.OperationalDatasetMetadata:w - - - + + + - + eya_def_tools.data_models.scenario.Scenario:e->eya_def_tools.data_models.energy_assessment.EnergyAssessment:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment - - -TurbineWindResourceAssessment - -wind_resource_assessment_id_reference - -str - -description - -Optional[str] - -comments - -Optional[str] - -wind_spatial_modelling_processes - -list[AssessmentProcessDescription] - -results - -TurbineWindResourceResults - -wind_uncertainty_assessment - -WindUncertaintyAssessment + + +TurbineWindResourceAssessment + +wind_resource_assessment_id_reference + +str + +description + +Optional[str] + +comments + +Optional[str] + +results + +TurbineWindResourceResults + +wind_uncertainty_assessment + +WindUncertaintyAssessment - + eya_def_tools.data_models.scenario.Scenario:e->eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_farm.OperationalRestriction - - -OperationalRestriction - -label - -str - -description - -str - -comments - -Optional[str] - -start_datetime - -Optional[datetime] - -end_datetime - -Optional[datetime] + + +OperationalRestriction + +label + +str + +description + +str + +comments + +Optional[str] + +start_datetime + +Optional[datetime] + +end_datetime + +Optional[datetime] - + eya_def_tools.data_models.wind_farm.WindFarmConfiguration:e->eya_def_tools.data_models.wind_farm.OperationalRestriction:w - - - - - + + + + + - + eya_def_tools.data_models.wind_farm.TurbineConfiguration - - -TurbineConfiguration - -id - -str - -label - -Optional[str] - -description - -Optional[str] - -comments - -Optional[str] - -location - -Location - -ground_level_altitude - -float - -hub_height - -float - -turbine_model_id - -str - -operational_lifetime_start_date - -Optional[date] - -operational_lifetime_end_date - -Optional[date] - -restrictions - -Optional[list[OperationalRestriction]] + + +TurbineConfiguration + +id + +str + +label + +Optional[str] + +description + +Optional[str] + +comments + +Optional[str] + +location + +Location + +ground_level_altitude + +float + +hub_height + +float + +turbine_model_id + +str + +operational_lifetime_start_date + +Optional[date] + +operational_lifetime_end_date + +Optional[date] + +restrictions + +Optional[list[OperationalRestriction]] - + eya_def_tools.data_models.wind_farm.WindFarmConfiguration:e->eya_def_tools.data_models.wind_farm.TurbineConfiguration:w - - - + + + - + eya_def_tools.data_models.wind_resource.WindResourceInputCharacteristics - - -WindResourceInputCharacteristics - -data_availability - -list[Dataset] + + +WindResourceInputCharacteristics + +data_availability + +list[Dataset] - + eya_def_tools.data_models.wind_resource.WindResourceAssessment:e->eya_def_tools.data_models.wind_resource.WindResourceInputCharacteristics:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_resource.WindResourceResults - - -WindResourceResults - -wind_speed - -list[Dataset] - -probability - -list[Dataset] - -turbulence_intensity - -Optional[list[Dataset]] - -wind_shear_exponent - -Optional[list[Dataset]] - -temperature - -Optional[list[Dataset]] - -air_density - -Optional[list[Dataset]] + + +WindResourceResults + +wind_speed + +list[Dataset] + +probability + +list[Dataset] + +ambient_turbulence_intensity + +Optional[list[Dataset]] + +wind_shear_exponent + +Optional[list[Dataset]] + +temperature + +Optional[list[Dataset]] + +air_density + +Optional[list[Dataset]] + +displacement_height + +Optional[list[Dataset]] - + eya_def_tools.data_models.wind_resource.WindResourceAssessment:e->eya_def_tools.data_models.wind_resource.WindResourceResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceCategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory - - -PlantPerformanceSubcategory - -label - -PlantPerformanceSubcategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -basis - -AssessmentBasis(StrEnum) - -variability - -TimeVariabilityType(StrEnum) - -assessment_process_descriptions - -Optional[list[AssessmentProcessDescription]] - -elements - -Optional[list[PlantPerformanceSubcategoryElement]] - -results - -PlantPerformanceResults + + +PlantPerformanceSubcategory + +label + +PlantPerformanceSubcategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +basis + +AssessmentBasis(StrEnum) + +variability + +TimeVariabilityType(StrEnum) + +elements + +Optional[list[PlantPerformanceSubcategoryElement]] + +results + +PlantPerformanceResults - + eya_def_tools.data_models.plant_performance.PlantPerformanceCategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:w - - - + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - - -eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - - - + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement - - -PlantPerformanceSubcategoryElement - -label - -str - -description - -Optional[str] - -comments - -Optional[str] - -basis - -AssessmentBasis(StrEnum) - -variability - -TimeVariabilityType(StrEnum) - -is_independent - -bool - -assessment_process_descriptions - -Optional[list[AssessmentProcessDescription]] - -results - -PlantPerformanceResults + + +PlantPerformanceSubcategoryElement + +label + +str + +description + +Optional[str] + +comments + +Optional[str] + +basis + +AssessmentBasis(StrEnum) + +variability + +TimeVariabilityType(StrEnum) + +is_independent + +bool + +results + +PlantPerformanceResults - + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement:w - - - - - - - - -eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - - - + + + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.reference_wind_farm.OperationalDataVariable - - -OperationalDataVariable - -variable_type - -OperationalDataVariableType(StrEnum) - -label - -Optional[str] - -description - -Optional[str] - -comments - -Optional[str] - -data_level - -OperationalDataLevel(StrEnum) - -statistic_types - -Optional[list[BasicStatisticType(StrEnum)]] - -time_resolution - -Optional[TimeResolution] + + +OperationalDataVariable + +variable_type + +OperationalDataVariableType(StrEnum) + +label + +Optional[str] + +description + +Optional[str] + +comments + +Optional[str] + +data_level + +OperationalDataLevel(StrEnum) + +statistic_types + +Optional[list[BasicStatisticType(StrEnum)]] + +time_resolution + +Optional[TimeResolution] - + eya_def_tools.data_models.reference_wind_farm.OperationalDataVariable:e->eya_def_tools.data_models.general.TimeResolution:w - - - - - + + + + + - + eya_def_tools.data_models.reference_wind_farm.OperationalDatasetMetadata:e->eya_def_tools.data_models.general.Organisation:w - - - - - - + + + + + + - + eya_def_tools.data_models.reference_wind_farm.OperationalDatasetMetadata:e->eya_def_tools.data_models.general.TimeResolution:w - - - - - + + + + + - + eya_def_tools.data_models.reference_wind_farm.OperationalDatasetMetadata:e->eya_def_tools.data_models.reference_wind_farm.OperationalDataVariable:w - - - + + + - + eya_def_tools.utils.doc_utils.eya_def_erdantic.DerivedDatasetClassification - - -DerivedDatasetClassification - -data_type - -OperationalDataType(StrEnum) - -data_source_type - -OperationalDataSourceType(StrEnum) + + +DerivedDatasetClassification + +data_type + +OperationalDataType(StrEnum) + +data_source_type + +OperationalDataSourceType(StrEnum) - + eya_def_tools.data_models.reference_wind_farm.OperationalDatasetMetadata:e->eya_def_tools.utils.doc_utils.eya_def_erdantic.DerivedDatasetClassification:w - - - - - - + + + + + + - + eya_def_tools.utils.doc_utils.eya_def_erdantic.SingleSourceDatasetClassification - - -SingleSourceDatasetClassification - -data_type - -OperationalDataType(StrEnum) - -data_source_type - -OperationalDataSourceType(StrEnum) + + +SingleSourceDatasetClassification + +data_type + +OperationalDataType(StrEnum) + +data_source_type + +OperationalDataSourceType(StrEnum) - + eya_def_tools.data_models.reference_wind_farm.OperationalDatasetMetadata:e->eya_def_tools.utils.doc_utils.eya_def_erdantic.SingleSourceDatasetClassification:w - - - - - - - - - -eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - + + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults - - -TurbineWindResourceResults - -wind_speed - -list[Dataset] - -probability - -Optional[list[Dataset]] - -turbulence_intensity - -Optional[list[Dataset]] - -wind_shear_exponent - -Optional[list[Dataset]] - -temperature - -Optional[list[Dataset]] - -air_density - -Optional[list[Dataset]] + + +TurbineWindResourceResults + +wind_speed + +list[Dataset] + +probability + +Optional[list[Dataset]] + +ambient_turbulence_intensity + +Optional[list[Dataset]] + +wind_shear_exponent + +Optional[list[Dataset]] + +temperature + +Optional[list[Dataset]] + +air_density + +Optional[list[Dataset]] + +displacement_height + +Optional[list[Dataset]] - + eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:e->eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment - - -WindUncertaintyAssessment - -categories - -list[WindUncertaintyCategory] - -results - -UncertaintyResults + + +WindUncertaintyAssessment + +categories + +list[WindUncertaintyCategory] + +results + +UncertaintyResults - + eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment:w - - - - - - + + + + + + - + eya_def_tools.data_models.spatial.Location - - -Location - -x - -float - -y - -float + + +Location + +x + +float + +y + +float - + eya_def_tools.data_models.wind_farm.TurbineConfiguration:e->eya_def_tools.data_models.spatial.Location:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_farm.TurbineConfiguration:e->eya_def_tools.data_models.wind_farm.OperationalRestriction:w - - - - - + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + +eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w + + + + + + + + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_uncertainty.UncertaintyResults - - -UncertaintyResults - -relative_wind_speed_uncertainty - -Optional[list[Dataset]] - -relative_energy_uncertainty - -Optional[list[Dataset]] + + +UncertaintyResults + +relative_wind_speed_uncertainty + +Optional[list[Dataset]] + +relative_energy_uncertainty + +Optional[list[Dataset]] - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory - - -WindUncertaintyCategory - -label - -WindUncertaintyCategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -subcategories - -list[WindUncertaintySubcategory] - -results - -UncertaintyResults + + +WindUncertaintyCategory + +label + +WindUncertaintyCategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +subcategories + +list[WindUncertaintySubcategory] + +results + +UncertaintyResults - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory:w - - - + + + - + eya_def_tools.data_models.wind_resource.WindResourceInputCharacteristics:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + - + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + - + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + - + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + +eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w + + + + + + + + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory - - -WindUncertaintySubcategory - -label - -WindUncertaintySubcategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -elements - -Optional[list[WindUncertaintySubcategoryElement]] - -results - -UncertaintyResults + + +WindUncertaintySubcategory + +label + +WindUncertaintySubcategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +elements + +Optional[list[WindUncertaintySubcategoryElement]] + +results + +UncertaintyResults - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory:w - - - + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategoryElement - - -WindUncertaintySubcategoryElement - -label - -str - -description - -Optional[str] - -comments - -Optional[str] - -results - -UncertaintyResults + + +WindUncertaintySubcategoryElement + +label + +str + +description + +Optional[str] + +comments + +Optional[str] + +results + +UncertaintyResults - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategoryElement:w - - - - - + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategoryElement:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + diff --git a/diagrams/eya_def_document_top_level.svg b/diagrams/eya_def_document_top_level.svg index 965f7f5..afe96be 100644 --- a/diagrams/eya_def_document_top_level.svg +++ b/diagrams/eya_def_document_top_level.svg @@ -1,121 +1,121 @@ - - - + + Entity Relationship Diagram - + Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> eya_def_tools.data_models.eya_def.EyaDefDocument - -EyaDefDocument - -uri - -Optional[Url] - -schema_uri - -Url - -uuid - -Optional[UUID] - -title - -str - -description - -Optional[str] - -comments - -Optional[str] - -project_name - -str - -project_country - -Alpha2CountryCode(StrEnum) - -document_id - -Optional[str] - -document_version - -Optional[str] - -issue_date - -date - -contributors - -list[ReportContributor] - -issuing_organisations - -list[Organisation] - -receiving_organisations - -Optional[list[Organisation]] - -contract_reference - -Optional[str] - -confidentiality_classification - -Optional[str] - -epsg_srid - -int - -utc_offset - -float - -wind_farms - -list[WindFarmConfiguration] - -measurement_stations - -Annotated[Optional[list[dict[str, Any]]], IEATask43WraDataModel] - -reference_wind_farms - -Optional[list[ReferenceWindFarm]] - -reference_meteorological_datasets - -Optional[list[Union[ReferenceMeteorologicalDatasetMetadata, Annotated[list[dict[str, Any]], IEATask43WraDataModel]]]] - -wind_resource_assessments - -list[WindResourceAssessment] - -turbine_models - -Annotated[Optional[list[dict[str, Any]]], IEC61400x16PowerCurveDataModel] - -scenarios - -list[Scenario] + +EyaDefDocument + +uri + +Optional[Url] + +schema_uri + +Url + +uuid + +Optional[UUID] + +title + +str + +description + +Optional[str] + +comments + +Optional[str] + +project_name + +str + +project_country + +Alpha2CountryCode(StrEnum) + +document_id + +Optional[str] + +document_version + +Optional[str] + +issue_date + +date + +contributors + +list[ReportContributor] + +issuing_organisations + +list[Organisation] + +receiving_organisations + +Optional[list[Organisation]] + +contract_reference + +Optional[str] + +confidentiality_classification + +Optional[str] + +epsg_srid + +int + +utc_offset + +float + +wind_farms + +list[WindFarmConfiguration] + +measurement_stations + +Annotated[Optional[list[dict[str, Any]]], IEATask43WraDataModel] + +reference_wind_farms + +Optional[list[ReferenceWindFarm]] + +reference_meteorological_datasets + +Optional[list[Union[ReferenceMeteorologicalDatasetMetadata, Annotated[list[dict[str, Any]], IEATask43WraDataModel]]]] + +wind_resource_assessments + +list[WindResourceAssessment] + +turbine_models + +Annotated[Optional[list[dict[str, Any]]], IEC61400x16PowerCurveDataModel] + +scenarios + +list[Scenario] @@ -123,193 +123,189 @@ eya_def_tools.data_models.eya_def_header.ReportContributor - -ReportContributor - -name - -str - -email_address - -Optional[EmailStr] - -contributor_type - -ReportContributorType(StrEnum) - -contribution_comments - -Optional[str] - -completion_date - -Optional[date] + +ReportContributor + +name + +str + +email_address + +Optional[EmailStr] + +contributor_type + +ReportContributorType(StrEnum) + +contribution_comments + +Optional[str] + +completion_date + +Optional[date] eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.eya_def_header.ReportContributor:w - - - + + + eya_def_tools.data_models.general.Organisation - -Organisation - -name - -str - -abbreviation - -Optional[str] - -address - -Optional[str] - -contact_name - -Optional[str] + +Organisation + +name + +str + +abbreviation + +Optional[str] + +address + +Optional[str] + +contact_name + +Optional[str] eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.general.Organisation:w - - - + + + eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.general.Organisation:w - - - - - + + + + + eya_def_tools.data_models.reference_met_data.ReferenceMeteorologicalDatasetMetadata - -ReferenceMeteorologicalDatasetMetadata - -id - -str - -description - -str - -comments - -Optional[str] - -locations - -list[IdLocation] - -time_resolution - -TimeResolution - -start_date - -date - -end_date - -date + +ReferenceMeteorologicalDatasetMetadata + +id + +str + +description + +str + +comments + +Optional[str] + +locations + +list[IdLocation] + +time_resolution + +TimeResolution + +start_date + +date + +end_date + +date eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.reference_met_data.ReferenceMeteorologicalDatasetMetadata:w - - - - - + + + + + eya_def_tools.data_models.reference_wind_farm.ReferenceWindFarm - -ReferenceWindFarm - -id - -str - -description - -Optional[str] - -comments - -Optional[str] - -wind_farm_id - -str - -operational_datasets - -list[OperationalDatasetMetadata] + +ReferenceWindFarm + +id + +str + +description + +Optional[str] + +comments + +Optional[str] + +wind_farm_id + +str + +operational_datasets + +list[OperationalDatasetMetadata] eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.reference_wind_farm.ReferenceWindFarm:w - - - - - + + + + + eya_def_tools.data_models.scenario.Scenario - - -Scenario - -id - -Optional[str] + + +Scenario -label +id -str +Optional[str] -description +label -Optional[str] +str -comments +description Optional[str] -is_main_scenario +comments -Optional[bool] +Optional[str] -operational_lifetime_length_years +is_main_scenario -float +Optional[bool] wind_farm_ids @@ -328,109 +324,109 @@ eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.scenario.Scenario:w - - - + + + eya_def_tools.data_models.wind_farm.WindFarmConfiguration - - -WindFarmConfiguration - -id - -str - -label - -str - -abbreviation - -Optional[str] - -description - -Optional[str] - -comments - -Optional[str] - -turbines - -list[TurbineConfiguration] - -relevance - -WindFarmRelevance(StrEnum) - -operational_lifetime_start_date - -date - -operational_lifetime_end_date - -Optional[date] - -installed_capacity - -float - -export_capacity - -Optional[float] - -restrictions - -Optional[list[OperationalRestriction]] + + +WindFarmConfiguration + +id + +str + +label + +str + +abbreviation + +Optional[str] + +description + +Optional[str] + +comments + +Optional[str] + +turbines + +list[TurbineConfiguration] + +relevance + +WindFarmRelevance(StrEnum) + +operational_lifetime_start_date + +date + +operational_lifetime_end_date + +date + +installed_capacity + +float + +export_capacity + +Optional[float] + +restrictions + +Optional[list[OperationalRestriction]] eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.wind_farm.WindFarmConfiguration:w - - - + + + eya_def_tools.data_models.wind_resource.WindResourceAssessment - -WindResourceAssessment - -id - -str - -description - -Optional[str] - -comments - -Optional[str] - -input_characteristics - -WindResourceInputCharacteristics - -results - -WindResourceResults + +WindResourceAssessment + +id + +str + +description + +Optional[str] + +comments + +Optional[str] + +input_characteristics + +WindResourceInputCharacteristics + +results + +WindResourceResults eya_def_tools.data_models.eya_def.EyaDefDocument:e->eya_def_tools.data_models.wind_resource.WindResourceAssessment:w - - - + + + diff --git a/diagrams/plant_performance_assessment.svg b/diagrams/plant_performance_assessment.svg index 326a639..f40bdc4 100644 --- a/diagrams/plant_performance_assessment.svg +++ b/diagrams/plant_performance_assessment.svg @@ -1,45 +1,45 @@ - - - + + Entity Relationship Diagram - -Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> + +Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> eya_def_tools.data_models.dataset.Dataset - -Dataset - -label - -Optional[str] - -description - -Optional[str] - -comments - -Optional[str] - -assessment_period - -Optional[AssessmentPeriod(StrEnum)] - -dimensions - -Optional[list[DatasetDimension(StrEnum)]] - -statistics - -list[DatasetStatistic] + +Dataset + +label + +Optional[str] + +description + +Optional[str] + +comments + +Optional[str] + +assessment_period + +Optional[AssessmentPeriod(StrEnum)] + +dimensions + +Optional[list[DatasetDimension(StrEnum)]] + +statistics + +list[DatasetStatistic] @@ -47,71 +47,71 @@ eya_def_tools.data_models.dataset.DatasetStatistic - -DatasetStatistic - -description - -Optional[str] - -comments - -Optional[str] - -statistic_type - -UnionType[BasicStatisticType(StrEnum), ExceedanceLevelStatisticType] - -values - -Union[float, list[tuple[list[Union[int, float, str]], float]]] + +DatasetStatistic + +description + +Optional[str] + +comments + +Optional[str] + +statistic_type + +UnionType[BasicStatisticType(StrEnum), ExceedanceLevelStatisticType] + +values + +Union[float, list[tuple[list[Union[int, float, str]], float]]] eya_def_tools.data_models.dataset.Dataset:e->eya_def_tools.data_models.dataset.DatasetStatistic:w - - - + + + eya_def_tools.data_models.dataset.ExceedanceLevelStatisticType - -ExceedanceLevelStatisticType - -exceedance_level - -float + +ExceedanceLevelStatisticType + +exceedance_level + +float eya_def_tools.data_models.dataset.DatasetStatistic:e->eya_def_tools.data_models.dataset.ExceedanceLevelStatisticType:w - - - - - - + + + + + + eya_def_tools.data_models.plant_performance.PlantPerformanceAssessment - -PlantPerformanceAssessment - -categories - -list[PlantPerformanceCategory] - -results - -PlantPerformanceResults + +PlantPerformanceAssessment + +categories + +list[PlantPerformanceCategory] + +results + +PlantPerformanceResults @@ -119,234 +119,187 @@ eya_def_tools.data_models.plant_performance.PlantPerformanceCategory - -PlantPerformanceCategory - -label - -PlantPerformanceCategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -subcategories - -list[PlantPerformanceSubcategory] - -results - -PlantPerformanceResults + +PlantPerformanceCategory + +label + +PlantPerformanceCategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +subcategories + +list[PlantPerformanceSubcategory] + +results + +PlantPerformanceResults eya_def_tools.data_models.plant_performance.PlantPerformanceAssessment:e->eya_def_tools.data_models.plant_performance.PlantPerformanceCategory:w - - - + + + eya_def_tools.data_models.plant_performance.PlantPerformanceResults - -PlantPerformanceResults - -efficiency - -list[Dataset] + +PlantPerformanceResults + +efficiency + +list[Dataset] eya_def_tools.data_models.plant_performance.PlantPerformanceAssessment:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - + + + + + + eya_def_tools.data_models.plant_performance.PlantPerformanceCategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - + + + + + + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory - - -PlantPerformanceSubcategory - -label - -PlantPerformanceSubcategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -basis - -AssessmentBasis(StrEnum) - -variability - -TimeVariabilityType(StrEnum) - -assessment_process_descriptions - -Optional[list[AssessmentProcessDescription]] - -elements - -Optional[list[PlantPerformanceSubcategoryElement]] - -results - -PlantPerformanceResults + + +PlantPerformanceSubcategory + +label + +PlantPerformanceSubcategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +basis + +AssessmentBasis(StrEnum) + +variability + +TimeVariabilityType(StrEnum) + +elements + +Optional[list[PlantPerformanceSubcategoryElement]] + +results + +PlantPerformanceResults eya_def_tools.data_models.plant_performance.PlantPerformanceCategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:w - - - + + + eya_def_tools.data_models.plant_performance.PlantPerformanceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - + + + + + + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement - - -PlantPerformanceSubcategoryElement - -label - -str - -description - -Optional[str] - -comments - -Optional[str] - -basis - -AssessmentBasis(StrEnum) - -variability - -TimeVariabilityType(StrEnum) - -is_independent - -bool - -assessment_process_descriptions - -Optional[list[AssessmentProcessDescription]] - -results - -PlantPerformanceResults + + +PlantPerformanceSubcategoryElement + +label + +str + +description + +Optional[str] + +comments + +Optional[str] + +basis + +AssessmentBasis(StrEnum) + +variability + +TimeVariabilityType(StrEnum) + +is_independent + +bool + +results + +PlantPerformanceResults eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement:w - - - - - - - - -eya_def_tools.data_models.process_description.AssessmentProcessDescription - - -AssessmentProcessDescription - -label - -str - -description - -str - -comments - -Optional[str] - - - - - -eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - - - + + + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - - - - -eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - - - + + + + + + diff --git a/diagrams/reference_wind_farm.svg b/diagrams/reference_wind_farm.svg index 44c6f99..a0a8c91 100644 --- a/diagrams/reference_wind_farm.svg +++ b/diagrams/reference_wind_farm.svg @@ -1,7 +1,7 @@ - eya_def_tools.data_models.reference_wind_farm.OperationalDatasetMetadata:e->eya_def_tools.data_models.reference_wind_farm.OperationalDataVariable:w - - - + + + @@ -263,9 +263,9 @@ eya_def_tools.data_models.reference_wind_farm.ReferenceWindFarm:e->eya_def_tools.data_models.reference_wind_farm.OperationalDatasetMetadata:w - - - + + + diff --git a/diagrams/scenario.svg b/diagrams/scenario.svg index 4fcf1a1..9ed285a 100644 --- a/diagrams/scenario.svg +++ b/diagrams/scenario.svg @@ -1,45 +1,45 @@ - - - + + Entity Relationship Diagram - -Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> + +Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> eya_def_tools.data_models.dataset.Dataset - -Dataset - -label - -Optional[str] - -description - -Optional[str] - -comments - -Optional[str] - -assessment_period - -Optional[AssessmentPeriod(StrEnum)] - -dimensions - -Optional[list[DatasetDimension(StrEnum)]] - -statistics - -list[DatasetStatistic] + +Dataset + +label + +Optional[str] + +description + +Optional[str] + +comments + +Optional[str] + +assessment_period + +Optional[AssessmentPeriod(StrEnum)] + +dimensions + +Optional[list[DatasetDimension(StrEnum)]] + +statistics + +list[DatasetStatistic] @@ -47,859 +47,798 @@ eya_def_tools.data_models.dataset.DatasetStatistic - -DatasetStatistic - -description - -Optional[str] - -comments - -Optional[str] - -statistic_type - -UnionType[BasicStatisticType(StrEnum), ExceedanceLevelStatisticType] - -values - -Union[float, list[tuple[list[Union[int, float, str]], float]]] + +DatasetStatistic + +description + +Optional[str] + +comments + +Optional[str] + +statistic_type + +UnionType[BasicStatisticType(StrEnum), ExceedanceLevelStatisticType] + +values + +Union[float, list[tuple[list[Union[int, float, str]], float]]] eya_def_tools.data_models.dataset.Dataset:e->eya_def_tools.data_models.dataset.DatasetStatistic:w - - - + + + eya_def_tools.data_models.dataset.ExceedanceLevelStatisticType - -ExceedanceLevelStatisticType - -exceedance_level - -float + +ExceedanceLevelStatisticType + +exceedance_level + +float eya_def_tools.data_models.dataset.DatasetStatistic:e->eya_def_tools.data_models.dataset.ExceedanceLevelStatisticType:w - - - - - - + + + + + + eya_def_tools.data_models.energy_assessment.EnergyAssessment - -EnergyAssessment - -gross_energy_assessment - -GrossEnergyAssessment - -plant_performance_assessment - -PlantPerformanceAssessment - -net_energy_assessment - -NetEnergyAssessment + +EnergyAssessment + +gross_energy_assessment + +GrossEnergyAssessment + +plant_performance_assessment + +PlantPerformanceAssessment + +net_energy_assessment + +NetEnergyAssessment eya_def_tools.data_models.energy_assessment.GrossEnergyAssessment - - -GrossEnergyAssessment - -process_description - -AssessmentProcessDescription - -results - -EnergyAssessmentResults + + +GrossEnergyAssessment + +description + +Optional[str] + +comments + +Optional[str] + +results + +EnergyAssessmentResults eya_def_tools.data_models.energy_assessment.EnergyAssessment:e->eya_def_tools.data_models.energy_assessment.GrossEnergyAssessment:w - - - - - - + + + + + + eya_def_tools.data_models.energy_assessment.NetEnergyAssessment - - -NetEnergyAssessment - -process_description - -AssessmentProcessDescription - -results - -EnergyAssessmentResults + + +NetEnergyAssessment + +description + +Optional[str] + +comments + +Optional[str] + +results + +EnergyAssessmentResults eya_def_tools.data_models.energy_assessment.EnergyAssessment:e->eya_def_tools.data_models.energy_assessment.NetEnergyAssessment:w - - - - - - + + + + + + eya_def_tools.data_models.plant_performance.PlantPerformanceAssessment - -PlantPerformanceAssessment - -categories - -list[PlantPerformanceCategory] - -results - -PlantPerformanceResults + +PlantPerformanceAssessment + +categories + +list[PlantPerformanceCategory] + +results + +PlantPerformanceResults eya_def_tools.data_models.energy_assessment.EnergyAssessment:e->eya_def_tools.data_models.plant_performance.PlantPerformanceAssessment:w - - - - - - + + + + + + eya_def_tools.data_models.energy_assessment.EnergyAssessmentResults - - -EnergyAssessmentResults - -annual_energy_production - -list[Dataset] + + +EnergyAssessmentResults + +annual_energy_production + +list[Dataset] eya_def_tools.data_models.energy_assessment.GrossEnergyAssessment:e->eya_def_tools.data_models.energy_assessment.EnergyAssessmentResults:w - - - - - - - - - -eya_def_tools.data_models.process_description.AssessmentProcessDescription - - -AssessmentProcessDescription - -label - -str - -description - -str - -comments - -Optional[str] - - - - - -eya_def_tools.data_models.energy_assessment.GrossEnergyAssessment:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - - - - + + + + + + - + eya_def_tools.data_models.energy_assessment.NetEnergyAssessment:e->eya_def_tools.data_models.energy_assessment.EnergyAssessmentResults:w - - - - - - - - - -eya_def_tools.data_models.energy_assessment.NetEnergyAssessment:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - - - - + + + + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceCategory - - -PlantPerformanceCategory - -label - -PlantPerformanceCategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -subcategories - -list[PlantPerformanceSubcategory] - -results - -PlantPerformanceResults + + +PlantPerformanceCategory + +label + +PlantPerformanceCategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +subcategories + +list[PlantPerformanceSubcategory] + +results + +PlantPerformanceResults - + eya_def_tools.data_models.plant_performance.PlantPerformanceAssessment:e->eya_def_tools.data_models.plant_performance.PlantPerformanceCategory:w - - - + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceResults - - -PlantPerformanceResults - -efficiency - -list[Dataset] + + +PlantPerformanceResults + +efficiency + +list[Dataset] - + eya_def_tools.data_models.plant_performance.PlantPerformanceAssessment:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - + + + + + + eya_def_tools.data_models.energy_assessment.EnergyAssessmentResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceCategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory - - -PlantPerformanceSubcategory - -label - -PlantPerformanceSubcategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -basis - -AssessmentBasis(StrEnum) - -variability - -TimeVariabilityType(StrEnum) - -assessment_process_descriptions - -Optional[list[AssessmentProcessDescription]] - -elements - -Optional[list[PlantPerformanceSubcategoryElement]] - -results - -PlantPerformanceResults + + +PlantPerformanceSubcategory + +label + +PlantPerformanceSubcategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +basis + +AssessmentBasis(StrEnum) + +variability + +TimeVariabilityType(StrEnum) + +elements + +Optional[list[PlantPerformanceSubcategoryElement]] + +results + +PlantPerformanceResults - + eya_def_tools.data_models.plant_performance.PlantPerformanceCategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:w - - - + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - - -eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - - - + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement - - -PlantPerformanceSubcategoryElement - -label - -str - -description - -Optional[str] - -comments - -Optional[str] - -basis - -AssessmentBasis(StrEnum) - -variability - -TimeVariabilityType(StrEnum) - -is_independent - -bool - -assessment_process_descriptions - -Optional[list[AssessmentProcessDescription]] - -results - -PlantPerformanceResults + + +PlantPerformanceSubcategoryElement + +label + +str + +description + +Optional[str] + +comments + +Optional[str] + +basis + +AssessmentBasis(StrEnum) + +variability + +TimeVariabilityType(StrEnum) + +is_independent + +bool + +results + +PlantPerformanceResults - + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategory:e->eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement:w - - - - - - - - -eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - - - + + + + + - + eya_def_tools.data_models.plant_performance.PlantPerformanceSubcategoryElement:e->eya_def_tools.data_models.plant_performance.PlantPerformanceResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.scenario.Scenario - - -Scenario - -id - -Optional[str] - -label - -str - -description - -Optional[str] - -comments - -Optional[str] - -is_main_scenario - -Optional[bool] - -operational_lifetime_length_years - -float - -wind_farm_ids - -list[str] - -turbine_wind_resource_assessment - -TurbineWindResourceAssessment - -energy_assessment - -EnergyAssessment + + +Scenario + +id + +Optional[str] + +label + +str + +description + +Optional[str] + +comments + +Optional[str] + +is_main_scenario + +Optional[bool] + +wind_farm_ids + +list[str] + +turbine_wind_resource_assessment + +TurbineWindResourceAssessment + +energy_assessment + +EnergyAssessment - + eya_def_tools.data_models.scenario.Scenario:e->eya_def_tools.data_models.energy_assessment.EnergyAssessment:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment - - -TurbineWindResourceAssessment - -wind_resource_assessment_id_reference - -str - -description - -Optional[str] - -comments - -Optional[str] - -wind_spatial_modelling_processes - -list[AssessmentProcessDescription] - -results - -TurbineWindResourceResults - -wind_uncertainty_assessment - -WindUncertaintyAssessment + + +TurbineWindResourceAssessment + +wind_resource_assessment_id_reference + +str + +description + +Optional[str] + +comments + +Optional[str] + +results + +TurbineWindResourceResults + +wind_uncertainty_assessment + +WindUncertaintyAssessment - + eya_def_tools.data_models.scenario.Scenario:e->eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:w - - - - - - - - - -eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - + + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults - - -TurbineWindResourceResults - -wind_speed - -list[Dataset] - -probability - -Optional[list[Dataset]] - -turbulence_intensity - -Optional[list[Dataset]] - -wind_shear_exponent - -Optional[list[Dataset]] - -temperature - -Optional[list[Dataset]] - -air_density - -Optional[list[Dataset]] + + +TurbineWindResourceResults + +wind_speed + +list[Dataset] + +probability + +Optional[list[Dataset]] + +ambient_turbulence_intensity + +Optional[list[Dataset]] + +wind_shear_exponent + +Optional[list[Dataset]] + +temperature + +Optional[list[Dataset]] + +air_density + +Optional[list[Dataset]] + +displacement_height + +Optional[list[Dataset]] - + eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:e->eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment - - -WindUncertaintyAssessment - -categories - -list[WindUncertaintyCategory] - -results - -UncertaintyResults + + +WindUncertaintyAssessment + +categories + +list[WindUncertaintyCategory] + +results + +UncertaintyResults - + eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + + + + +eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w + + + + + - + eya_def_tools.data_models.wind_uncertainty.UncertaintyResults - - -UncertaintyResults - -relative_wind_speed_uncertainty - -Optional[list[Dataset]] - -relative_energy_uncertainty - -Optional[list[Dataset]] + + +UncertaintyResults + +relative_wind_speed_uncertainty + +Optional[list[Dataset]] + +relative_energy_uncertainty + +Optional[list[Dataset]] - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory - - -WindUncertaintyCategory - -label - -WindUncertaintyCategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -subcategories - -list[WindUncertaintySubcategory] - -results - -UncertaintyResults + + +WindUncertaintyCategory + +label + +WindUncertaintyCategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +subcategories + +list[WindUncertaintySubcategory] + +results + +UncertaintyResults - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory:w - - - + + + - + eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory - - -WindUncertaintySubcategory - -label - -WindUncertaintySubcategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -elements - -Optional[list[WindUncertaintySubcategoryElement]] - -results - -UncertaintyResults + + +WindUncertaintySubcategory + +label + +WindUncertaintySubcategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +elements + +Optional[list[WindUncertaintySubcategoryElement]] + +results + +UncertaintyResults - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory:w - - - + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategoryElement - - -WindUncertaintySubcategoryElement - -label - -str - -description - -Optional[str] - -comments - -Optional[str] - -results - -UncertaintyResults + + +WindUncertaintySubcategoryElement + +label + +str + +description + +Optional[str] + +comments + +Optional[str] + +results + +UncertaintyResults - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategoryElement:w - - - - - + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategoryElement:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + diff --git a/diagrams/scenario_reduced.svg b/diagrams/scenario_reduced.svg index 59e78e6..d13d84c 100644 --- a/diagrams/scenario_reduced.svg +++ b/diagrams/scenario_reduced.svg @@ -1,133 +1,125 @@ - - - + + Entity Relationship Diagram - -Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> + +Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> eya_def_tools.data_models.energy_assessment.EnergyAssessment - -EnergyAssessment - -gross_energy_assessment - -GrossEnergyAssessment - -plant_performance_assessment - -PlantPerformanceAssessment - -net_energy_assessment - -NetEnergyAssessment + +EnergyAssessment + +gross_energy_assessment + +GrossEnergyAssessment + +plant_performance_assessment + +PlantPerformanceAssessment + +net_energy_assessment + +NetEnergyAssessment eya_def_tools.data_models.scenario.Scenario - - -Scenario - -id - -Optional[str] - -label - -str - -description - -Optional[str] - -comments - -Optional[str] - -is_main_scenario - -Optional[bool] - -operational_lifetime_length_years - -float - -wind_farm_ids - -list[str] - -turbine_wind_resource_assessment - -TurbineWindResourceAssessment - -energy_assessment - -EnergyAssessment + + +Scenario + +id + +Optional[str] + +label + +str + +description + +Optional[str] + +comments + +Optional[str] + +is_main_scenario + +Optional[bool] + +wind_farm_ids + +list[str] + +turbine_wind_resource_assessment + +TurbineWindResourceAssessment + +energy_assessment + +EnergyAssessment eya_def_tools.data_models.scenario.Scenario:e->eya_def_tools.data_models.energy_assessment.EnergyAssessment:w - - - - - - + + + + + + eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment - - -TurbineWindResourceAssessment - -wind_resource_assessment_id_reference - -str - -description - -Optional[str] - -comments - -Optional[str] - -wind_spatial_modelling_processes - -list[AssessmentProcessDescription] - -results - -TurbineWindResourceResults - -wind_uncertainty_assessment - -WindUncertaintyAssessment + + +TurbineWindResourceAssessment + +wind_resource_assessment_id_reference + +str + +description + +Optional[str] + +comments + +Optional[str] + +results + +TurbineWindResourceResults + +wind_uncertainty_assessment + +WindUncertaintyAssessment eya_def_tools.data_models.scenario.Scenario:e->eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:w - - - - - - + + + + + + diff --git a/diagrams/turbine_wind_resource_assessment.svg b/diagrams/turbine_wind_resource_assessment.svg index 4ec9002..70ab81d 100644 --- a/diagrams/turbine_wind_resource_assessment.svg +++ b/diagrams/turbine_wind_resource_assessment.svg @@ -1,45 +1,45 @@ - - - + + Entity Relationship Diagram - -Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> + +Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> eya_def_tools.data_models.dataset.Dataset - -Dataset - -label - -Optional[str] - -description - -Optional[str] - -comments - -Optional[str] - -assessment_period - -Optional[AssessmentPeriod(StrEnum)] - -dimensions - -Optional[list[DatasetDimension(StrEnum)]] - -statistics - -list[DatasetStatistic] + +Dataset + +label + +Optional[str] + +description + +Optional[str] + +comments + +Optional[str] + +assessment_period + +Optional[AssessmentPeriod(StrEnum)] + +dimensions + +Optional[list[DatasetDimension(StrEnum)]] + +statistics + +list[DatasetStatistic] @@ -47,420 +47,401 @@ eya_def_tools.data_models.dataset.DatasetStatistic - -DatasetStatistic - -description - -Optional[str] - -comments - -Optional[str] - -statistic_type - -UnionType[BasicStatisticType(StrEnum), ExceedanceLevelStatisticType] - -values - -Union[float, list[tuple[list[Union[int, float, str]], float]]] + +DatasetStatistic + +description + +Optional[str] + +comments + +Optional[str] + +statistic_type + +UnionType[BasicStatisticType(StrEnum), ExceedanceLevelStatisticType] + +values + +Union[float, list[tuple[list[Union[int, float, str]], float]]] eya_def_tools.data_models.dataset.Dataset:e->eya_def_tools.data_models.dataset.DatasetStatistic:w - - - + + + eya_def_tools.data_models.dataset.ExceedanceLevelStatisticType - -ExceedanceLevelStatisticType - -exceedance_level - -float + +ExceedanceLevelStatisticType + +exceedance_level + +float eya_def_tools.data_models.dataset.DatasetStatistic:e->eya_def_tools.data_models.dataset.ExceedanceLevelStatisticType:w - - - - - - - - - -eya_def_tools.data_models.process_description.AssessmentProcessDescription - - -AssessmentProcessDescription - -label - -str - -description - -str - -comments - -Optional[str] - - + + + + + + - + eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment - - -TurbineWindResourceAssessment - -wind_resource_assessment_id_reference - -str - -description - -Optional[str] - -comments - -Optional[str] - -wind_spatial_modelling_processes - -list[AssessmentProcessDescription] - -results - -TurbineWindResourceResults - -wind_uncertainty_assessment - -WindUncertaintyAssessment + + +TurbineWindResourceAssessment + +wind_resource_assessment_id_reference + +str + +description + +Optional[str] + +comments + +Optional[str] + +results + +TurbineWindResourceResults + +wind_uncertainty_assessment + +WindUncertaintyAssessment - - -eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:e->eya_def_tools.data_models.process_description.AssessmentProcessDescription:w - - - - - + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults - - -TurbineWindResourceResults - -wind_speed - -list[Dataset] - -probability - -Optional[list[Dataset]] - -turbulence_intensity - -Optional[list[Dataset]] - -wind_shear_exponent - -Optional[list[Dataset]] - -temperature - -Optional[list[Dataset]] - -air_density - -Optional[list[Dataset]] + + +TurbineWindResourceResults + +wind_speed + +list[Dataset] + +probability + +Optional[list[Dataset]] + +ambient_turbulence_intensity + +Optional[list[Dataset]] + +wind_shear_exponent + +Optional[list[Dataset]] + +temperature + +Optional[list[Dataset]] + +air_density + +Optional[list[Dataset]] + +displacement_height + +Optional[list[Dataset]] - + eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:e->eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment - - -WindUncertaintyAssessment - -categories - -list[WindUncertaintyCategory] - -results - -UncertaintyResults + + +WindUncertaintyAssessment + +categories + +list[WindUncertaintyCategory] + +results + +UncertaintyResults - + eya_def_tools.data_models.wind_resource.TurbineWindResourceAssessment:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment:w - - - - - - + + + + + + + + + +eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w + + + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + + + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + eya_def_tools.data_models.wind_resource.TurbineWindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + - + eya_def_tools.data_models.wind_uncertainty.UncertaintyResults - - -UncertaintyResults - -relative_wind_speed_uncertainty - -Optional[list[Dataset]] - -relative_energy_uncertainty - -Optional[list[Dataset]] + + +UncertaintyResults + +relative_wind_speed_uncertainty + +Optional[list[Dataset]] + +relative_energy_uncertainty + +Optional[list[Dataset]] eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory - - -WindUncertaintyCategory - -label - -WindUncertaintyCategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -subcategories - -list[WindUncertaintySubcategory] - -results - -UncertaintyResults + + +WindUncertaintyCategory + +label + +WindUncertaintyCategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +subcategories + +list[WindUncertaintySubcategory] + +results + +UncertaintyResults eya_def_tools.data_models.wind_uncertainty.WindUncertaintyAssessment:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory:w - - - + + + eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory - - -WindUncertaintySubcategory - -label - -WindUncertaintySubcategoryLabel(StrEnum) - -description - -Optional[str] - -comments - -Optional[str] - -elements - -Optional[list[WindUncertaintySubcategoryElement]] - -results - -UncertaintyResults + + +WindUncertaintySubcategory + +label + +WindUncertaintySubcategoryLabel(StrEnum) + +description + +Optional[str] + +comments + +Optional[str] + +elements + +Optional[list[WindUncertaintySubcategoryElement]] + +results + +UncertaintyResults eya_def_tools.data_models.wind_uncertainty.WindUncertaintyCategory:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory:w - - - + + + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + - + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategoryElement - - -WindUncertaintySubcategoryElement - -label - -str - -description - -Optional[str] - -comments - -Optional[str] - -results - -UncertaintyResults + + +WindUncertaintySubcategoryElement + +label + +str + +description + +Optional[str] + +comments + +Optional[str] + +results + +UncertaintyResults eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategory:e->eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategoryElement:w - - - - - + + + + + eya_def_tools.data_models.wind_uncertainty.WindUncertaintySubcategoryElement:e->eya_def_tools.data_models.wind_uncertainty.UncertaintyResults:w - - - - - - + + + + + + diff --git a/diagrams/wind_farm_configuration.svg b/diagrams/wind_farm_configuration.svg index 21da6f8..47c3917 100644 --- a/diagrams/wind_farm_configuration.svg +++ b/diagrams/wind_farm_configuration.svg @@ -1,7 +1,7 @@ - eya_def_tools.data_models.wind_farm.WindFarmConfiguration - + WindFarmConfiguration @@ -169,7 +169,7 @@ operational_lifetime_end_date -Optional[date] +date installed_capacity @@ -197,9 +197,9 @@ eya_def_tools.data_models.wind_farm.WindFarmConfiguration:e->eya_def_tools.data_models.wind_farm.TurbineConfiguration:w - - - + + + diff --git a/diagrams/wind_resource_assessment.svg b/diagrams/wind_resource_assessment.svg index c2837fd..02e7a75 100644 --- a/diagrams/wind_resource_assessment.svg +++ b/diagrams/wind_resource_assessment.svg @@ -1,45 +1,45 @@ - - - + + Entity Relationship Diagram - -Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> + +Created by erdantic v0.7.0 <https://github.com/drivendataorg/erdantic> eya_def_tools.data_models.dataset.Dataset - -Dataset - -label - -Optional[str] - -description - -Optional[str] - -comments - -Optional[str] - -assessment_period - -Optional[AssessmentPeriod(StrEnum)] - -dimensions - -Optional[list[DatasetDimension(StrEnum)]] - -statistics - -list[DatasetStatistic] + +Dataset + +label + +Optional[str] + +description + +Optional[str] + +comments + +Optional[str] + +assessment_period + +Optional[AssessmentPeriod(StrEnum)] + +dimensions + +Optional[list[DatasetDimension(StrEnum)]] + +statistics + +list[DatasetStatistic] @@ -47,83 +47,83 @@ eya_def_tools.data_models.dataset.DatasetStatistic - -DatasetStatistic - -description - -Optional[str] - -comments - -Optional[str] - -statistic_type - -UnionType[BasicStatisticType(StrEnum), ExceedanceLevelStatisticType] - -values - -Union[float, list[tuple[list[Union[int, float, str]], float]]] + +DatasetStatistic + +description + +Optional[str] + +comments + +Optional[str] + +statistic_type + +UnionType[BasicStatisticType(StrEnum), ExceedanceLevelStatisticType] + +values + +Union[float, list[tuple[list[Union[int, float, str]], float]]] eya_def_tools.data_models.dataset.Dataset:e->eya_def_tools.data_models.dataset.DatasetStatistic:w - - - + + + eya_def_tools.data_models.dataset.ExceedanceLevelStatisticType - -ExceedanceLevelStatisticType - -exceedance_level - -float + +ExceedanceLevelStatisticType + +exceedance_level + +float eya_def_tools.data_models.dataset.DatasetStatistic:e->eya_def_tools.data_models.dataset.ExceedanceLevelStatisticType:w - - - - - - + + + + + + eya_def_tools.data_models.wind_resource.WindResourceAssessment - -WindResourceAssessment - -id - -str - -description - -Optional[str] - -comments - -Optional[str] - -input_characteristics - -WindResourceInputCharacteristics - -results - -WindResourceResults + +WindResourceAssessment + +id + +str + +description + +Optional[str] + +comments + +Optional[str] + +input_characteristics + +WindResourceInputCharacteristics + +results + +WindResourceResults @@ -131,124 +131,137 @@ eya_def_tools.data_models.wind_resource.WindResourceInputCharacteristics - -WindResourceInputCharacteristics - -data_availability - -list[Dataset] + +WindResourceInputCharacteristics + +data_availability + +list[Dataset] eya_def_tools.data_models.wind_resource.WindResourceAssessment:e->eya_def_tools.data_models.wind_resource.WindResourceInputCharacteristics:w - - - - - - + + + + + + eya_def_tools.data_models.wind_resource.WindResourceResults - - -WindResourceResults - -wind_speed - -list[Dataset] - -probability - -list[Dataset] - -turbulence_intensity - -Optional[list[Dataset]] - -wind_shear_exponent - -Optional[list[Dataset]] - -temperature - -Optional[list[Dataset]] - -air_density - -Optional[list[Dataset]] + + +WindResourceResults + +wind_speed + +list[Dataset] + +probability + +list[Dataset] + +ambient_turbulence_intensity + +Optional[list[Dataset]] + +wind_shear_exponent + +Optional[list[Dataset]] + +temperature + +Optional[list[Dataset]] + +air_density + +Optional[list[Dataset]] + +displacement_height + +Optional[list[Dataset]] eya_def_tools.data_models.wind_resource.WindResourceAssessment:e->eya_def_tools.data_models.wind_resource.WindResourceResults:w - - - - - - + + + + + + eya_def_tools.data_models.wind_resource.WindResourceInputCharacteristics:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - + + + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w - - - - - + + + + + + + + +eya_def_tools.data_models.wind_resource.WindResourceResults:e->eya_def_tools.data_models.dataset.Dataset:w + + + + + diff --git a/eya_def_tools/eya_def_tools/data_models/energy_assessment.py b/eya_def_tools/eya_def_tools/data_models/energy_assessment.py index 57af009..42b7212 100644 --- a/eya_def_tools/eya_def_tools/data_models/energy_assessment.py +++ b/eya_def_tools/eya_def_tools/data_models/energy_assessment.py @@ -2,12 +2,13 @@ """ +from typing import Optional + import pydantic as pdt from eya_def_tools.data_models.base_model import EyaDefBaseModel from eya_def_tools.data_models.dataset import Dataset from eya_def_tools.data_models.plant_performance import PlantPerformanceAssessment -from eya_def_tools.data_models.process_description import AssessmentProcessDescription class EnergyAssessmentResults(EyaDefBaseModel): @@ -16,17 +17,34 @@ class EnergyAssessmentResults(EyaDefBaseModel): annual_energy_production: list[Dataset] = pdt.Field( default=..., min_length=1, - description="Annual energy production estimates in GWh.", + description=( + "Annual energy production (AEP) estimates at the turbine " + "location(s) in gigawatt hour (GW h). The dimension of the " + "first standard result dataset should be 'wind_farm_id'. " + "The dimension of the second standard result dataset " + "should be 'turbine_id'. Further results with other " + "dimensions may be included optionally." + ), ) class GrossEnergyAssessment(EyaDefBaseModel): """Gross energy assessment details and results.""" - process_description: AssessmentProcessDescription = pdt.Field( - default=..., + description: Optional[str] = pdt.Field( + default=None, + min_length=1, description=( - "Specification of the process used to calculate the gross EYA estimates." + "Optional description of the gross energy assessment, " + "which should not be empty if the field is included." + ), + ) + comments: Optional[str] = pdt.Field( + default=None, + min_length=1, + description=( + "Optional comments on the gross energy assessment, which " + "should not be empty if the field is included." ), ) results: EnergyAssessmentResults = pdt.Field( @@ -38,10 +56,20 @@ class GrossEnergyAssessment(EyaDefBaseModel): class NetEnergyAssessment(EyaDefBaseModel): """Net energy assessment details and results.""" - process_description: AssessmentProcessDescription = pdt.Field( - default=..., + description: Optional[str] = pdt.Field( + default=None, + min_length=1, + description=( + "Optional description of the net energy assessment, which " + "should not be empty if the field is included." + ), + ) + comments: Optional[str] = pdt.Field( + default=None, + min_length=1, description=( - "Specification of the process used to calculate the net EYA estimates." + "Optional comments on the net energy assessment, which " + "should not be empty if the field is included." ), ) results: EnergyAssessmentResults = pdt.Field( diff --git a/eya_def_tools/eya_def_tools/data_models/general.py b/eya_def_tools/eya_def_tools/data_models/general.py index 1e17a90..481019d 100644 --- a/eya_def_tools/eya_def_tools/data_models/general.py +++ b/eya_def_tools/eya_def_tools/data_models/general.py @@ -82,8 +82,10 @@ class MeasurementQuantity(StrEnum): """Quantity of a measurement.""" AIR_DENSITY = auto() + AMBIENT_TURBULENCE_INTENSITY = auto() ANNUAL_ENERGY_PRODUCTION = auto() DATA_AVAILABILITY = auto() + DISPLACEMENT_HEIGHT = auto() DISTANCE = auto() EFFICIENCY = auto() ENERGY = auto() @@ -95,7 +97,6 @@ class MeasurementQuantity(StrEnum): WIND_SHEAR_EXPONENT = auto() TEMPERATURE = auto() TIME = auto() - TURBULENCE_INTENSITY = auto() WIND_FROM_DIRECTION = auto() WIND_SPEED = auto() @@ -105,10 +106,14 @@ def measurement_unit(self) -> MeasurementUnit: match self: case MeasurementQuantity.AIR_DENSITY: return MeasurementUnit.KILOGRAM_PER_CUBIC_METRE + case MeasurementQuantity.AMBIENT_TURBULENCE_INTENSITY: + return MeasurementUnit.ONE case MeasurementQuantity.ANNUAL_ENERGY_PRODUCTION: return MeasurementUnit.GIGAWATT_HOUR_PER_ANNUM case MeasurementQuantity.DATA_AVAILABILITY: return MeasurementUnit.ONE + case MeasurementQuantity.DISPLACEMENT_HEIGHT: + return MeasurementUnit.METRE case MeasurementQuantity.DISTANCE: return MeasurementUnit.METRE case MeasurementQuantity.EFFICIENCY: @@ -131,8 +136,6 @@ def measurement_unit(self) -> MeasurementUnit: return MeasurementUnit.DEGREE_CELSIUS case MeasurementQuantity.TIME: return MeasurementUnit.HOUR - case MeasurementQuantity.TURBULENCE_INTENSITY: - return MeasurementUnit.ONE case MeasurementQuantity.WIND_FROM_DIRECTION: return MeasurementUnit.DEGREE case MeasurementQuantity.WIND_SPEED: diff --git a/eya_def_tools/eya_def_tools/data_models/plant_performance.py b/eya_def_tools/eya_def_tools/data_models/plant_performance.py index e8b4f25..b423202 100644 --- a/eya_def_tools/eya_def_tools/data_models/plant_performance.py +++ b/eya_def_tools/eya_def_tools/data_models/plant_performance.py @@ -12,7 +12,6 @@ from eya_def_tools.data_models.base_model import EyaDefBaseModel from eya_def_tools.data_models.dataset import Dataset from eya_def_tools.data_models.general import AssessmentBasis, TimeVariabilityType -from eya_def_tools.data_models.process_description import AssessmentProcessDescription class PlantPerformanceResults(EyaDefBaseModel): @@ -76,17 +75,6 @@ class PlantPerformanceSubcategoryElement(EyaDefBaseModel): "independent of all other elements." ), ) - assessment_process_descriptions: Optional[list[AssessmentProcessDescription]] = ( - pdt.Field( - default=None, - min_length=1, - description=( - "Description of calculation processes used in the " - "assessment of the plant performance loss subcategory " - "element." - ), - ) - ) results: PlantPerformanceResults = pdt.Field( default=..., description="Plant performance assessment subcategory element results.", @@ -223,17 +211,6 @@ class PlantPerformanceSubcategory(EyaDefBaseModel): default=..., description="Considered variability in the plant performance loss subcategory.", ) - assessment_process_descriptions: Optional[list[AssessmentProcessDescription]] = ( - pdt.Field( - default=None, - min_length=1, - description=( - "Optional description of calculation processes used in the " - "assessment of the plant performance loss subcategory. The " - "field should not be empty if it is included." - ), - ) - ) elements: Optional[list[PlantPerformanceSubcategoryElement]] = pdt.Field( default=None, min_length=1, diff --git a/eya_def_tools/eya_def_tools/data_models/process_description.py b/eya_def_tools/eya_def_tools/data_models/process_description.py deleted file mode 100644 index 85fc7ac..0000000 --- a/eya_def_tools/eya_def_tools/data_models/process_description.py +++ /dev/null @@ -1,33 +0,0 @@ -"""Data models relating to assessment process descriptions. - -""" - -from typing import Optional - -import pydantic as pdt - -from eya_def_tools.data_models.base_model import EyaDefBaseModel - - -class AssessmentProcessDescription(EyaDefBaseModel): - """Description of a process used in an energy yield assessment.""" - - label: str = pdt.Field( - default=..., - min_length=1, - description="Label or name of the process or model.", - examples=["WAsP", "VORTEX BLOCKS", "DNV CFD", "VENTOS/M"], - ) - description: str = pdt.Field( - default=..., - min_length=1, - description="Description of the assessment process or model.", - ) - comments: Optional[str] = pdt.Field( - default=None, - min_length=1, - description=( - "Optional comments on the assessment process or model, " - "which should not be empty if the field is included." - ), - ) diff --git a/eya_def_tools/eya_def_tools/data_models/scenario.py b/eya_def_tools/eya_def_tools/data_models/scenario.py index 66436a8..42eb318 100644 --- a/eya_def_tools/eya_def_tools/data_models/scenario.py +++ b/eya_def_tools/eya_def_tools/data_models/scenario.py @@ -52,14 +52,6 @@ class Scenario(EyaDefBaseModel): "scenario in the report." ), ) - operational_lifetime_length_years: float = pdt.Field( - default=..., - description="Number of years of project operational lifetime.", - gt=1.0, - lt=100.0, - allow_inf_nan=False, - examples=[10.0, 20.0, 30.0], - ) wind_farm_ids: list[str] = pdt.Field( default=..., min_length=1, diff --git a/eya_def_tools/eya_def_tools/data_models/wind_farm.py b/eya_def_tools/eya_def_tools/data_models/wind_farm.py index ac39847..e399501 100644 --- a/eya_def_tools/eya_def_tools/data_models/wind_farm.py +++ b/eya_def_tools/eya_def_tools/data_models/wind_farm.py @@ -215,8 +215,8 @@ class WindFarmConfiguration(EyaDefBaseModel): ), examples=["2026-01-01", "2017-04-01"], ) - operational_lifetime_end_date: Optional[dt.date] = pdt.Field( - default=None, + operational_lifetime_end_date: dt.date = pdt.Field( + default=..., description=( "Operational lifetime end date of the wind farm in the " "ISO 8601 standard format for a calendar date, i.e. " diff --git a/eya_def_tools/eya_def_tools/data_models/wind_resource.py b/eya_def_tools/eya_def_tools/data_models/wind_resource.py index 24a389d..ae9269a 100644 --- a/eya_def_tools/eya_def_tools/data_models/wind_resource.py +++ b/eya_def_tools/eya_def_tools/data_models/wind_resource.py @@ -18,7 +18,6 @@ class ``WindResourceAssessment`` covering the measurement location(s) from eya_def_tools.data_models.base_model import EyaDefBaseModel from eya_def_tools.data_models.dataset import Dataset -from eya_def_tools.data_models.process_description import AssessmentProcessDescription from eya_def_tools.data_models.wind_uncertainty import WindUncertaintyAssessment @@ -65,11 +64,6 @@ class WindResourceInputCharacteristics(EyaDefBaseModel): ), ) - # TODO: Do we also want to include processed/final data - # availability? We would then also need to clarify if data - # synthesis (gap-filling) is to be included, and from what - # sources. - class WindResourceResults(EyaDefBaseModel): """Wind resource assessment results at measurement locations.""" @@ -106,11 +100,11 @@ class WindResourceResults(EyaDefBaseModel): "results with other dimensions may be included optionally." ), ) - turbulence_intensity: Optional[list[Dataset]] = pdt.Field( + ambient_turbulence_intensity: Optional[list[Dataset]] = pdt.Field( default=None, min_length=1, description=( - "Final long-term turbulence intensity estimates at the " + "Final ambient turbulence intensity estimates at the " "measurement location(s), as dimensionless values. This " "field is optional since some measurement devices may " "lack meaningful turbulence measurements, but it should " @@ -164,15 +158,31 @@ class WindResourceResults(EyaDefBaseModel): min_length=1, description=( "Final long-term air density estimates at the measurement " - "location(s) in kilogram per cubic metre. This field is " - "optional since some wind measurement stations may lack " - "measurements required to derive air density estimates, " - "but it should always be included when relevant air " - "density data are available. The dimensions of the first " - "standard result dataset should be 'wind_dataset_id', " - "'location_id' (where the wind dataset has more than one " - "location, otherwise omitted), and 'height' (in that " - "order). Further results with other dimensions may also be " + "location(s) in kilogram per cubic metre (kg m-3). This " + "field is optional since some wind measurement stations " + "may lack measurements required to derive air density " + "estimates, but it should always be included when relevant " + "data are available. The dimensions of the first standard " + "result dataset should be 'wind_dataset_id', 'location_id' " + "(where the wind dataset has more than one location, " + "otherwise omitted), and 'height' (in that order). Further " + "results with other dimensions may also be included." + ), + ) + displacement_height: Optional[list[Dataset]] = pdt.Field( + default=None, + min_length=1, + description=( + "Estimated effective displacement of the boundary layer at " + "the measurement location(s) due to vegetation (forestry) " + "in metre. The displacement height is measured as positive " + "upwards from the ground level. This field is optional as " + "it is only relevant at forested sites. The dimensions of " + "the first standard result dataset should be " + "'wind_dataset_id' and 'location_id' (where the wind " + "dataset has more than one location, otherwise omitted). " + "Further results with other dimensions, such as " + "displacement height binned by wind direction, may also be " "included." ), ) @@ -234,7 +244,10 @@ class TurbineWindResourceResults(EyaDefBaseModel): min_length=1, description=( "Final long-term wind speed estimates at the turbine " - "location(s) in metre per second (m s-1)." + "location(s) at hub height in metre per second (m s-1). " + "The dimension of the first standard result dataset should " + "be 'turbine_id'. Further results with other dimensions " + "may be included optionally." ), ) probability: Optional[list[Dataset]] = pdt.Field( @@ -242,25 +255,43 @@ class TurbineWindResourceResults(EyaDefBaseModel): min_length=1, description=( "Final long-term probability distribution estimates at the " - "turbine location(s), such as wind speed probability " - "distributions or joint wind speed and direction frequency " - "distributions, as dimensionless values." + "turbine location(s) at hub height, as dimensionless " + "values. The first standard result dataset should comprise " + "the joint wind speed and direction probability " + "distributions, with dimensions 'turbine_id', 'wind_speed' " + "and 'wind_from_direction' (in that order). The wind speed " + "coordinates should be 1.0 metre per second bins centered " + "on whole numbers, with the first bin half the width " + "(i.e. 0.25, 1.0, 2.0, 3.0, ...). The wind direction " + "coordinates should be twelve 30.0 degree bins, with the " + "the first bin centered at 0.0. Further results with other " + "dimensions may also be included." ), ) - turbulence_intensity: Optional[list[Dataset]] = pdt.Field( + ambient_turbulence_intensity: Optional[list[Dataset]] = pdt.Field( default=None, min_length=1, description=( - "Final long-term turbulence intensity estimates at the " - "turbine location(s) as dimensionless values." + "Final ambient turbulence intensity estimates at the " + "turbine location(s) at hub height, as dimensionless " + "values. The first standard result dataset should comprise " + "the ambient turbulence intensity as a function of wind " + "speed, with the dimensions 'turbine_id' and 'wind_speed' " + "(in that order). The wind speed coordinates should be 1.0 " + "metre per second bins centered on whole numbers, with the " + "first bin half the width (i.e. 0.25, 1.0, 2.0, 3.0, ...). " + "Further results with other dimensions may also be " + "included." ), ) wind_shear_exponent: Optional[list[Dataset]] = pdt.Field( default=None, min_length=1, description=( - "Final long-term power law wind shear exponent estimates " - "at the turbine location(s)." + "Final power law wind shear exponent estimates at the " + "turbine location(s). The dimension of the first standard " + "result dataset should be 'turbine_id'. Further results " + "with other dimensions may also be included." ), ) temperature: Optional[list[Dataset]] = pdt.Field( @@ -268,7 +299,10 @@ class TurbineWindResourceResults(EyaDefBaseModel): min_length=1, description=( "Final long-term temperature estimates at the turbine " - "location(s) in degree C." + "location(s) at hub height in degree C. The dimension of " + "the first standard result dataset should be 'turbine_id'. " + "Further results with other dimensions may also be " + "included." ), ) air_density: Optional[list[Dataset]] = pdt.Field( @@ -276,7 +310,25 @@ class TurbineWindResourceResults(EyaDefBaseModel): min_length=1, description=( "Final long-term air density estimates at the turbine " - "location(s) in kilogram per cubic metre." + "location(s) at hub height in kilogram per cubic metre " + "(kg m-3). The dimension of the first standard result " + "dataset should be 'turbine_id'. Further results with " + "other dimensions may also be included." + ), + ) + displacement_height: Optional[list[Dataset]] = pdt.Field( + default=None, + min_length=1, + description=( + "Estimated effective displacement of the boundary layer at " + "the turbine location(s) due to vegetation (forestry) in " + "metre. The displacement height is measured as positive " + "upwards from the ground level. This field is optional as " + "it is only relevant at forested sites. The dimension of " + "the first standard result dataset should be 'turbine_id'. " + "Further results with other dimensions, such as " + "displacement height binned by wind direction, may also be " + "included." ), ) @@ -315,10 +367,6 @@ class TurbineWindResourceAssessment(EyaDefBaseModel): "included." ), ) - wind_spatial_modelling_processes: list[AssessmentProcessDescription] = pdt.Field( - default=..., - description="Wind spatial modelling processes used in the assessment.", - ) results: TurbineWindResourceResults = pdt.Field( default=..., description=( diff --git a/eya_def_tools/eya_def_tools/tests/conftest.py b/eya_def_tools/eya_def_tools/tests/conftest.py index 15f5722..7281405 100644 --- a/eya_def_tools/eya_def_tools/tests/conftest.py +++ b/eya_def_tools/eya_def_tools/tests/conftest.py @@ -25,9 +25,6 @@ general, iea43_wra_data_model, plant_performance, -) -from eya_def_tools.data_models import process_description as eya_prcs_desc -from eya_def_tools.data_models import ( reference_wind_farm, scenario, spatial, @@ -462,6 +459,7 @@ def wind_farm_a( turbines=[turbine_specification_wtg01_a, turbine_specification_wtg02_a], relevance=wind_farm.WindFarmRelevance.INTERNAL, operational_lifetime_start_date=dt.date(2024, 1, 1), + operational_lifetime_end_date=dt.date(2054, 12, 31), installed_capacity=11.0, restrictions=[wind_farm_operational_restriction_a], ) @@ -482,6 +480,7 @@ def wind_farm_b( turbines=[turbine_specification_wtg01_b, turbine_specification_wtg02_b], relevance=wind_farm.WindFarmRelevance.INTERNAL, operational_lifetime_start_date=dt.date(2024, 1, 1), + operational_lifetime_end_date=dt.date(2054, 12, 31), installed_capacity=11.6, export_capacity=11.5, ) @@ -843,16 +842,6 @@ def wind_resource_assessment_a() -> wind_resource.WindResourceAssessment: ) -@pytest.fixture(scope="session") -def wind_spatial_model_process_a() -> eya_prcs_desc.AssessmentProcessDescription: - """Spatial model test case of ``AssessmentProcessDescription``.""" - return eya_prcs_desc.AssessmentProcessDescription( - label="xeEdge-meso-cfd", - description="A coupled CFD-mesoscale model.", - comments="The simulations were run using 60 representative days.", - ) - - @pytest.fixture(scope="session") def long_term_adj_uncertainty_subcat_a() -> wind_uncertainty.WindUncertaintySubcategory: """Test case 'a' of long-term adjustment ``WindUncertaintySubcategory``.""" @@ -953,7 +942,6 @@ def historical_wind_uncertainty_category_a( @pytest.fixture(scope="session") def turbine_wind_resource_assessment_a( - wind_spatial_model_process_a: eya_prcs_desc.AssessmentProcessDescription, historical_wind_uncertainty_category_a: wind_uncertainty.WindUncertaintyCategory, ) -> wind_resource.TurbineWindResourceAssessment: """Test case instance 'a' of ``TurbineWindResourceAssessment``.""" @@ -982,7 +970,6 @@ def turbine_wind_resource_assessment_a( ) ], ), - wind_spatial_modelling_processes=[wind_spatial_model_process_a], wind_uncertainty_assessment=wind_uncertainty.WindUncertaintyAssessment( categories=[historical_wind_uncertainty_category_a], results=wind_uncertainty.UncertaintyResults( @@ -1017,7 +1004,6 @@ def turbine_wind_resource_assessment_a( @pytest.fixture(scope="session") def turbine_wind_resource_assessment_b( - wind_spatial_model_process_a: eya_prcs_desc.AssessmentProcessDescription, historical_wind_uncertainty_category_a: wind_uncertainty.WindUncertaintyCategory, ) -> wind_resource.TurbineWindResourceAssessment: """Test case instance 'b' of ``TurbineWindResourceAssessment``.""" @@ -1046,7 +1032,6 @@ def turbine_wind_resource_assessment_b( ) ], ), - wind_spatial_modelling_processes=[wind_spatial_model_process_a], wind_uncertainty_assessment=wind_uncertainty.WindUncertaintyAssessment( categories=[historical_wind_uncertainty_category_a], results=wind_uncertainty.UncertaintyResults( @@ -1132,17 +1117,9 @@ def plant_performance_curtailment_category_a() -> ( label=( plant_performance.PlantPerformanceSubcategoryLabel.LOAD_CURTAILMENT ), + comments="Energy yield production time series simulation.", basis=general.AssessmentBasis.TIME_SERIES_CALCULATION, variability=general.TimeVariabilityType.STATIC_PROCESS, - assessment_process_descriptions=[ - eya_prcs_desc.AssessmentProcessDescription( - label="Time Series tool", - description=( - "Energy yield production time series simulation tool." - ), - comments="Internal toolset", - ) - ], results=plant_performance.PlantPerformanceResults( efficiency=[ dataset.Dataset( @@ -1250,35 +1227,8 @@ def plant_performance_curtailment_category_b() -> ( ) -@pytest.fixture(scope="session") -def gross_energy_process_description_a() -> eya_prcs_desc.AssessmentProcessDescription: - """Gross energy test case of ``AssessmentProcessDescription``.""" - return eya_prcs_desc.AssessmentProcessDescription( - label="TurboYield", - description=( - "In-house calculation tool, using a wind speed and direction " - "frequency distribution association method." - ), - ) - - -@pytest.fixture(scope="session") -def net_energy_process_description_a() -> eya_prcs_desc.AssessmentProcessDescription: - """Net energy test case of ``AssessmentProcessDescription``.""" - return eya_prcs_desc.AssessmentProcessDescription( - label="TurboYield", - description=( - "In-house calculation tool, using a frequency distribution " - "approach and treating all wind uncertainty components and " - "all plant performance loss components as independent." - ), - ) - - @pytest.fixture(scope="session") def energy_assessment_a( - gross_energy_process_description_a: eya_prcs_desc.AssessmentProcessDescription, - net_energy_process_description_a: eya_prcs_desc.AssessmentProcessDescription, plant_performance_curtailment_category_a: ( plant_performance.PlantPerformanceCategory ), @@ -1286,7 +1236,10 @@ def energy_assessment_a( """Test case instance 'a' of ``EnergyAssessment``.""" return energy_assessment.EnergyAssessment( gross_energy_assessment=energy_assessment.GrossEnergyAssessment( - process_description=gross_energy_process_description_a, + comments=( + "Using an in-house calculation tool with a wind speed and " + "direction frequency distribution association method." + ), results=energy_assessment.EnergyAssessmentResults( annual_energy_production=[ dataset.Dataset( @@ -1339,7 +1292,11 @@ def energy_assessment_a( ), ), net_energy_assessment=energy_assessment.NetEnergyAssessment( - process_description=net_energy_process_description_a, + comments=( + "In-house calculation tool, using a frequency distribution " + "approach and treating all wind uncertainty components and " + "all plant performance loss components as independent." + ), results=energy_assessment.EnergyAssessmentResults( annual_energy_production=[ dataset.Dataset( @@ -1394,8 +1351,6 @@ def energy_assessment_a( @pytest.fixture(scope="session") def energy_assessment_b( - gross_energy_process_description_a: eya_prcs_desc.AssessmentProcessDescription, - net_energy_process_description_a: eya_prcs_desc.AssessmentProcessDescription, plant_performance_curtailment_category_b: ( plant_performance.PlantPerformanceCategory ), @@ -1403,7 +1358,6 @@ def energy_assessment_b( """Test case instance 'b' of ``EnergyAssessment``.""" return energy_assessment.EnergyAssessment( gross_energy_assessment=energy_assessment.GrossEnergyAssessment( - process_description=gross_energy_process_description_a, results=energy_assessment.EnergyAssessmentResults( annual_energy_production=[ dataset.Dataset( @@ -1456,7 +1410,6 @@ def energy_assessment_b( ), ), net_energy_assessment=energy_assessment.NetEnergyAssessment( - process_description=net_energy_process_description_a, results=energy_assessment.EnergyAssessmentResults( annual_energy_production=[ dataset.Dataset( @@ -1520,7 +1473,6 @@ def scenario_a( label="A", description="ABC165-5.5MW turbine model scenario", is_main_scenario=True, - operational_lifetime_length_years=30, wind_farm_ids=["bf_a", "mu"], turbine_wind_resource_assessment=turbine_wind_resource_assessment_a, energy_assessment=energy_assessment_a, @@ -1539,7 +1491,6 @@ def scenario_b( description="PQR169-5.8MW turbine model scenario", comments="Site suitability of turbine model has not yet investigated.", is_main_scenario=False, - operational_lifetime_length_years=30, wind_farm_ids=["bf_b", "mu"], turbine_wind_resource_assessment=turbine_wind_resource_assessment_b, energy_assessment=energy_assessment_b, diff --git a/json_schema/examples/iec_61400-15-2_eya_def_example_a.json b/json_schema/examples/iec_61400-15-2_eya_def_example_a.json index 309ef66..8f95db7 100644 --- a/json_schema/examples/iec_61400-15-2_eya_def_example_a.json +++ b/json_schema/examples/iec_61400-15-2_eya_def_example_a.json @@ -2110,10 +2110,7 @@ "description": "ABC165-5.5MW turbine model scenario", "energy_assessment": { "gross_energy_assessment": { - "process_description": { - "description": "In-house calculation tool, using a wind speed and direction frequency distribution association method.", - "label": "TurboYield" - }, + "comments": "Using an in-house calculation tool with a wind speed and direction frequency distribution association method.", "results": { "annual_energy_production": [ { @@ -2154,10 +2151,7 @@ } }, "net_energy_assessment": { - "process_description": { - "description": "In-house calculation tool, using a frequency distribution approach and treating all wind uncertainty components and all plant performance loss components as independent.", - "label": "TurboYield" - }, + "comments": "In-house calculation tool, using a frequency distribution approach and treating all wind uncertainty components and all plant performance loss components as independent.", "results": { "annual_energy_production": [ { @@ -2271,14 +2265,8 @@ }, "subcategories": [ { - "assessment_process_descriptions": [ - { - "comments": "Internal toolset", - "description": "Energy yield production time series simulation tool.", - "label": "Time Series tool" - } - ], "basis": "time_series_calculation", + "comments": "Energy yield production time series simulation.", "label": "load_curtailment", "results": { "efficiency": [ @@ -2368,7 +2356,6 @@ "id": "b6953ecb-f88b-4660-9f69-bedbbe4c240b", "is_main_scenario": true, "label": "A", - "operational_lifetime_length_years": 30.0, "turbine_wind_resource_assessment": { "results": { "wind_speed": [ @@ -2400,13 +2387,6 @@ ] }, "wind_resource_assessment_id_reference": "BfWF_WRA_1", - "wind_spatial_modelling_processes": [ - { - "comments": "The simulations were run using 60 representative days.", - "description": "A coupled CFD-mesoscale model.", - "label": "xeEdge-meso-cfd" - } - ], "wind_uncertainty_assessment": { "categories": [ { @@ -2526,10 +2506,6 @@ "description": "PQR169-5.8MW turbine model scenario", "energy_assessment": { "gross_energy_assessment": { - "process_description": { - "description": "In-house calculation tool, using a wind speed and direction frequency distribution association method.", - "label": "TurboYield" - }, "results": { "annual_energy_production": [ { @@ -2570,10 +2546,6 @@ } }, "net_energy_assessment": { - "process_description": { - "description": "In-house calculation tool, using a frequency distribution approach and treating all wind uncertainty components and all plant performance loss components as independent.", - "label": "TurboYield" - }, "results": { "annual_energy_production": [ { @@ -2743,7 +2715,6 @@ "id": "e27fefdf-cdd7-441f-a7a7-c4347514b4f7", "is_main_scenario": false, "label": "B", - "operational_lifetime_length_years": 30.0, "turbine_wind_resource_assessment": { "results": { "wind_speed": [ @@ -2775,13 +2746,6 @@ ] }, "wind_resource_assessment_id_reference": "BfWF_WRA_1", - "wind_spatial_modelling_processes": [ - { - "comments": "The simulations were run using 60 representative days.", - "description": "A coupled CFD-mesoscale model.", - "label": "xeEdge-meso-cfd" - } - ], "wind_uncertainty_assessment": { "categories": [ { @@ -2921,6 +2885,7 @@ "id": "bf_a", "installed_capacity": 11.0, "label": "Barefoot Wind Farm", + "operational_lifetime_end_date": "2054-12-31", "operational_lifetime_start_date": "2024-01-01", "relevance": "internal", "restrictions": [ @@ -2980,6 +2945,7 @@ "id": "bf_b", "installed_capacity": 11.6, "label": "Barefoot Wind Farm", + "operational_lifetime_end_date": "2054-12-31", "operational_lifetime_start_date": "2024-01-01", "relevance": "internal", "turbines": [ diff --git a/json_schema/iec_61400-15-2_eya_def.schema.json b/json_schema/iec_61400-15-2_eya_def.schema.json index 5b88b72..5cc5075 100644 --- a/json_schema/iec_61400-15-2_eya_def.schema.json +++ b/json_schema/iec_61400-15-2_eya_def.schema.json @@ -14,50 +14,6 @@ "title": "AssessmentBasis", "type": "string" }, - "AssessmentProcessDescription": { - "additionalProperties": false, - "description": "Description of a process used in an energy yield assessment.", - "properties": { - "comments": { - "anyOf": [ - { - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Optional comments on the assessment process or model, which should not be empty if the field is included.", - "title": "Comments" - }, - "description": { - "description": "Description of the assessment process or model.", - "minLength": 1, - "title": "Description", - "type": "string" - }, - "label": { - "description": "Label or name of the process or model.", - "examples": [ - "WAsP", - "VORTEX BLOCKS", - "DNV CFD", - "VENTOS/M" - ], - "minLength": 1, - "title": "Label", - "type": "string" - } - }, - "required": [ - "label", - "description" - ], - "title": "AssessmentProcessDescription", - "type": "object" - }, "BasicStatisticType": { "description": "Statistic type that can be specified by a single label.", "enum": [ @@ -339,7 +295,7 @@ "description": "Energy assessment results.", "properties": { "annual_energy_production": { - "description": "Annual energy production estimates in GWh.", + "description": "Annual energy production (AEP) estimates at the turbine location(s) in gigawatt hour (GW h). The dimension of the first standard result dataset should be 'wind_farm_id'. The dimension of the second standard result dataset should be 'turbine_id'. Further results with other dimensions may be included optionally.", "items": { "$ref": "#/$defs/Dataset" }, @@ -1764,13 +1720,33 @@ "additionalProperties": false, "description": "Details and results for the assessment of gross energy yield.", "properties": { - "process_description": { - "allOf": [ + "comments": { + "anyOf": [ { - "$ref": "#/$defs/AssessmentProcessDescription" + "minLength": 1, + "type": "string" + }, + { + "type": "null" } ], - "description": "Specification of the process used to calculate the gross EYA estimates." + "default": null, + "description": "Optional comments on the gross energy assessment, which should not be empty if the field is included.", + "title": "Comments" + }, + "description": { + "anyOf": [ + { + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional description of the gross energy assessment, which should not be empty if the field is included.", + "title": "Description" }, "results": { "allOf": [ @@ -1782,7 +1758,6 @@ } }, "required": [ - "process_description", "results" ], "title": "Gross Energy Assessment", @@ -1792,13 +1767,33 @@ "additionalProperties": false, "description": "Details and results for the assessment of net energy yield.", "properties": { - "process_description": { - "allOf": [ + "comments": { + "anyOf": [ + { + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional comments on the net energy assessment, which should not be empty if the field is included.", + "title": "Comments" + }, + "description": { + "anyOf": [ { - "$ref": "#/$defs/AssessmentProcessDescription" + "minLength": 1, + "type": "string" + }, + { + "type": "null" } ], - "description": "Specification of the process used to calculate the net EYA estimates." + "default": null, + "description": "Optional description of the net energy assessment, which should not be empty if the field is included.", + "title": "Description" }, "results": { "allOf": [ @@ -1810,7 +1805,6 @@ } }, "required": [ - "process_description", "results" ], "title": "Net Energy Assessment", @@ -1882,23 +1876,6 @@ "additionalProperties": false, "description": "Plant performance loss assessment subcategory.", "properties": { - "assessment_process_descriptions": { - "anyOf": [ - { - "items": { - "$ref": "#/$defs/AssessmentProcessDescription" - }, - "minItems": 1, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Optional description of calculation processes used in the assessment of the plant performance loss subcategory. The field should not be empty if it is included.", - "title": "Assessment Process Descriptions" - }, "basis": { "allOf": [ { @@ -1942,23 +1919,6 @@ "additionalProperties": false, "description": "Plant performance loss assessment subcategory element.", "properties": { - "assessment_process_descriptions": { - "anyOf": [ - { - "items": { - "$ref": "#/$defs/AssessmentProcessDescription" - }, - "minItems": 1, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Description of calculation processes used in the assessment of the plant performance loss subcategory element.", - "title": "Assessment Process Descriptions" - }, "basis": { "allOf": [ { @@ -2183,18 +2143,6 @@ "title": "Label", "type": "string" }, - "operational_lifetime_length_years": { - "description": "Number of years of project operational lifetime.", - "examples": [ - 10.0, - 20.0, - 30.0 - ], - "exclusiveMaximum": 100.0, - "exclusiveMinimum": 1.0, - "title": "Operational Lifetime Length Years", - "type": "number" - }, "turbine_wind_resource_assessment": { "additionalProperties": false, "description": "Wind resource assessment at the turbine locations.", @@ -2245,10 +2193,10 @@ } ], "default": null, - "description": "Final long-term air density estimates at the turbine location(s) in kilogram per cubic metre.", + "description": "Final long-term air density estimates at the turbine location(s) at hub height in kilogram per cubic metre (kg m-3). The dimension of the first standard result dataset should be 'turbine_id'. Further results with other dimensions may also be included.", "title": "Air Density" }, - "probability": { + "ambient_turbulence_intensity": { "anyOf": [ { "items": { @@ -2262,10 +2210,10 @@ } ], "default": null, - "description": "Final long-term probability distribution estimates at the turbine location(s), such as wind speed probability distributions or joint wind speed and direction frequency distributions, as dimensionless values.", - "title": "Probability" + "description": "Final ambient turbulence intensity estimates at the turbine location(s) at hub height, as dimensionless values. The first standard result dataset should comprise the ambient turbulence intensity as a function of wind speed, with the dimensions 'turbine_id' and 'wind_speed' (in that order). The wind speed coordinates should be 1.0 metre per second bins centered on whole numbers, with the first bin half the width (i.e. 0.25, 1.0, 2.0, 3.0, ...). Further results with other dimensions may also be included.", + "title": "Ambient Turbulence Intensity" }, - "temperature": { + "displacement_height": { "anyOf": [ { "items": { @@ -2279,10 +2227,10 @@ } ], "default": null, - "description": "Final long-term temperature estimates at the turbine location(s) in degree C.", - "title": "Temperature" + "description": "Estimated effective displacement of the boundary layer at the turbine location(s) due to vegetation (forestry) in metre. The displacement height is measured as positive upwards from the ground level. This field is optional as it is only relevant at forested sites. The dimension of the first standard result dataset should be 'turbine_id'. Further results with other dimensions, such as displacement height binned by wind direction, may also be included.", + "title": "Displacement Height" }, - "turbulence_intensity": { + "probability": { "anyOf": [ { "items": { @@ -2296,8 +2244,25 @@ } ], "default": null, - "description": "Final long-term turbulence intensity estimates at the turbine location(s) as dimensionless values.", - "title": "Turbulence Intensity" + "description": "Final long-term probability distribution estimates at the turbine location(s) at hub height, as dimensionless values. The first standard result dataset should comprise the joint wind speed and direction probability distributions, with dimensions 'turbine_id', 'wind_speed' and 'wind_from_direction' (in that order). The wind speed coordinates should be 1.0 metre per second bins centered on whole numbers, with the first bin half the width (i.e. 0.25, 1.0, 2.0, 3.0, ...). The wind direction coordinates should be twelve 30.0 degree bins, with the the first bin centered at 0.0. Further results with other dimensions may also be included.", + "title": "Probability" + }, + "temperature": { + "anyOf": [ + { + "items": { + "$ref": "#/$defs/Dataset" + }, + "minItems": 1, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Final long-term temperature estimates at the turbine location(s) at hub height in degree C. The dimension of the first standard result dataset should be 'turbine_id'. Further results with other dimensions may also be included.", + "title": "Temperature" }, "wind_shear_exponent": { "anyOf": [ @@ -2313,11 +2278,11 @@ } ], "default": null, - "description": "Final long-term power law wind shear exponent estimates at the turbine location(s).", + "description": "Final power law wind shear exponent estimates at the turbine location(s). The dimension of the first standard result dataset should be 'turbine_id'. Further results with other dimensions may also be included.", "title": "Wind Shear Exponent" }, "wind_speed": { - "description": "Final long-term wind speed estimates at the turbine location(s) in metre per second (m s-1).", + "description": "Final long-term wind speed estimates at the turbine location(s) at hub height in metre per second (m s-1). The dimension of the first standard result dataset should be 'turbine_id'. Further results with other dimensions may be included optionally.", "items": { "$ref": "#/$defs/Dataset" }, @@ -2343,14 +2308,6 @@ "title": "Wind Resource Assessment Id Reference", "type": "string" }, - "wind_spatial_modelling_processes": { - "description": "Wind spatial modelling processes used in the assessment.", - "items": { - "$ref": "#/$defs/AssessmentProcessDescription" - }, - "title": "Wind Spatial Modelling Processes", - "type": "array" - }, "wind_uncertainty_assessment": { "additionalProperties": false, "description": "Wind related uncertainty assessment categories including results.", @@ -2587,7 +2544,6 @@ }, "required": [ "wind_resource_assessment_id_reference", - "wind_spatial_modelling_processes", "results", "wind_uncertainty_assessment" ], @@ -2606,7 +2562,6 @@ }, "required": [ "label", - "operational_lifetime_length_years", "wind_farm_ids", "turbine_wind_resource_assessment", "energy_assessment" @@ -2776,22 +2731,14 @@ "type": "string" }, "operational_lifetime_end_date": { - "anyOf": [ - { - "format": "date", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, "description": "Operational lifetime end date of the wind farm in the ISO 8601 standard format for a calendar date, i.e. YYYY-MM-DD.", "examples": [ "2051-03-31", "2025-12-31" ], - "title": "Operational Lifetime End Date" + "format": "date", + "title": "Operational Lifetime End Date", + "type": "string" }, "operational_lifetime_start_date": { "description": "Operational lifetime start date of the wind farm in the ISO 8601 standard format for a calendar date, i.e. YYYY-MM-DD.", @@ -3012,6 +2959,7 @@ "turbines", "relevance", "operational_lifetime_start_date", + "operational_lifetime_end_date", "installed_capacity" ], "title": "Wind Farm Configuration", @@ -3104,19 +3052,27 @@ } ], "default": null, - "description": "Final long-term air density estimates at the measurement location(s) in kilogram per cubic metre. This field is optional since some wind measurement stations may lack measurements required to derive air density estimates, but it should always be included when relevant air density data are available. The dimensions of the first standard result dataset should be 'wind_dataset_id', 'location_id' (where the wind dataset has more than one location, otherwise omitted), and 'height' (in that order). Further results with other dimensions may also be included.", + "description": "Final long-term air density estimates at the measurement location(s) in kilogram per cubic metre (kg m-3). This field is optional since some wind measurement stations may lack measurements required to derive air density estimates, but it should always be included when relevant data are available. The dimensions of the first standard result dataset should be 'wind_dataset_id', 'location_id' (where the wind dataset has more than one location, otherwise omitted), and 'height' (in that order). Further results with other dimensions may also be included.", "title": "Air Density" }, - "probability": { - "description": "Final long-term probability distribution estimates at the measurement location(s), as dimensionless values. The first standard result dataset should comprise the joint wind speed and direction probability distributions, with dimensions 'wind_dataset_id', 'location_id' (where the wind dataset has multiple locations, otherwise omitted), 'height', 'wind_speed' and 'wind_from_direction' (in that order). The wind speed coordinates should be 1.0 metre per second bins centered on whole numbers, with the first bin half the width (i.e. 0.25, 1.0, 2.0, 3.0, ...). The wind direction coordinates should be twelve 30.0 degree bins, with the the first bin centered at 0.0. Further results with other dimensions may be included optionally.", - "items": { - "$ref": "#/$defs/Dataset" - }, - "minItems": 1, - "title": "Probability", - "type": "array" + "ambient_turbulence_intensity": { + "anyOf": [ + { + "items": { + "$ref": "#/$defs/Dataset" + }, + "minItems": 1, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Final ambient turbulence intensity estimates at the measurement location(s), as dimensionless values. This field is optional since some measurement devices may lack meaningful turbulence measurements, but it should always be included when relevant turbulence data are available. The first standard result dataset should comprise the ambient turbulence intensity as a function of wind speed, with the dimensions 'wind_dataset_id', 'location_id' (where the wind dataset has more than one location, otherwise omitted), 'height' and 'wind_speed' (in that order). The wind speed coordinates should be 1.0 metre per second bins centered on whole numbers, with the first bin half the width (i.e. 0.25, 1.0, 2.0, 3.0, ...). Further results with other dimensions may also be included.", + "title": "Ambient Turbulence Intensity" }, - "temperature": { + "displacement_height": { "anyOf": [ { "items": { @@ -3130,10 +3086,19 @@ } ], "default": null, - "description": "Final long-term temperature estimates at the measurement location(s) in degree C. This field is optional since some wind measurement stations may lack measurements of temperature, but it should always be included when relevant temperature data are available. The dimensions of the first standard result dataset should be 'wind_dataset_id', 'location_id' (where the wind dataset has more than one location, otherwise omitted), and 'height' (in that order). Further results with other dimensions may also be included.", - "title": "Temperature" + "description": "Estimated effective displacement of the boundary layer at the measurement location(s) due to vegetation (forestry) in metre. The displacement height is measured as positive upwards from the ground level. This field is optional as it is only relevant at forested sites. The dimensions of the first standard result dataset should be 'wind_dataset_id' and 'location_id' (where the wind dataset has more than one location, otherwise omitted). Further results with other dimensions, such as displacement height binned by wind direction, may also be included.", + "title": "Displacement Height" + }, + "probability": { + "description": "Final long-term probability distribution estimates at the measurement location(s), as dimensionless values. The first standard result dataset should comprise the joint wind speed and direction probability distributions, with dimensions 'wind_dataset_id', 'location_id' (where the wind dataset has multiple locations, otherwise omitted), 'height', 'wind_speed' and 'wind_from_direction' (in that order). The wind speed coordinates should be 1.0 metre per second bins centered on whole numbers, with the first bin half the width (i.e. 0.25, 1.0, 2.0, 3.0, ...). The wind direction coordinates should be twelve 30.0 degree bins, with the the first bin centered at 0.0. Further results with other dimensions may be included optionally.", + "items": { + "$ref": "#/$defs/Dataset" + }, + "minItems": 1, + "title": "Probability", + "type": "array" }, - "turbulence_intensity": { + "temperature": { "anyOf": [ { "items": { @@ -3147,8 +3112,8 @@ } ], "default": null, - "description": "Final long-term turbulence intensity estimates at the measurement location(s), as dimensionless values. This field is optional since some measurement devices may lack meaningful turbulence measurements, but it should always be included when relevant turbulence data are available. The first standard result dataset should comprise the ambient turbulence intensity as a function of wind speed, with the dimensions 'wind_dataset_id', 'location_id' (where the wind dataset has more than one location, otherwise omitted), 'height' and 'wind_speed' (in that order). The wind speed coordinates should be 1.0 metre per second bins centered on whole numbers, with the first bin half the width (i.e. 0.25, 1.0, 2.0, 3.0, ...). Further results with other dimensions may also be included.", - "title": "Turbulence Intensity" + "description": "Final long-term temperature estimates at the measurement location(s) in degree C. This field is optional since some wind measurement stations may lack measurements of temperature, but it should always be included when relevant temperature data are available. The dimensions of the first standard result dataset should be 'wind_dataset_id', 'location_id' (where the wind dataset has more than one location, otherwise omitted), and 'height' (in that order). Further results with other dimensions may also be included.", + "title": "Temperature" }, "wind_shear_exponent": { "anyOf": [