├── .gitattributes ├── .github ├── CODEOWNERS ├── dependabot.yml └── workflows │ ├── ci.yml │ └── dependabot-auto-merge.yml ├── .gitignore ├── .readthedocs.yaml ├── AUTHORS ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── build.gradle ├── docs ├── readthedocs │ ├── Makefile │ ├── _static │ │ ├── css │ │ │ └── theme_override.css │ │ └── figures │ │ │ ├── cosPhiP.png │ │ │ ├── cosPhiP.tex │ │ │ ├── ecdTransformer3w.png │ │ │ ├── ecdTransformer3w.tex │ │ │ ├── qv.png │ │ │ ├── qv.tex │ │ │ ├── transformerWithSwitchGear.png │ │ │ ├── transformerWithSwitchGear.tex │ │ │ └── uml │ │ │ ├── CharacteristicDatamodelConcept.png │ │ │ ├── ConnectorDatamodelConcept.png │ │ │ ├── DataSinkClassDiagram.png │ │ │ ├── DataSourceClassDiagram.png │ │ │ ├── DataSourceClassDiagram_draft.png │ │ │ ├── DefaultInputDirectoryHierarchy.png │ │ │ ├── DefaultInputFolderStructure.png │ │ │ ├── DefaultResultDirectoryHierarchy.png │ │ │ ├── EntitySourceClassDiagram.png │ │ │ ├── FunctionalDataSourceClassDiagram.png │ │ │ ├── GraphicDatamodelConcept.png │ │ │ ├── InputDataDeployment.png │ │ │ ├── InputDatamodelConcept.png │ │ │ ├── ModelContainerConcept.png │ │ │ ├── OutputDatamodelConcept.png │ │ │ ├── SystemDatamodelConcept.png │ │ │ ├── TestDataHierarchy.png │ │ │ ├── ThermalDatamodelConcept.png │ │ │ ├── TimeSeriesDatamodelConcept.png │ │ │ ├── TimeSeriesSourceClassDiagram.png │ │ │ └── WeatherCoordinateSourceClassDiagram.png │ ├── conf.py │ ├── gettingstarted.md │ ├── index.md │ ├── io │ │ ├── ValidationUtils.md │ │ ├── basiciousage.md │ │ ├── csvfiles.md │ │ ├── influxdb.md │ │ └── sql.md │ ├── make.bat │ ├── models │ │ ├── input │ │ │ ├── additionaldata │ │ │ │ ├── idcoordinatesource.md │ │ │ │ └── timeseries.md │ │ │ ├── em.md │ │ │ ├── grid │ │ │ │ ├── gridcontainer.md │ │ │ │ ├── line.md │ │ │ │ ├── linegraphic.md │ │ │ │ ├── measurementunit.md │ │ │ │ ├── node.md │ │ │ │ ├── nodegraphic.md │ │ │ │ ├── switch.md │ │ │ │ ├── transformer2w.md │ │ │ │ └── transformer3w.md │ │ │ ├── operator.md │ │ │ ├── participant │ │ │ │ ├── bm.md │ │ │ │ ├── chp.md │ │ │ │ ├── ev.md │ │ │ │ ├── evcs.md │ │ │ │ ├── fixedfeedin.md │ │ │ │ ├── general.md │ │ │ │ ├── hp.md │ │ │ │ ├── load.md │ │ │ │ ├── pv.md │ │ │ │ ├── storage.md │ │ │ │ └── wec.md │ │ │ └── thermal │ │ │ │ ├── cylindricalstorage.md │ │ │ │ ├── domestichotwaterstorage.md │ │ │ │ ├── thermalbus.md │ │ │ │ └── thermalhouse.md │ │ ├── models.md │ │ └── result │ │ │ ├── grid │ │ │ ├── congestion.md │ │ │ ├── connector.md │ │ │ ├── line.md │ │ │ ├── node.md │ │ │ ├── switch.md │ │ │ ├── transformer.md │ │ │ ├── transformer2w.md │ │ │ └── transformer3w.md │ │ │ └── participant │ │ │ ├── bm.md │ │ │ ├── chp.md │ │ │ ├── cylindricalstorage.md │ │ │ ├── domestichotwaterstorage.md │ │ │ ├── em.md │ │ │ ├── ev.md │ │ │ ├── evcs.md │ │ │ ├── fixedfeedin.md │ │ │ ├── flexoption.md │ │ │ ├── hp.md │ │ │ ├── load.md │ │ │ ├── pv.md │ │ │ ├── storage.md │ │ │ ├── systemparticipant.md │ │ │ ├── thermalhouse.md │ │ │ ├── thermalsink.md │ │ │ ├── thermalstorage.md │ │ │ ├── thermalunit.md │ │ │ └── wec.md │ └── requirements.txt ├── test │ ├── complexTopology.drawio │ └── complexTopology.pdf └── uml │ ├── main │ ├── DataSinkClassDiagram.puml │ ├── DataSourceClassDiagram.puml │ ├── DataSourceClassDiagram_draft.puml │ ├── EntitySourceClassDiagram.puml │ ├── FunctionalDataSourceClassDiagram.puml │ ├── InputDataDeployment.puml │ ├── OutputDatamodelConcept.puml │ ├── TimeSeriesDatamodelConcept.puml │ ├── TimeSeriesSourceClassDiagram.puml │ ├── WeatherCoordinateSourceClassDiagram.puml │ └── input │ │ ├── CharacteristicDatamodelConcept.puml │ │ ├── ConnectorDatamodelConcept.puml │ │ ├── DefaultInputDirectoryHierarchy.puml │ │ ├── DefaultResultDirectoryHierarchy.puml │ │ ├── GraphicDatamodelConcept.puml │ │ ├── InputDatamodelConcept.puml │ │ ├── ModelContainerConcept.puml │ │ ├── SystemDatamodelConcept.puml │ │ └── ThermalDatamodelConcept.puml │ └── test │ └── TestDataHierarchy.puml ├── gradle.properties ├── gradle ├── scripts │ ├── branchName.gradle │ ├── checkJavaVersion.gradle │ ├── documentation.gradle │ ├── jacoco.gradle │ ├── mavenCentralPublish.gradle │ ├── pmd.gradle │ ├── semVer.gradle │ ├── sonarqube.gradle │ ├── spotbugs.gradle │ ├── spotless.gradle │ ├── tests.gradle │ └── vcs.gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── greclipse.properties ├── input └── StandardAssetTypes │ ├── line_type_input.csv │ └── transformer_2_w_type_input.csv ├── scripts ├── branch_type.sh ├── get_versions.sh ├── run-version-check.sh └── version_check.sh ├── settings.gradle ├── src ├── main │ ├── java │ │ └── edu │ │ │ └── ie3 │ │ │ └── datamodel │ │ │ ├── exceptions │ │ │ ├── ChargingPointTypeException.java │ │ │ ├── ConnectorException.java │ │ │ ├── DuplicateEntitiesException.java │ │ │ ├── EntityProcessorException.java │ │ │ ├── ExtractorException.java │ │ │ ├── FactoryException.java │ │ │ ├── FailedValidationException.java │ │ │ ├── FailureException.java │ │ │ ├── FileException.java │ │ │ ├── GraphicSourceException.java │ │ │ ├── InvalidColumnNameException.java │ │ │ ├── InvalidEntityException.java │ │ │ ├── InvalidGridException.java │ │ │ ├── NotImplementedException.java │ │ │ ├── ParsingException.java │ │ │ ├── ProcessorProviderException.java │ │ │ ├── RawGridException.java │ │ │ ├── SinkException.java │ │ │ ├── SourceException.java │ │ │ ├── SystemParticipantsException.java │ │ │ ├── TopologyException.java │ │ │ ├── TryException.java │ │ │ ├── UnsafeEntityException.java │ │ │ ├── ValidationException.java │ │ │ └── VoltageLevelException.java │ │ │ ├── graph │ │ │ ├── DistanceWeightedEdge.java │ │ │ ├── DistanceWeightedGraph.java │ │ │ ├── ImpedanceWeightedEdge.java │ │ │ ├── ImpedanceWeightedGraph.java │ │ │ ├── SubGridGate.java │ │ │ └── SubGridTopologyGraph.java │ │ │ ├── io │ │ │ ├── DbGridMetadata.java │ │ │ ├── IoUtil.java │ │ │ ├── SqlUtils.java │ │ │ ├── connectors │ │ │ │ ├── CouchbaseConnector.java │ │ │ │ ├── CsvFileConnector.java │ │ │ │ ├── DataConnector.java │ │ │ │ ├── InfluxDbConnector.java │ │ │ │ └── SqlConnector.java │ │ │ ├── csv │ │ │ │ ├── BufferedCsvWriter.java │ │ │ │ ├── CsvFileDefinition.java │ │ │ │ ├── CsvIndividualTimeSeriesMetaInformation.java │ │ │ │ └── CsvLoadProfileMetaInformation.java │ │ │ ├── extractor │ │ │ │ ├── Extractor.java │ │ │ │ ├── HasEm.java │ │ │ │ ├── HasLine.java │ │ │ │ ├── HasNodes.java │ │ │ │ ├── HasThermalBus.java │ │ │ │ ├── HasThermalStorage.java │ │ │ │ ├── HasType.java │ │ │ │ └── NestedEntity.java │ │ │ ├── factory │ │ │ │ ├── EntityData.java │ │ │ │ ├── EntityFactory.java │ │ │ │ ├── Factory.java │ │ │ │ ├── FactoryData.java │ │ │ │ ├── SimpleFactoryData.java │ │ │ │ ├── UniqueEntityFactory.java │ │ │ │ ├── input │ │ │ │ │ ├── AbstractThermalStorageInputFactory.java │ │ │ │ │ ├── AssetInputEntityData.java │ │ │ │ │ ├── AssetInputEntityFactory.java │ │ │ │ │ ├── ConnectorInputEntityData.java │ │ │ │ │ ├── ConnectorInputEntityFactory.java │ │ │ │ │ ├── CylindricalStorageInputFactory.java │ │ │ │ │ ├── DomesticHotWaterStorageInputFactory.java │ │ │ │ │ ├── EmAssetInputEntityData.java │ │ │ │ │ ├── EmInputFactory.java │ │ │ │ │ ├── LineInputFactory.java │ │ │ │ │ ├── MeasurementUnitInputFactory.java │ │ │ │ │ ├── NodeAssetInputEntityData.java │ │ │ │ │ ├── NodeInputFactory.java │ │ │ │ │ ├── OperatorInputFactory.java │ │ │ │ │ ├── SwitchInputFactory.java │ │ │ │ │ ├── ThermalBusInputFactory.java │ │ │ │ │ ├── ThermalHouseInputFactory.java │ │ │ │ │ ├── ThermalUnitInputEntityData.java │ │ │ │ │ ├── Transformer2WInputFactory.java │ │ │ │ │ ├── Transformer3WInputEntityData.java │ │ │ │ │ ├── Transformer3WInputFactory.java │ │ │ │ │ ├── TypedConnectorInputEntityData.java │ │ │ │ │ ├── graphics │ │ │ │ │ │ ├── GraphicInputFactory.java │ │ │ │ │ │ ├── LineGraphicInputEntityData.java │ │ │ │ │ │ ├── LineGraphicInputFactory.java │ │ │ │ │ │ ├── NodeGraphicInputEntityData.java │ │ │ │ │ │ └── NodeGraphicInputFactory.java │ │ │ │ │ └── participant │ │ │ │ │ │ ├── BmInputFactory.java │ │ │ │ │ │ ├── ChpInputEntityData.java │ │ │ │ │ │ ├── ChpInputFactory.java │ │ │ │ │ │ ├── EvInputFactory.java │ │ │ │ │ │ ├── EvcsInputFactory.java │ │ │ │ │ │ ├── FixedFeedInInputFactory.java │ │ │ │ │ │ ├── HpInputEntityData.java │ │ │ │ │ │ ├── HpInputFactory.java │ │ │ │ │ │ ├── LoadInputFactory.java │ │ │ │ │ │ ├── PvInputFactory.java │ │ │ │ │ │ ├── StorageInputFactory.java │ │ │ │ │ │ ├── SystemParticipantEntityData.java │ │ │ │ │ │ ├── SystemParticipantInputEntityFactory.java │ │ │ │ │ │ ├── SystemParticipantTypedEntityData.java │ │ │ │ │ │ └── WecInputFactory.java │ │ │ │ ├── result │ │ │ │ │ ├── CongestionResultFactory.java │ │ │ │ │ ├── ConnectorResultFactory.java │ │ │ │ │ ├── FlexOptionsResultFactory.java │ │ │ │ │ ├── NodeResultFactory.java │ │ │ │ │ ├── ResultEntityFactory.java │ │ │ │ │ ├── SwitchResultFactory.java │ │ │ │ │ ├── SystemParticipantResultFactory.java │ │ │ │ │ └── ThermalResultFactory.java │ │ │ │ ├── timeseries │ │ │ │ │ ├── BdewLoadProfileFactory.java │ │ │ │ │ ├── CosmoIdCoordinateFactory.java │ │ │ │ │ ├── CosmoTimeBasedWeatherValueFactory.java │ │ │ │ │ ├── IconIdCoordinateFactory.java │ │ │ │ │ ├── IconTimeBasedWeatherValueFactory.java │ │ │ │ │ ├── IdCoordinateFactory.java │ │ │ │ │ ├── LoadProfileData.java │ │ │ │ │ ├── LoadProfileFactory.java │ │ │ │ │ ├── RandomLoadProfileFactory.java │ │ │ │ │ ├── SimpleTimeBasedValueData.java │ │ │ │ │ ├── SqlIdCoordinateFactory.java │ │ │ │ │ ├── TimeBasedSimpleValueFactory.java │ │ │ │ │ ├── TimeBasedValueData.java │ │ │ │ │ ├── TimeBasedValueFactory.java │ │ │ │ │ ├── TimeBasedWeatherValueData.java │ │ │ │ │ ├── TimeBasedWeatherValueFactory.java │ │ │ │ │ ├── TimeSeriesMappingFactory.java │ │ │ │ │ └── TimeSeriesMetaInformationFactory.java │ │ │ │ └── typeinput │ │ │ │ │ ├── AssetTypeInputEntityFactory.java │ │ │ │ │ ├── LineTypeInputFactory.java │ │ │ │ │ ├── SystemParticipantTypeInputFactory.java │ │ │ │ │ ├── Transformer2WTypeInputFactory.java │ │ │ │ │ └── Transformer3WTypeInputFactory.java │ │ │ ├── naming │ │ │ │ ├── DatabaseNamingStrategy.java │ │ │ │ ├── DefaultDirectoryHierarchy.java │ │ │ │ ├── EntityPersistenceNamingStrategy.java │ │ │ │ ├── FileHierarchy.java │ │ │ │ ├── FileNamingStrategy.java │ │ │ │ ├── FlatDirectoryHierarchy.java │ │ │ │ ├── TimeSeriesMetaInformation.java │ │ │ │ └── timeseries │ │ │ │ │ ├── ColumnScheme.java │ │ │ │ │ ├── IndividualTimeSeriesMetaInformation.java │ │ │ │ │ └── LoadProfileMetaInformation.java │ │ │ ├── processor │ │ │ │ ├── EntityProcessor.java │ │ │ │ ├── Processor.java │ │ │ │ ├── ProcessorProvider.java │ │ │ │ ├── input │ │ │ │ │ └── InputEntityProcessor.java │ │ │ │ ├── result │ │ │ │ │ └── ResultEntityProcessor.java │ │ │ │ └── timeseries │ │ │ │ │ ├── FieldSourceToMethod.java │ │ │ │ │ ├── TimeSeriesProcessor.java │ │ │ │ │ └── TimeSeriesProcessorKey.java │ │ │ ├── sink │ │ │ │ ├── CsvFileSink.java │ │ │ │ ├── DataSink.java │ │ │ │ ├── InfluxDbSink.java │ │ │ │ ├── InputDataSink.java │ │ │ │ ├── OutputDataSink.java │ │ │ │ └── SqlSink.java │ │ │ └── source │ │ │ │ ├── AssetEntitySource.java │ │ │ │ ├── DataSource.java │ │ │ │ ├── EnergyManagementSource.java │ │ │ │ ├── EntitySource.java │ │ │ │ ├── GraphicSource.java │ │ │ │ ├── IdCoordinateSource.java │ │ │ │ ├── LoadProfileSource.java │ │ │ │ ├── RawGridSource.java │ │ │ │ ├── ResultEntitySource.java │ │ │ │ ├── SourceValidator.java │ │ │ │ ├── SystemParticipantSource.java │ │ │ │ ├── ThermalSource.java │ │ │ │ ├── TimeSeriesMappingSource.java │ │ │ │ ├── TimeSeriesMetaInformationSource.java │ │ │ │ ├── TimeSeriesSource.java │ │ │ │ ├── TypeSource.java │ │ │ │ ├── WeatherSource.java │ │ │ │ ├── WholesalePriceSource.java │ │ │ │ ├── couchbase │ │ │ │ └── CouchbaseWeatherSource.java │ │ │ │ ├── csv │ │ │ │ ├── CsvDataSource.java │ │ │ │ ├── CsvIdCoordinateSource.java │ │ │ │ ├── CsvJointGridContainerSource.java │ │ │ │ ├── CsvLoadProfileSource.java │ │ │ │ ├── CsvThermalGridSource.java │ │ │ │ ├── CsvTimeSeriesMappingSource.java │ │ │ │ ├── CsvTimeSeriesMetaInformationSource.java │ │ │ │ ├── CsvTimeSeriesSource.java │ │ │ │ └── CsvWeatherSource.java │ │ │ │ ├── influxdb │ │ │ │ └── InfluxDbWeatherSource.java │ │ │ │ └── sql │ │ │ │ ├── SqlDataSource.java │ │ │ │ ├── SqlIdCoordinateSource.java │ │ │ │ ├── SqlLoadProfileSource.java │ │ │ │ ├── SqlTimeSeriesMappingSource.java │ │ │ │ ├── SqlTimeSeriesMetaInformationSource.java │ │ │ │ ├── SqlTimeSeriesSource.java │ │ │ │ └── SqlWeatherSource.java │ │ │ ├── models │ │ │ ├── BdewSeason.java │ │ │ ├── ElectricCurrentType.java │ │ │ ├── Entity.java │ │ │ ├── Operable.java │ │ │ ├── OperationTime.java │ │ │ ├── StandardUnits.java │ │ │ ├── UniqueEntity.java │ │ │ ├── input │ │ │ │ ├── AssetInput.java │ │ │ │ ├── AssetTypeInput.java │ │ │ │ ├── EmInput.java │ │ │ │ ├── IdCoordinateInput.java │ │ │ │ ├── InputEntity.java │ │ │ │ ├── MeasurementUnitInput.java │ │ │ │ ├── NodeInput.java │ │ │ │ ├── OperatorInput.java │ │ │ │ ├── UniqueInputEntity.java │ │ │ │ ├── connector │ │ │ │ │ ├── ConnectorInput.java │ │ │ │ │ ├── ConnectorPort.java │ │ │ │ │ ├── LineInput.java │ │ │ │ │ ├── SwitchInput.java │ │ │ │ │ ├── Transformer2WInput.java │ │ │ │ │ ├── Transformer3WInput.java │ │ │ │ │ ├── TransformerInput.java │ │ │ │ │ └── type │ │ │ │ │ │ ├── LineTypeInput.java │ │ │ │ │ │ ├── Transformer2WTypeInput.java │ │ │ │ │ │ └── Transformer3WTypeInput.java │ │ │ │ ├── container │ │ │ │ │ ├── GraphicElements.java │ │ │ │ │ ├── GridContainer.java │ │ │ │ │ ├── InputContainer.java │ │ │ │ │ ├── JointGridContainer.java │ │ │ │ │ ├── RawGridElements.java │ │ │ │ │ ├── SubGridContainer.java │ │ │ │ │ ├── SystemParticipants.java │ │ │ │ │ ├── ThermalGrid.java │ │ │ │ │ └── ThermalUnits.java │ │ │ │ ├── graphics │ │ │ │ │ ├── GraphicInput.java │ │ │ │ │ ├── LineGraphicInput.java │ │ │ │ │ └── NodeGraphicInput.java │ │ │ │ ├── system │ │ │ │ │ ├── BmInput.java │ │ │ │ │ ├── ChpInput.java │ │ │ │ │ ├── EvInput.java │ │ │ │ │ ├── EvcsInput.java │ │ │ │ │ ├── FixedFeedInInput.java │ │ │ │ │ ├── HpInput.java │ │ │ │ │ ├── LoadInput.java │ │ │ │ │ ├── PvInput.java │ │ │ │ │ ├── StorageInput.java │ │ │ │ │ ├── SystemParticipantInput.java │ │ │ │ │ ├── WecInput.java │ │ │ │ │ ├── characteristic │ │ │ │ │ │ ├── CharacteristicInput.java │ │ │ │ │ │ ├── CharacteristicPoint.java │ │ │ │ │ │ ├── CosPhiFixed.java │ │ │ │ │ │ ├── CosPhiP.java │ │ │ │ │ │ ├── OlmCharacteristicInput.java │ │ │ │ │ │ ├── QV.java │ │ │ │ │ │ ├── ReactivePowerCharacteristic.java │ │ │ │ │ │ └── WecCharacteristicInput.java │ │ │ │ │ └── type │ │ │ │ │ │ ├── BmTypeInput.java │ │ │ │ │ │ ├── ChpTypeInput.java │ │ │ │ │ │ ├── EvTypeInput.java │ │ │ │ │ │ ├── HpTypeInput.java │ │ │ │ │ │ ├── StorageTypeInput.java │ │ │ │ │ │ ├── SystemParticipantTypeInput.java │ │ │ │ │ │ ├── WecTypeInput.java │ │ │ │ │ │ ├── chargingpoint │ │ │ │ │ │ ├── ChargingPointType.java │ │ │ │ │ │ └── ChargingPointTypeUtils.java │ │ │ │ │ │ └── evcslocation │ │ │ │ │ │ ├── EvcsLocationType.java │ │ │ │ │ │ └── EvcsLocationTypeUtils.java │ │ │ │ └── thermal │ │ │ │ │ ├── AbstractStorageInput.java │ │ │ │ │ ├── CylindricalStorageInput.java │ │ │ │ │ ├── DomesticHotWaterStorageInput.java │ │ │ │ │ ├── ThermalBusInput.java │ │ │ │ │ ├── ThermalHouseInput.java │ │ │ │ │ ├── ThermalInput.java │ │ │ │ │ ├── ThermalSinkInput.java │ │ │ │ │ ├── ThermalStorageInput.java │ │ │ │ │ └── ThermalUnitInput.java │ │ │ ├── profile │ │ │ │ ├── BdewStandardLoadProfile.java │ │ │ │ ├── LoadProfile.java │ │ │ │ ├── NbwTemperatureDependantLoadProfile.java │ │ │ │ ├── StandardLoadProfile.java │ │ │ │ └── TemperatureDependantLoadProfile.java │ │ │ ├── result │ │ │ │ ├── CongestionResult.java │ │ │ │ ├── NodeResult.java │ │ │ │ ├── ResultEntity.java │ │ │ │ ├── connector │ │ │ │ │ ├── ConnectorResult.java │ │ │ │ │ ├── LineResult.java │ │ │ │ │ ├── SwitchResult.java │ │ │ │ │ ├── Transformer2WResult.java │ │ │ │ │ ├── Transformer3WResult.java │ │ │ │ │ └── TransformerResult.java │ │ │ │ ├── system │ │ │ │ │ ├── BmResult.java │ │ │ │ │ ├── ChpResult.java │ │ │ │ │ ├── ElectricalEnergyStorageResult.java │ │ │ │ │ ├── EmResult.java │ │ │ │ │ ├── EvResult.java │ │ │ │ │ ├── EvcsResult.java │ │ │ │ │ ├── FixedFeedInResult.java │ │ │ │ │ ├── FlexOptionsResult.java │ │ │ │ │ ├── HpResult.java │ │ │ │ │ ├── LoadResult.java │ │ │ │ │ ├── PvResult.java │ │ │ │ │ ├── StorageResult.java │ │ │ │ │ ├── SystemParticipantResult.java │ │ │ │ │ ├── SystemParticipantWithHeatResult.java │ │ │ │ │ └── WecResult.java │ │ │ │ └── thermal │ │ │ │ │ ├── AbstractThermalStorageResult.java │ │ │ │ │ ├── CylindricalStorageResult.java │ │ │ │ │ ├── DomesticHotWaterStorageResult.java │ │ │ │ │ ├── ThermalHouseResult.java │ │ │ │ │ ├── ThermalSinkResult.java │ │ │ │ │ ├── ThermalStorageResult.java │ │ │ │ │ └── ThermalUnitResult.java │ │ │ ├── timeseries │ │ │ │ ├── TimeSeries.java │ │ │ │ ├── TimeSeriesEntry.java │ │ │ │ ├── individual │ │ │ │ │ ├── IndividualTimeSeries.java │ │ │ │ │ └── TimeBasedValue.java │ │ │ │ └── repetitive │ │ │ │ │ ├── BdewLoadProfileTimeSeries.java │ │ │ │ │ ├── LoadProfileEntry.java │ │ │ │ │ ├── LoadProfileTimeSeries.java │ │ │ │ │ ├── RandomLoadProfileTimeSeries.java │ │ │ │ │ └── RepetitiveTimeSeries.java │ │ │ ├── value │ │ │ │ ├── CoordinateValue.java │ │ │ │ ├── EnergyPriceValue.java │ │ │ │ ├── HeatAndPValue.java │ │ │ │ ├── HeatAndSValue.java │ │ │ │ ├── HeatDemandValue.java │ │ │ │ ├── PValue.java │ │ │ │ ├── SValue.java │ │ │ │ ├── SolarIrradianceValue.java │ │ │ │ ├── TemperatureValue.java │ │ │ │ ├── Value.java │ │ │ │ ├── VoltageValue.java │ │ │ │ ├── WeatherValue.java │ │ │ │ ├── WindValue.java │ │ │ │ └── load │ │ │ │ │ ├── BdewLoadValues.java │ │ │ │ │ ├── LoadValues.java │ │ │ │ │ └── RandomLoadValues.java │ │ │ └── voltagelevels │ │ │ │ ├── CommonVoltageLevel.java │ │ │ │ ├── GermanVoltageLevelUtils.java │ │ │ │ └── VoltageLevel.java │ │ │ └── utils │ │ │ ├── ContainerNodeUpdateUtil.java │ │ │ ├── ContainerUtils.java │ │ │ ├── ExceptionUtils.java │ │ │ ├── FileUtils.java │ │ │ ├── GridAndGeoUtils.java │ │ │ ├── QuadFunction.java │ │ │ ├── TimeSeriesUtils.java │ │ │ ├── TriFunction.java │ │ │ ├── Try.java │ │ │ └── validation │ │ │ ├── ConnectorValidationUtils.java │ │ │ ├── GraphicValidationUtils.java │ │ │ ├── GridContainerValidationUtils.java │ │ │ ├── MeasurementUnitValidationUtils.java │ │ │ ├── NodeValidationUtils.java │ │ │ ├── SystemParticipantValidationUtils.java │ │ │ ├── ThermalValidationUtils.java │ │ │ ├── UniquenessValidationUtils.java │ │ │ └── ValidationUtils.java │ └── resources │ │ ├── dataconnections_template.conf │ │ ├── jdbc_connector_template.conf │ │ └── load │ │ ├── lpts_g0.csv │ │ ├── lpts_g1.csv │ │ ├── lpts_g2.csv │ │ ├── lpts_g3.csv │ │ ├── lpts_g4.csv │ │ ├── lpts_g5.csv │ │ ├── lpts_g6.csv │ │ ├── lpts_h0.csv │ │ ├── lpts_l0.csv │ │ ├── lpts_l1.csv │ │ ├── lpts_l2.csv │ │ └── lpts_random.csv └── test │ ├── groovy │ └── edu │ │ └── ie3 │ │ ├── datamodel │ │ ├── io │ │ │ ├── connectors │ │ │ │ ├── CsvFileConnectorTest.groovy │ │ │ │ └── SqlConnectorIT.groovy │ │ │ ├── csv │ │ │ │ ├── BufferedCsvWriterTest.groovy │ │ │ │ ├── CsvFileDefinitionTest.groovy │ │ │ │ └── timeseries │ │ │ │ │ └── ColumnSchemeTest.groovy │ │ │ ├── extractor │ │ │ │ └── ExtractorTest.groovy │ │ │ ├── factory │ │ │ │ ├── FactoryTest.groovy │ │ │ │ ├── graphics │ │ │ │ │ ├── LineGraphicInputFactoryTest.groovy │ │ │ │ │ └── NodeGraphicInputFactoryTest.groovy │ │ │ │ ├── input │ │ │ │ │ ├── AssetInputEntityFactoryTest.groovy │ │ │ │ │ ├── CylindricalStorageInputFactoryTest.groovy │ │ │ │ │ ├── DomesticHotWaterStorageInputFactoryTest.groovy │ │ │ │ │ ├── EmInputFactoryTest.groovy │ │ │ │ │ ├── LineInputFactoryTest.groovy │ │ │ │ │ ├── MeasurementUnitInputFactoryTest.groovy │ │ │ │ │ ├── NodeInputFactoryTest.groovy │ │ │ │ │ ├── OperatorInputFactoryTest.groovy │ │ │ │ │ ├── SwitchInputFactoryTest.groovy │ │ │ │ │ ├── ThermalBusInputFactoryTest.groovy │ │ │ │ │ ├── ThermalHouseInputFactoryTest.groovy │ │ │ │ │ ├── Transformer2WInputFactoryTest.groovy │ │ │ │ │ ├── Transformer3WInputFactoryTest.groovy │ │ │ │ │ └── participant │ │ │ │ │ │ ├── BmInputFactoryTest.groovy │ │ │ │ │ │ ├── ChpInputFactoryTest.groovy │ │ │ │ │ │ ├── EvInputFactoryTest.groovy │ │ │ │ │ │ ├── EvcsInputFactoryTest.groovy │ │ │ │ │ │ ├── FixedFeedInInputFactoryTest.groovy │ │ │ │ │ │ ├── HpInputFactoryTest.groovy │ │ │ │ │ │ ├── LoadInputFactoryTest.groovy │ │ │ │ │ │ ├── PvInputFactoryTest.groovy │ │ │ │ │ │ ├── StorageInputFactoryTest.groovy │ │ │ │ │ │ └── WecInputFactoryTest.groovy │ │ │ │ ├── result │ │ │ │ │ ├── ConnectorResultFactoryTest.groovy │ │ │ │ │ ├── FlexOptionsResultFactoryTest.groovy │ │ │ │ │ ├── NodeResultFactoryTest.groovy │ │ │ │ │ ├── SwitchResultFactoryTest.groovy │ │ │ │ │ ├── SystemParticipantResultFactoryTest.groovy │ │ │ │ │ └── ThermalResultFactoryTest.groovy │ │ │ │ ├── timeseries │ │ │ │ │ ├── BdewLoadProfileFactoryTest.groovy │ │ │ │ │ ├── CosmoIdCoordinateFactoryTest.groovy │ │ │ │ │ ├── CosmoTimeBasedWeatherValueFactoryTest.groovy │ │ │ │ │ ├── IconIdCoordinateFactoryTest.groovy │ │ │ │ │ ├── IconTimeBasedWeatherValueFactoryTest.groovy │ │ │ │ │ ├── RandomLoadProfileFactoryTest.groovy │ │ │ │ │ └── TimeBasedSimpleValueFactoryTest.groovy │ │ │ │ └── typeinput │ │ │ │ │ ├── LineTypeInputFactoryTest.groovy │ │ │ │ │ ├── SystemParticipantTypeInputFactoryTest.groovy │ │ │ │ │ ├── Transformer2WTypeInputFactoryTest.groovy │ │ │ │ │ └── Transformer3WTypeInputFactoryTest.groovy │ │ │ ├── naming │ │ │ │ ├── DefaultDirectoryHierarchyTest.groovy │ │ │ │ ├── EntityPersistenceNamingStrategyTest.groovy │ │ │ │ ├── FileNamingStrategyTest.groovy │ │ │ │ └── FlatDirectoryHierarchyTest.groovy │ │ │ ├── processor │ │ │ │ ├── ProcessorProviderTest.groovy │ │ │ │ ├── input │ │ │ │ │ └── InputEntityProcessorTest.groovy │ │ │ │ ├── result │ │ │ │ │ └── ResultEntityProcessorTest.groovy │ │ │ │ └── timeseries │ │ │ │ │ └── TimeSeriesProcessorTest.groovy │ │ │ ├── sink │ │ │ │ ├── CsvFileSinkTest.groovy │ │ │ │ ├── InfluxDbSinkIT.groovy │ │ │ │ └── SqlSinkTest.groovy │ │ │ └── source │ │ │ │ ├── AssetEntitySourceTest.groovy │ │ │ │ ├── DummyDataSource.groovy │ │ │ │ ├── EnergyManagementSourceTest.groovy │ │ │ │ ├── EntitySourceTest.groovy │ │ │ │ ├── IdCoordinateSourceMock.groovy │ │ │ │ ├── IdCoordinateSourceTest.groovy │ │ │ │ ├── LoadProfileSourceTest.groovy │ │ │ │ ├── SystemParticipantSourceTest.groovy │ │ │ │ ├── ThermalSourceTest.groovy │ │ │ │ ├── TimeSeriesMappingSourceTest.groovy │ │ │ │ ├── couchbase │ │ │ │ ├── CouchbaseWeatherSourceCosmoIT.groovy │ │ │ │ └── CouchbaseWeatherSourceIconIT.groovy │ │ │ │ ├── csv │ │ │ │ ├── CsvDataSourceTest.groovy │ │ │ │ ├── CsvEnergyManagementSourceTest.groovy │ │ │ │ ├── CsvGraphicSourceTest.groovy │ │ │ │ ├── CsvIdCoordinateSourceCosmoIT.groovy │ │ │ │ ├── CsvIdCoordinateSourceIconIT.groovy │ │ │ │ ├── CsvRawGridSourceTest.groovy │ │ │ │ ├── CsvResultEntitySourceTest.groovy │ │ │ │ ├── CsvSystemParticipantSourceTest.groovy │ │ │ │ ├── CsvTestDataMeta.groovy │ │ │ │ ├── CsvThermalGridSourceTest.groovy │ │ │ │ ├── CsvThermalSourceTest.groovy │ │ │ │ ├── CsvTimeSeriesMappingSourceIT.groovy │ │ │ │ ├── CsvTimeSeriesMetaInformationSourceIT.groovy │ │ │ │ ├── CsvTimeSeriesSourceIT.groovy │ │ │ │ ├── CsvTimeSeriesSourceTest.groovy │ │ │ │ ├── CsvTypeSourceTest.groovy │ │ │ │ ├── CsvWeatherSourceCosmoTest.groovy │ │ │ │ ├── CsvWeatherSourceIconTest.groovy │ │ │ │ └── GridIoIT.groovy │ │ │ │ ├── influxdb │ │ │ │ ├── InfluxDbWeatherSourceCosmoIT.groovy │ │ │ │ └── InfluxDbWeatherSourceIconIT.groovy │ │ │ │ └── sql │ │ │ │ ├── SqlIdCoordinateSourceIT.groovy │ │ │ │ ├── SqlLoadProfileSourceIT.groovy │ │ │ │ ├── SqlTimeSeriesMappingSourceIT.groovy │ │ │ │ ├── SqlTimeSeriesMetaInformationSourceIT.groovy │ │ │ │ ├── SqlTimeSeriesSourceIT.groovy │ │ │ │ ├── SqlWeatherSourceCosmoIT.groovy │ │ │ │ └── SqlWeatherSourceIconIT.groovy │ │ ├── models │ │ │ ├── CommonVoltageLevelTest.groovy │ │ │ ├── GermanVoltageLevelUtilsTest.groovy │ │ │ ├── input │ │ │ │ ├── MeasurementUnitInputTest.groovy │ │ │ │ ├── NodeInputTest.groovy │ │ │ │ ├── OperatorInputTest.groovy │ │ │ │ ├── connector │ │ │ │ │ ├── LineInputTest.groovy │ │ │ │ │ ├── SwitchInputTest.groovy │ │ │ │ │ ├── Transformer2WInputTest.groovy │ │ │ │ │ └── Transformer3WInputTest.groovy │ │ │ │ ├── container │ │ │ │ │ ├── GraphicElementsTest.groovy │ │ │ │ │ ├── JointGridContainerTest.groovy │ │ │ │ │ ├── RawGridElementsTest.groovy │ │ │ │ │ ├── SystemParticipantsTest.groovy │ │ │ │ │ ├── ThermalGridTest.groovy │ │ │ │ │ └── ThermalUnitsTest.groovy │ │ │ │ ├── graphics │ │ │ │ │ ├── GraphicInputTest.groovy │ │ │ │ │ ├── LineGraphicInputTest.groovy │ │ │ │ │ └── NodeGraphicInputTest.groovy │ │ │ │ ├── system │ │ │ │ │ ├── BmInputTest.groovy │ │ │ │ │ ├── ChpInputTest.groovy │ │ │ │ │ ├── EmInputTest.groovy │ │ │ │ │ ├── EvInputTest.groovy │ │ │ │ │ ├── EvcsInputTest.groovy │ │ │ │ │ ├── FixedFeedInInputTest.groovy │ │ │ │ │ ├── HpInputTest.groovy │ │ │ │ │ ├── LoadInputTest.groovy │ │ │ │ │ ├── PvInputTest.groovy │ │ │ │ │ ├── StorageInputTest.groovy │ │ │ │ │ ├── WecInputTest.groovy │ │ │ │ │ └── type │ │ │ │ │ │ ├── BmTypeInputTest.groovy │ │ │ │ │ │ ├── ChpTypeInputTest.groovy │ │ │ │ │ │ ├── EvTypeInputTest.groovy │ │ │ │ │ │ ├── HpTypeInputTest.groovy │ │ │ │ │ │ ├── StorageTypeInputTest.groovy │ │ │ │ │ │ ├── WecTypeInputTest.groovy │ │ │ │ │ │ ├── chargingpoint │ │ │ │ │ │ ├── ChargingPointTypeTest.groovy │ │ │ │ │ │ └── ChargingPointTypeUtilsTest.groovy │ │ │ │ │ │ └── evcslocation │ │ │ │ │ │ └── EvcsLocationTypeUtilsTest.groovy │ │ │ │ └── thermal │ │ │ │ │ ├── CylindricalStorageInputTest.groovy │ │ │ │ │ ├── DomesticHotWaterStorageInputTest.groovy │ │ │ │ │ ├── ThermalBusInputTest.groovy │ │ │ │ │ └── ThermalHouseInputTest.groovy │ │ │ ├── profile │ │ │ │ └── LoadProfileTest.groovy │ │ │ ├── system │ │ │ │ └── characteristic │ │ │ │ │ ├── CharacteristicPointTest.groovy │ │ │ │ │ ├── OlmCharacteristicTest.groovy │ │ │ │ │ ├── ReactivePowerCharacteristicTest.groovy │ │ │ │ │ └── WecCharacteristicTest.groovy │ │ │ ├── timeseries │ │ │ │ ├── IndividualTimeSeriesTest.groovy │ │ │ │ └── IntValue.groovy │ │ │ ├── typeInput │ │ │ │ ├── LineTypeInputTest.groovy │ │ │ │ ├── Transformer2WTypeInputTest.groovy │ │ │ │ └── Transformer3WTypeInputTest.groovy │ │ │ └── value │ │ │ │ ├── SValueTest.groovy │ │ │ │ ├── SolarIrradianceValueTest.groovy │ │ │ │ └── VoltageValueTest.groovy │ │ └── utils │ │ │ ├── ContainerNodeUpdateUtilTest.groovy │ │ │ ├── ContainerUtilsTest.groovy │ │ │ ├── FileUtilsTest.groovy │ │ │ ├── GridAndGeoUtilsTest.groovy │ │ │ ├── TimeSeriesUtilsTest.groovy │ │ │ ├── TryTest.groovy │ │ │ └── validation │ │ │ ├── ConnectorValidationUtilsTest.groovy │ │ │ ├── DummyAssetInput.groovy │ │ │ ├── GraphicValidationUtilsTest.groovy │ │ │ ├── GridContainerValidationUtilsTest.groovy │ │ │ ├── InvalidAssetTypeInput.groovy │ │ │ ├── InvalidSystemParticipantInput.groovy │ │ │ ├── InvalidSystemParticipantTypeInput.groovy │ │ │ ├── MeasurementUnitValidationUtilsTest.groovy │ │ │ ├── NodeValidationUtilsTest.groovy │ │ │ ├── SystemParticipantValidationUtilsTest.groovy │ │ │ ├── ThermalValidationUtilsTest.groovy │ │ │ ├── UniquenessValidationUtilsTest.groovy │ │ │ └── ValidationUtilsTest.groovy │ │ ├── resources │ │ └── load │ │ │ └── BdewLoadProfileTest.groovy │ │ └── test │ │ ├── common │ │ ├── ComplexTopology.groovy │ │ ├── CosmoWeatherTestData.groovy │ │ ├── GridTestData.groovy │ │ ├── IconWeatherTestData.groovy │ │ ├── ResultEntityTestData.groovy │ │ ├── SampleJointGrid.groovy │ │ ├── SystemParticipantTestData.groovy │ │ ├── ThermalUnitInputTestData.groovy │ │ ├── TimeSeriesSourceTestData.groovy │ │ ├── TimeSeriesTestData.groovy │ │ ├── TypeTestData.groovy │ │ └── WeatherTestData.groovy │ │ └── helper │ │ ├── DoubleTestHelper.groovy │ │ ├── EntityMap.groovy │ │ ├── FactoryTestHelper.groovy │ │ ├── TestContainerHelper.groovy │ │ ├── UuidPrinter.groovy │ │ └── WeatherSourceTestHelper.groovy │ ├── java │ └── edu │ │ └── ie3 │ │ └── datamodel │ │ └── models │ │ ├── OperationTimeBuilderTest.java │ │ └── OperationTimeTest.java │ └── resources │ ├── default_directory_hierarchy.tar.gz │ ├── edu │ └── ie3 │ │ └── datamodel │ │ └── io │ │ ├── connectors │ │ └── _sql │ │ │ └── connectorTest.sql │ │ ├── sink │ │ └── _sql │ │ │ ├── cleanup.sql │ │ │ ├── grids.sql │ │ │ ├── input_entities.sql │ │ │ ├── load_profiles.sql │ │ │ ├── result_entities.sql │ │ │ ├── setup.sql │ │ │ ├── time_series.sql │ │ │ └── types.sql │ │ └── source │ │ ├── couchbase │ │ └── _weather │ │ │ ├── cosmo │ │ │ └── weather.json │ │ │ └── icon │ │ │ └── weather.json │ │ ├── csv │ │ ├── _coordinates │ │ │ ├── cosmo │ │ │ │ └── coordinates.csv │ │ │ └── icon │ │ │ │ └── coordinates.csv │ │ ├── _graphics │ │ │ ├── line_graphic_input.csv │ │ │ └── node_graphic_input.csv │ │ ├── _grid │ │ │ ├── default │ │ │ │ ├── line_input.csv │ │ │ │ ├── measurement_unit_input.csv │ │ │ │ ├── node_input.csv │ │ │ │ ├── switch_input.csv │ │ │ │ ├── transformer_2_w_input.csv │ │ │ │ └── transformer_3_w_input.csv │ │ │ ├── empty │ │ │ │ ├── line_input.csv │ │ │ │ ├── measurement_unit_input.csv │ │ │ │ ├── node_input.csv │ │ │ │ ├── switch_input.csv │ │ │ │ ├── transformer_2_w_input.csv │ │ │ │ └── transformer_3_w_input.csv │ │ │ └── malformed │ │ │ │ ├── line_input.csv │ │ │ │ ├── measurement_unit_input.csv │ │ │ │ ├── node_input.csv │ │ │ │ ├── switch_input.csv │ │ │ │ ├── transformer_2_w_input.csv │ │ │ │ └── transformer_3_w_input.csv │ │ ├── _joint_grid │ │ │ ├── bm_input.csv │ │ │ ├── bm_type_input.csv │ │ │ ├── evcs_input.csv │ │ │ ├── fixed_feed_in_input.csv │ │ │ ├── its_pq_8c04e94e-76b0-4369-a55c-f5e1117fb83e.csv │ │ │ ├── line_graphic_input.csv │ │ │ ├── line_input.csv │ │ │ ├── line_type_input.csv │ │ │ ├── load_input.csv │ │ │ ├── measurement_unit_input.csv │ │ │ ├── node_graphic_input.csv │ │ │ ├── node_input.csv │ │ │ ├── pv_input.csv │ │ │ ├── storage_input.csv │ │ │ ├── storage_type_input.csv │ │ │ ├── time_series_mapping.csv │ │ │ ├── transformer_2_w_input.csv │ │ │ ├── transformer_2_w_type_input.csv │ │ │ ├── wec_input.csv │ │ │ └── wec_type_input.csv │ │ ├── _participants │ │ │ ├── bm_input.csv │ │ │ ├── chp_input.csv │ │ │ ├── cylindrical_storage_input.csv │ │ │ ├── em_input.csv │ │ │ ├── ev_input.csv │ │ │ ├── evcs_input.csv │ │ │ ├── fixed_feed_in_input.csv │ │ │ ├── hp_input.csv │ │ │ ├── load_input.csv │ │ │ ├── pv_input.csv │ │ │ ├── storage_input.csv │ │ │ ├── thermal_bus_input.csv │ │ │ ├── time_series_mapping.csv │ │ │ └── wec_input.csv │ │ ├── _results │ │ │ ├── bm_res.csv │ │ │ ├── chp_res.csv │ │ │ ├── em_res.csv │ │ │ ├── ev_res.csv │ │ │ ├── evcs_res.csv │ │ │ ├── fixed_feed_in_res.csv │ │ │ ├── hp_res.csv │ │ │ ├── load_res.csv │ │ │ ├── pv_res.csv │ │ │ ├── storage_res.csv │ │ │ ├── thermal_house_res.csv │ │ │ └── wec_res.csv │ │ ├── _thermal │ │ │ ├── cylindrical_storage_input.csv │ │ │ ├── operator_input.csv │ │ │ ├── thermal_bus_input.csv │ │ │ └── thermal_house_input.csv │ │ ├── _timeseries │ │ │ ├── its_c_2fcb3e53-b94a-4b96-bea4-c469e499f1a1.csv │ │ │ ├── its_h_c8fe6547-fd85-4fdf-a169-e4da6ce5c3d0.csv │ │ │ ├── its_p_9185b8c1-86ba-4a16-8dea-5ac898e8caa5.csv │ │ │ ├── its_ph_76c9d846-797c-4f07-b7ec-2245f679f5c7.csv │ │ │ ├── its_pq_1061af70-1c03-46e1-b960-940b956c429f.csv │ │ │ ├── its_pq_3fbfaa97-cff4-46d4-95ba-a95665e87c26.csv │ │ │ ├── its_pqh_46be1e57-e4ed-4ef7-95f1-b2b321cb2047.csv │ │ │ ├── its_v_eeccbe3c-a47e-448e-8eca-1f369d3c24e6.csv │ │ │ ├── lpts_g2.csv │ │ │ └── time_series_mapping.csv │ │ ├── _types │ │ │ ├── bm_type_input.csv │ │ │ ├── chp_type_input.csv │ │ │ ├── ev_type_input.csv │ │ │ ├── hp_type_input.csv │ │ │ ├── line_type_input.csv │ │ │ ├── operator_input.csv │ │ │ ├── storage_type_input.csv │ │ │ ├── transformer_2_w_type_input.csv │ │ │ ├── transformer_3_w_type_input.csv │ │ │ └── wec_type_input.csv │ │ └── _weather │ │ │ ├── cosmo │ │ │ └── its_weather_8bc9120d-fb9b-4484-b4e3-0cdadf0feea9.csv │ │ │ └── icon │ │ │ └── its_weather_513606bc-539e-445b-9675-2f98be3d9231.csv │ │ ├── influxdb │ │ └── _weather │ │ │ ├── cosmo │ │ │ └── weather.txt │ │ │ └── icon │ │ │ └── weather.txt │ │ └── sql │ │ ├── _coordinates │ │ └── coordinates.sql │ │ ├── _timeseries │ │ ├── load_profiles.sql │ │ ├── time_series_c.sql │ │ ├── time_series_h.sql │ │ ├── time_series_mapping.sql │ │ ├── time_series_p.sql │ │ ├── time_series_ph.sql │ │ ├── time_series_pq.sql │ │ └── time_series_pqh.sql │ │ ├── _types │ │ └── types.sql │ │ └── _weather │ │ ├── cosmo │ │ └── weather.sql │ │ └── icon │ │ └── weather.sql │ └── log4j2-test.xml └── version.properties /.gitattributes: -------------------------------------------------------------------------------- 1 | # The following file will be copied to a unix Docker image and imported to InfluxDB data base. Therefore, the line 2 | # ending plays a crucial role. This prevents the endings from being adjusted with 'core.autocrlf=true' 3 | src/test/resources/edu/ie3/datamodel/io/source/influxdb/_weather/cosmo/weather.txt eol=lf 4 | src/test/resources/edu/ie3/datamodel/io/source/influxdb/_weather/icon/weather.txt eol=lf 5 | 6 | gradlew eol=lf 7 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Reviewers for Dependabot PRs 2 | build.gradle @sebastian-peter @danielfeismann @staudtMarius 3 | 4 | # Reviewers for CI/CD related PRs 5 | .github/workflows/ @sebastian-peter @PhilippSchmelter 6 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: gradle 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | time: "04:00" 8 | open-pull-requests-limit: 10 9 | target-branch: dev 10 | 11 | - package-ecosystem: pip 12 | directory: "/docs/readthedocs" 13 | schedule: 14 | interval: daily 15 | time: "04:00" 16 | open-pull-requests-limit: 8 17 | target-branch: dev 18 | -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- 1 | # .readthedocs.yaml 2 | # Read the Docs configuration file 3 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details 4 | 5 | # Required 6 | version: 2 7 | 8 | # Set the version of Python and other tools you might need 9 | build: 10 | os: ubuntu-24.04 11 | tools: 12 | python: "3.13" 13 | 14 | # Configure python 15 | python: 16 | install: 17 | - requirements: docs/readthedocs/requirements.txt 18 | 19 | # Build documentation in the docs/ directory with Sphinx 20 | sphinx: 21 | configuration: docs/readthedocs/conf.py 22 | fail_on_warning: true 23 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Copyright (c) 2024, Institute of Energy Systems, Energy Efficiency and Energy Economics (ie3) 2 | All rights reserved. 3 | 4 | Lead Developers: 5 | - Johannes Hiry 6 | - Chris Kittl 7 | - Debopama Sen-Sarma 8 | - Thomas Oberließen 9 | - Daniel Feismann 10 | - Johannes Bao 11 | - Sebastian Peter 12 | 13 | Main Contributers: 14 | - Johannes Hiry - https://github.com/johanneshiry 15 | - Chris Kittl - https://github.com/ckittl 16 | - Debopama Sen-Sarma - https://github.com/sensarmad 17 | - Mia Krause - https://github.com/mia-krause 18 | - Dennis Strehle - https://github.com/denstre 19 | - Sebastian Peter - https://github.com/sebastian-peter 20 | - Christian Mahr - https://github.com/cmahr93 21 | - Vasilios Zachopoulos - https://github.com/baszach 22 | - Shubham Bajpai - https://github.com/ahamshubham 23 | - Thomas Oberließen - https://github.com/t-ober 24 | - Marius Staudt - https://github.com/staudtMarius 25 | - Lara Roumeliotis - https://github.com/lararou 26 | - Vicky Bung - https://github.com/vickybung1 27 | - Daniel Feismann - https://github.com/danielfeismann 28 | - Johannes Bao - https://github.com/jo-bao 29 | - Julian Hohmann - https://github.com/julianhohmann 30 | - Simon Huette - https://github.com/SimonHuette 31 | - Pierre Petersmeier - http://github.com/pierrepetersmeier 32 | -------------------------------------------------------------------------------- /docs/readthedocs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line, and also 5 | # from the environment for the first two. 6 | SPHINXOPTS ?= 7 | SPHINXBUILD ?= python3 -msphinx 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | -------------------------------------------------------------------------------- /docs/readthedocs/_static/css/theme_override.css: -------------------------------------------------------------------------------- 1 | /* Suppress spacing after multi-line entries in tables 2 | * Inspired by this issue: https://github.com/readthedocs/sphinx_rtd_theme/issues/117 */ 3 | .wy-table-responsive table td div.line-block { 4 | margin-bottom: 0; 5 | font-size: 90%; 6 | } 7 | .wy-table-responsive table th div.line-block { 8 | margin-bottom: 0; 9 | font-size: 90%; 10 | } 11 | .wy-table-responsive table th p { 12 | margin-bottom: 0; 13 | } 14 | 15 | table.wrapping td { 16 | white-space: normal; 17 | } 18 | -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/cosPhiP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/cosPhiP.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/ecdTransformer3w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/ecdTransformer3w.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/qv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/qv.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/transformerWithSwitchGear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/transformerWithSwitchGear.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/CharacteristicDatamodelConcept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/CharacteristicDatamodelConcept.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/ConnectorDatamodelConcept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/ConnectorDatamodelConcept.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/DataSinkClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/DataSinkClassDiagram.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/DataSourceClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/DataSourceClassDiagram.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/DataSourceClassDiagram_draft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/DataSourceClassDiagram_draft.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/DefaultInputDirectoryHierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/DefaultInputDirectoryHierarchy.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/DefaultInputFolderStructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/DefaultInputFolderStructure.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/DefaultResultDirectoryHierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/DefaultResultDirectoryHierarchy.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/EntitySourceClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/EntitySourceClassDiagram.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/FunctionalDataSourceClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/FunctionalDataSourceClassDiagram.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/GraphicDatamodelConcept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/GraphicDatamodelConcept.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/InputDataDeployment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/InputDataDeployment.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/InputDatamodelConcept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/InputDatamodelConcept.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/ModelContainerConcept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/ModelContainerConcept.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/OutputDatamodelConcept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/OutputDatamodelConcept.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/SystemDatamodelConcept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/SystemDatamodelConcept.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/TestDataHierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/TestDataHierarchy.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/ThermalDatamodelConcept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/ThermalDatamodelConcept.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/TimeSeriesDatamodelConcept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/TimeSeriesDatamodelConcept.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/TimeSeriesSourceClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/TimeSeriesSourceClassDiagram.png -------------------------------------------------------------------------------- /docs/readthedocs/_static/figures/uml/WeatherCoordinateSourceClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/docs/readthedocs/_static/figures/uml/WeatherCoordinateSourceClassDiagram.png -------------------------------------------------------------------------------- /docs/readthedocs/index.md: -------------------------------------------------------------------------------- 1 | # Documentation of the PowerSystemDataModel 2 | 3 | Welcome to the documentation of the PowerSystemDataModel. 4 | It provides an extensive data model capable of modelling energy systems with high granularity e.g. for bottom-up simulations. 5 | Additionally, useful functions to process, augment and furnish model i/o information is provided. 6 | Effective handling of geographic information related to power grids is also possible. 7 | 8 | ```{toctree} 9 | :caption: 'Contents:' 10 | :maxdepth: 2 11 | 12 | gettingstarted 13 | models/models 14 | io/basiciousage 15 | ``` 16 | 17 | ## Contact the (Main) Maintainers 18 | 19 | If you feel, something this missing, wrong or misleading, please contact one of our main contributors: 20 | 21 | > - [@sensarmad](https://github.com/sensarmad) 22 | > - [@t-ober](https://github.com/t-ober) 23 | > - [@danielfeismann](https://github.com/danielfeismann) 24 | > - [@sebastian-peter](https://github.com/sebastian-peter) 25 | > - [@jo-bao](https://github.com/jo-bao) 26 | > - [@julianhohmann](https://github.com/julianhohmann) 27 | 28 | Hat tip to all other contributors! 29 | 30 | # Indices and tables 31 | 32 | - {ref}`genindex` 33 | - {ref}`modindex` 34 | - {ref}`search` 35 | -------------------------------------------------------------------------------- /docs/readthedocs/io/sql.md: -------------------------------------------------------------------------------- 1 | # SQL 2 | 3 | 4 | ## Id Coordinate Source 5 | The sql implementation of id coordinate source uses [PostgreSql](https://www.postgresql.org/) with the 6 | addon [PostGis](https://postgis.net/). `PostGis` is used to improve the querying of geographical data. 7 | The `Coordinate` attribute is stored as a [Geography](http://postgis.net/workshops/postgis-intro/geography.html) with 8 | the type [Point](https://postgis.net/docs/ST_Point.html) and the default SRID 4326. 9 | -------------------------------------------------------------------------------- /docs/readthedocs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | 13 | if "%1" == "" goto help 14 | 15 | %SPHINXBUILD% >NUL 2>NUL 16 | if errorlevel 9009 ( 17 | echo. 18 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 19 | echo.installed, then set the SPHINXBUILD environment variable to point 20 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 21 | echo.may add the Sphinx directory to PATH. 22 | echo. 23 | echo.If you don't have Sphinx installed, grab it from 24 | echo.http://sphinx-doc.org/ 25 | exit /b 1 26 | ) 27 | 28 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 29 | goto end 30 | 31 | :help 32 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 33 | 34 | :end 35 | popd 36 | -------------------------------------------------------------------------------- /docs/readthedocs/models/input/em.md: -------------------------------------------------------------------------------- 1 | (em_model)= 2 | 3 | # Energy Management Unit 4 | 5 | A model of an Energy Management Unit that controls the power of connected system participants. 6 | Participants are connected to an EM each via their `em` field. 7 | 8 | ## Attributes, Units and Remarks 9 | 10 | ```{list-table} 11 | :widths: auto 12 | :header-rows: 1 13 | :class: wrapping 14 | 15 | 16 | * - Attribute 17 | - Unit 18 | - Remarks 19 | 20 | * - uuid 21 | - 22 | - 23 | 24 | * - id 25 | - 26 | - Human readable identifier 27 | 28 | * - operator 29 | - 30 | - 31 | 32 | * - operationTime 33 | - 34 | - Timely restriction of operation 35 | 36 | * - controlStrategy 37 | - 38 | - String representation (e.g. name) of a control strategy 39 | 40 | * - controllingEm 41 | - 42 | - Reference to a superior Energy Management Unit that is controlling this EM. 43 | Field can be empty or missing, if this EM itself is not controlled. 44 | 45 | ``` 46 | 47 | ## Caveats 48 | 49 | Nothing - at least not known. 50 | If you found something, please contact us! 51 | -------------------------------------------------------------------------------- /docs/readthedocs/models/input/grid/linegraphic.md: -------------------------------------------------------------------------------- 1 | (line-graphic-model)= 2 | 3 | # Schematic Line Graphic 4 | 5 | Schematic drawing information for a line model. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: auto 11 | :class: wrapping 12 | :header-rows: 1 13 | 14 | 15 | * - Attribute 16 | - Unit 17 | - Remarks 18 | 19 | * - uuid 20 | - 21 | - 22 | 23 | * - graphicLayer 24 | - 25 | - Human readable identifier of the graphic layer to draw 26 | this element on 27 | 28 | * - path 29 | - 30 | - Line string of coordinates describing the drawing 31 | 32 | * - line 33 | - 34 | - Reference to the physical line model 35 | 36 | ``` 37 | 38 | ## Caveats 39 | 40 | Nothing - at least not known. 41 | If you found something, please contact us! 42 | -------------------------------------------------------------------------------- /docs/readthedocs/models/input/grid/measurementunit.md: -------------------------------------------------------------------------------- 1 | (measurement-unit-model)= 2 | 3 | # Measurement Unit 4 | 5 | Representation of a measurement unit placed at a node. 6 | It can be used to mark restrictive access to simulation results to e.g. control algorithms. 7 | The measured information are indicated by boolean fields. 8 | 9 | ## Attributes, Units and Remarks 10 | 11 | ```{list-table} 12 | :widths: auto 13 | :class: wrapping 14 | :header-rows: 1 15 | 16 | 17 | * - Attribute 18 | - Unit 19 | - Remarks 20 | 21 | * - uuid 22 | - 23 | - 24 | 25 | * - id 26 | - 27 | - Human readable identifier 28 | 29 | * - operator 30 | - 31 | - 32 | 33 | * - operationTime 34 | - 35 | - Timely restriction of operation 36 | 37 | * - node 38 | - 39 | - 40 | 41 | * - vMag 42 | - 43 | - Voltage magnitude measurements are available 44 | 45 | * - vAng 46 | - 47 | - Voltage angle measurements are available 48 | 49 | * - p 50 | - 51 | - Active power measurements are available 52 | 53 | * - q 54 | - 55 | - Reactive power measurements are available 56 | 57 | ``` 58 | 59 | ## Caveats 60 | 61 | Nothing - at least not known. 62 | If you found something, please contact us! 63 | -------------------------------------------------------------------------------- /docs/readthedocs/models/input/grid/nodegraphic.md: -------------------------------------------------------------------------------- 1 | (node-graphic-model)= 2 | 3 | # Schematic Node Graphic 4 | 5 | Schematic drawing information for a node model. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: auto 11 | :class: wrapping 12 | :header-rows: 1 13 | 14 | 15 | * - Attribute 16 | - Unit 17 | - Remarks 18 | 19 | * - uuid 20 | - 21 | - 22 | 23 | * - graphicLayer 24 | - 25 | - Human readable identifier of the graphic layer to draw 26 | this element on 27 | 28 | * - path 29 | - 30 | - Line string of coordinates describing the drawing, e.g. for bus bars 31 | 32 | * - point 33 | - 34 | - Alternative to line string, only drawing a point coordinate 35 | 36 | * - node 37 | - 38 | - Reference to the physical node model 39 | 40 | ``` 41 | 42 | ## Caveats 43 | 44 | Nothing - at least not known. 45 | If you found something, please contact us! 46 | -------------------------------------------------------------------------------- /docs/readthedocs/models/input/grid/switch.md: -------------------------------------------------------------------------------- 1 | (switch-model)= 2 | 3 | # Switch 4 | 5 | Model of an ideal switch connecting two node models of the same voltage level 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: auto 11 | :class: wrapping 12 | :header-rows: 1 13 | 14 | 15 | * - Attribute 16 | - Unit 17 | - Remarks 18 | 19 | * - uuid 20 | - 21 | - 22 | 23 | * - id 24 | - 25 | - Human readable identifier 26 | 27 | * - operator 28 | - 29 | - 30 | 31 | * - operationTime 32 | - 33 | - Timely restriction of operation 34 | 35 | * - nodeA 36 | - 37 | - 38 | 39 | * - nodeB 40 | - 41 | - 42 | 43 | * - closed 44 | - 45 | - true, if the switch is closed 46 | 47 | 48 | ``` 49 | 50 | ## Caveats 51 | 52 | Nothing - at least not known. 53 | If you found something, please contact us! 54 | -------------------------------------------------------------------------------- /docs/readthedocs/models/input/operator.md: -------------------------------------------------------------------------------- 1 | (operator-model)= 2 | 3 | # Operator 4 | 5 | This is a simple identifier object, representing a natural or legal person that is the owner or responsible person 6 | having control over one or more physical entitites. 7 | 8 | ## Attributes, Units and Remarks 9 | 10 | ```{list-table} 11 | :widths: auto 12 | :class: wrapping 13 | :header-rows: 1 14 | 15 | 16 | * - Attribute 17 | - Unit 18 | - Remarks 19 | 20 | * - uuid 21 | - 22 | - 23 | 24 | * - id 25 | - 26 | - Human readable identifier 27 | 28 | ``` 29 | 30 | (operator-example)= 31 | 32 | ## Application example 33 | 34 | ```{code-block} java 35 | :linenos: true 36 | 37 | OperatorInput profBroccoli = new OperatorInput( 38 | UUID.fromString("f15105c4-a2de-4ab8-a621-4bc98e372d92"), 39 | "Univ.-Prof. Dr. rer. hort. Klaus-Dieter Broccoli" 40 | ) 41 | ``` 42 | 43 | ## Caveats 44 | 45 | Nothing - at least not known. 46 | If you found something, please contact us! 47 | -------------------------------------------------------------------------------- /docs/readthedocs/models/input/thermal/cylindricalstorage.md: -------------------------------------------------------------------------------- 1 | (cylindricalstorage-model)= 2 | 3 | # Cylindrical Thermal Storage 4 | 5 | Model of a cylindrical thermal storage using a fluid to store thermal energy. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: auto 11 | :class: wrapping 12 | :header-rows: 1 13 | 14 | 15 | * - Attribute 16 | - Unit 17 | - Remarks 18 | 19 | * - uuid 20 | - 21 | - 22 | 23 | * - id 24 | - 25 | - Human readable identifier 26 | 27 | * - operator 28 | - 29 | - 30 | 31 | * - operationTime 32 | - 33 | - Timely restriction of operation 34 | 35 | * - thermalBus 36 | - 37 | - Connection point to the thermal system 38 | 39 | * - storageVolumeLvl 40 | - m³ 41 | - Overall usable storage volume 42 | 43 | * - inletTemp 44 | - °C 45 | - Temperature of the inlet 46 | 47 | * - returnTemp 48 | - °C 49 | - Temperature of the outlet 50 | 51 | * - c 52 | - kWh / (K :math:`\cdot` m³) 53 | - Specific heat capacity of the storage medium 54 | 55 | * - pThermalMax 56 | - kW 57 | - Maximum permissible thermal power of the storage 58 | 59 | ``` 60 | 61 | ## Caveats 62 | 63 | Nothing - at least not known. 64 | If you found something, please contact us! 65 | -------------------------------------------------------------------------------- /docs/readthedocs/models/input/thermal/domestichotwaterstorage.md: -------------------------------------------------------------------------------- 1 | (domestichotwaterstorage-model)= 2 | 3 | # Domestic Hot Water Storage 4 | 5 | Model of a domestic hot water storage using a fluid to store thermal energy. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{eval-rst} 10 | .. list-table:: 11 | :widths: 33 33 33 12 | :header-rows: 1 13 | 14 | 15 | * - Attribute 16 | - Unit 17 | - Remarks 18 | 19 | * - uuid 20 | - -- 21 | - 22 | 23 | * - id 24 | - -- 25 | - Human readable identifier 26 | 27 | * - operator 28 | - -- 29 | - 30 | 31 | * - operationTime 32 | - -- 33 | - Timely restriction of operation 34 | 35 | * - thermalBus 36 | - -- 37 | - Connection point to the thermal system 38 | 39 | * - storageVolumeLvl 40 | - m³ 41 | - Overall available storage volume 42 | 43 | * - inletTemp 44 | - °C 45 | - Temperature of the inlet 46 | 47 | * - returnTemp 48 | - °C 49 | - Temperature of the outlet 50 | 51 | * - c 52 | - kWh / (K :math:`\cdot` m³) 53 | - Specific heat capacity of the storage medium 54 | 55 | * - pThermalMax 56 | - kW 57 | - Maximum permissible thermal power of the storage 58 | 59 | ``` 60 | 61 | ## Caveats 62 | 63 | Nothing - at least not known. 64 | If you found something, please contact us! 65 | -------------------------------------------------------------------------------- /docs/readthedocs/models/input/thermal/thermalbus.md: -------------------------------------------------------------------------------- 1 | (thermal-bus-model)= 2 | 3 | # Thermal Bus 4 | 5 | A coupling point to thermal system - equivalent to [electrical node](../grid/node.md#node) 6 | . 7 | 8 | ## Attributes, Units and Remarks 9 | 10 | ```{list-table} 11 | :widths: auto 12 | :class: wrapping 13 | :header-rows: 1 14 | 15 | 16 | * - Attribute 17 | - Unit 18 | - Remarks 19 | 20 | * - uuid 21 | - 22 | - 23 | 24 | * - id 25 | - 26 | - Human readable identifier 27 | 28 | * - operator 29 | - 30 | - 31 | 32 | * - operationTime 33 | - 34 | - Timely restriction of operation 35 | 36 | * - bus 37 | - 38 | - Connection point to the thermal system 39 | 40 | ``` 41 | 42 | ## Caveats 43 | 44 | Nothing - at least not known. 45 | If you found something, please contact us! 46 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/grid/congestion.md: -------------------------------------------------------------------------------- 1 | (congestion-result)= 2 | 3 | # Congestion 4 | 5 | Representation of a congestion result for a given asset. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - ZonedDateTime 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - inputModelType 27 | - 28 | - the type of the input model (e.g. node, line, etc.) 29 | 30 | * - subgrid 31 | - 32 | - Sub grid number 33 | 34 | * - value 35 | - Percent 36 | - the actual value that was calculated in relation to its base value 37 | 38 | * - min 39 | - Percent 40 | - minimal limit value 41 | 42 | * - max 43 | - Percent 44 | - maximal limit value 45 | ``` 46 | 47 | ## Caveats 48 | 49 | Nothing - at least not known. 50 | If you found something, please contact us! 51 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/grid/connector.md: -------------------------------------------------------------------------------- 1 | (connector-result)= 2 | 3 | # Connector 4 | 5 | Representation of all kinds of connectors. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - ZonedDateTime 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - iAMag 27 | - ampere 28 | - A stands for sending node 29 | 30 | * - iAAng 31 | - degree 32 | - 33 | 34 | * - iBMag 35 | - ampere 36 | - B stands for receiving node 37 | 38 | * - iBAng 39 | - degree 40 | - 41 | 42 | ``` 43 | 44 | ## Caveats 45 | 46 | Groups all available connectors i.e. lines, switches and transformers 47 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/grid/line.md: -------------------------------------------------------------------------------- 1 | (line-result)= 2 | 3 | # Line 4 | 5 | Representation of an AC line. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - ZonedDateTime 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - iAMag 27 | - ampere 28 | - A stands for sending node 29 | 30 | * - iAAng 31 | - degree 32 | - 33 | 34 | * - iBMag 35 | - ampere 36 | - B stands for receiving node 37 | 38 | * - iBAng 39 | - degree 40 | - 41 | 42 | ``` 43 | 44 | ## Caveats 45 | 46 | Nothing - at least not known. 47 | If you found something, please contact us! 48 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/grid/node.md: -------------------------------------------------------------------------------- 1 | (node-result)= 2 | 3 | # Node 4 | 5 | Representation of an electrical node, with no further distinction into bus bar, auxiliary node or others. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - ZonedDateTime 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - vMag 27 | - p.u. 28 | - 29 | 30 | * - vAng 31 | - degree 32 | - 33 | 34 | ``` 35 | 36 | ## Caveats 37 | 38 | Nothing - at least not known. 39 | If you found something, please contact us! 40 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/grid/switch.md: -------------------------------------------------------------------------------- 1 | (switch-result)= 2 | 3 | # Switch 4 | 5 | Representation of electrical switches. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - ZonedDateTime 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - closed 27 | - boolean 28 | - status of the switching device 29 | 30 | ``` 31 | 32 | ## Caveats 33 | 34 | Nothing - at least not known. 35 | If you found something, please contact us! 36 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/grid/transformer.md: -------------------------------------------------------------------------------- 1 | (transformer-result)= 2 | 3 | # Transformer 4 | 5 | Representation of transformers. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - ZonedDateTime 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - iAMag 27 | - ampere 28 | - A stands for sending node 29 | 30 | * - iAAng 31 | - degree 32 | - 33 | 34 | * - iBMag 35 | - ampere 36 | - B stands for receiving node 37 | 38 | * - iBAng 39 | - degree 40 | - 41 | 42 | * - tapPos 43 | - 44 | - 45 | 46 | ``` 47 | 48 | ## Caveats 49 | 50 | Groups common information to both 2W and 3W transformers. 51 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/grid/transformer2w.md: -------------------------------------------------------------------------------- 1 | (transformer2w-result)= 2 | 3 | # Two Winding Transformer 4 | 5 | Representation of two winding transformers. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - ZonedDateTime 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - iAMag 27 | - ampere 28 | - A stands for sending node 29 | 30 | * - iAAng 31 | - degree 32 | - 33 | 34 | * - iBMag 35 | - ampere 36 | - B stands for receiving node 37 | 38 | * - iBAng 39 | - degree 40 | - 41 | 42 | * - tapPos 43 | - 44 | - 45 | 46 | ``` 47 | 48 | ## Caveats 49 | 50 | Assumption: Node A is the node at higher voltage. 51 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/grid/transformer3w.md: -------------------------------------------------------------------------------- 1 | (transformer3w-result)= 2 | 3 | # Three Winding Transformer 4 | 5 | Representation of three winding transformers. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - ZonedDateTime 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - iAMag 27 | - ampere 28 | - A stands for sending node 29 | 30 | * - iAAng 31 | - degree 32 | - 33 | 34 | * - iBMag 35 | - ampere 36 | - B stands for receiving node 37 | 38 | * - iBAng 39 | - degree 40 | - 41 | 42 | * - iCMag 43 | - ampere 44 | - B stands for receiving node 45 | 46 | * - iCAng 47 | - degree 48 | - 49 | 50 | * - tapPos 51 | - 52 | - 53 | 54 | ``` 55 | 56 | ## Caveats 57 | 58 | Assumption: Node A is the node at highest voltage and Node B is at intermediate voltage. 59 | For model specifications please check corresponding input model documentation. 60 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/bm.md: -------------------------------------------------------------------------------- 1 | (bm-result)= 2 | 3 | # Biomass plant 4 | 5 | Result of a biomass power plant. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - p 27 | - MW 28 | - 29 | 30 | * - q 31 | - MVAr 32 | - 33 | 34 | ``` 35 | 36 | ## Caveats 37 | 38 | Nothing - at least not known. 39 | If you found something, please contact us! 40 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/chp.md: -------------------------------------------------------------------------------- 1 | (chp-result)= 2 | 3 | # Combined Heat and Power Plant 4 | 5 | Result of a combined heat and power plant. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - p 27 | - MW 28 | - 29 | 30 | * - q 31 | - MVAr 32 | - 33 | 34 | * - qDot 35 | - MW 36 | - Thermal power 37 | 38 | ``` 39 | 40 | ## Caveats 41 | 42 | Nothing - at least not known. 43 | If you found something, please contact us! 44 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/cylindricalstorage.md: -------------------------------------------------------------------------------- 1 | (cylindricalstorage-result)= 2 | 3 | # Cylindrical Thermal Storage 4 | 5 | Result of a cylindrical thermal storage using a fluid to store thermal energy. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - energy 27 | - MWh 28 | - 29 | 30 | * - qDot 31 | - MW 32 | - heat demand of the sink 33 | 34 | * - fillLevel 35 | - 36 | - 37 | 38 | ``` 39 | 40 | ## Caveats 41 | 42 | Nothing - at least not known. 43 | If you found something, please contact us! 44 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/domestichotwaterstorage.md: -------------------------------------------------------------------------------- 1 | (domestichotwaterstorage-result)= 2 | 3 | # Domestic Hot Water Storage 4 | 5 | Result of a domestic hot water storage using a fluid to store thermal energy. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{eval-rst} 10 | .. list-table:: 11 | :widths: 33 33 33 12 | :header-rows: 1 13 | 14 | 15 | * - Attribute 16 | - Unit 17 | - Remarks 18 | 19 | * - time 20 | - -- 21 | - date and time for the produced result 22 | 23 | * - inputModel 24 | - -- 25 | - uuid for the associated input model 26 | 27 | * - energy 28 | - MWh 29 | - 30 | 31 | * - qDot 32 | - MW 33 | - heat demand of the sink 34 | 35 | * - fillLevel 36 | - -- 37 | - 38 | 39 | ``` 40 | 41 | ## Caveats 42 | 43 | Nothing - at least not known. 44 | If you found something, please contact us! 45 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/em.md: -------------------------------------------------------------------------------- 1 | (em-result)= 2 | 3 | # Energy Management 4 | 5 | Result of an energy management entity. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - p 27 | - MW 28 | - active power output 29 | 30 | * - q 31 | - MW 32 | - reactive power output 33 | 34 | 35 | ``` 36 | 37 | ## Caveats 38 | 39 | Nothing - at least not known. 40 | If you found something, please contact us! 41 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/ev.md: -------------------------------------------------------------------------------- 1 | (ev-result)= 2 | 3 | # Electric Vehicle 4 | 5 | Result of an electric vehicle, that is occasionally connected to the grid via an [electric vehicle charging system](evcs.md#electric-vehicle-charging-station). 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - p 27 | - MW 28 | - 29 | 30 | * - q 31 | - MVAr 32 | - 33 | 34 | * - soc 35 | - % 36 | - 37 | 38 | ``` 39 | 40 | ## Caveats 41 | 42 | Nothing - at least not known. 43 | If you found something, please contact us! 44 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/evcs.md: -------------------------------------------------------------------------------- 1 | (evcs-result)= 2 | 3 | # Electric Vehicle Charging Station 4 | 5 | This model is currently only a dummy implementation of an electric vehicle charging station. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - p 27 | - MW 28 | - 29 | 30 | * - q 31 | - MVAr 32 | - 33 | 34 | ``` 35 | 36 | ## Caveats 37 | 38 | Nothing - at least not known. 39 | If you found something, please contact us! 40 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/fixedfeedin.md: -------------------------------------------------------------------------------- 1 | (fixed-feed-in-result)= 2 | 3 | # Fixed Feed In Facility 4 | 5 | Result of a facility, that provides constant power feed in, as no further information about the actual behaviour of the 6 | model can be derived. 7 | 8 | ## Attributes, Units and Remarks 9 | 10 | ```{list-table} 11 | :widths: 33 33 33 12 | :header-rows: 1 13 | 14 | 15 | * - Attribute 16 | - Unit 17 | - Remarks 18 | 19 | * - time 20 | - 21 | - date and time for the produced result 22 | 23 | * - inputModel 24 | - 25 | - uuid for the associated input model 26 | 27 | * - p 28 | - MW 29 | - 30 | 31 | * - q 32 | - MVAr 33 | - 34 | 35 | ``` 36 | 37 | ## Caveats 38 | 39 | Nothing - at least not known. 40 | If you found something, please contact us! 41 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/flexoption.md: -------------------------------------------------------------------------------- 1 | (flexoption-result)= 2 | 3 | # Flexibility Option 4 | 5 | Result of a flexibility option. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - pRef 27 | - MW 28 | - active power that was suggested for regular usage by the system participant 29 | 30 | * - pMin 31 | - MW 32 | - active minimal power that was determined by the system participant 33 | 34 | * - pMax 35 | - MW 36 | - active maximum power that was determined by the system participant 37 | 38 | ``` 39 | 40 | ## Caveats 41 | 42 | Nothing - at least not known. 43 | If you found something, please contact us! 44 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/hp.md: -------------------------------------------------------------------------------- 1 | (hp-result)= 2 | 3 | # Heat Pump 4 | 5 | Result of a heat pump. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - p 27 | - MW 28 | - 29 | 30 | * - q 31 | - MVAr 32 | - 33 | 34 | * - qDot 35 | - MW 36 | - Thermal power 37 | 38 | ``` 39 | 40 | ## Caveats 41 | 42 | Nothing - at least not known. 43 | If you found something, please contact us! 44 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/load.md: -------------------------------------------------------------------------------- 1 | (load-result)= 2 | 3 | # Load 4 | 5 | Result of (mainly) domestic loads. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - p 27 | - MW 28 | - 29 | 30 | * - q 31 | - MVAr 32 | - 33 | 34 | ``` 35 | 36 | ## Caveats 37 | 38 | Nothing - at least not known. 39 | If you found something, please contact us! 40 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/pv.md: -------------------------------------------------------------------------------- 1 | (pv-result)= 2 | 3 | # Photovoltaic Power Plant 4 | 5 | Result of a photovoltaic power plant. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - p 27 | - MW 28 | - 29 | 30 | * - q 31 | - MVAr 32 | - 33 | 34 | ``` 35 | 36 | ## Caveats 37 | 38 | Nothing - at least not known. 39 | If you found something, please contact us! 40 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/storage.md: -------------------------------------------------------------------------------- 1 | (storage-result)= 2 | 3 | # Electrical Energy Storage 4 | 5 | Result of an electrochemical storage 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - p 27 | - MW 28 | - 29 | 30 | * - q 31 | - MVAr 32 | - 33 | 34 | * - soc 35 | - 36 | - 37 | 38 | ``` 39 | 40 | ## Caveats 41 | 42 | Nothing - at least not known. 43 | If you found something, please contact us! 44 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/systemparticipant.md: -------------------------------------------------------------------------------- 1 | (system-participant-result)= 2 | 3 | # System Participant 4 | 5 | Groups together all system participants such as PV, Storage etc. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - p 27 | - MW 28 | - 29 | 30 | * - q 31 | - MVAr 32 | - 33 | 34 | 35 | ``` 36 | 37 | ## Caveats 38 | 39 | Nothing - at least not known. 40 | If you found something, please contact us! 41 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/thermalhouse.md: -------------------------------------------------------------------------------- 1 | (thermal-house-result)= 2 | 3 | # Thermal House 4 | 5 | Model for the thermal behaviour of a building. 6 | This reflects a simple shoe box with transmission losses 7 | 8 | ## Attributes, Units and Remarks 9 | 10 | ```{list-table} 11 | :widths: 33 33 33 12 | :header-rows: 1 13 | 14 | 15 | * - Attribute 16 | - Unit 17 | - Remarks 18 | 19 | * - time 20 | - 21 | - date and time for the produced result 22 | 23 | * - inputModel 24 | - 25 | - uuid for the associated input model 26 | 27 | * - qDot 28 | - MW 29 | - thermal heat demand of the sink 30 | 31 | * - indoorTemperature 32 | - °C 33 | - 34 | 35 | ``` 36 | 37 | ## Caveats 38 | 39 | Nothing - at least not known. 40 | If you found something, please contact us! 41 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/thermalsink.md: -------------------------------------------------------------------------------- 1 | (thermal-sink-result)= 2 | 3 | # Thermal Sink 4 | 5 | Result of a thermal sink. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - qDot 27 | - MW 28 | - thermal heat demand 29 | 30 | ``` 31 | 32 | ## Caveats 33 | 34 | Nothing - at least not known. 35 | If you found something, please contact us! 36 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/thermalstorage.md: -------------------------------------------------------------------------------- 1 | (thermal-storage-result)= 2 | 3 | # Thermal Storage 4 | 5 | Result of a thermal storage. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - energy 27 | - MWh 28 | - 29 | 30 | * - qDot 31 | - MW 32 | - heat flowing in 33 | 34 | ``` 35 | 36 | ## Caveats 37 | 38 | Nothing - at least not known. 39 | If you found something, please contact us! 40 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/thermalunit.md: -------------------------------------------------------------------------------- 1 | (thermal-unit-result)= 2 | 3 | # Thermal Unit 4 | 5 | Result of a thermal unit. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - qDot 27 | - MW 28 | - thermal power exchanged 29 | 30 | ``` 31 | 32 | ## Caveats 33 | 34 | Nothing - at least not known. 35 | If you found something, please contact us! 36 | -------------------------------------------------------------------------------- /docs/readthedocs/models/result/participant/wec.md: -------------------------------------------------------------------------------- 1 | (wec-result)= 2 | 3 | # Wind Energy Converter 4 | 5 | Result of a wind turbine. 6 | 7 | ## Attributes, Units and Remarks 8 | 9 | ```{list-table} 10 | :widths: 33 33 33 11 | :header-rows: 1 12 | 13 | 14 | * - Attribute 15 | - Unit 16 | - Remarks 17 | 18 | * - time 19 | - 20 | - date and time for the produced result 21 | 22 | * - inputModel 23 | - 24 | - uuid for the associated input model 25 | 26 | * - p 27 | - MW 28 | - 29 | 30 | * - q 31 | - MVAr 32 | - 33 | 34 | ``` 35 | 36 | ## Caveats 37 | 38 | Nothing - at least not known. 39 | If you found something, please contact us! 40 | -------------------------------------------------------------------------------- /docs/readthedocs/requirements.txt: -------------------------------------------------------------------------------- 1 | commonmark==0.9.1 2 | recommonmark==0.7.1 3 | Sphinx==8.2.3 4 | sphinx-rtd-theme==3.0.2 5 | myst-parser==4.0.1 6 | markdown-it-py==3.0.0 7 | -------------------------------------------------------------------------------- /docs/uml/main/FunctionalDataSourceClassDiagram.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | note "Assuming all classes to implement \nthe abstract methods of their interfaces\n\n" as generalNotes 4 | 5 | interface DataSource { 6 | {abstract} Stream> getSourceData(Class entityClass) 7 | } 8 | 9 | DataSource <|-- CsvDataSource 10 | DataSource <|-- SqlDataSource 11 | 12 | ' Implementations 13 | 14 | class CsvDataSource { 15 | - String csvSep 16 | # CsvFileConnector connector 17 | + CsvDataSource(String, String, FileNamingStrategy) 18 | } 19 | 20 | class SqlDataSource { 21 | - String schemaName 22 | # SqlConnector connector 23 | # DatabaseNamingStrategy databaseNamingStrategy 24 | + SqlDataSource(String, String, DatabaseNamingStrategy) 25 | } 26 | @enduml -------------------------------------------------------------------------------- /docs/uml/main/input/DefaultResultDirectoryHierarchy.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | package (.tar.gz) { 4 | package //results// { 5 | package //grid// { 6 | label "//line_result.csv//\n//node_result.csv//\n//switch_result.csv//\n//transformer_2_w_result.csv//\n//transformer_3_w_result.csv//" 7 | } 8 | package "//thermal//" { 9 | label "//cylindrical_storage_result.csv//\n//domestic_hot_water_storage_result.csv//\n//thermal_bus_result.csv//\n//thermal_house_result.csv//" 10 | } 11 | package "//participants//" { 12 | label "//bm_result.csv//\n//chp_result.csv//\n//ev_result.csv//\n//evcs_result.csv//\n//fixed_feed_in_result.csv//\n//hp_result.csv//\n//load_result.csv//\n//pv_result.csv//\n//storage_result.csv//\n//wec_result.csv//" 13 | } 14 | } 15 | } 16 | 17 | @enduml -------------------------------------------------------------------------------- /docs/uml/test/TestDataHierarchy.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | Interface GridTestData 3 | Interface ComplexTopology 4 | Interface SystemParticipantTestData 5 | Interface TypeTestData 6 | 7 | GridTestData <|-- ComplexTopology 8 | GridTestData <|-- SystemParticipantTestData 9 | GridTestData <|-- TypeTestData 10 | @enduml -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | 6 | # For more details on how to configure your build environment visit 7 | # http://www.gradle.org/docs/current/userguide/build_environment.html 8 | 9 | # Specifies the JVM arguments used for the daemon process. 10 | # The setting is particularly useful for tweaking memory settings. 11 | org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m 12 | 13 | # When configured, Gradle will run in incubating parallel mode. 14 | # This option should only be used with decoupled projects. More details, visit 15 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 16 | # org.gradle.parallel=true -------------------------------------------------------------------------------- /gradle/scripts/branchName.gradle: -------------------------------------------------------------------------------- 1 | tasks.register('checkBranchName') { 2 | doLast { 3 | if (!project.hasProperty('branchName')) { 4 | throw new GradleException("Error: Missing required property 'branchName'.") 5 | } 6 | 7 | def branchName = project.property('branchName') 8 | 9 | def patterns = [ 10 | ~/^(developer|develop|dev)$/, 11 | ~/.*rel\/.*/, 12 | ~/^dependabot\/.*$/, 13 | ~/.*hotfix\/\pL{2}\/#\d+.*/, 14 | ~/.*main/, 15 | ~/^[a-z]{2}\/#[0-9]+(?:-.+)?$/ 16 | ] 17 | 18 | def isValid = patterns.any { pattern -> branchName ==~ pattern } 19 | 20 | if (!isValid) { 21 | throw new GradleException("Error: Check Branch name format (e.g., ps/#1337-FeatureName). Current branch name is $branchName.") 22 | } 23 | 24 | println "Branch name is $branchName" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /gradle/scripts/checkJavaVersion.gradle: -------------------------------------------------------------------------------- 1 | // Enforces the correct Java version, as some parts of the project may malfunction under a wrong version 2 | // If this task fails, try changing your JAVA_HOME to the required version 3 | tasks.register("checkJavaVersion") { 4 | group = 'Verification' 5 | description = 'Enforces correct Java version' 6 | 7 | doLast { 8 | def foundVersion = JavaVersion.current() 9 | if (foundVersion != javaVersion) 10 | throw new IllegalStateException("Wrong Java version: required is " 11 | + javaVersion + ", but found " + foundVersion) 12 | } 13 | } 14 | compileJava.dependsOn(checkJavaVersion) 15 | -------------------------------------------------------------------------------- /gradle/scripts/pmd.gradle: -------------------------------------------------------------------------------- 1 | // pmd is a code check tool, working on source code 2 | 3 | pmd { 4 | ignoreFailures true // dont let the build fail on rule violations 5 | 6 | toolVersion = "6.38.0" 7 | 8 | // pmd rule priority is a range from 1 to 5, with 1 being the highest priority 9 | // the default rule priority is 5 10 | rulesMinimumPriority = 2 11 | } 12 | -------------------------------------------------------------------------------- /gradle/scripts/semVer.gradle: -------------------------------------------------------------------------------- 1 | // tasks for semantic versioning using semver-gradle https://github.com/ethauvin/semver-gradle 2 | 3 | tasks.register('currentVersion') { 4 | doFirst { 5 | println semver.semver 6 | } 7 | } 8 | 9 | tasks.register('devVersion') { 10 | doFirst { 11 | println "${semver.major}.${semver.minor}-SNAPSHOT" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /gradle/scripts/spotbugs.gradle: -------------------------------------------------------------------------------- 1 | // spotBugs is a code check tool, working on byte code 2 | 3 | // workaround because imports do not work in files that are only included by build.gradle 4 | def classLoader = plugins['com.github.spotbugs'].class.classLoader 5 | def SpotBugsEffort = classLoader.findLoadedClass( 'com.github.spotbugs.snom.Effort' ) 6 | def SpotBugsConfidence = classLoader.findLoadedClass( 'com.github.spotbugs.snom.Confidence' ) 7 | 8 | spotbugs{ 9 | ignoreFailures = true // dont let the build fail on rule violations 10 | effort = SpotBugsEffort.valueOf("MAX") 11 | reportLevel = SpotBugsConfidence.valueOf("HIGH") 12 | } 13 | 14 | spotbugsMain{ 15 | reports{ 16 | html.required.set(false) 17 | xml.required.set(true) 18 | } 19 | } 20 | 21 | spotbugsTest{ 22 | reports{ 23 | html.required.set(false) 24 | xml.required.set(true) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /gradle/scripts/tests.gradle: -------------------------------------------------------------------------------- 1 | test { 2 | useJUnitPlatform() 3 | testLogging { 4 | events = ["skipped", "failed"] 5 | } 6 | 7 | // Improve logging for failed Spock tests 8 | testLogging { 9 | exceptionFormat = "Full" 10 | } 11 | } 12 | 13 | tasks.register('unitTest', Test) { 14 | description = 'Run only unit tests.' 15 | group = 'Verification' 16 | 17 | filter { 18 | includeTestsMatching '*Test*.*' 19 | excludeTestsMatching '*IT' 20 | } 21 | useJUnitPlatform() 22 | testLogging { 23 | events = ["skipped", "failed"] 24 | } 25 | } 26 | 27 | tasks.register('integrationTest', Test) { 28 | description = 'Run only the integration tests.' 29 | group = 'Verification' 30 | 31 | filter { 32 | includeTestsMatching '*IT.*' 33 | excludeTestsMatching '*Test*.*' 34 | } 35 | useJUnitPlatform() 36 | testLogging { 37 | events = ["skipped", "failed"] 38 | } 39 | 40 | mustRunAfter unitTest 41 | } -------------------------------------------------------------------------------- /gradle/scripts/vcs.gradle: -------------------------------------------------------------------------------- 1 | /* This file holds functions for version control system handling */ 2 | 3 | task finalizePR() { 4 | description 'Finalizes a pull request by formatting the code, testing it and writing the documentation' 5 | group 'VCS' 6 | } 7 | finalizePR.dependsOn("puml2png") 8 | finalizePR.dependsOn("spotlessApply") 9 | finalizePR.dependsOn("test") -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /greclipse.properties: -------------------------------------------------------------------------------- 1 | # Disable formatting errors 2 | ignoreFormatterProblems=true 3 | -------------------------------------------------------------------------------- /scripts/branch_type.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | 4 | if [ -z "${BRANCH_NAME:-}" ]; then 5 | echo "Error: BRANCH_NAME variable is not set." 6 | exit 1 7 | fi 8 | 9 | 10 | pattern_dev='^(developer|develop|dev)$' 11 | pattern_release='.*rel/.*' 12 | pattern_dependabot='^dependabot/.*' 13 | pattern_hotfix='.*hotfix/.*' 14 | pattern_main='.*main' 15 | pattern_feature='^[a-z]{2}/#[0-9]+(-.+)?$' 16 | 17 | BRANCH_TYPE="unknown" 18 | 19 | if [[ "$BRANCH_NAME" =~ $pattern_dev ]]; then 20 | BRANCH_TYPE="dev" 21 | elif [[ "$BRANCH_NAME" =~ $pattern_release ]]; then 22 | BRANCH_TYPE="release" 23 | elif [[ "$BRANCH_NAME" =~ $pattern_dependabot ]]; then 24 | BRANCH_TYPE="dependabot" 25 | elif [[ "$BRANCH_NAME" =~ $pattern_hotfix ]]; then 26 | BRANCH_TYPE="hotfix" 27 | elif [[ "$BRANCH_NAME" =~ $pattern_main ]]; then 28 | BRANCH_TYPE="main" 29 | elif [[ "$BRANCH_NAME" =~ $pattern_feature ]]; then 30 | BRANCH_TYPE="feature" 31 | else 32 | echo "Error:'$BRANCH_NAME' does not match any pattern." 33 | exit 1 34 | fi 35 | 36 | echo "=========================" 37 | echo "Branch type: $BRANCH_TYPE" 38 | echo "BRANCH_TYPE=$BRANCH_TYPE" >> "$GITHUB_ENV" 39 | echo "=========================" 40 | -------------------------------------------------------------------------------- /scripts/get_versions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | cd "$(dirname "$0")/.." 5 | 6 | REPO_URL=$(git config --get remote.origin.url) 7 | export REPO_URL 8 | echo "REPO_URL=$REPO_URL" >> $GITHUB_ENV 9 | 10 | echo "Fetching current version of PR..." 11 | PR_VERSION=$(./gradlew -q currentVersion) 12 | echo "PR_VERSION=$PR_VERSION" 13 | echo "export PR_VERSION=$PR_VERSION" >> versions.env 14 | echo "PR_VERSION=$PR_VERSION" >> "$GITHUB_ENV" 15 | 16 | get_branch_version() { 17 | local BRANCH_NAME=$1 18 | local DIR_NAME="${BRANCH_NAME}-branch" 19 | 20 | git clone --depth 1 --branch "$BRANCH_NAME" "$REPO_URL" "$DIR_NAME" 21 | cd "$DIR_NAME" 22 | 23 | echo "Fetching version from $BRANCH_NAME branch..." 24 | BRANCH_VERSION=$(./gradlew -q currentVersion) 25 | cd .. 26 | 27 | echo "${BRANCH_NAME^^}_VERSION=$BRANCH_VERSION" 28 | echo "export ${BRANCH_NAME^^}_VERSION=$BRANCH_VERSION" >> versions.env 29 | echo "${BRANCH_NAME^^}_VERSION=$BRANCH_VERSION" >> "$GITHUB_ENV" 30 | 31 | rm -rf "$DIR_NAME" 32 | } 33 | 34 | 35 | get_branch_version "dev" 36 | get_branch_version "main" 37 | 38 | echo "Get Versions: OK!" 39 | -------------------------------------------------------------------------------- /scripts/run-version-check.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | rm -f versions.env 5 | 6 | scripts/get_versions.sh 7 | 8 | source versions.env 9 | 10 | scripts/version_check.sh 11 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'PowerSystemDataModel' 2 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/ChargingPointTypeException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | /** Is thrown in case, there is some problem when building VoltageLevelInformation */ 9 | public class ChargingPointTypeException extends Exception { 10 | public ChargingPointTypeException(String message) { 11 | super(message); 12 | } 13 | 14 | public ChargingPointTypeException(String message, Throwable cause) { 15 | super(message, cause); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/ConnectorException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | /** 9 | * Exception that should be used whenever something invalid happens in a implementation of a {@link 10 | * edu.ie3.datamodel.io.connectors.DataConnector} 11 | * 12 | * @version 0.1 13 | * @since 20.03.20 14 | */ 15 | public class ConnectorException extends Exception { 16 | 17 | public ConnectorException(final String message, final Throwable cause) { 18 | super(message, cause); 19 | } 20 | 21 | public ConnectorException(final Throwable cause) { 22 | super(cause); 23 | } 24 | 25 | public ConnectorException(final String message) { 26 | super(message); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/DuplicateEntitiesException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | import edu.ie3.datamodel.utils.ExceptionUtils; 9 | import java.util.List; 10 | 11 | public class DuplicateEntitiesException extends ValidationException { 12 | 13 | public DuplicateEntitiesException(String s) { 14 | super(s); 15 | } 16 | 17 | public DuplicateEntitiesException( 18 | String entityName, List exceptions) { 19 | this( 20 | "The following exception(s) occurred while checking the uniqueness of '" 21 | + entityName 22 | + "' entities: " 23 | + ExceptionUtils.getMessages(exceptions)); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/EntityProcessorException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | /** 9 | * Is thrown, when something went wrong during entity field mapping creation in a {@link 10 | * edu.ie3.datamodel.io.processor.EntityProcessor} 11 | */ 12 | public class EntityProcessorException extends Exception { 13 | public EntityProcessorException(final String message, final Throwable cause) { 14 | super(message, cause); 15 | } 16 | 17 | public EntityProcessorException(final Throwable cause) { 18 | super(cause); 19 | } 20 | 21 | public EntityProcessorException(final String message) { 22 | super(message); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/ExtractorException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | /** 9 | * Exception that should be used whenever something invalid happens in a implementation of a {@link 10 | * edu.ie3.datamodel.io.connectors.DataConnector} 11 | * 12 | * @version 0.1 13 | * @since 20.03.20 14 | */ 15 | public class ExtractorException extends Exception { 16 | 17 | public ExtractorException(final String message, final Throwable cause) { 18 | super(message, cause); 19 | } 20 | 21 | public ExtractorException(final Throwable cause) { 22 | super(cause); 23 | } 24 | 25 | public ExtractorException(final String message) { 26 | super(message); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/FactoryException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | /** Is thrown, when something went wrong during entity creation process in a EntityFactory */ 9 | public class FactoryException extends RuntimeException { 10 | public FactoryException(final String message, final Throwable cause) { 11 | super(message, cause); 12 | } 13 | 14 | public FactoryException(final Throwable cause) { 15 | super(cause); 16 | } 17 | 18 | public FactoryException(final String message) { 19 | super(message); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/FailedValidationException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | import edu.ie3.datamodel.utils.ExceptionUtils; 9 | import java.util.List; 10 | 11 | public class FailedValidationException extends ValidationException { 12 | public FailedValidationException(String message, Throwable throwable) { 13 | super(message, throwable); 14 | } 15 | 16 | public FailedValidationException(Throwable throwable) { 17 | super(throwable); 18 | } 19 | 20 | public FailedValidationException(String message) { 21 | super(message); 22 | } 23 | 24 | /** @param exceptions List of exceptions, which must not be empty */ 25 | public FailedValidationException(List exceptions) { 26 | super( 27 | "Validation failed due to: \n" + ExceptionUtils.getMessages(exceptions), exceptions.get(0)); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/FailureException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | public class FailureException extends Exception { 9 | public FailureException(String message, Throwable throwable) { 10 | super(message, throwable); 11 | } 12 | 13 | public FailureException(String message) { 14 | super(message); 15 | } 16 | 17 | public FailureException(Throwable throwable) { 18 | super(throwable); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/FileException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | public class FileException extends Exception { 9 | public FileException(String message) { 10 | super(message); 11 | } 12 | 13 | public FileException(String message, Throwable cause) { 14 | super(message, cause); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/GraphicSourceException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | import java.util.List; 9 | 10 | public class GraphicSourceException extends SourceException { 11 | public GraphicSourceException(String message, List exceptions) { 12 | super(message, exceptions); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/InvalidColumnNameException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | /** 9 | * Exception that is thrown whenever data columns are not as expected. 10 | * 11 | * @version 0.1 12 | * @since 10.12.20 13 | */ 14 | public class InvalidColumnNameException extends RuntimeException { 15 | public InvalidColumnNameException(final String message, final Throwable cause) { 16 | super(message, cause); 17 | } 18 | 19 | public InvalidColumnNameException(final Throwable cause) { 20 | super(cause); 21 | } 22 | 23 | public InvalidColumnNameException(final String message) { 24 | super(message); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/InvalidEntityException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | import edu.ie3.datamodel.models.UniqueEntity; 9 | 10 | /** Is thrown, when a checked entity is illegal and thus not usable */ 11 | public class InvalidEntityException extends ValidationException { 12 | 13 | private static final long serialVersionUID = 809496087520306374L; 14 | 15 | public InvalidEntityException(String faultDescription, UniqueEntity invalidEntity) { 16 | super("Entity is invalid because of: \n" + faultDescription + " [" + invalidEntity + "]"); 17 | } 18 | 19 | public InvalidEntityException( 20 | String faultDescription, Throwable cause, UniqueEntity invalidEntity) { 21 | super( 22 | "Entity is invalid because of: \n" + faultDescription + " [" + invalidEntity + "]", cause); 23 | } 24 | 25 | public InvalidEntityException(String message, Throwable cause) { 26 | super(message, cause); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/InvalidGridException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | public class InvalidGridException extends ValidationException { 9 | public InvalidGridException(String message) { 10 | super(message); 11 | } 12 | 13 | public InvalidGridException(String message, Throwable cause) { 14 | super(message, cause); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/NotImplementedException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | public class NotImplementedException extends UnsupportedOperationException { 9 | public NotImplementedException(String msg) { 10 | super(msg); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/ParsingException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | public class ParsingException extends Exception { 9 | public ParsingException(String message) { 10 | super(message); 11 | } 12 | 13 | public ParsingException(String message, Throwable cause) { 14 | super(message, cause); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/ProcessorProviderException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | /** 9 | * Exception that should be used whenever an error occurs in a instance of {@link 10 | * edu.ie3.datamodel.io.processor.ProcessorProvider} 11 | * 12 | * @version 0.1 13 | * @since 20.03.20 14 | */ 15 | public class ProcessorProviderException extends Exception { 16 | 17 | public ProcessorProviderException(final String message, final Throwable cause) { 18 | super(message, cause); 19 | } 20 | 21 | public ProcessorProviderException(final Throwable cause) { 22 | super(cause); 23 | } 24 | 25 | public ProcessorProviderException(final String message) { 26 | super(message); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/RawGridException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | import java.util.List; 9 | 10 | public class RawGridException extends SourceException { 11 | public RawGridException(String message, List exceptions) { 12 | super(message, exceptions); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/SinkException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | /** 9 | * Exception that should be used whenever an error occurs in a instance of a {@link 10 | * edu.ie3.datamodel.io.sink.DataSink} 11 | * 12 | * @version 0.1 13 | * @since 19.03.20 14 | */ 15 | public class SinkException extends Exception { 16 | public SinkException(final String message, final Throwable cause) { 17 | super(message, cause); 18 | } 19 | 20 | public SinkException(final Throwable cause) { 21 | super(cause); 22 | } 23 | 24 | public SinkException(final String message) { 25 | super(message); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/SourceException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | import edu.ie3.datamodel.utils.ExceptionUtils; 9 | import java.util.List; 10 | 11 | /** 12 | * Exception that should be used whenever an error occurs in a instance of a {@link 13 | * edu.ie3.datamodel.io.source.DataSource} 14 | * 15 | * @version 0.1 16 | * @since 19.03.20 17 | */ 18 | public class SourceException extends Exception { 19 | 20 | private static final long serialVersionUID = -1861732230033172395L; 21 | 22 | public SourceException(final String message, final Throwable cause) { 23 | super(message, cause); 24 | } 25 | 26 | public SourceException(final Throwable cause) { 27 | super(cause); 28 | } 29 | 30 | public SourceException(final String message) { 31 | super(message); 32 | } 33 | 34 | public SourceException(String message, List exceptions) { 35 | super(message + " " + ExceptionUtils.getMessages(exceptions), exceptions.get(0)); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/SystemParticipantsException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | import java.util.List; 9 | 10 | public class SystemParticipantsException extends SourceException { 11 | public SystemParticipantsException(String message, List exceptions) { 12 | super(message, exceptions); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/TopologyException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | public class TopologyException extends Exception { 9 | public TopologyException() { 10 | super(); 11 | } 12 | 13 | public TopologyException(String s) { 14 | super(s); 15 | } 16 | 17 | public TopologyException(String s, Throwable throwable) { 18 | super(s, throwable); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/TryException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | public class TryException extends RuntimeException { 9 | public TryException(String message, Throwable throwable) { 10 | super(message, throwable); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/UnsafeEntityException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | import edu.ie3.datamodel.models.UniqueEntity; 9 | 10 | /** Is thrown, when a checked entity may be unsafe to use, but is not necessarily unsafe */ 11 | public class UnsafeEntityException extends ValidationException { 12 | 13 | public UnsafeEntityException(String faultDescription, UniqueEntity unsafeEntity) { 14 | super("Entity may be unsafe because of: " + faultDescription + " [" + unsafeEntity + "]"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/ValidationException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | public abstract class ValidationException extends Exception { 9 | protected ValidationException(String s) { 10 | super(s); 11 | } 12 | 13 | protected ValidationException(Throwable throwable) { 14 | super(throwable); 15 | } 16 | 17 | protected ValidationException(String s, Throwable throwable) { 18 | super(s, throwable); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/exceptions/VoltageLevelException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.exceptions; 7 | 8 | /** Is thrown in case, there is some problem when building VoltageLevelInformation */ 9 | public class VoltageLevelException extends Exception { 10 | public VoltageLevelException(String message) { 11 | super(message); 12 | } 13 | 14 | public VoltageLevelException(String message, Throwable cause) { 15 | super(message, cause); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/graph/DistanceWeightedEdge.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.graph; 7 | 8 | import static tech.units.indriya.unit.Units.METRE; 9 | 10 | import javax.measure.Quantity; 11 | import javax.measure.Unit; 12 | import javax.measure.quantity.Length; 13 | import org.jgrapht.graph.DefaultWeightedEdge; 14 | import tech.units.indriya.quantity.Quantities; 15 | 16 | /** 17 | * A default implementation for edges in a {@link DistanceWeightedGraph}. All access to the weight 18 | * of an edge must go through the graph interface, which is why this class doesn't expose any public 19 | * methods. 20 | */ 21 | public class DistanceWeightedEdge extends DefaultWeightedEdge { 22 | private static final long serialVersionUID = -3331046813188425728L; 23 | 24 | protected static final Unit DEFAULT_DISTANCE_UNIT = METRE; 25 | 26 | public Quantity getDistance() { 27 | return Quantities.getQuantity(getWeight(), DEFAULT_DISTANCE_UNIT); 28 | } 29 | 30 | @Override 31 | public String toString() { 32 | return "DistanceWeightedEdge{" + "distance=" + getDistance() + "} " + super.toString(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/graph/ImpedanceWeightedEdge.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.graph; 7 | 8 | import static tech.units.indriya.unit.Units.OHM; 9 | 10 | import javax.measure.Quantity; 11 | import javax.measure.Unit; 12 | import javax.measure.quantity.ElectricResistance; 13 | import org.jgrapht.graph.DefaultWeightedEdge; 14 | import tech.units.indriya.quantity.Quantities; 15 | 16 | /** 17 | * A default implementation for edges in a {@link ImpedanceWeightedGraph}. All access to the weight 18 | * of an edge must go through the graph interface, which is why this class doesn't expose any public 19 | * methods. 20 | * 21 | * @version 0.1 22 | * @since 04.06.20 23 | */ 24 | public class ImpedanceWeightedEdge extends DefaultWeightedEdge { 25 | private static final long serialVersionUID = -3331046813188425729L; 26 | 27 | protected static final Unit DEFAULT_IMPEDANCE_UNIT = OHM; 28 | 29 | public Quantity getImpedance() { 30 | return Quantities.getQuantity(getWeight(), DEFAULT_IMPEDANCE_UNIT); 31 | } 32 | 33 | @Override 34 | public String toString() { 35 | return "ImpedanceWeightedEdge{" + "impedance=" + getImpedance() + "} " + super.toString(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/graph/SubGridTopologyGraph.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.graph; 7 | 8 | import edu.ie3.datamodel.models.input.container.SubGridContainer; 9 | import org.jgrapht.graph.AsUnmodifiableGraph; 10 | import org.jgrapht.graph.DirectedMultigraph; 11 | 12 | /** 13 | * A wrapper class to define a graph for representing the structure of galvanically seperated sub 14 | * grid models. 15 | */ 16 | public class SubGridTopologyGraph extends AsUnmodifiableGraph { 17 | /** 18 | * Creates a new unmodifiable graph based on the specified backing graph. 19 | * 20 | * @param g the backing graph on which an unmodifiable graph is to be created. 21 | */ 22 | public SubGridTopologyGraph(DirectedMultigraph g) { 23 | super(g); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/DbGridMetadata.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io; 7 | 8 | import static edu.ie3.datamodel.io.SqlUtils.quote; 9 | 10 | import java.util.UUID; 11 | import java.util.stream.Stream; 12 | 13 | /** Class for identification of entities and results from grids in SQL databases. */ 14 | public record DbGridMetadata(String gridName, UUID uuid) { 15 | 16 | public static final String GRID_TABLE_COLUMN = "grids"; 17 | public static final String GRID_NAME_COLUMN = "grid_name"; 18 | public static final String GRID_UUID_COLUMN = "grid_uuid"; 19 | 20 | public String toString() { 21 | return GRID_NAME_COLUMN + "=" + gridName + ", " + GRID_UUID_COLUMN + "=" + uuid.toString(); 22 | } 23 | 24 | /** @return Stream with grid uuid */ 25 | public Stream getStreamForQuery() { 26 | return Stream.of(quote(uuid.toString(), "'")); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/connectors/DataConnector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.connectors; 7 | 8 | /** 9 | * Describes a class that is used to establish a connection to a data location. This location can 10 | * either be a file or database. 11 | */ 12 | public interface DataConnector { 13 | 14 | void shutdown(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/extractor/HasEm.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2024. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.extractor; 7 | 8 | import edu.ie3.datamodel.models.input.EmInput; 9 | import java.util.Optional; 10 | 11 | /** 12 | * Interface that should be implemented by all elements that can be controlled by {@link 13 | * edu.ie3.datamodel.models.input.EmInput} elements and should be processable by the {@link 14 | * Extractor}. 15 | */ 16 | public interface HasEm extends NestedEntity { 17 | Optional getControllingEm(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/extractor/HasLine.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.extractor; 7 | 8 | import edu.ie3.datamodel.models.input.connector.LineInput; 9 | 10 | /** 11 | * Interface that should be implemented by all elements holding a {@link LineInput} elements and 12 | * should be processable by the {@link Extractor}. 13 | * 14 | * @version 0.1 15 | * @since 31.03.20 16 | */ 17 | public interface HasLine extends NestedEntity { 18 | 19 | LineInput getLine(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/extractor/HasNodes.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.extractor; 7 | 8 | import edu.ie3.datamodel.models.input.NodeInput; 9 | import java.util.List; 10 | 11 | /** 12 | * Interface that should be implemented by all elements holding one or more {@link NodeInput} 13 | * elements and should be processable by the {@link Extractor}. 14 | * 15 | * @version 0.1 16 | * @since 31.03.20 17 | */ 18 | public interface HasNodes extends NestedEntity { 19 | List allNodes(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/extractor/HasThermalBus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.extractor; 7 | 8 | import edu.ie3.datamodel.models.input.thermal.ThermalBusInput; 9 | 10 | /** 11 | * Interface that should be implemented by all elements holding a {@link ThermalBusInput} elements 12 | * and should be processable by the {@link Extractor}. 13 | * 14 | * @version 0.1 15 | * @since 31.03.20 16 | */ 17 | public interface HasThermalBus extends NestedEntity { 18 | 19 | ThermalBusInput getThermalBus(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/extractor/HasThermalStorage.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.extractor; 7 | 8 | import edu.ie3.datamodel.models.input.thermal.ThermalStorageInput; 9 | 10 | /** 11 | * Interface that should be implemented by all elements holding a {@link ThermalStorageInput} 12 | * elements and should be processable by the {@link Extractor}. 13 | * 14 | * @version 0.1 15 | * @since 31.03.20 16 | */ 17 | public interface HasThermalStorage { 18 | 19 | ThermalStorageInput getThermalStorage(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/extractor/HasType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.extractor; 7 | 8 | import edu.ie3.datamodel.models.input.AssetTypeInput; 9 | 10 | /** 11 | * Interface that should be implemented by all elements holding a {@link AssetTypeInput} and should 12 | * be processable by the {@link Extractor}. 13 | * 14 | * @version 0.1 15 | * @since 31.03.20 16 | */ 17 | public interface HasType extends NestedEntity { 18 | 19 | AssetTypeInput getType(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/extractor/NestedEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.extractor; 7 | 8 | /** 9 | * This interface should be implemented only by other interfaces that should be used by the {@link 10 | * Extractor} It provides the entry point for the extraction method in the {@link Extractor}. If 11 | * this interface is implemented by other interfaces one has to take care about, that the 12 | * corresponding extractElements()-method in {@link Extractor} is extended accordingly. 13 | * 14 | * @version 0.1 15 | * @since 31.03.20 16 | */ 17 | public interface NestedEntity {} 18 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/EntityFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory; 7 | 8 | import edu.ie3.datamodel.models.Entity; 9 | 10 | /** 11 | * Universal factory class for creating entities with {@link EntityData} data objects. 12 | * 13 | * @param Type of entity that this factory can create. Can be a subclass of the entities that 14 | * this factory creates. 15 | * @param Type of data class that is required for entity creation 16 | * @version 0.1 17 | * @since 28.01.20 18 | */ 19 | public abstract class EntityFactory 20 | extends Factory { 21 | /** 22 | * Constructor for an EntityFactory for given classes 23 | * 24 | * @param allowedClasses exactly the classes that this factory is allowed and able to build 25 | */ 26 | protected EntityFactory(Class... allowedClasses) { 27 | super(allowedClasses); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/SimpleFactoryData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory; 7 | 8 | import java.util.Map; 9 | 10 | /** Simple class, that holds a mapping from key to value. */ 11 | public class SimpleFactoryData extends FactoryData { 12 | public SimpleFactoryData(Map fieldsToAttributes, Class targetClass) { 13 | super(fieldsToAttributes, targetClass); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/UniqueEntityFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2024. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory; 7 | 8 | import edu.ie3.datamodel.models.Entity; 9 | 10 | /** 11 | * Universal factory class for creating entities with unique fields uuid and id. 12 | * 13 | * @param Type of entity that this factory can create. Can be a subclass of the entities that 14 | * this factory creates. 15 | * @param Type of data class that is required for entity creation 16 | */ 17 | public abstract class UniqueEntityFactory 18 | extends EntityFactory { 19 | 20 | protected static final String UUID = "uuid"; 21 | 22 | protected static final String ID = "id"; 23 | 24 | @SafeVarargs 25 | protected UniqueEntityFactory(Class... allowedClasses) { 26 | super(allowedClasses); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/input/OperatorInputFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory.input; 7 | 8 | import edu.ie3.datamodel.io.factory.EntityData; 9 | import edu.ie3.datamodel.io.factory.UniqueEntityFactory; 10 | import edu.ie3.datamodel.models.input.OperatorInput; 11 | import java.util.Collections; 12 | import java.util.List; 13 | import java.util.Set; 14 | 15 | public class OperatorInputFactory extends UniqueEntityFactory { 16 | 17 | public OperatorInputFactory() { 18 | super(OperatorInput.class); 19 | } 20 | 21 | @Override 22 | protected List> getFields(Class entityClass) { 23 | Set constructorParams = newSet(UUID, ID); 24 | return Collections.singletonList(constructorParams); 25 | } 26 | 27 | @Override 28 | protected OperatorInput buildModel(EntityData data) { 29 | return new OperatorInput(data.getUUID(UUID), data.getField(ID)); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/input/ThermalBusInputFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory.input; 7 | 8 | import edu.ie3.datamodel.models.OperationTime; 9 | import edu.ie3.datamodel.models.input.OperatorInput; 10 | import edu.ie3.datamodel.models.input.thermal.ThermalBusInput; 11 | import java.util.UUID; 12 | 13 | public class ThermalBusInputFactory 14 | extends AssetInputEntityFactory { 15 | public ThermalBusInputFactory() { 16 | super(ThermalBusInput.class); 17 | } 18 | 19 | @Override 20 | protected String[] getAdditionalFields() { 21 | return new String[0]; 22 | } 23 | 24 | @Override 25 | protected ThermalBusInput buildModel( 26 | AssetInputEntityData data, 27 | UUID uuid, 28 | String id, 29 | OperatorInput operator, 30 | OperationTime operationTime) { 31 | return new ThermalBusInput(uuid, id, operator, operationTime); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/input/graphics/LineGraphicInputFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory.input.graphics; 7 | 8 | import edu.ie3.datamodel.models.input.graphics.LineGraphicInput; 9 | import java.util.UUID; 10 | import org.locationtech.jts.geom.LineString; 11 | 12 | /** 13 | * Factory to create {@link LineGraphicInput} entities 14 | * 15 | * @version 0.1 16 | * @since 08.04.20 17 | */ 18 | public final class LineGraphicInputFactory 19 | extends GraphicInputFactory { 20 | 21 | public LineGraphicInputFactory() { 22 | super(LineGraphicInput.class); 23 | } 24 | 25 | @Override 26 | protected String[] getAdditionalFields() { 27 | return new String[0]; 28 | } 29 | 30 | @Override 31 | protected LineGraphicInput buildModel( 32 | LineGraphicInputEntityData data, UUID uuid, String graphicLayer, LineString path) { 33 | return new LineGraphicInput(uuid, graphicLayer, path, data.getLine()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/timeseries/IdCoordinateFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory.timeseries; 7 | 8 | import edu.ie3.datamodel.io.factory.Factory; 9 | import edu.ie3.datamodel.io.factory.SimpleFactoryData; 10 | import edu.ie3.datamodel.models.input.IdCoordinateInput; 11 | 12 | /** 13 | * Abstract class definition for a factory, that is able to build single mapping entries from 14 | * coordinate identifier to actual coordinate 15 | */ 16 | public abstract class IdCoordinateFactory 17 | extends Factory { 18 | protected IdCoordinateFactory() { 19 | super(IdCoordinateInput.class); 20 | } 21 | 22 | /** @return the field id for the coordinate id */ 23 | public abstract String getIdField(); 24 | 25 | /** @return the field id for the coordinate latitude */ 26 | public abstract String getLatField(); 27 | 28 | /** @return the field id for the coordinate longitude */ 29 | public abstract String getLonField(); 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/timeseries/LoadProfileData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2024. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory.timeseries; 7 | 8 | import edu.ie3.datamodel.io.factory.FactoryData; 9 | import edu.ie3.datamodel.models.value.load.LoadValues; 10 | import java.util.Map; 11 | 12 | /** 13 | * Data, that is used to build a {@link 14 | * edu.ie3.datamodel.models.timeseries.repetitive.LoadProfileEntry} within a factory 15 | * 16 | * @param Type of load values class 17 | */ 18 | public class LoadProfileData extends FactoryData { 19 | public LoadProfileData(Map fieldsToAttributes, Class targetClass) { 20 | super(fieldsToAttributes, targetClass); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/timeseries/SimpleTimeBasedValueData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory.timeseries; 7 | 8 | import edu.ie3.datamodel.models.timeseries.individual.TimeBasedValue; 9 | import edu.ie3.datamodel.models.value.Value; 10 | import java.util.Map; 11 | 12 | /** 13 | * Data, that is used to build a {@link TimeBasedValue} within a Factory 14 | * 15 | * @param Type of inner value class 16 | */ 17 | public class SimpleTimeBasedValueData extends TimeBasedValueData { 18 | /** 19 | * Creates a new SimpleTimeBasedValueData object 20 | * 21 | * @param fieldsToAttributes attribute map: field name to value 22 | * @param valueClass Class of the underlying value 23 | */ 24 | public SimpleTimeBasedValueData(Map fieldsToAttributes, Class valueClass) { 25 | super(fieldsToAttributes, valueClass); 26 | } 27 | 28 | @Override 29 | public String toString() { 30 | return "SimpleTimeBasedValueData{" 31 | + "fieldsToAttributes=" 32 | + getFieldsToValues() 33 | + ", targetClass=" 34 | + getTargetClass() 35 | + '}'; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedValueData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory.timeseries; 7 | 8 | import edu.ie3.datamodel.io.factory.FactoryData; 9 | import edu.ie3.datamodel.models.timeseries.individual.TimeBasedValue; 10 | import edu.ie3.datamodel.models.value.Value; 11 | import java.util.Map; 12 | 13 | /** 14 | * Abstract definition of data, that is used to build a {@link TimeBasedValue} within a Factory 15 | * 16 | * @param Type of inner value class 17 | */ 18 | public abstract class TimeBasedValueData extends FactoryData { 19 | 20 | /** 21 | * Creates a new TimeBasedValueData object 22 | * 23 | * @param fieldsToAttributes attribute map: field name to value 24 | * @param valueClass Class of the underlying value 25 | */ 26 | protected TimeBasedValueData(Map fieldsToAttributes, Class valueClass) { 27 | super(fieldsToAttributes, valueClass); 28 | } 29 | 30 | @Override 31 | public String toString() { 32 | return "TimeBasedValueData{" + "fieldsToAttributes=" + getFieldsToValues() + "} "; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeSeriesMappingFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory.timeseries; 7 | 8 | import edu.ie3.datamodel.io.factory.EntityData; 9 | import edu.ie3.datamodel.io.factory.EntityFactory; 10 | import edu.ie3.datamodel.io.source.TimeSeriesMappingSource; 11 | import java.util.List; 12 | import java.util.Set; 13 | import java.util.UUID; 14 | 15 | public class TimeSeriesMappingFactory 16 | extends EntityFactory { 17 | private static final String ASSET = "asset"; 18 | private static final String TIME_SERIES = "timeSeries"; 19 | 20 | public TimeSeriesMappingFactory() { 21 | super(TimeSeriesMappingSource.MappingEntry.class); 22 | } 23 | 24 | @Override 25 | protected List> getFields(Class entityClass) { 26 | return List.of(newSet(ASSET, TIME_SERIES)); 27 | } 28 | 29 | @Override 30 | protected TimeSeriesMappingSource.MappingEntry buildModel(EntityData data) { 31 | UUID asset = data.getUUID(ASSET); 32 | UUID timeSeries = data.getUUID(TIME_SERIES); 33 | return new TimeSeriesMappingSource.MappingEntry(asset, timeSeries); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/factory/typeinput/AssetTypeInputEntityFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.factory.typeinput; 7 | 8 | import edu.ie3.datamodel.io.factory.EntityData; 9 | import edu.ie3.datamodel.io.factory.UniqueEntityFactory; 10 | import edu.ie3.datamodel.models.input.AssetTypeInput; 11 | 12 | /** 13 | * Internal API for building {@link AssetTypeInput}s. This additional abstraction layer is necessary 14 | * to create generic reader for {@link AssetTypeInput}s only and furthermore removes code 15 | * duplicates. 16 | * 17 | * @version 0.1 18 | * @since 11.02.20 19 | */ 20 | abstract class AssetTypeInputEntityFactory 21 | extends UniqueEntityFactory { 22 | 23 | protected AssetTypeInputEntityFactory(Class... allowedClasses) { 24 | super(allowedClasses); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/naming/FileHierarchy.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.naming; 7 | 8 | import edu.ie3.datamodel.models.Entity; 9 | import java.nio.file.Path; 10 | import java.util.Optional; 11 | 12 | /** 13 | * Abstract definition of a file hierarchy (a piece of software, that knows where to find / place a 14 | * file reflecting a certain class) inside of a nested sub directory structure 15 | */ 16 | public interface FileHierarchy { 17 | /** 18 | * Determines the correct subdirectory (w.r.t. an arbitrary base directory) for a certain given 19 | * class using the file separator provided by {@link Path} for delimiting between directories and 20 | * files. 21 | * 22 | * @param cls Class to define the sub directory for 23 | * @return An Option to the regarding sub directory as a string 24 | */ 25 | Optional getSubDirectory(Class cls); 26 | 27 | /** 28 | * Determines the base directory. 29 | * 30 | * @return An option to the base directory 31 | * @deprecated Use {@link edu.ie3.datamodel.io.connectors.CsvFileConnector} instead 32 | */ 33 | @Deprecated(since = "3.0", forRemoval = true) 34 | Optional getBaseDirectory(); 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/naming/FlatDirectoryHierarchy.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.naming; 7 | 8 | import edu.ie3.datamodel.models.Entity; 9 | import java.nio.file.Path; 10 | import java.util.Optional; 11 | 12 | /** Default directory hierarchy for input models */ 13 | public class FlatDirectoryHierarchy implements FileHierarchy { 14 | 15 | /** 16 | * Gives empty sub directory. 17 | * 18 | * @param cls Class to define the sub directory for 19 | * @return An Option to the regarding sub directory as a string 20 | */ 21 | @Override 22 | public Optional getSubDirectory(Class cls) { 23 | return Optional.empty(); 24 | } 25 | 26 | /** 27 | * Gives the baseDirectory, which is Empty. 28 | * 29 | * @return An Option to the base directory as a string 30 | * @deprecated Use {@link edu.ie3.datamodel.io.connectors.CsvFileConnector} instead 31 | */ 32 | @Deprecated(since = "3.0", forRemoval = true) 33 | @Override 34 | public Optional getBaseDirectory() { 35 | return Optional.empty(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/naming/TimeSeriesMetaInformation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.naming; 7 | 8 | import edu.ie3.datamodel.models.input.UniqueInputEntity; 9 | import java.util.UUID; 10 | 11 | /** Meta information, that describe a certain data source */ 12 | public abstract class TimeSeriesMetaInformation extends UniqueInputEntity { 13 | 14 | protected TimeSeriesMetaInformation(UUID uuid) { 15 | super(uuid); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/processor/timeseries/FieldSourceToMethod.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.processor.timeseries; 7 | 8 | import java.lang.reflect.Method; 9 | 10 | /** 11 | * Represent a tuple of {@link FieldSource} to {@link Method} to highlight, where information of a 12 | * time series can be obtained from 13 | */ 14 | public record FieldSourceToMethod(FieldSource source, Method method) { 15 | @Override 16 | public String toString() { 17 | return "FieldSourceToMethod{" + "source=" + source + ", method=" + method + '}'; 18 | } 19 | 20 | /** Enum to denote, where information can be received from */ 21 | public enum FieldSource { 22 | TIMESERIES, 23 | ENTRY, 24 | VALUE, 25 | WEATHER_IRRADIANCE, 26 | WEATHER_TEMPERATURE, 27 | WEATHER_WIND 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/sink/OutputDataSink.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.sink; 7 | 8 | public interface OutputDataSink extends DataSink {} 9 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/source/DataSource.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.source; 7 | 8 | import edu.ie3.datamodel.exceptions.SourceException; 9 | import edu.ie3.datamodel.models.Entity; 10 | import java.util.Map; 11 | import java.util.Optional; 12 | import java.util.Set; 13 | import java.util.stream.Stream; 14 | 15 | /** Interface that include functionalities for data sources in the database table, csv file etc. */ 16 | public interface DataSource { 17 | 18 | /** 19 | * Method to retrieve the fields found in the source. 20 | * 21 | * @param entityClass class of the source 22 | * @return an option for the found fields 23 | */ 24 | Optional> getSourceFields(Class entityClass) throws SourceException; 25 | 26 | /** Creates a stream of maps that represent the rows in the database */ 27 | Stream> getSourceData(Class entityClass) 28 | throws SourceException; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/source/SourceValidator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.source; 7 | 8 | import edu.ie3.datamodel.exceptions.ValidationException; 9 | import edu.ie3.datamodel.utils.Try; 10 | import edu.ie3.datamodel.utils.Try.Failure; 11 | import java.util.Set; 12 | 13 | public interface SourceValidator { 14 | 15 | /** 16 | * Method for validating a data source. 17 | * 18 | * @param actualFields fields that were found in the source data 19 | * @param entityClass that should be buildable from the source data 20 | * @return either an exception wrapped by a {@link Failure} or an empty success 21 | */ 22 | Try validate(Set actualFields, Class entityClass); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/source/WholesalePriceSource.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.source; 7 | 8 | import edu.ie3.datamodel.models.timeseries.individual.IndividualTimeSeries; 9 | import edu.ie3.datamodel.models.value.EnergyPriceValue; 10 | import edu.ie3.util.interval.ClosedInterval; 11 | import java.time.ZonedDateTime; 12 | 13 | /** Describes a data source for wholesale prices */ 14 | public interface WholesalePriceSource { 15 | /** 16 | * Return the whole sale price for the given time interval 17 | * 18 | * @param timeInterval Queried time interval 19 | * @return wholesale price data for the specified time range as a TimeSeries 20 | */ 21 | IndividualTimeSeries getWholesalePrice( 22 | ClosedInterval timeInterval); 23 | 24 | /** 25 | * Return the whole sale price for the given time 26 | * 27 | * @param time Queried time 28 | * @return wholesale data for the specified time 29 | */ 30 | IndividualTimeSeries getWholesalePrice(ZonedDateTime time); 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/io/source/csv/CsvTimeSeriesMappingSource.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.source.csv; 7 | 8 | import edu.ie3.datamodel.exceptions.SourceException; 9 | import edu.ie3.datamodel.io.naming.FileNamingStrategy; 10 | import edu.ie3.datamodel.io.source.TimeSeriesMappingSource; 11 | import java.nio.file.Path; 12 | import java.util.Map; 13 | import java.util.Optional; 14 | import java.util.Set; 15 | import java.util.stream.Stream; 16 | 17 | public class CsvTimeSeriesMappingSource extends TimeSeriesMappingSource { 18 | 19 | private final CsvDataSource dataSource; 20 | 21 | public CsvTimeSeriesMappingSource( 22 | String csvSep, Path gridFolderPath, FileNamingStrategy fileNamingStrategy) { 23 | this.dataSource = new CsvDataSource(csvSep, gridFolderPath, fileNamingStrategy); 24 | } 25 | 26 | @Override 27 | public Stream> getMappingSourceData() throws SourceException { 28 | return dataSource.buildStreamWithFieldsToAttributesMap(MappingEntry.class, true).getOrThrow(); 29 | } 30 | 31 | @Override 32 | public Optional> getSourceFields() throws SourceException { 33 | return dataSource.getSourceFields(MappingEntry.class); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/ElectricCurrentType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models; 7 | 8 | import edu.ie3.util.StringUtils; 9 | import java.util.Optional; 10 | 11 | /** 12 | * Generic electric current type implementation. Main purpose is to indicate the current type that 13 | * is provided by a specific asset e.g. {@link edu.ie3.datamodel.models.input.system.EvcsInput} 14 | * 15 | * @version 0.1 16 | * @since 25.07.20 17 | */ 18 | public enum ElectricCurrentType { 19 | AC, 20 | DC; 21 | 22 | public static Optional parse(String electricCurrentId) { 23 | String cleanedElectricCurrentId = 24 | StringUtils.cleanString(electricCurrentId).replace("_", "").trim().toUpperCase(); 25 | Optional res; 26 | try { 27 | res = Optional.of(ElectricCurrentType.valueOf(cleanedElectricCurrentId)); 28 | } catch (IllegalArgumentException | NullPointerException e) { 29 | res = Optional.empty(); 30 | } 31 | return res; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/Entity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2024. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models; 7 | 8 | /** Interface for all entities. */ 9 | public interface Entity {} 10 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/Operable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models; 7 | 8 | import edu.ie3.datamodel.io.extractor.NestedEntity; 9 | import edu.ie3.datamodel.models.input.OperatorInput; 10 | import java.time.ZonedDateTime; 11 | 12 | /** Describes an operable Entity, with operation period interval */ 13 | public interface Operable extends NestedEntity { 14 | 15 | OperationTime getOperationTime(); 16 | 17 | default boolean inOperationOn(ZonedDateTime date) { 18 | return getOperationTime().includes(date); 19 | } 20 | 21 | OperatorInput getOperator(); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/input/IdCoordinateInput.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2024. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input; 7 | 8 | import edu.ie3.util.geo.GeoUtils; 9 | import org.locationtech.jts.geom.Point; 10 | 11 | public record IdCoordinateInput(Integer id, Point point) implements InputEntity { 12 | /** 13 | * Constructor for an {@link IdCoordinateInput}. 14 | * 15 | * @param id of the pair 16 | * @param lat of the pair 17 | * @param lon of the pair 18 | */ 19 | public IdCoordinateInput(Integer id, double lat, double lon) { 20 | this(id, GeoUtils.buildPoint(lat, lon)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/input/InputEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2024. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input; 7 | 8 | import edu.ie3.datamodel.models.Entity; 9 | 10 | /** Interface to describe all input entities. */ 11 | public interface InputEntity extends Entity {} 12 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/input/UniqueInputEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input; 7 | 8 | import edu.ie3.datamodel.models.UniqueEntity; 9 | import java.util.UUID; 10 | 11 | /** Functionless class to describe that all subclasses are unique input classes */ 12 | public abstract class UniqueInputEntity extends UniqueEntity implements InputEntity { 13 | 14 | protected UniqueInputEntity(UUID uuid) { 15 | super(uuid); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/input/connector/ConnectorPort.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input.connector; 7 | 8 | /** 9 | * Denotes possible external ports of a connector. For two {@link Transformer2WInput}, {@link 10 | * ConnectorPort#A} is the high voltage and {@link ConnectorPort#B} the low voltage port. For {@link 11 | * Transformer3WInput}, {@link ConnectorPort#A} is the high voltage, {@link ConnectorPort#B} medium 12 | * voltage and {@link ConnectorPort#C} low voltage port 13 | */ 14 | public enum ConnectorPort { 15 | A, 16 | B, 17 | C 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/input/container/InputContainer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input.container; 7 | 8 | import edu.ie3.datamodel.exceptions.ValidationException; 9 | import edu.ie3.datamodel.models.input.UniqueInputEntity; 10 | import java.io.Serializable; 11 | import java.util.List; 12 | 13 | /** Represents an aggregation of different entities */ 14 | public interface InputContainer extends Serializable { 15 | 16 | /** @return unmodifiable List of all entities */ 17 | List allEntitiesAsList(); 18 | 19 | /** Returns an input container copy builder */ 20 | InputContainerCopyBuilder copy(); 21 | 22 | /** 23 | * Abstract class for all builder that build child containers of interface {@link 24 | * edu.ie3.datamodel.models.input.container.InputContainer} 25 | * 26 | * @version 3.1 27 | * @since 14.02.23 28 | */ 29 | abstract class InputContainerCopyBuilder { 30 | 31 | /** Returns the altered {@link InputContainer} */ 32 | public abstract InputContainer build() throws ValidationException; 33 | 34 | protected abstract InputContainerCopyBuilder thisInstance(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/input/system/type/evcslocation/EvcsLocationType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input.system.type.evcslocation; 7 | 8 | /** 9 | * Describes type of location of an {@link edu.ie3.datamodel.models.input.system.EvcsInput}. Parsing 10 | * strings into one of these types is done in {@link EvcsLocationTypeUtils}. 11 | */ 12 | public enum EvcsLocationType { 13 | /** Charging at home (private home or apartment building, type: private location) */ 14 | HOME, 15 | /** Charging at work (type: private location) */ 16 | WORK, 17 | /** Charging at store parking lots (type: public location) */ 18 | CUSTOMER_PARKING, 19 | /** Charging at street side (type: public location) */ 20 | STREET, 21 | /** Charging at hub in town (type: public location) */ 22 | CHARGING_HUB_TOWN, 23 | /** Charging at hub out of town, highway (type: public location) */ 24 | CHARGING_HUB_HIGHWAY 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/profile/StandardLoadProfile.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.profile; 7 | 8 | import edu.ie3.datamodel.exceptions.ParsingException; 9 | import edu.ie3.datamodel.models.timeseries.individual.IndividualTimeSeries; 10 | import edu.ie3.datamodel.models.timeseries.repetitive.RepetitiveTimeSeries; 11 | 12 | /** 13 | * Giving reference to a known standard load profile to apply to a {@link 14 | * edu.ie3.datamodel.models.input.system.LoadInput}. This interface does nothing more, than giving a 15 | * reference, the values have to be provided by the simulator using the models. 16 | * 17 | *

If you intend to provide distinct values, create either an {@link IndividualTimeSeries} or 18 | * {@link RepetitiveTimeSeries} and assign it to the model via mapping to the model. 19 | */ 20 | public interface StandardLoadProfile extends LoadProfile { 21 | 22 | /** 23 | * Returns standard load profile corresponding to the given key. 24 | * 25 | * @param key to look for 26 | * @return the matching standard load profile 27 | */ 28 | static StandardLoadProfile parse(String key) throws ParsingException { 29 | return LoadProfile.getProfile(BdewStandardLoadProfile.values(), key); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/profile/TemperatureDependantLoadProfile.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2022. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.profile; 7 | 8 | import edu.ie3.datamodel.exceptions.ParsingException; 9 | 10 | /** 11 | * Temperature dependant load profiles for night storage heating and heat pumps . The profiles rely 12 | * on the VDN description for interruptable loads. For more details see here. 14 | */ 15 | public interface TemperatureDependantLoadProfile extends LoadProfile { 16 | 17 | /** 18 | * Returns temperature dependant load profile corresponding to the given key. 19 | * 20 | * @param key to look for 21 | * @return the matching temperature dependant load profile 22 | */ 23 | static TemperatureDependantLoadProfile parse(String key) throws ParsingException { 24 | return LoadProfile.getProfile(NbwTemperatureDependantLoadProfile.values(), key); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/result/thermal/CylindricalStorageResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.result.thermal; 7 | 8 | import java.time.ZonedDateTime; 9 | import java.util.UUID; 10 | import javax.measure.quantity.Dimensionless; 11 | import javax.measure.quantity.Energy; 12 | import javax.measure.quantity.Power; 13 | import tech.units.indriya.ComparableQuantity; 14 | 15 | /** Represents the results of Cylindrical Storage */ 16 | public class CylindricalStorageResult extends AbstractThermalStorageResult { 17 | 18 | public CylindricalStorageResult( 19 | ZonedDateTime time, 20 | UUID inputModel, 21 | ComparableQuantity energy, 22 | ComparableQuantity qDot, 23 | ComparableQuantity fillLevel) { 24 | super(time, inputModel, energy, qDot, fillLevel); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/result/thermal/DomesticHotWaterStorageResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2024. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.result.thermal; 7 | 8 | import java.time.ZonedDateTime; 9 | import java.util.UUID; 10 | import javax.measure.quantity.Dimensionless; 11 | import javax.measure.quantity.Energy; 12 | import javax.measure.quantity.Power; 13 | import tech.units.indriya.ComparableQuantity; 14 | 15 | /** Represents the results of Domestic Hot Water Storage */ 16 | public class DomesticHotWaterStorageResult extends AbstractThermalStorageResult { 17 | 18 | public DomesticHotWaterStorageResult( 19 | ZonedDateTime time, 20 | UUID inputModel, 21 | ComparableQuantity energy, 22 | ComparableQuantity qDot, 23 | ComparableQuantity fillLevel) { 24 | super(time, inputModel, energy, qDot, fillLevel); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/result/thermal/ThermalSinkResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.result.thermal; 7 | 8 | import java.time.ZonedDateTime; 9 | import java.util.UUID; 10 | import javax.measure.quantity.Power; 11 | import tech.units.indriya.ComparableQuantity; 12 | 13 | /** 14 | * Represents calculation results of a {@link 15 | * edu.ie3.datamodel.models.input.thermal.ThermalSinkInput} 16 | */ 17 | public abstract class ThermalSinkResult extends ThermalUnitResult { 18 | 19 | /** 20 | * Standard constructor which includes auto generation of the resulting output models uuid. 21 | * 22 | * @param time date and time when the result is produced 23 | * @param inputModel uuid of the input model that produces the result 24 | * @param qDot thermal heat demand of the sink 25 | */ 26 | protected ThermalSinkResult(ZonedDateTime time, UUID inputModel, ComparableQuantity qDot) { 27 | super(time, inputModel, qDot); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/timeseries/TimeSeriesEntry.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.timeseries; 7 | 8 | import edu.ie3.datamodel.models.Entity; 9 | import edu.ie3.datamodel.models.value.Value; 10 | import java.util.Objects; 11 | 12 | /** 13 | * This is an abstract class describing a unique entry to a time series 14 | * 15 | * @param Type of the contained value 16 | */ 17 | public abstract class TimeSeriesEntry implements Entity { 18 | protected final V value; 19 | 20 | protected TimeSeriesEntry(V value) { 21 | this.value = value; 22 | } 23 | 24 | public V getValue() { 25 | return value; 26 | } 27 | 28 | @Override 29 | public boolean equals(Object o) { 30 | if (this == o) return true; 31 | if (o == null || getClass() != o.getClass()) return false; 32 | TimeSeriesEntry entry = (TimeSeriesEntry) o; 33 | return value.equals(entry.value); 34 | } 35 | 36 | @Override 37 | public int hashCode() { 38 | return Objects.hash(super.hashCode(), value); 39 | } 40 | 41 | @Override 42 | public String toString() { 43 | return "TimeSeriesEntry{" + "value=" + value + '}'; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/value/CoordinateValue.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2022. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.value; 7 | 8 | import org.locationtech.jts.geom.Point; 9 | 10 | public class CoordinateValue implements Value { 11 | public final Integer id; 12 | public final Point coordinate; 13 | 14 | public CoordinateValue(int id, Point coordinate) { 15 | this.id = id; 16 | this.coordinate = coordinate; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/value/Value.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.value; 7 | 8 | import java.io.Serializable; 9 | 10 | /** Describes any class that represents a value */ 11 | public interface Value extends Serializable {} 12 | -------------------------------------------------------------------------------- /src/main/java/edu/ie3/datamodel/models/value/load/LoadValues.java: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2024. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.value.load; 7 | 8 | import edu.ie3.datamodel.models.profile.LoadProfile; 9 | import edu.ie3.datamodel.models.value.PValue; 10 | import edu.ie3.datamodel.models.value.Value; 11 | import java.time.ZonedDateTime; 12 | 13 | /** Interface for load values. */ 14 | public interface LoadValues extends Value { 15 | 16 | /** 17 | * Method to calculate an actual load power value for the given time. 18 | * 19 | * @param time given time 20 | * @return a new {@link PValue} 21 | */ 22 | PValue getValue(ZonedDateTime time, LoadProfile loadProfile); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/resources/dataconnections_template.conf: -------------------------------------------------------------------------------- 1 | ################################################################## 2 | # Defaults 3 | ################################################################## 4 | dataconnections.default.connectorclass { 5 | default = string 6 | griddata = string | ${default} 7 | assetdata = string | ${default} 8 | typedata = string | ${default} 9 | wholesaledata = string | ${default} 10 | weatherdata = string | ${default} 11 | } -------------------------------------------------------------------------------- /src/main/resources/jdbc_connector_template.conf: -------------------------------------------------------------------------------- 1 | ################################################################## 2 | # JDBC Configuration 3 | ################################################################## 4 | #@optional 5 | dataconnections.jdbc.driver = string | "" -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/io/naming/FlatDirectoryHierarchyTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.naming 7 | 8 | import edu.ie3.datamodel.io.naming.FlatDirectoryHierarchy 9 | import edu.ie3.datamodel.models.input.system.BmInput 10 | import edu.ie3.util.io.FileIOUtils 11 | import spock.lang.Shared 12 | import spock.lang.Specification 13 | 14 | import java.nio.file.Files 15 | import java.nio.file.Path 16 | import java.nio.file.Paths 17 | 18 | class FlatDirectoryHierarchyTest extends Specification { 19 | @Shared 20 | Path tmpDirectory 21 | 22 | def setup() { 23 | tmpDirectory = Files.createTempDirectory("psdm_flat_input_hierarchy") 24 | } 25 | 26 | def basePathString() { 27 | tmpDirectory.toString() 28 | } 29 | 30 | def cleanup() { 31 | FileIOUtils.deleteRecursively(tmpDirectory) 32 | } 33 | 34 | def "A FlatDirectoryHierarchy is set up correctly"() { 35 | given: 36 | def basePath = Paths.get(basePathString()) 37 | 38 | when: 39 | def fdh = new FlatDirectoryHierarchy() 40 | 41 | then: 42 | println(basePath) 43 | Files.exists(basePath) 44 | Files.isDirectory(basePath) 45 | 46 | fdh.getSubDirectory(BmInput) == Optional.empty() 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/io/source/DummyDataSource.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2024. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.source 7 | 8 | import edu.ie3.datamodel.exceptions.SourceException 9 | import edu.ie3.datamodel.models.Entity 10 | 11 | import java.util.stream.Stream 12 | 13 | class DummyDataSource implements DataSource { 14 | 15 | private final Map data 16 | 17 | private DummyDataSource(Map data) { 18 | this.data = data 19 | } 20 | 21 | static DummyDataSource of(Map data) { 22 | return new DummyDataSource(data) 23 | } 24 | 25 | @Override 26 | Optional> getSourceFields(Class entityClass) throws SourceException { 27 | return Optional.empty() 28 | } 29 | 30 | @Override 31 | Stream> getSourceData(Class entityClass) throws SourceException { 32 | return Stream.of(data) 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/io/source/LoadProfileSourceTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2024. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.source 7 | 8 | import static edu.ie3.datamodel.models.profile.LoadProfile.RandomLoadProfile.RANDOM_LOAD_PROFILE 9 | 10 | import edu.ie3.datamodel.models.profile.BdewStandardLoadProfile 11 | import spock.lang.Specification 12 | 13 | class LoadProfileSourceTest extends Specification { 14 | 15 | def "A LoadProfileSourceTest should read in all build-in BDEWStandardLoadProfiles"() { 16 | when: 17 | def profiles = LoadProfileSource.bdewLoadProfiles 18 | 19 | then: 20 | profiles.size() == 11 21 | BdewStandardLoadProfile.values().every { profiles.keySet().contains(it) } 22 | profiles.values().every { it.timeSeries.entries.size() == 96 } 23 | } 24 | 25 | def "A LoadProfileSourceTest should read in the build-in RandomLoadProfile"() { 26 | when: 27 | def random = LoadProfileSource.randomLoadProfile.timeSeries 28 | 29 | then: 30 | random.loadProfile == RANDOM_LOAD_PROFILE 31 | random.entries.size() == 96 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/io/source/csv/CsvThermalGridSourceTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2024. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.io.source.csv 7 | 8 | import spock.lang.Specification 9 | 10 | class CsvThermalGridSourceTest extends Specification implements CsvTestDataMeta { 11 | 12 | def "CsvThermalGridSource can read a valid thermal grid"() { 13 | when: 14 | def thermalGrids = CsvThermalGridSource.read(",", thermalFolderPath) 15 | 16 | then: 17 | thermalGrids.size() == 1 18 | thermalGrids.get(0).with { 19 | def bus = it.bus() 20 | assert it.houses().every { it.thermalBus == bus } 21 | assert it.heatStorages().every { it.thermalBus == bus } 22 | assert it.domesticHotWaterStorages().every { it.thermalBus == bus } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/models/input/MeasurementUnitInputTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input 7 | 8 | import edu.ie3.test.common.GridTestData 9 | import spock.lang.Specification 10 | 11 | 12 | class MeasurementUnitInputTest extends Specification { 13 | 14 | def "A MeasurementUnitInput copy method should work as expected"() { 15 | given: 16 | def unit = GridTestData.measurementUnitInput 17 | 18 | when: 19 | def alteredUnit = unit.copy().node(GridTestData.nodeB).vMag(false).vAng(false).p(false).q(false).build() 20 | 21 | then: 22 | alteredUnit.with { 23 | assert uuid == unit.uuid 24 | assert operationTime == unit.operationTime 25 | assert operator == unit.operator 26 | assert id == unit.id 27 | assert node == GridTestData.nodeB 28 | assert !getVMag() 29 | assert !getVAng() 30 | assert !getP() 31 | assert !getQ() 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/models/input/NodeInputTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input 7 | 8 | import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils 9 | import edu.ie3.test.common.GridTestData 10 | import spock.lang.Specification 11 | 12 | 13 | class NodeInputTest extends Specification { 14 | 15 | def "A NodeInput copy method should work as expected"() { 16 | given: 17 | def node = GridTestData.nodeB 18 | 19 | when: 20 | def alteredUnit = node.copy().id("node_B_copy").slack(true).operator(GridTestData.profBroccoli).subnet(1) 21 | .voltLvl(GermanVoltageLevelUtils.EHV_220KV).build() 22 | 23 | then: 24 | alteredUnit.with { 25 | assert uuid == node.uuid 26 | assert operationTime == node.operationTime 27 | assert operator == GridTestData.profBroccoli 28 | assert id == "node_B_copy" 29 | assert vTarget == node.getvTarget() 30 | assert slack 31 | assert subnet == 1 32 | assert voltLvl == GermanVoltageLevelUtils.EHV_220KV 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/models/input/OperatorInputTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input 7 | 8 | import edu.ie3.test.common.GridTestData 9 | import spock.lang.Specification 10 | 11 | 12 | class OperatorInputTest extends Specification { 13 | 14 | def "An OperatorInput copy method should work as expected"() { 15 | given: 16 | def operator = GridTestData.profBroccoli 17 | 18 | when: 19 | def alteredUuid = UUID.randomUUID() 20 | def alteredUnit = operator.copy().uuid(alteredUuid).id("Univ.-Prof. Dr.-Ing. Christian Rehtanz").build() 21 | 22 | then: 23 | alteredUnit.with { 24 | assert uuid == alteredUuid 25 | assert id == "Univ.-Prof. Dr.-Ing. Christian Rehtanz" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/models/input/connector/SwitchInputTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input.connector 7 | 8 | import edu.ie3.datamodel.models.input.OperatorInput 9 | import edu.ie3.test.common.GridTestData 10 | import spock.lang.Specification 11 | 12 | 13 | class SwitchInputTest extends Specification { 14 | 15 | def "A SwitchInput copy method should work as expected"() { 16 | given: 17 | def switchInput = GridTestData.switchAtoB 18 | 19 | when: 20 | def alteredUnit = switchInput.copy().id("switch_A_C").operator(OperatorInput.NO_OPERATOR_ASSIGNED) 21 | .closed(false).build() 22 | 23 | then: 24 | alteredUnit.with { 25 | assert uuid == switchInput.uuid 26 | assert operationTime == switchInput.operationTime 27 | assert operator == OperatorInput.NO_OPERATOR_ASSIGNED 28 | assert id == "switch_A_C" 29 | assert !closed 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/models/input/connector/Transformer2WInputTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input.connector 7 | 8 | import edu.ie3.datamodel.models.input.OperatorInput 9 | import edu.ie3.test.common.GridTestData 10 | import spock.lang.Specification 11 | 12 | 13 | class Transformer2WInputTest extends Specification { 14 | 15 | def "A Transformer2WInput copy method should work as expected"() { 16 | given: 17 | def trafo2w = GridTestData.transformerBtoD 18 | 19 | when: 20 | def alteredUnit = trafo2w.copy().id("trafo2w").nodeA(GridTestData.nodeA).nodeB(GridTestData.nodeB) 21 | .type(GridTestData.transformerTypeBtoD).tapPos(10).autoTap(false).build() 22 | 23 | then: 24 | alteredUnit.with { 25 | assert uuid == trafo2w.uuid 26 | assert operationTime == trafo2w.operationTime 27 | assert operator == OperatorInput.NO_OPERATOR_ASSIGNED 28 | assert id == "trafo2w" 29 | assert nodeA == GridTestData.nodeA 30 | assert nodeB == GridTestData.nodeB 31 | assert type == GridTestData.transformerTypeBtoD 32 | assert tapPos == 10 33 | assert !autoTap 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/models/input/connector/Transformer3WInputTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input.connector 7 | 8 | import edu.ie3.test.common.GridTestData 9 | import spock.lang.Specification 10 | 11 | 12 | class Transformer3WInputTest extends Specification { 13 | 14 | def "A Transformer3WInput copy method should work as expected"() { 15 | given: 16 | def trafo3w = GridTestData.transformerAtoBtoC 17 | 18 | when: 19 | def alteredUnit = trafo3w.copy().id("trafo3w").nodeA(GridTestData.nodeC).nodeB(GridTestData.nodeD) 20 | .nodeC(GridTestData.nodeE).type(GridTestData.transformerTypeAtoBtoC).tapPos(10).autoTap(false).build() 21 | 22 | then: 23 | alteredUnit.with { 24 | assert uuid == trafo3w.uuid 25 | assert operationTime == trafo3w.operationTime 26 | assert operator == GridTestData.profBroccoli 27 | assert id == "trafo3w" 28 | assert nodeA == GridTestData.nodeC 29 | assert nodeB == GridTestData.nodeD 30 | assert nodeC == GridTestData.nodeE 31 | assert type == GridTestData.transformerTypeAtoBtoC 32 | assert tapPos == 10 33 | assert !autoTap 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/models/input/graphics/LineGraphicInputTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input.graphics 7 | 8 | import edu.ie3.test.common.GridTestData 9 | import spock.lang.Specification 10 | 11 | 12 | class LineGraphicInputTest extends Specification { 13 | 14 | def "A LineGraphicInput copy method should work as expected"() { 15 | given: 16 | def lineGraphic = GridTestData.lineGraphicCtoD 17 | 18 | when: 19 | def alteredUnit = lineGraphic.copy().line(GridTestData.lineAtoB).graphicLayer("second").build() 20 | 21 | 22 | then: 23 | alteredUnit.with { 24 | assert uuid == lineGraphic.uuid 25 | assert graphicLayer == "second" 26 | assert path == lineGraphic.path 27 | assert line == GridTestData.lineAtoB 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/models/input/graphics/NodeGraphicInputTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input.graphics 7 | 8 | import edu.ie3.test.common.GridTestData 9 | import spock.lang.Specification 10 | 11 | 12 | class NodeGraphicInputTest extends Specification { 13 | 14 | def "A LineGraphicInput copy method should work as expected"() { 15 | given: 16 | def nodeGraphic = GridTestData.nodeGraphicC 17 | 18 | when: 19 | def alteredUnit = nodeGraphic.copy().node(GridTestData.nodeG).path(null).graphicLayer("second").build() 20 | 21 | then: 22 | alteredUnit.with { 23 | assert uuid == nodeGraphic.uuid 24 | assert graphicLayer == "second" 25 | assert path == null 26 | assert node == GridTestData.nodeG 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalBusInputTest.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.input.thermal 7 | 8 | import edu.ie3.test.common.ThermalUnitInputTestData 9 | import spock.lang.Specification 10 | 11 | 12 | class ThermalBusInputTest extends Specification { 13 | 14 | def "A ThermalBusInput copy method should work as expected"() { 15 | given: 16 | def thermalBusInput = ThermalUnitInputTestData.thermalBus 17 | 18 | when: 19 | def alteredUnit = thermalBusInput.copy().build() 20 | 21 | 22 | then: 23 | alteredUnit.with { 24 | assert uuid == thermalBusInput.uuid 25 | assert id == thermalBusInput.id 26 | assert operator == thermalBusInput.operator 27 | assert operationTime == thermalBusInput.operationTime 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/models/timeseries/IntValue.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.models.timeseries 7 | 8 | import edu.ie3.datamodel.models.value.Value 9 | 10 | class IntValue implements Value { 11 | private final int value 12 | 13 | IntValue(int value) { 14 | this.value = value 15 | } 16 | 17 | int getValue() { 18 | return value 19 | } 20 | } -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/utils/validation/DummyAssetInput.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.utils.validation 7 | 8 | import edu.ie3.datamodel.models.input.AssetInput 9 | 10 | import java.time.ZonedDateTime 11 | 12 | class DummyAssetInput extends AssetInput { 13 | DummyAssetInput(String id) { 14 | super(UUID.randomUUID(), id) 15 | } 16 | 17 | DummyAssetInput(UUID uuid, String id) { 18 | super(uuid, id) 19 | } 20 | 21 | static DummyAssetInput valid(UUID uuid, String id) { 22 | return new DummyAssetInput(uuid, id) 23 | } 24 | 25 | static DummyAssetInput valid(String id) { 26 | return new DummyAssetInput(id) 27 | } 28 | 29 | static DummyAssetInput invalid() { 30 | return new DummyAssetInput("invalid_asset") 31 | } 32 | 33 | @Override 34 | boolean inOperationOn(ZonedDateTime date) { 35 | throw new UnsupportedOperationException("This is a dummy class") 36 | } 37 | 38 | @Override 39 | AssetInputCopyBuilder copy() { 40 | throw new UnsupportedOperationException("This is a dummy class") 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/utils/validation/InvalidAssetTypeInput.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.utils.validation 7 | 8 | import edu.ie3.datamodel.models.input.AssetTypeInput 9 | 10 | class InvalidAssetTypeInput extends AssetTypeInput { 11 | InvalidAssetTypeInput(UUID uuid, String id) { 12 | super(uuid, id) 13 | } 14 | 15 | AssetTypeInputCopyBuilder copy() { 16 | return null 17 | } 18 | 19 | InvalidAssetTypeInput() { 20 | super(UUID.randomUUID(), "invalid_asset_type") 21 | } 22 | } -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/datamodel/utils/validation/InvalidSystemParticipantInput.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.datamodel.utils.validation 7 | 8 | import edu.ie3.datamodel.models.input.NodeInput 9 | import edu.ie3.datamodel.models.input.system.SystemParticipantInput 10 | import edu.ie3.datamodel.models.input.system.characteristic.CosPhiFixed 11 | 12 | import java.time.ZonedDateTime 13 | 14 | class InvalidSystemParticipantInput extends SystemParticipantInput { 15 | InvalidSystemParticipantInput(NodeInput node) { 16 | super(UUID.randomUUID(), "invalid_system_participant", node, CosPhiFixed.CONSTANT_CHARACTERISTIC, null) 17 | } 18 | 19 | @Override 20 | boolean inOperationOn(ZonedDateTime date) { 21 | throw new UnsupportedOperationException("This is a dummy class") 22 | } 23 | 24 | @Override 25 | SystemParticipantInputCopyBuilder copy() { 26 | throw new UnsupportedOperationException("This is a dummy class") 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/test/common/ResultEntityTestData.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.test.common 7 | 8 | import edu.ie3.util.TimeUtil 9 | import edu.ie3.util.quantities.PowerSystemUnits 10 | import tech.units.indriya.ComparableQuantity 11 | import tech.units.indriya.quantity.Quantities 12 | 13 | import java.time.ZonedDateTime 14 | import javax.measure.quantity.Power 15 | 16 | class ResultEntityTestData { 17 | 18 | public static final int WEC_RESULT_SIZE = 1000 19 | public static final int PV_RESULT_SIZE = 1000 20 | public static final int BM_RESULT_SIZE = 1 21 | public static final int FIXED_FEED_IN_RESULT_SIZE = 1 22 | public static final int EM_RESULT_SIZE = 1 23 | 24 | public static final UUID BM_UUID = UUID.fromString("44b9be7a-af97-4c2a-bb84-9d21abba442f") 25 | public static final UUID BM_INPUT_MODEL = UUID.fromString("66df67d0-c789-4393-b0a5-897a3bc821a2") 26 | public static final ComparableQuantity BM_ACTIVE_POWER = Quantities.getQuantity(-1, PowerSystemUnits.MEGAWATT) 27 | public static final ComparableQuantity BM_REACTIVE_POWER = Quantities.getQuantity(-5, PowerSystemUnits.MEGAVAR) 28 | public static final ZonedDateTime BM_TIME = TimeUtil.withDefaults.toZonedDateTime("2011-01-01T00:00:00Z") 29 | } 30 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/test/helper/DoubleTestHelper.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2022. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.test.helper 7 | 8 | class DoubleTestHelper { 9 | static def equalsWithTolerance(double lhs, double rhs, double tolerance) { 10 | return lhs >= rhs - tolerance && lhs <= rhs + tolerance 11 | } 12 | } -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/test/helper/EntityMap.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2023. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.test.helper 7 | 8 | import edu.ie3.datamodel.models.UniqueEntity 9 | 10 | import java.util.function.Function 11 | import java.util.stream.Collectors 12 | 13 | class EntityMap { 14 | static Map map(Collection entities) { 15 | entities.stream().collect(Collectors.toMap(UniqueEntity::getUuid, Function.identity())) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/test/helper/FactoryTestHelper.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.test.helper 7 | 8 | import edu.ie3.util.TimeUtil 9 | import org.locationtech.jts.io.geojson.GeoJsonReader 10 | import tech.units.indriya.quantity.Quantities 11 | 12 | import javax.measure.Unit 13 | 14 | trait FactoryTestHelper { 15 | private static final GeoJsonReader GEOJSON_READER = new GeoJsonReader() 16 | static final TimeUtil TIME_UTIL = TimeUtil.withDefaults 17 | 18 | static getQuant(String parameter, Unit unit) { 19 | return Quantities.getQuantity(Double.parseDouble(parameter), unit) 20 | } 21 | 22 | static getGeometry(String value) { 23 | return GEOJSON_READER.read(value) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/test/helper/TestContainerHelper.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2022. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.test.helper 7 | 8 | import org.testcontainers.utility.MountableFile 9 | 10 | import java.nio.file.Path 11 | import java.nio.file.Paths 12 | 13 | trait TestContainerHelper { 14 | 15 | /** 16 | * Retrieve resource with the class' resource loader. 17 | * In contrast to {@link org.testcontainers.utility.MountableFile#forClasspathResource(java.lang.String, java.lang.Integer)}, 18 | * this also works with paths relative to the current class (i.e. without leading '/'). 19 | * @param resource the resource directory or file path 20 | * @return a MountableFile to use with test containers 21 | */ 22 | MountableFile getMountableFile(String resource) { 23 | URL url = getClass().getResource(resource) 24 | if (url == null) { 25 | throw new ResourceException("Resource '" + resource + "' was not found from " + getClass().toString()) 26 | } 27 | Path path = Paths.get(url.toURI()) 28 | 29 | return MountableFile.forHostPath(path) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/test/groovy/edu/ie3/test/helper/UuidPrinter.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * © 2021. TU Dortmund University, 3 | * Institute of Energy Systems, Energy Efficiency and Energy Economics, 4 | * Research group Distribution grid planning and operation 5 | */ 6 | package edu.ie3.test.helper 7 | 8 | /** 9 | * Simple class to print a bunch of uuids for later static usage in code 10 | */ 11 | class UuidPrinter { 12 | static void main(String[] args) { 13 | new File('./','src/test/resources/uuids.txt').withWriter('utf-8') { writer -> 14 | for ( int cnt = 0; cnt < 199 ; cnt++ ) { 15 | writer.writeLine "UUID.fromString(\"" + UUID.randomUUID() + "\")," 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/test/resources/default_directory_hierarchy.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ie3-institute/PowerSystemDataModel/56f0cb9e625c888e1a9fc133298a9a117ac33138/src/test/resources/default_directory_hierarchy.tar.gz -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/connectors/_sql/connectorTest.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE public.test 2 | ( 3 | id SERIAL PRIMARY KEY , 4 | a VARCHAR(255), 5 | b INT 6 | ); 7 | 8 | INSERT INTO public.test(a, b) VALUES 9 | ('hello', 1), 10 | ('bye', 42); -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/sink/_sql/cleanup.sql: -------------------------------------------------------------------------------- 1 | DO $$ DECLARE 2 | r RECORD; 3 | BEGIN 4 | FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = current_schema()) LOOP 5 | EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE'; 6 | END LOOP; 7 | END $$; -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/sink/_sql/grids.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE public.grids 2 | ( 3 | uuid UUID PRIMARY KEY, 4 | name TEXT NOT NULL 5 | ) 6 | WITHOUT OIDS 7 | TABLESPACE pg_default; 8 | 9 | INSERT INTO 10 | public.grids (uuid, name) 11 | VALUES 12 | ('8e6bd444-4580-11ee-be56-0242ac120002', 'vn_simona'), 13 | ('297dfac8-83cc-11ee-b962-0242ac120002', 'sampleGrid'); -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/sink/_sql/load_profiles.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE public.load_profiles 2 | ( 3 | load_profile VARCHAR(11) NOT NULL, 4 | quarter_hour integer NOT NULL, 5 | su_sa DOUBLE PRECISION NOT NULL, 6 | su_su DOUBLE PRECISION NOT NULL, 7 | su_wd DOUBLE PRECISION NOT NULL, 8 | tr_sa DOUBLE PRECISION NOT NULL, 9 | tr_su DOUBLE PRECISION NOT NULL, 10 | tr_wd DOUBLE PRECISION NOT NULL, 11 | wi_sa DOUBLE PRECISION NOT NULL, 12 | wi_su DOUBLE PRECISION NOT NULL, 13 | wi_wd DOUBLE PRECISION NOT NULL, 14 | grid_uuid UUID NOT NULL REFERENCES grids(uuid) 15 | ) 16 | WITHOUT OIDS 17 | TABLESPACE pg_default; 18 | 19 | CREATE INDEX load_profiles_series_id ON load_profiles USING hash (load_profile); 20 | 21 | -- Order of columns is important when using btree: https://www.postgresql.org/docs/14/indexes-multicolumn.html 22 | -- Column time_series needs to placed as the first argument since we at most use an equality constraint on 23 | -- time_series and a range query on time. 24 | CREATE UNIQUE INDEX load_profiles_series_time ON load_profiles USING btree (load_profile, quarter_hour); -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/sink/_sql/setup.sql: -------------------------------------------------------------------------------- 1 | CREATE SCHEMA public; -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_coordinates/cosmo/coordinates.csv: -------------------------------------------------------------------------------- 1 | lat_rot,long_rot,lat_geo,long_geo,id,tid 2 | -10,-6.8125,39.602772,1.279336,106580,1 3 | -10,-6.75,39.610001,1.358673,106581,2 4 | -10,-6.6875,39.617161,1.438028,106582,3 5 | -10,-6.625,39.624249,1.5174021,106583,4 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_coordinates/icon/coordinates.csv: -------------------------------------------------------------------------------- 1 | id,latitude,longitude,coordinate_type 2 | 67775,51.5,7.438,ICON 3 | 531137,51.5,7.375,ICON 4 | 551525,51.438,7.438,ICON 5 | 278150,51.438,7.375,ICON 6 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_graphics/line_graphic_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,graphic_layer,line,path 2 | ece86139-3238-4a35-9361-457ecb4258b0,line_graphic_1,main,91ec3bcf-1777-4d38-af67-0bf7c9fa73c7,"{""type"":""LineString"",""coordinates"":[[0.0,0.0],[0.0,10]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}" 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_graphics/node_graphic_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,graphic_layer,node,path,point 2 | 09aec636-791b-45aa-b981-b14edf171c4c,node_graphic_1,main,bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,,"{""type"":""Point"",""coordinates"":[0.0,10],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}" 3 | 9ecad435-bd16-4797-a732-762c09d4af25,node_graphic_2,main,6e0980e0-10f2-4e18-862b-eb2b7c90509b,"{""type"":""LineString"",""coordinates"":[[-1,0.0],[1,0.0]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}", 4 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/default/line_input.csv: -------------------------------------------------------------------------------- 1 | uuid,geo_position,id,length,node_a,node_b,olm_characteristic,operates_from,operates_until,operator,parallel_devices,type 2 | 92ec3bcf-1777-4d38-af67-0bf7c9fa73c7,"{""type"":""LineString"",""coordinates"":[[7.411111,51.492528],[7.414116,51.484136]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}",test_line_AtoB,0.003,4ca90220-74c2-4369-9afa-a18bf068840d,47d29df0-ba2d-4d23-8e75-c82229c5c758,"olm:{(0.00,1.00)}",2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,f15105c4-a2de-4ab8-a621-4bc98e372d92,2,3bed3eb3-9790-4874-89b5-a5434d408088 3 | 91ec3bcf-1777-4d38-af67-0bf7c9fa73c7,"{""type"":""LineString"",""coordinates"":[[7.411111,51.492528],[7.414116,51.484136]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}",test_line_CtoD,0.003,bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,6e0980e0-10f2-4e18-862b-eb2b7c90509b,"olm:{(0.00,1.00)}",2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,f15105c4-a2de-4ab8-a621-4bc98e372d92,2,3bed3eb3-9790-4874-89b5-a5434d408088 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/default/measurement_unit_input.csv: -------------------------------------------------------------------------------- 1 | uuid,v_ang,v_mag,id,node,operates_from,operates_until,operator,p,q 2 | ce6119e3-f725-4166-b6e0-59f62e0c293d,true,true,test_measurementUnit,aaa74c1a-d07e-4615-99a5-e991f1d81cc4,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,f15105c4-a2de-4ab8-a621-4bc98e372d92,true,true 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/default/node_input.csv: -------------------------------------------------------------------------------- 1 | uuid,geo_position,id,operates_from,operates_until,operator,slack,subnet,v_rated,v_target,volt_lvl 2 | 4ca90220-74c2-4369-9afa-a18bf068840d,"{""type"":""Point"",""coordinates"":[7.411111,51.492528],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}",node_a,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,f15105c4-a2de-4ab8-a621-4bc98e372d92,true,1,380.0,1.0,Höchstspannung 3 | 47d29df0-ba2d-4d23-8e75-c82229c5c758,,node_b,,,,false,2,110.0,1.0,Hochspannung 4 | bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,,node_c,,,,false,3,20.0,1.0,Mittelspannung 5 | 6e0980e0-10f2-4e18-862b-eb2b7c90509b,,node_d,,,,false,4,20.0,1.0,Mittelspannung 6 | 98a3e7fa-c456-455b-a5ea-bb19e7cbeb63,,node_e,,,,false,5,10.0,1.0,Mittelspannung 7 | 9e37ce48-9650-44ec-b888-c2fd182aff01,,node_f,,,,false,6,0.4,1.0,Niederspannung 8 | aaa74c1a-d07e-4615-99a5-e991f1d81cc4,,node_g,,,,false,6,0.4,1.0,Niederspannung 9 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/default/switch_input.csv: -------------------------------------------------------------------------------- 1 | uuid,closed,id,node_a,node_b,operates_from,operates_until,operator 2 | 5dc88077-aeb6-4711-9142-db57287640b1,true,test_switch_AtoB,4ca90220-74c2-4369-9afa-a18bf068840d,47d29df0-ba2d-4d23-8e75-c82229c5c758,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,f15105c4-a2de-4ab8-a621-4bc98e372d92 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/default/transformer_2_w_input.csv: -------------------------------------------------------------------------------- 1 | uuid,auto_tap,id,node_a,node_b,operates_from,operates_until,operator,parallel_devices,tap_pos,type 2 | 58247de7-e297-4d9b-a5e4-b662c058c655,true,2w_single_test,47d29df0-ba2d-4d23-8e75-c82229c5c758,6e0980e0-10f2-4e18-862b-eb2b7c90509b,,,,1,0,202069a7-bcf8-422c-837c-273575220c8a 3 | 8542bfa5-dc34-4367-b549-e9f515e6cced,true,2w_v_1,47d29df0-ba2d-4d23-8e75-c82229c5c758,98a3e7fa-c456-455b-a5ea-bb19e7cbeb63,,,,1,0,ac30443b-29e7-4635-b399-1062cfb3ffda 4 | 0c03391d-47e1-49b3-9c9c-1616258e78a7,true,2w_v_2,bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,98a3e7fa-c456-455b-a5ea-bb19e7cbeb63,,,,1,0,8441dd78-c528-4e63-830d-52d341131432 5 | 26a3583e-8e62-40b7-ba4c-092f6fd5a70d,true,2w_parallel_1,bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,9e37ce48-9650-44ec-b888-c2fd182aff01,,,,1,0,08559390-d7c0-4427-a2dc-97ba312ae0ac 6 | 5dc88077-aeb6-4711-9142-db57292640b1,true,2w_parallel_2,bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,aaa74c1a-d07e-4615-99a5-e991f1d81cc4,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,f15105c4-a2de-4ab8-a621-4bc98e372d92,1,0,08559390-d7c0-4427-a2dc-97ba312ae0ac 7 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/default/transformer_3_w_input.csv: -------------------------------------------------------------------------------- 1 | uuid,auto_tap,id,node_a,node_b,node_c,operates_from,operates_until,operator,parallel_devices,tap_pos,type 2 | cc327469-7d56-472b-a0df-edbb64f90e8f,true,3w_test,4ca90220-74c2-4369-9afa-a18bf068840d,47d29df0-ba2d-4d23-8e75-c82229c5c758,bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,f15105c4-a2de-4ab8-a621-4bc98e372d92,1,0,5b0ee546-21fb-4a7f-a801-5dbd3d7bb356 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/empty/line_input.csv: -------------------------------------------------------------------------------- 1 | uuid,geo_position,id,length,node_a,node_b,olm_characteristic,operates_from,operates_until,operator,parallel_devices,type -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/empty/measurement_unit_input.csv: -------------------------------------------------------------------------------- 1 | uuid,v_ang,v_mag,id,node,operates_from,operates_until,operator,p,q 2 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/empty/node_input.csv: -------------------------------------------------------------------------------- 1 | uuid,geo_position,id,operates_from,operates_until,operator,slack,subnet,v_rated,v_target,volt_lvl 2 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/empty/switch_input.csv: -------------------------------------------------------------------------------- 1 | uuid,closed,id,node_a,node_b,operates_from,operates_until,operator 2 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/empty/transformer_2_w_input.csv: -------------------------------------------------------------------------------- 1 | uuid,auto_tap,id,node_a,node_b,operates_from,operates_until,operator,parallel_devices,tap_pos,type 2 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/empty/transformer_3_w_input.csv: -------------------------------------------------------------------------------- 1 | uuid,auto_tap,id,node_a,node_b,node_c,operates_from,operates_until,operator,parallel_devices,tap_pos,type 2 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/malformed/line_input.csv: -------------------------------------------------------------------------------- 1 | uuid,geo_position,id,length,node_a,node_b,olm_characteristic,operates_from,operates_until,operator,parallel_devices,type 2 | 92ec3bcf-1777-4d38-af67-0bf7c9fa73c7,"{""type"":""LineString"",""coordinates"":[[7.411111,51.492528],[7.414116,51.484136]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}",test_line_AtoB,0.003,4ca90220-74c2-4369-9afa-a18bf068840d,47d29df0-ba2d-4d23-8e75-c82229c5c758,olm:{(0.00,1.00)},2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,f15105c4-a2de-4ab8-a621-4bc98e372d92,2,3bed3eb3-9790-4874-89b5-a5434d408088 3 | 91ec3bcf-1777-4d38-af67-0bf7c9fa73c,"{""type"":""LineString"",""coordinates"":[[7.411111,51.492528],[7.414116,51.484136]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}",test_line_CtoD,0.003,bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,6e0980e0-10f2-4e18-862b-eb2b7c90509b,olm:{(0.00,1.00)},2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,f15105c4-a2de-4ab8-a621-4bc98e372d92,2,3bed3eb3-9790-4874-89b5-a5434d408088 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/malformed/measurement_unit_input.csv: -------------------------------------------------------------------------------- 1 | uuid,v_ang,v_mag,id,node,operates_from,operates_until,operator,p,q 2 | c e6119e3-f725-4166-b6e0-59f62e0c293d,true,true,test_measurementUnit,aaa74c1a-d07e-4615-99a5-e991f1d81cc4,2020-03-24T15:11:31+00:00,2020-03-25T15:11:31+00:00,f15105c4-a2de-4ab8-a621-4bc98e372d92,true,true 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/malformed/node_input.csv: -------------------------------------------------------------------------------- 1 | uuid,geo_position,id,operates_from,operates_until,operator,slack,subnet,v_rated,v_target,volt_lvl 2 | 4ca90220-74c2-4369-9afa-a18bf068840d,"{""type"":""Point"",""coordinates"":[7.411111,51.492528],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}",node_a,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,f15105c4-a2de-4ab8-a621-4bc98e372d92,true,1,380.0,1.0,Höchstspannung 3 | 47d29df0-ba2d-4d23-8e75-c82229c5c758,,node_b,,,,false,2,110.0,1.0,Hochspannung 4 | bd837a25-58f3-44ac-aa90-c6b6e3 cd91b2,,node_c,,,,false,3,20.0,1.0,Mittelspannung 5 | 98a3e7fa-c456-455b-a5ea-bb19e7cbeb63,,node_e,,,,false,5,10.0,1.0,Mittelspannung 6 | 9e37ce48-9650-44ec-b888-c2fd182aff01,,node_f,,,,false,6,0.4,1.0,Niederspannung 7 | aaa74c1a-d07e-4615-99a5-e991f1d81cc4,,node_g,,,,false,6,0.4,1.0,Niederspannung 8 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/malformed/switch_input.csv: -------------------------------------------------------------------------------- 1 | uuid,closed,id,node_a,node_b,operates_from,operates_until,operator 2 | 5dc88077-aeb6-4711-9142-db57287640b1,true,test_switch_AtoB,4ca90220-74c2-4369-9afa -a18bf068840d,47d29df0-ba2d-4d23-8e75-c82229c5c758,2020-03-24T15:11:31+00:00,2020-03-25T15:11:31+00:00,f15105c4-a2de-4ab8-a621-4bc98e372d92 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/malformed/transformer_2_w_input.csv: -------------------------------------------------------------------------------- 1 | uuid,auto_tap,id,node_a,node_b,operates_from,operates_until,operator,parallel_devices,tap_pos,type 2 | 58247de7-e297-4d9b-a5e4-b662c058c655,true,2w_single_test,47d29df0-ba2d-4d23-8e75-c82229c5c758,6e0980e0-10f2-4e18-862b-eb2b7c90509b,,,,1,0,202069a7-bcf8-422c-837c-273575220c8a 3 | 8542bfa5-dc34-4367-b549-e9f515e6cced,true,2w_v_1,47d29df0-ba2d-4d23-8e75-c 82229c5c758,98a3e7fa-c456-455b-a5ea-bb19e7cbeb63,,,,1,0,ac30443b-29e7-4635-b399-1062cfb3ffda 4 | 0c03391d-47e1-49b3-9c9c-1616258e78a7,true,2w_v_2,bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,98a3e7fa-c456-455b-a5ea-bb19e7cbeb63,,,,1,0,8441dd78-c528-4e63-830d-52d341131432 5 | 26a3583e-8e62-40b7-ba4c-092f6fd5a70d,true,2w_parallel_1,bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,9e37ce48-9650-44ec-b888-c2fd182aff01,,,,1,0,08559390-d7c0-4427-a2dc-97ba312ae0ac 6 | 5dc88077-aeb6-4711-9142-db57292640b1,true,2w_parallel_2,bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,aaa74c1a-d07e-4615-99a5-e991f1d81cc4,2020-03-24T15:11:31+00:00,2020-03-25T15:11:31+00:00,f15105c4-a2de-4ab8-a621-4bc98e372d92,1,0,08559390-d7c0-4427-a2dc-97ba312ae0ac 7 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_grid/malformed/transformer_3_w_input.csv: -------------------------------------------------------------------------------- 1 | uuid,auto_tap,id,node_a,node_b,node_c,operates_from,operates_until,operator,parallel_devices,tap_pos,type 2 | cc327469-7d56-472b-a0df-edbb6 4f90e8f,true,3w_test,4ca90220-74c2-4369-9afa-a18bf068840d,47d29df0-ba2d-4d23-8e75-c82229c5c758,bd837a25-58f3-44ac-aa90-c6b6e3cd91b2,2020-03-24T15:11:31+00:00,2020-03-25T15:11:31+00:00,f15105c4-a2de-4ab8-a621-4bc98e372d92,1,0,5b0ee546-21fb-4a7f-a801-5dbd3d7bb356 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/bm_input.csv: -------------------------------------------------------------------------------- 1 | uuid,cost_controlled,feed_in_tariff,id,market_reaction,node,operates_from,operates_until,operator,q_characteristics,type 2 | a3b7576b-cac7-4350-90ff-06316cdca192,true,51.0,BM_Test,true,f5839ade-5968-4879-a824-90b5fb3552cd,,,,"cosPhiFixed:{(0.0,1.0)}",2fdca5f1-c11b-4169-a695-4c98f0e0a84a 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/bm_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,active_power_gradient,capex,cos_phi_rated,eta_conv,id,opex,s_rated 2 | 2fdca5f1-c11b-4169-a695-4c98f0e0a84a,5.0,0.0,1.0,1.0,typ_01,0.05,190.0 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/evcs_input.csv: -------------------------------------------------------------------------------- 1 | uuid,charging_points,cos_phi_rated,id,location_type,node,operates_from,operates_until,operator,q_characteristics,type,v_2g_support 2 | 06a14909-366e-4e94-a593-1016e1455b30,4,0.9,test_evcs_1,HOME,5f1c776c-6935-40f7-ba9e-60646e08992b,,,,"cosPhiFixed:{(0.0,1.0)}",ChargingStationType1,true 3 | 104acdaa-5dc5-4197-aed2-2fddb3c4f237,4,0.9,test_evcs_2,HOME,ed4697fd-016c-40c2-a66b-e793878dadea,,,,"cosPhiFixed:{(0.0,1.0)}",ChargingStationType1,true 4 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/fixed_feed_in_input.csv: -------------------------------------------------------------------------------- 1 | uuid,cos_phi_rated,id,node,operates_from,operates_until,operator,q_characteristics,s_rated 2 | 9abe950d-362e-4efe-b686-500f84d8f368,0.9,test_feed_in,5f1c776c-6935-40f7-ba9e-60646e08992b,,,,"cosPhiFixed:{(0.0,0.95)}",200.0 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/its_pq_8c04e94e-76b0-4369-a55c-f5e1117fb83e.csv: -------------------------------------------------------------------------------- 1 | "p","q","time" 2 | 3.999998968803,0.0,2011-01-01T00:00:00Z 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/storage_input.csv: -------------------------------------------------------------------------------- 1 | "uuid","id","node","operates_from","operates_until","operator","q_characteristics","type" 2 | a2a92cfd-3492-465f-9587-e789f4620af8,Speicher_1,033d0230-4aee-47cf-91f9-81f5f40e60b0,,,,"cosPhiFixed:{(0.00,0.98)}",95d4c980-d9e1-4813-9f2a-b0942488a570 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/storage_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,active_power_gradient,capex,cos_phi_rated,dod,e_storage,eta,id,life_cycle,life_time,opex,p_max,s_rated 2 | 95d4c980-d9e1-4813-9f2a-b0942488a570,1.0,0.0,0.96,8.0,16.0,93.0,Typ_1,5000,5000.0,0.65,4.0,4.166666666666667 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/time_series_mapping.csv: -------------------------------------------------------------------------------- 1 | "participant","time_series" 2 | 4642d648-b0dd-4597-a3bd-2cc1fce74f27,8c04e94e-76b0-4369-a55c-f5e1117fb83e -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/transformer_2_w_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,b_m,d_phi,d_v,g_m,id,r_sc,s_rated,tap_max,tap_min,tap_neutr,tap_side,v_rated_a,v_rated_b,x_sc 2 | cf7b1102-8dbd-4da2-a469-90800b3394b6,0.0,0.0,1.5,0.0,HS-MS_1,45.375,20000.0,10,-10,0,false,110.0,20.0,102.759 3 | 49cfe484-0183-4a23-a922-d72909dba673,0.0,0.0,0.5,0.0,MS-NS_2,25.0,400.0,10,-10,0,false,20.0,0.4,31.225 4 | 4984f493-d6e5-4201-a040-c10722b30362,0.0,0.0,0.5,0.0,MS-NS_1,10.078,630.0,10,-10,0,false,20.0,0.4,23.312 5 | 97735722-05cc-4ca8-8a8d-c08ac3ded19a,-1.27,0.0,1.5,555.5,HöS-HS_1,5.415,200000.0,5,-5,0,false,380.0,110.0,108.165 6 | 1214c366-826e-4aeb-88f5-af8f40acaa04,0.0,0.0,1.5,0.0,HS-MS_1,45.375,20000.0,10,-10,0,false,110.0,20.0,102.759 7 | 14b1798a-6903-49d6-8578-ad2a7d399341,0.0,0.0,1.5,0.0,HS-MS_1,45.375,20000.0,10,-10,0,false,110.0,20.0,102.759 8 | f88989c7-9812-4b3e-9bc0-3df29f1e5ae1,0.0,0.0,0.5,0.0,MS-NS_1,10.078,630.0,10,-10,0,false,20.0,0.4,23.312 9 | 5901c24c-0c64-4be7-82df-21d4335abdb7,0.0,0.0,1.5,0.0,HS-MS_1,45.375,20000.0,10,-10,0,false,110.0,20.0,102.759 10 | a7a3d9b8-da90-4670-b865-4a527df542bd,0.0,0.0,0.5,0.0,MS-NS_1,10.078,630.0,10,-10,0,false,20.0,0.4,23.312 11 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/wec_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,market_reaction,node,operates_from,operates_until,operator,q_characteristics,type 2 | d6ad8c73-716a-4244-9ae2-4a3735e492ab,HS_NET1_S2_WEA,false,dfae9806-9b44-4995-ba27-d66d8e4a43e0,,,,"cosPhiFixed:{(0.0,0.9)}",b70374f3-1feb-45af-8011-1304a532d398 3 | f9eaec6e-ce25-42d7-8265-2f8f4679a816,HS_NET1_S4_WEA,false,401f37f8-6f2c-4564-bc78-6736cb9cbf8d,,,,"cosPhiFixed:{(0.0,0.9)}",b70374f3-1feb-45af-8011-1304a532d398 4 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/wec_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,capex,cos_phi_rated,cp_characteristic,eta_conv,hub_height,id,opex,rotor_area,s_rated 2 | b70374f3-1feb-45af-8011-1304a532d398,0.0,0.9,"cP:{(0.0,0.0),(1.0,0.0),(2.0,0.115933516),(3.0,0.286255595),(4.0,0.39610618),(5.0,0.430345211),(6.0,0.45944023),(7.0,0.479507331),(8.0,0.492113623),(9.0,0.500417188),(10.0,0.488466547),(11.0,0.420415054),(12.0,0.354241299),(13.0,0.288470591),(14.0,0.230965702),(15.0,0.18778367),(16.0,0.154728976),(17.0,0.128998552),(18.0,0.108671106),(19.0,0.09239975),(20.0,0.079221236),(21.0,0.068434282),(22.0,0.059520087),(23.0,0.052089249),(24.0,0.045845623),(25.0,0.040561273),(26.0,0.036058824),(27.0,0.032198846),(28.0,0.016618264),(29.0,0.010330976),(30.0,0.006091519),(31.0,0.003331177),(32.0,0.001641637),(33.0,7.05423E-4),(34.0,1.96644E-4),(35.0,0.0),(36.0,0.0),(37.0,0.0),(38.0,0.0),(39.0,0.0),(40.0,0.0),(41.0,0.0),(42.0,0.0),(43.0,0.0),(44.0,0.0),(45.0,0.0),(46.0,0.0),(47.0,0.0),(48.0,0.0),(49.0,0.0),(50.0,0.0)}",100.0,98.0,EnerconE-82,0.0,5281.02,2222.2 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/bm_input.csv: -------------------------------------------------------------------------------- 1 | uuid,cost_controlled,feed_in_tariff,id,market_reaction,node,operates_from,operates_until,operator,q_characteristics,type,controlling_em 2 | d06e5bb7-a3c7-4749-bdd1-4581ff2f6f4d,false,10.0,test_bmInput,false,4ca90220-74c2-4369-9afa-a18bf068840d,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510,"qV:{(0.90,-0.30),(0.95,0.00),(1.05,0.00),(1.10,0.30)}",5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,977157f4-25e5-4c72-bf34-440edc778792 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/chp_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,market_reaction,node,operates_from,operates_until,operator,q_characteristics,thermal_bus,thermal_storage,type,controlling_em 2 | 9981b4d7-5a8e-4909-9602-e2e7ef4fca5c,test_chpInput,false,4ca90220-74c2-4369-9afa-a18bf068840d,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510,"cosPhiFixed:{(0.00,0.95)}",0d95d7f2-49fb-4d49-8636-383a5220384e,8851813b-3a7d-4fee-874b-4df9d724e4b3,5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,977157f4-25e5-4c72-bf34-440edc778792 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/cylindrical_storage_input.csv: -------------------------------------------------------------------------------- 1 | uuid,c,id,inlet_temp,operates_from,operates_until,operator,return_temp,storage_volume_lvl,p_thermal_max,thermal_bus,controlling_em 2 | 8851813b-3a7d-4fee-874b-4df9d724e4b3,1.0,test_cylindricalThermalStorage,110.0,,,f15105c4-a2de-4ab8-a621-4bc98e372d92,80.0,1.039154027,20.0,0d95d7f2-49fb-4d49-8636-383a5220384e,977157f4-25e5-4c72-bf34-440edc778792 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/em_input.csv: -------------------------------------------------------------------------------- 1 | uuid,control_strategy,id,operates_from,operates_until,operator,controlling_em 2 | 977157f4-25e5-4c72-bf34-440edc778792,self_optimization,test_emInput,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510,897bfc17-8e54-43d0-8d98-740786fd94dd 3 | 897bfc17-8e54-43d0-8d98-740786fd94dd,self_optimization,test_parentEmInput,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510, -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/ev_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,node,operates_from,operates_until,operator,q_characteristics,type,controlling_em 2 | a17be20f-c7a7-471d-8ffe-015487c9d022,test_evInput,4ca90220-74c2-4369-9afa-a18bf068840d,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510,"cosPhiFixed:{(0.00,0.95)}",5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,977157f4-25e5-4c72-bf34-440edc778792 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/evcs_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,operator,operates_from,operates_until,node,q_characteristics,cos_phi_rated,type,charging_points,location_type,v2g_support,controlling_em 2 | 798028b5-caff-4da7-bcd9-1750fdd8742c,test_csInput,8f9682df-0744-4b58-a122-f0dc730f6510,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,4ca90220-74c2-4369-9afa-a18bf068840d,"cosPhiFixed:{(0.00,0.95)}",0.95,hhs,4,HOME,false,977157f4-25e5-4c72-bf34-440edc778792 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/fixed_feed_in_input.csv: -------------------------------------------------------------------------------- 1 | uuid,cos_phi_rated,id,node,operates_from,operates_until,operator,q_characteristics,s_rated,controlling_em 2 | 717af017-cc69-406f-b452-e022d7fb516a,0.95,test_fixedFeedInInput,4ca90220-74c2-4369-9afa-a18bf068840d,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510,"cosPhiFixed:{(0.00,0.95)}",25.0,977157f4-25e5-4c72-bf34-440edc778792 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/hp_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,node,operates_from,operates_until,operator,q_characteristics,thermal_bus,type,controlling_em 2 | 798028b5-caff-4da7-bcd9-1750fdd8742b,test_hpInput,4ca90220-74c2-4369-9afa-a18bf068840d,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510,"cosPhiFixed:{(0.00,0.95)}",0d95d7f2-49fb-4d49-8636-383a5220384e,5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,977157f4-25e5-4c72-bf34-440edc778792 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/load_input.csv: -------------------------------------------------------------------------------- 1 | uuid,cos_phi_rated,e_cons_annual,id,node,operates_from,operates_until,operator,q_characteristics,s_rated,load_profile,controlling_em 2 | eaf77f7e-9001-479f-94ca-7fb657766f5f,0.95,4000.0,test_loadInput,4ca90220-74c2-4369-9afa-a18bf068840d,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510,"cosPhiFixed:{(0.00,0.95)}",25.0,h0,977157f4-25e5-4c72-bf34-440edc778792 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/pv_input.csv: -------------------------------------------------------------------------------- 1 | uuid,albedo,azimuth,cos_phi_rated,eta_conv,elevation_angle,id,k_g,k_t,market_reaction,node,operates_from,operates_until,operator,q_characteristics,s_rated,controlling_em 2 | d56f15b7-8293-4b98-b5bd-58f6273ce229,0.20000000298023224,-8.926613807678223,0.95,98.0,41.01871871948242,test_pvInput,0.8999999761581421,1.0,false,4ca90220-74c2-4369-9afa-a18bf068840d,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510,"cosPhiFixed:{(0.00,0.95)}",25.0,977157f4-25e5-4c72-bf34-440edc778792 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/storage_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,node,operates_from,operates_until,operator,q_characteristics,type,controlling_em 2 | 06b58276-8350-40fb-86c0-2414aa4a0452,test_storageInput,4ca90220-74c2-4369-9afa-a18bf068840d,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510,"cosPhiFixed:{(0.00,0.95)}",5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,977157f4-25e5-4c72-bf34-440edc778792 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/thermal_bus_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,operates_from,operates_until,operator 2 | 0d95d7f2-49fb-4d49-8636-383a5220384e,test_thermalBusInput,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/time_series_mapping.csv: -------------------------------------------------------------------------------- 1 | "uuid","participant","time_series" 2 | "58167015-d760-4f90-8109-f2ebd94cda91","b86e95b0-e579-4a80-a534-37c7a470a409","67600124-2475-4a62-a410-0dd6eabb9441" 3 | "9a9ebfda-dc26-4a40-b9ca-25cd42f6cc3f","c7ebcc6c-55fc-479b-aa6b-6fa82ccac6b8","05a25fe7-11e5-4732-92b0-490cec171c78" 4 | "9c1c53ea-e575-41a2-a373-a8b2d3ed2c39","90a96daa-012b-4fea-82dc-24ba7a7ab81c","05a25fe7-11e5-4732-92b0-490cec171c78" -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/wec_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,market_reaction,node,operates_from,operates_until,operator,q_characteristics,type,controlling_em 2 | ee7e2e37-a5ad-4def-a832-26a317567ca1,test_wecInput,false,4ca90220-74c2-4369-9afa-a18bf068840d,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510,"cosPhiP:{(0.00,1.00),(0.90,1.00),(1.20,-0.30)}",5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,977157f4-25e5-4c72-bf34-440edc778792 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_results/bm_res.csv: -------------------------------------------------------------------------------- 1 | inputModel,p,q,time 2 | 66df67d0-c789-4393-b0a5-897a3bc821a2,-1,-5,2011-01-01T00:00:00Z -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_results/chp_res.csv: -------------------------------------------------------------------------------- 1 | inputModel,p,q,qDot,time -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_results/em_res.csv: -------------------------------------------------------------------------------- 1 | inputModel,p,q,time 2 | ba34ead3-6f88-4507-b087-90803af97406,5.561681,0.586,2011-01-01T00:00:00Z -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_results/ev_res.csv: -------------------------------------------------------------------------------- 1 | inputModel,p,q,soc,time -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_results/evcs_res.csv: -------------------------------------------------------------------------------- 1 | inputModel,p,q,time -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_results/fixed_feed_in_res.csv: -------------------------------------------------------------------------------- 1 | inputModel,p,q,time 2 | 9abe950d-362e-4efe-b686-500f84d8f368,-0.18,-0.059163138932195374,2011-01-01T00:00:00Z -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_results/hp_res.csv: -------------------------------------------------------------------------------- 1 | inputModel,p,q,qDot,time -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_results/load_res.csv: -------------------------------------------------------------------------------- 1 | inputModel,p,q,time -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_results/storage_res.csv: -------------------------------------------------------------------------------- 1 | inputModel,p,q,soc,time -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_results/thermal_house_res.csv: -------------------------------------------------------------------------------- 1 | inputModel,qDot,indoorTemperature,time -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_thermal/cylindrical_storage_input.csv: -------------------------------------------------------------------------------- 1 | uuid,c,id,inlet_temp,operates_from,operates_until,operator,return_temp,storage_volume_lvl,thermal_bus,p_thermal_max 2 | 8851813b-3a7d-4fee-874b-4df9d724e4b3,1.0,test_cylindricalThermalStorage,110.0,,,f15105c4-a2de-4ab8-a621-4bc98e372d92,80.0,1.039154027,0d95d7f2-49fb-4d49-8636-383a5220384e,20.0 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_thermal/operator_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id 2 | 8f9682df-0744-4b58-a122-f0dc730f6510,TestOperator 3 | f15105c4-a2de-4ab8-a621-4bc98e372d92,Univ.-Prof. Dr. rer. hort. Klaus-Dieter Brokkoli -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_thermal/thermal_bus_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,operates_from,operates_until,operator 2 | 0d95d7f2-49fb-4d49-8636-383a5220384e,test_thermalBusInput,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_thermal/thermal_house_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id,operates_from,operates_until,operator,thermal_bus,eth_losses,eth_capa,target_temperature,upper_temperature_limit,lower_temperature_limit,housing_type,number_inhabitants 2 | 717af017-cc69-406f-b452-e022d7fb516a,"testThermalHouseInput",2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,8f9682df-0744-4b58-a122-f0dc730f6510,0d95d7f2-49fb-4d49-8636-383a5220384e,10,20,20,25,15,"house",2 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_timeseries/its_c_2fcb3e53-b94a-4b96-bea4-c469e499f1a1.csv: -------------------------------------------------------------------------------- 1 | "time";"price" 2 | 2020-01-01T00:00:00Z;100.0 3 | 2020-01-01T00:15:00Z;125.0 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_timeseries/its_h_c8fe6547-fd85-4fdf-a169-e4da6ce5c3d0.csv: -------------------------------------------------------------------------------- 1 | "time";"heat_demand" 2 | 2020-01-01T00:00:00Z;8.0 3 | 2020-01-01T00:15:00Z;12.0 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_timeseries/its_p_9185b8c1-86ba-4a16-8dea-5ac898e8caa5.csv: -------------------------------------------------------------------------------- 1 | "time";"p" 2 | 2020-01-01T00:00:00Z;1000.0 3 | 2020-01-01T00:15:00Z;1250.0 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_timeseries/its_ph_76c9d846-797c-4f07-b7ec-2245f679f5c7.csv: -------------------------------------------------------------------------------- 1 | "time";"p";"heat_demand" 2 | 2020-01-01T00:00:00Z;1000.0;8.0 3 | 2020-01-01T00:15:00Z;1250.0;12.0 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_timeseries/its_pq_1061af70-1c03-46e1-b960-940b956c429f.csv: -------------------------------------------------------------------------------- 1 | "time";"p";"q" 2 | 2020-01-01T00:00:00Z;500.0;165.0 3 | 2020-01-01T00:15:00Z;750.0;247.0 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_timeseries/its_pq_3fbfaa97-cff4-46d4-95ba-a95665e87c26.csv: -------------------------------------------------------------------------------- 1 | "time";"p";"q" 2 | 2020-01-01T00:00:00Z;1000.0;329.0 3 | 2020-01-01T00:15:00Z;1250.0;411.0 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_timeseries/its_pqh_46be1e57-e4ed-4ef7-95f1-b2b321cb2047.csv: -------------------------------------------------------------------------------- 1 | "time";"p";"q";"heat_demand" 2 | 2020-01-01T00:00:00Z;1000.0;329.0;8.0 3 | 2020-01-01T00:15:00Z;1250.0;411.0;12.0 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_timeseries/its_v_eeccbe3c-a47e-448e-8eca-1f369d3c24e6.csv: -------------------------------------------------------------------------------- 1 | "time";"vMag";"vAng" 2 | 2020-01-01T00:00:00Z;1.0;45.0 3 | 2020-01-01T00:15:00Z;0.9; -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_timeseries/lpts_g2.csv: -------------------------------------------------------------------------------- 1 | SuSa,SuSu,SuWd,TrSa,TrSu,TrWd,WiSa,WiSu,WiWd,quarterHour 2 | 63.1,50.6,60.8,73.1,64.2,70.5,80.6,73.7,77.4,0 3 | 58.0,47.4,53.0,67.6,60.7,61.9,74.6,68.7,67.4,1 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_timeseries/time_series_mapping.csv: -------------------------------------------------------------------------------- 1 | "asset";"time_series" 2 | "b86e95b0-e579-4a80-a534-37c7a470a409";"9185b8c1-86ba-4a16-8dea-5ac898e8caa5" 3 | "c7ebcc6c-55fc-479b-aa6b-6fa82ccac6b8";"3fbfaa97-cff4-46d4-95ba-a95665e87c26" 4 | "90a96daa-012b-4fea-82dc-24ba7a7ab81c";"3fbfaa97-cff4-46d4-95ba-a95665e87c26" 5 | "7bed7760-c220-4fe6-88b3-47b246f6ef3f";"eeccbe3c-a47e-448e-8eca-1f369d3c24e6" -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_types/bm_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,active_power_gradient,capex,cos_phi_rated,eta_conv,id,opex,s_rated 2 | 5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,25.0,100.0,0.95,98.0,test_bmTypeInput,50.0,25.0 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_types/chp_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,capex,cos_phi_rated,eta_el,eta_thermal,id,opex,p_own,p_thermal,s_rated 2 | 5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,100.0,0.95,19.0,76.0,test_chpType,50.0,0.0,9.0,25.0 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_types/ev_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,capex,cos_phi_rated,e_cons,e_storage,id,opex,s_rated,s_rated_dc 2 | 5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,100.0,0.95,5.0,100.0,test_evTypeInput,50.0,25.0,20.0 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_types/hp_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,capex,cos_phi_rated,id,opex,p_thermal,s_rated 2 | 5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,100.0,0.95,test_hpTypeInput,50.0,9.0,25.0 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_types/line_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,b,g,i_max,id,r,v_rated,x 2 | 3bed3eb3-9790-4874-89b5-a5434d408088,0.00322,0.0,300.0,lineType_AtoB,0.437,20.0,0.356 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_types/operator_input.csv: -------------------------------------------------------------------------------- 1 | uuid,id 2 | 8f9682df-0744-4b58-a122-f0dc730f6510,TestOperator 3 | f15105c4-a2de-4ab8-a621-4bc98e372d92,Univ.-Prof. Dr. rer. hort. Klaus-Dieter Brokkoli -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_types/storage_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,active_power_gradient,capex,cos_phi_rated,e_storage,eta,id,opex,p_max,s_rated 2 | 5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,100.0,100.0,0.95,100.0,95.0,test_storageTypeInput,50.0,15.0,25.0 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_types/transformer_2_w_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,b_m,d_phi,d_v,g_m,id,r_sc,s_rated,tap_max,tap_min,tap_neutr,tap_side,v_rated_a,v_rated_b,x_sc 2 | 202069a7-bcf8-422c-837c-273575220c8a,0.0,0.0,1.5,0.0,HS-MS_1,45.375,20000.0,10,-10,0,false,110.0,20.0,102.759 3 | ac30443b-29e7-4635-b399-1062cfb3ffda,0.0,0.0,1.777780055999756,0.0,transformer_type_gedfi89fc7c895076ff25ec6d3b2e7ab9a1b24b37f73ecf30f895005d766a8d8d2774aa,0.0,40000.0,19,1,10,false,110.0,10.0,51.72750115394592 4 | 8441dd78-c528-4e63-830d-52d341131432,0.0,0.0,1.5,0.0,no_shunt_elements_mv-mv,1.5,250.0,5,-5,0,false,20.0,10.0,15.5 5 | 08559390-d7c0-4427-a2dc-97ba312ae0ac,0.0,0.0,0.5,0.0,MS-NS_1,10.078,630.0,10,-10,0,false,20.0,0.4,23.312 6 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_types/transformer_3_w_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,b_m,d_phi,d_v,g_m,id,r_sc_a,r_sc_b,r_sc_c,s_rated_a,s_rated_b,s_rated_c,tap_max,tap_min,tap_neutr,v_rated_a,v_rated_b,v_rated_c,x_sc_a,x_sc_b,x_sc_c 2 | 5b0ee546-21fb-4a7f-a801-5dbd3d7bb356,-1000.0,0.0,1.5,40000.0,HöS-HS-MS_1,0.3,0.025,8.0E-4,120000.0,60000.0,40000.0,10,-10,0,380.0,110.0,20.0,1.0,0.08,0.003 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_types/wec_type_input.csv: -------------------------------------------------------------------------------- 1 | uuid,capex,cos_phi_rated,cp_characteristic,eta_conv,hub_height,id,opex,rotor_area,s_rated 2 | 5ebd8f7e-dedb-4017-bb86-6373c4b68eb8,100.0,0.95,"cP:{(10.00,0.05),(15.00,0.10),(20.00,0.20)}",98.0,200.0,test_wecType,50.0,20.0,25.0 3 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/csv/_weather/cosmo/its_weather_8bc9120d-fb9b-4484-b4e3-0cdadf0feea9.csv: -------------------------------------------------------------------------------- 1 | "uuid";"coordinate_id";"time";"diffuse_irradiance";"direct_irradiance";"temperature";"wind_direction";"wind_velocity" 2 | "3cee46d5-1fe7-419e-a652-32f9be6703be";193186;2020-04-28T15:00:00Z;286.872985839844;282.671997070312;278.019012451172;0;1.66103506088257 3 | "1fbc6f7e-52fe-4668-93c8-33454d7feb6c";193187;2020-04-28T15:00:00Z;287.872985839844;283.671997070312;279.019012451172;0;1.76103506088257 4 | "78c7a057-ad6c-4ea1-bb74-7e28fbb08957";193188;2020-04-28T15:00:00Z;288.872985839844;284.671997070312;280.019012451172;0;1.86103506088257 5 | "b146fbff-ddd5-45b4-9d30-dd2a8550f7ba";193186;2020-04-28T16:00:00Z;286.872;282.672;278.012;0;1.662 6 | "7bdfb687-aa20-43af-8bbe-c23d9cc448ed";193187;2020-04-28T16:00:00Z;287.872;283.672;279.012;0;1.762 7 | "4d233e6a-9e01-4a46-bef6-88172ab366f4";193186;2020-04-28T17:00:00Z;286.873;282.673;278.013;0;1.663 -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/influxdb/_weather/cosmo/weather.txt: -------------------------------------------------------------------------------- 1 | # DDL 2 | CREATE DATABASE test_weather 3 | 4 | # DML 5 | # CONTEXT-DATABASE: test_weather 6 | 7 | 8 | weather,coordinate_id=193186 diffuse_irradiance=286.872985839844,direct_irradiance=282.671997070312,temperature=278.019012451172,wind_direction=0,wind_velocity=1.66103506088257 1588086000000 9 | weather,coordinate_id=193187 diffuse_irradiance=287.872985839844,direct_irradiance=283.671997070312,temperature=279.019012451172,wind_direction=0,wind_velocity=1.76103506088257 1588086000000 10 | weather,coordinate_id=193188 diffuse_irradiance=288.872985839844,direct_irradiance=284.671997070312,temperature=280.019012451172,wind_direction=0,wind_velocity=1.86103506088257 1588086000000 11 | weather,coordinate_id=193186 diffuse_irradiance=286.872,direct_irradiance=282.672,temperature=278.012,wind_direction=0,wind_velocity=1.662 1588089600000 12 | weather,coordinate_id=193187 diffuse_irradiance=287.872,direct_irradiance=283.672,temperature=279.012,wind_direction=0,wind_velocity=1.762 1588089600000 13 | weather,coordinate_id=193186 diffuse_irradiance=286.873,direct_irradiance=282.673,temperature=278.013,wind_direction=0,wind_velocity=1.663 1588093200000 14 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/sql/_coordinates/coordinates.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE public.coordinates 2 | ( 3 | id integer, 4 | coordinate geography(POINT) 5 | ) 6 | WITH ( 7 | OIDS = FALSE 8 | ) 9 | TABLESPACE pg_default; 10 | 11 | CREATE INDEX idx ON public.coordinates USING gist (coordinate); 12 | 13 | INSERT INTO 14 | public.coordinates(id, coordinate) 15 | VALUES 16 | (67775, ST_POINT(7.438, 51.5)), 17 | (531137, ST_POINT(7.375, 51.5)), 18 | (551525, ST_POINT(7.438, 51.438)), 19 | (278150, ST_POINT(7.375, 51.438)) -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/sql/_timeseries/time_series_c.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE public.time_series_c 2 | ( 3 | uuid uuid PRIMARY KEY, 4 | time_series uuid NOT NULL, 5 | time timestamp with time zone NOT NULL, 6 | price double precision 7 | ) 8 | WITHOUT OIDS 9 | TABLESPACE pg_default; 10 | 11 | CREATE INDEX time_series_c_series_id ON time_series_c USING hash (time_series); 12 | 13 | -- Order of columns is important when using btree: https://www.postgresql.org/docs/14/indexes-multicolumn.html 14 | -- Column time_series needs to placed as the first argument since we at most use an equality constraint on 15 | -- time_series and a range query on time. 16 | CREATE UNIQUE INDEX time_series_c_series_time ON time_series_c USING btree (time_series, time); 17 | 18 | INSERT INTO 19 | public.time_series_c (uuid, time_series, time, price) 20 | VALUES 21 | ('45bd936f-524a-4d59-8978-31ccf37fa230', '2fcb3e53-b94a-4b96-bea4-c469e499f1a1', '2020-01-01 00:00:00+0', 100.0), 22 | ('41b8dbf6-3e75-4073-8359-89d015777dd6', '2fcb3e53-b94a-4b96-bea4-c469e499f1a1', '2020-01-01 00:15:00+0', 125.0); 23 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/sql/_timeseries/time_series_h.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE public.time_series_h 2 | ( 3 | uuid uuid PRIMARY KEY, 4 | time_series uuid NOT NULL, 5 | time timestamp with time zone NOT NULL, 6 | heat_demand double precision NOT NULL 7 | ) 8 | WITHOUT OIDS 9 | TABLESPACE pg_default; 10 | 11 | CREATE INDEX time_series_h_series_id ON time_series_h USING hash (time_series); 12 | 13 | -- Order of columns is important when using btree: https://www.postgresql.org/docs/14/indexes-multicolumn.html 14 | -- Column time_series needs to placed as the first argument since we at most use an equality constraint on 15 | -- time_series and a range query on time. 16 | CREATE UNIQUE INDEX time_series_h_series_time ON time_series_h USING btree (time_series, time); 17 | 18 | INSERT INTO 19 | public.time_series_h (uuid, time_series, time, heat_demand) 20 | VALUES 21 | ('5ec4ddfe-addf-4f32-8fb5-fd4eaa5e5ced', 'c8fe6547-fd85-4fdf-a169-e4da6ce5c3d0', '2020-01-01 00:00:00+0', 8.0), 22 | ('e82dd54c-9f6f-4451-9dcd-f4f41b8c9ee0', 'c8fe6547-fd85-4fdf-a169-e4da6ce5c3d0', '2020-01-01 00:15:00+0', 12.0); 23 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/sql/_timeseries/time_series_mapping.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE public.time_series_mapping 2 | ( 3 | asset uuid PRIMARY KEY, 4 | time_series uuid 5 | ) 6 | WITHOUT OIDS 7 | TABLESPACE pg_default; 8 | 9 | INSERT INTO 10 | public.time_series_mapping (asset, time_series) 11 | VALUES 12 | ('b86e95b0-e579-4a80-a534-37c7a470a409', '9185b8c1-86ba-4a16-8dea-5ac898e8caa5'), 13 | ('c7ebcc6c-55fc-479b-aa6b-6fa82ccac6b8', '3fbfaa97-cff4-46d4-95ba-a95665e87c26'), 14 | ('90a96daa-012b-4fea-82dc-24ba7a7ab81c', '3fbfaa97-cff4-46d4-95ba-a95665e87c26'); 15 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/sql/_timeseries/time_series_p.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE public.time_series_p 2 | ( 3 | uuid uuid PRIMARY KEY, 4 | time_series uuid NOT NULL, 5 | time timestamp with time zone NOT NULL, 6 | p double precision NOT NULL 7 | ) 8 | WITHOUT OIDS 9 | TABLESPACE pg_default; 10 | 11 | CREATE INDEX time_series_p_series_id ON time_series_p USING hash (time_series); 12 | 13 | -- Order of columns is important when using btree: https://www.postgresql.org/docs/14/indexes-multicolumn.html 14 | -- Column time_series needs to placed as the first argument since we at most use an equality constraint on 15 | -- time_series and a range query on time. 16 | CREATE UNIQUE INDEX time_series_p_series_time ON time_series_p USING btree (time_series, time); 17 | 18 | INSERT INTO 19 | public.time_series_p (uuid, time_series, time, p) 20 | VALUES 21 | ('0245d599-9a5c-4c32-9613-5b755fac8ca0', '9185b8c1-86ba-4a16-8dea-5ac898e8caa5', '2020-01-01 00:00:00+0', 1000.0), 22 | ('a5e27652-9024-4a93-9d2a-590fbc3ab5a1', '9185b8c1-86ba-4a16-8dea-5ac898e8caa5', '2020-01-01 00:15:00+0', 1250.0), 23 | ('b4a2b3e0-7215-431b-976e-d8b41c7bc71b', 'b669e4bf-a351-4067-860d-d5f224b62247', '2020-01-01 00:00:00+0', 50.0), 24 | ('1c8f072c-c833-47da-a3e9-5f4d305ab926', 'b669e4bf-a351-4067-860d-d5f224b62247', '2020-01-01 00:15:00+0', 100.0); 25 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/sql/_timeseries/time_series_ph.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE public.time_series_ph 2 | ( 3 | uuid uuid PRIMARY KEY, 4 | time_series uuid NOT NULL, 5 | time timestamp with time zone NOT NULL, 6 | p double precision NOT NULL, 7 | heat_demand double precision NOT NULL 8 | ) 9 | WITHOUT OIDS 10 | TABLESPACE pg_default; 11 | 12 | CREATE INDEX time_series_ph_series_id ON time_series_ph USING hash (time_series); 13 | 14 | -- Order of columns is important when using btree: https://www.postgresql.org/docs/14/indexes-multicolumn.html 15 | -- Column time_series needs to placed as the first argument since we at most use an equality constraint on 16 | -- time_series and a range query on time. 17 | CREATE UNIQUE INDEX time_series_ph_series_time ON time_series_ph USING btree (time_series, time); 18 | 19 | INSERT INTO 20 | public.time_series_ph (uuid, time_series, time, p, heat_demand) 21 | VALUES 22 | ('5d1235b2-656c-43e8-9186-b4a703f6e467', '76c9d846-797c-4f07-b7ec-2245f679f5c7', '2020-01-01 00:00:00+0', 1000.0, 8.0), 23 | ('de6659b2-1545-4739-8d0a-e8ff79a6cb4b', '76c9d846-797c-4f07-b7ec-2245f679f5c7', '2020-01-01 00:15:00+0', 1250.0, 12.0); 24 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/sql/_timeseries/time_series_pq.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE public.time_series_pq 2 | ( 3 | uuid uuid PRIMARY KEY, 4 | time_series uuid NOT NULL, 5 | time timestamp with time zone NOT NULL, 6 | p double precision NOT NULL, 7 | q double precision NOT NULL 8 | ) 9 | WITHOUT OIDS 10 | TABLESPACE pg_default; 11 | 12 | CREATE INDEX time_series_pq_series_id ON time_series_pq USING hash (time_series); 13 | 14 | -- Order of columns is important when using btree: https://www.postgresql.org/docs/14/indexes-multicolumn.html 15 | -- Column time_series needs to placed as the first argument since we at most use an equality constraint on 16 | -- time_series and a range query on time. 17 | CREATE UNIQUE INDEX time_series_pq_series_time ON time_series_pq USING btree (time_series, time); 18 | 19 | INSERT INTO 20 | public.time_series_pq (uuid, time_series, time, p, q) 21 | VALUES 22 | ('da288786-d3e3-40aa-a34a-f67955d45ac8', '3fbfaa97-cff4-46d4-95ba-a95665e87c26', '2020-01-01 00:00:00+0', 1000.0, 329.0), 23 | ('43dd0a7b-7a7e-4393-b516-a0ddbcbf073b', '3fbfaa97-cff4-46d4-95ba-a95665e87c26', '2020-01-01 00:15:00+0', 1250.0, 411.0); 24 | -------------------------------------------------------------------------------- /src/test/resources/edu/ie3/datamodel/io/source/sql/_timeseries/time_series_pqh.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE public.time_series_pqh 2 | ( 3 | uuid uuid PRIMARY KEY, 4 | time_series uuid NOT NULL, 5 | time timestamp with time zone NOT NULL, 6 | p double precision NOT NULL, 7 | q double precision NOT NULL, 8 | heat_demand double precision NOT NULL 9 | ) 10 | WITHOUT OIDS 11 | TABLESPACE pg_default; 12 | 13 | CREATE INDEX time_series_pqh_series_id ON time_series_pqh USING hash (time_series); 14 | 15 | -- Order of columns is important when using btree: https://www.postgresql.org/docs/14/indexes-multicolumn.html 16 | -- Column time_series needs to placed as the first argument since we at most use an equality constraint on 17 | -- time_series and a range query on time. 18 | CREATE UNIQUE INDEX time_series_pqh_series_time ON time_series_pqh USING btree (time_series, time); 19 | 20 | INSERT INTO 21 | public.time_series_pqh (uuid, time_series, time, p, q, heat_demand) 22 | VALUES 23 | ('661ac594-47f0-4442-8d82-bbeede5661f7', '46be1e57-e4ed-4ef7-95f1-b2b321cb2047', '2020-01-01 00:00:00+0', 1000.0, 329.0, 8.0), 24 | ('5adcd6c5-a903-433f-b7b5-5fe669a3ed30', '46be1e57-e4ed-4ef7-95f1-b2b321cb2047', '2020-01-01 00:15:00+0', 1250.0, 411.0, 12.0); 25 | -------------------------------------------------------------------------------- /version.properties: -------------------------------------------------------------------------------- 1 | #Generated by the Semver Plugin for Gradle 2 | #Thu May 08 17:03:55 CEST 2025 3 | version.buildmeta= 4 | version.major=7 5 | version.minor=1 6 | version.patch=0 7 | version.prerelease= 8 | version.semver=7.1.0 9 | --------------------------------------------------------------------------------