Skip to content

Commit e878a19

Browse files
committed
Merge remote-tracking branch 'origin/lr/#586-grid-io-it' into vb/#586-grid-io-it
2 parents 1acebf2 + 9d712fd commit e878a19

25 files changed

+2510
-2
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
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.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.*;
11+
import edu.ie3.datamodel.models.input.container.GraphicElements;
12+
import edu.ie3.datamodel.models.input.container.JointGridContainer;
13+
import edu.ie3.datamodel.models.input.container.RawGridElements;
14+
import edu.ie3.datamodel.models.input.container.SystemParticipants;
15+
16+
public class CsvJointGridContainerSource {
17+
private CsvJointGridContainerSource() {}
18+
19+
public static JointGridContainer read(String gridName, String csvSep, String directoryPath)
20+
throws SourceException {
21+
22+
/* Parameterization */
23+
24+
FileNamingStrategy namingStrategy = new FileNamingStrategy(); // Default naming strategy
25+
26+
/* Instantiating sources */
27+
TypeSource typeSource = new CsvTypeSource(csvSep, directoryPath, namingStrategy);
28+
RawGridSource rawGridSource =
29+
new CsvRawGridSource(csvSep, directoryPath, namingStrategy, typeSource);
30+
ThermalSource thermalSource =
31+
new CsvThermalSource(csvSep, directoryPath, namingStrategy, typeSource);
32+
SystemParticipantSource systemParticipantSource =
33+
new CsvSystemParticipantSource(
34+
csvSep, directoryPath, namingStrategy, typeSource, thermalSource, rawGridSource);
35+
GraphicSource graphicsSource =
36+
new CsvGraphicSource(csvSep, directoryPath, namingStrategy, typeSource, rawGridSource);
37+
38+
/* Loading models */
39+
RawGridElements rawGridElements =
40+
rawGridSource
41+
.getGridData()
42+
.orElseThrow(() -> new SourceException("Error during reading of raw grid data."));
43+
SystemParticipants systemParticipants =
44+
systemParticipantSource
45+
.getSystemParticipants()
46+
.orElseThrow(
47+
() -> new SourceException("Error during reading of system participant data."));
48+
GraphicElements graphicElements =
49+
graphicsSource
50+
.getGraphicElements()
51+
.orElseThrow(() -> new SourceException("Error during reading of graphic elements."));
52+
JointGridContainer fullGrid =
53+
new JointGridContainer(gridName, rawGridElements, systemParticipants, graphicElements);
54+
55+
return fullGrid;
56+
}
57+
}

src/main/java/edu/ie3/datamodel/models/input/system/characteristic/CharacteristicInput.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@ public String deSerialize() {
131131
public boolean equals(Object o) {
132132
if (this == o) return true;
133133
if (!(o instanceof CharacteristicInput<?, ?> that)) return false;
134+
135+
points.iterator();
136+
134137
return decimalPlaces == that.decimalPlaces
135138
&& characteristicPrefix.equals(that.characteristicPrefix)
136139
&& points.equals(that.points);

src/main/java/edu/ie3/datamodel/models/input/system/characteristic/CharacteristicPoint.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package edu.ie3.datamodel.models.input.system.characteristic;
77

88
import edu.ie3.datamodel.exceptions.ParsingException;
9+
import edu.ie3.util.quantities.QuantityUtil;
910
import java.io.Serializable;
1011
import java.util.Locale;
1112
import java.util.Objects;
@@ -102,9 +103,8 @@ public ComparableQuantity<O> getY() {
102103
* @return The de-serialized point
103104
*/
104105
public String deSerialize(int decimalPlaces) {
105-
String formattingString = String.format("(%%.%sf,%%.%sf)", decimalPlaces, decimalPlaces);
106106
return String.format(
107-
Locale.ENGLISH, formattingString, x.getValue().doubleValue(), y.getValue().doubleValue());
107+
Locale.ENGLISH, "(%s,%s)", x.getValue().doubleValue(), y.getValue().doubleValue());
108108
}
109109

110110
@Override
@@ -114,6 +114,12 @@ public boolean equals(Object o) {
114114
return Objects.equals(x, that.x) && Objects.equals(y, that.y);
115115
}
116116

117+
public boolean equalsWithTolerance(CharacteristicPoint<A, O> p, int decimalPlaces) {
118+
double tolerance = Math.pow(10, -decimalPlaces);
119+
return QuantityUtil.isEquivalentAbs(this.x, p.x, tolerance)
120+
&& QuantityUtil.isEquivalentAbs(this.y, p.y, tolerance);
121+
}
122+
117123
@Override
118124
public int hashCode() {
119125
return Objects.hash(x, y);
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
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.io
7+
8+
import edu.ie3.datamodel.io.sink.CsvFileSink
9+
import edu.ie3.datamodel.io.source.csv.CsvJointGridContainerSource
10+
import edu.ie3.datamodel.io.source.csv.CsvTestDataMeta
11+
import spock.lang.Specification
12+
13+
import java.nio.file.Files
14+
15+
class GridIoIT extends Specification implements CsvTestDataMeta {
16+
17+
def "Input JointGridContainer equals Output JointGridContainer."(){
18+
19+
given:
20+
// create joint grid container
21+
def gridname = new String("vn_simona")
22+
def seperator = new String(",")
23+
def folderpath = new String(jointGridFolderPath)
24+
def firstGridContainer = CsvJointGridContainerSource.read(gridname, seperator, folderpath)
25+
26+
// output: prepare output folder
27+
def tempDirectory = Files.createTempDirectory("GridIoIT")
28+
def outDirectoryPath = tempDirectory.toAbsolutePath().toString()
29+
def sink = new CsvFileSink(outDirectoryPath)
30+
31+
when:
32+
// write files from joint grid container in output directory
33+
sink.persistJointGrid(firstGridContainer)
34+
35+
// create second grid container from output folder
36+
def secondGridContainer = CsvJointGridContainerSource.read(gridname, seperator, outDirectoryPath)
37+
38+
// delete files in output directory
39+
tempDirectory.toFile().eachFile {
40+
it.deleteOnExit()
41+
}
42+
43+
then:
44+
//compare input and output grid container participants
45+
46+
firstGridContainer.getGridName().equals(secondGridContainer.getGridName())
47+
firstGridContainer.getRawGrid().equals(secondGridContainer.getRawGrid())
48+
firstGridContainer.getSystemParticipants().equals(secondGridContainer.getSystemParticipants())
49+
firstGridContainer.getGraphics().equals(secondGridContainer.getGraphics())
50+
51+
firstGridContainer.getSystemParticipants().getFixedFeedIns().equals(secondGridContainer.getSystemParticipants().getFixedFeedIns())
52+
firstGridContainer.getSystemParticipants().getBmPlants().equals(secondGridContainer.getSystemParticipants().getBmPlants())
53+
firstGridContainer.getSystemParticipants().getPvPlants().equals(secondGridContainer.getSystemParticipants().getPvPlants())
54+
firstGridContainer.getSystemParticipants().getLoads().equals(secondGridContainer.getSystemParticipants().getLoads())
55+
firstGridContainer.getSystemParticipants().getEvCS().equals(secondGridContainer.getSystemParticipants().getEvCS())
56+
firstGridContainer.getSystemParticipants().getStorages().equals(secondGridContainer.getSystemParticipants().getStorages())
57+
58+
firstGridContainer.getSystemParticipants().getWecPlants().equals(secondGridContainer.getSystemParticipants().getWecPlants())
59+
60+
}
61+
62+
}

src/test/groovy/edu/ie3/datamodel/io/source/csv/CsvTestDataMeta.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ trait CsvTestDataMeta {
2424
static String coordinatesCosmoFolderPath = getResourceAbs("_coordinates/cosmo")
2525
static String weatherCosmoFolderPath = getResourceAbs("_weather/cosmo")
2626
static String weatherIconFolderPath = getResourceAbs("_weather/icon")
27+
static String jointGridFolderPath = getResourceAbs("_joint_grid")
2728

2829
static String gridDefaultFolderPath = getResourceAbs("_grid/default")
2930
static String gridMalformedFolderPath = getResourceAbs("_grid/malformed")
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
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.00,1.00)},2fdca5f1-c11b-4169-a695-4c98f0e0a84a
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
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
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
"uuid","cos_phi_rated","id","node","operates_from","operates_until","operator","q_characteristics","chargingpoints","type","location_type"
2+
06a14909-366e-4e94-a593-1016e1455b30,0.9,test_evcs_1,5f1c776c-6935-40f7-ba9e-60646e08992b,,,,cosPhiFixed:{(0.00,1.0)},4,ChargingStationType1,HOME
3+
104acdaa-5dc5-4197-aed2-2fddb3c4f237,0.9,test_evcs_2,ed4697fd-016c-40c2-a66b-e793878dadea,,,,cosPhiFixed:{(0.00,1.0)},4,ChargingStationType1,HOME
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
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.00,0.95)},200.0
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"uuid","p","q","time"
2+
4df88950-dc48-4905-b41f-63d0757eae03,3.999998968803,0.0,2011-01-01T00:00:00Z

0 commit comments

Comments
 (0)