Skip to content

Commit

Permalink
Merge branch 'dev' into df/#1107-prepare-changes-for-next-psdm-release
Browse files Browse the repository at this point in the history
# Conflicts:
#	CHANGELOG.md
#	src/main/scala/edu/ie3/simona/model/thermal/CylindricalThermalStorage.scala
#	src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala
#	src/test/scala/edu/ie3/simona/test/common/input/HpInputTestData.scala
  • Loading branch information
danielfeismann committed Feb 18, 2025
2 parents bf5b672 + 483ff7f commit 5c1980f
Show file tree
Hide file tree
Showing 146 changed files with 10,188 additions and 4,859 deletions.
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Throw exception if the slack node is not directly conected to a transformer. [#525](https://github.com/ie3-institute/simona/issues/525)
- Added support for topologies without transformers and slack grids with multiple nodes [#1099](https://github.com/ie3-institute/simona/issues/1099)
- Checking the number of slack nodes [#1122](https://github.com/ie3-institute/simona/issues/1122)
- Enhance exception message in case of InvalidGridException [#1124](https://github.com/ie3-institute/simona/issues/1124)
- Integration test for thermal grids [#1145](https://github.com/ie3-institute/simona/issues/1145)
- Added `VoltageLimits` [#1133](https://github.com/ie3-institute/simona/issues/1133)
- Introducing new ParticipantAgent and ParticipantModel [#1134](https://github.com/ie3-institute/simona/issues/1134)
- Using new `ParticipantAgent.Request` messages everywhere [#1195](https://github.com/ie3-institute/simona/issues/1195)

### Changed
- Adapted to changed data source in PSDM [#435](https://github.com/ie3-institute/simona/issues/435)
Expand Down Expand Up @@ -121,6 +126,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Refactor ThermalEnergyDemand definitions [#917](https://github.com/ie3-institute/simona/issues/917)
- Rewrote PvModelIT from groovy to scala [#646](https://github.com/ie3-institute/simona/issues/646)
- Fix negative required energy demand for thermalHouse [#1127](https://github.com/ie3-institute/simona/issues/1127)
- Refactored EM messages [#1138](https://github.com/ie3-institute/simona/issues/1138)
- `OperationInterval` should extend `RightOpenInterval` [#1142](https://github.com/ie3-institute/simona/issues/1142)
- Enhance EmAggregate of SelfOpt to cope with other targetLimits [#1131](https://github.com/ie3-institute/simona/issues/1131)
- Switched to `pureconfig` [#608](https://github.com/ie3-institute/simona/issues/608)
- Removing generated methods and cleaning up in config [#1170](https://github.com/ie3-institute/simona/issues/1170)
- Changed `pvInput` values in `PvInputTestData` to more realistic values [#1144](https://github.com/ie3-institute/simona/issues/1144)
- Refactor `RuntimeConfig` [#1172](https://github.com/ie3-institute/simona/issues/1172)
- Updated to changes of PSDM release v6.0.0 [#1107](https://github.com/ie3-institute/simona/issues/1107)

### Fixed
Expand Down Expand Up @@ -166,6 +178,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed SonarQube quality gate using the right link for PRs or Branches [#1061](https://github.com/ie3-institute/simona/issues/1061)
- Fixed ignored EM strategy [#1091](https://github.com/ie3-institute/simona/issues/1091)
- EM should output flex option results even if it has no parent [#1112](https://github.com/ie3-institute/simona/issues/1112)
- Rename `PrimaryDataWithApparentPower` to `PrimaryDataWithComplexPower` [#1140](https://github.com/ie3-institute/simona/issues/1140)
- Refactoring of `ThermalGrid.handleInfeed` to fix thermal storage recharge correctly when empty [#930](https://github.com/ie3-institute/simona/issues/930)
- Move `ScheduleServiceActivation` out of `RegistrationResponseMessage` [#1143](https://github.com/ie3-institute/simona/issues/1143)
- Check for runningHp when handling infeed to thermalGrid [#1167](https://github.com/ie3-institute/simona/issues/1167)

## [3.0.0] - 2023-08-07

Expand Down
10 changes: 7 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ ext {
pekkoVersion = '1.1.3'
jtsVersion = '1.20.0'
confluentKafkaVersion = '7.4.0'
tscfgVersion = '1.2.4'
scapegoatVersion = '3.1.4'

testContainerVersion = '0.41.8'
Expand All @@ -44,7 +43,6 @@ java {

apply from: scriptsLocation + 'spotless.gradle'
apply from: scriptsLocation + 'checkJavaVersion.gradle'
apply from: scriptsLocation + 'tscfg.gradle' // config tasks
apply from: scriptsLocation + 'documentation.gradle' // documentation tasks + configuration
apply from: scriptsLocation + 'tests.gradle' // tasks for tests
apply from: scriptsLocation + 'sonarqube.gradle' // sonarqube config
Expand Down Expand Up @@ -128,8 +126,8 @@ dependencies {

/* config */
implementation 'com.typesafe:config:1.4.3'
implementation "com.github.carueda:tscfg_2.13:$tscfgVersion"
implementation "com.github.scopt:scopt_${scalaVersion}:4.1.0" // cmd args parser
implementation "com.github.pureconfig:pureconfig_${scalaVersion}:0.17.8"

// JTS
implementation ("org.locationtech.jts:jts-core:${jtsVersion}"){
Expand Down Expand Up @@ -200,6 +198,12 @@ tasks.withType(ScalaCompile) {
"-P:scapegoat:disabledInspections:VariableShadowing",
"-P:scapegoat:ignoredFiles:.*/SimonaConfig.scala" // see scapegoat-sbt page for this param
]
// increasing stack size required for our pureconfig configuration
// see: https://github.com/pureconfig/pureconfig/issues/481#issuecomment-647760554
scalaCompileOptions.forkOptions.jvmArgs = [
'-Xss2m',
'-XX:-UseGCOverheadLimit'
]
}

// separate scapegoat report for test classes
Expand Down
17 changes: 16 additions & 1 deletion docs/readthedocs/_static/bibliography/bibtexAll.bib
Original file line number Diff line number Diff line change
Expand Up @@ -190,4 +190,19 @@ @MISC{Radiation_ECMWF
author = {Robin Hogan},
title = {Radiation Quantities in the ECMWF model and MARS},
howpublished = {\url{https://www.ecmwf.int/sites/default/files/elibrary/2015/18490-radiation-quantities-ecmwf-model-and-mars.pdf}}
}
}

@misc{EN_50160,
title = {EN 50160:2020-11, Voltage characteristics of electricity supplied by public electricity networks},
publisher = {CENELEC},
type = {NORM},
year = {2022},
date = {2022-12-01},
}

@online{EU_2017/1485,
author = {{The European Commission}},
title = {COMMISSION REGULATION (EU) 2017/1485 of 2 August 2017 establishing a guideline on electricity transmission system operation},
date = {2017-08-02},
url = {https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX%3A32017R1485},
}
27 changes: 27 additions & 0 deletions docs/readthedocs/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ Tba:

## Grid configuration

### Reference System
The reference system contains a list of voltage levels. Each element includes the nominal apparent power, the nominal
voltage and the separate configuration of each voltage level. The voltage level configuration is composed of the identifier
and the nominal voltage.
Expand All @@ -268,6 +269,32 @@ simona.gridConfig.refSystems = [
Further typical voltage levels which can be used in the simulation and the configuration of individual reference systems
are described in the documentation of [reference system](models/reference_system).

### Voltage limits

The voltage limits contains a list of voltage levels. Each element includes the minimal and maximal allowed voltage and
the separate configuration of each voltage level. The voltage level configuration is composed of the identifier and the
nominal voltage.

The configuration of a voltage limits is optional. If no configuration is provided by the user, the default
[voltage limits](models/voltage_limits) that includes all common german voltage levels is used. For those users
who need other voltage levels than the common german voltage levels or different voltage limits, they can configure
their limits as shown below.

The voltage limits can be configured as follows:

```
simona.gridConfig.voltageLimits = [
{vMin = 0.9, vMax = 1.1, voltLvls = [{id = "Lv", vNom = "0.4 kV"}]},
{vMin = 0.9, vMax = 1.1, voltLvls = [{id = "Mv", vNom = "20 kV"}]},
{vMin = 0.9, vMax = 1.1, voltLvls = [{id = "Hv", vNom = "110 kV"}]},
{vMin = 0.9, vMax = 1.05, voltLvls = [{id = "EHV", vNom = "380 kV"}]},
]
```

Further typical voltage levels which can be used in the simulation and the configuration of individual voltage limits
are described in the documentation of [voltage limits](models/voltage_limits).


## Power flow configuration

Maximum allowed deviation in power between two sweeps, before overall convergence is assumed:
Expand Down
1 change: 1 addition & 0 deletions docs/readthedocs/models.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ models/three_winding_transformer_model
models/reference_system
models/thermal_grid_model
models/thermal_house_model
models/voltage_limits
```

## System Participant Related Models
Expand Down
65 changes: 65 additions & 0 deletions docs/readthedocs/models/voltage_limits.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
(voltage_limits)=

# Voltage Limits

The voltage limits are built up by specifying the included voltage levels. The following table describes typical network
levels and their parameterization. They are primarily used for the optional congestion management.

## Default voltage limits

```{list-table}
:widths: auto
:header-rows: 1
* - Voltage level (id)
- Minimal voltage (vMin)
- Maximal voltage (vMax)
* - LV
- 0.9 p.u.
- 1.1 p.u.
* - MV (10 kV)
- 0.9 p.u.
- 1.1 p.u.
* - MV (20 kV)
- 0.9 p.u.
- 1.1 p.u.
* - MV (30 kV)
- 0.9 p.u.
- 1.1 p.u.
* - HV
- 0.9 p.u.
- 1.1 p.u.
* - EHV (220 kV)
- 0.9 p.u.
- 1.118 p.u.
* - EHV (380 kV)
- 0.9 p.u.
- 1.05 p.u.
```

**References:**

* {cite:cts}`EN_50160`
* {cite:cts}`EU_2017/1485`

## Configuration of the voltage limits

To configure the voltage limits, the voltage levels listed in the table above must be selected and integrated into the
config. The individual voltage level configuration (voltLvls) according to the example below. Each voltage level consists
of an identifier and the nominal voltage.

```
simona.gridConfig.voltageLimits = [
{vMin = 0.9, vMax = 1.1, voltLvls = [{id = "Lv", vNom = "0.4 kV"}]},
{vMin = 0.9, vMax = 1.1, voltLvls = [{id = "Mv", vNom = "20 kV"}]},
{vMin = 0.9, vMax = 1.1, voltLvls = [{id = "Hv", vNom = "110 kV"}]},
{vMin = 0.9, vMax = 1.05, voltLvls = [{id = "EHV", vNom = "380 kV"}]},
]
```
2 changes: 1 addition & 1 deletion docs/readthedocs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Sphinx==8.1.3
sphinx-rtd-theme==3.0.2
sphinxcontrib-plantuml==0.30
myst-parser==4.0.0
myst-parser==4.0.1
markdown-it-py==3.0.0
sphinx-hoverxref==1.4.2
sphinxcontrib-bibtex==2.6.3
16 changes: 16 additions & 0 deletions gradle/scripts/documentation.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,19 @@ javadoc() {
destinationDir = file("${project.projectDir}/docs/javadoc")
classpath = project.sourceSets.main.compileClasspath
}

/**
* Task to generate the ScalaDoc
*/
scaladoc() {
description 'Generates scala API doc at the correct place.'
group 'Documentation'

source = sourceSets.main.allSource
destinationDir = file("${project.projectDir}/docs/scaladoc")
classpath = project.sourceSets.main.compileClasspath

// Exclude SimonaConfig because implicits used by pureconfig's
// ConfigSource.load and ConfigWriter.apply lead to failure of scaladoc
exclude("edu/ie3/simona/config/SimonaConfig.scala")
}
56 changes: 0 additions & 56 deletions gradle/scripts/tscfg.gradle

This file was deleted.

5 changes: 3 additions & 2 deletions input/samples/vn_simona/vn_simona.conf
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ simona.output.log.level = "INFO"
##################################################################
# Runtime Configuration // todo refactor as this naming is misleading and partly unneeded
##################################################################
simona.runtime.selected_subgrids = []
simona.runtime.selected_volt_lvls = []
simona.runtime.selectedSubgrids = []
simona.runtime.selectedVoltLvls = []

simona.runtime.participant.load = {
defaultConfig = {
Expand Down Expand Up @@ -170,6 +170,7 @@ simona.runtime.participant.storage = {
calculateMissingReactivePowerWithModel = false
uuids = ["default"]
scaling = 1.0
initialSoc = 0.0
}
individualConfigs = []
}
Expand Down
Loading

0 comments on commit 5c1980f

Please sign in to comment.