Skip to content

Commit 8b23ec9

Browse files
authored
update json reporting (#1016)
* update json reporting * update test
1 parent afac3a9 commit 8b23ec9

File tree

5 files changed

+73
-30
lines changed

5 files changed

+73
-30
lines changed

src/main/java/neqsim/processSimulation/processEquipment/separator/Separator.java

+4
Original file line numberDiff line numberDiff line change
@@ -873,6 +873,10 @@ public boolean equals(Object obj) {
873873
&& Objects.equals(waterSystem, other.waterSystem);
874874
}
875875

876+
public StreamInterface getFeedStream() {
877+
return new Stream(getName(), getThermoSystem());
878+
}
879+
876880
/** {@inheritDoc} */
877881
@Override
878882
public String toJson() {

src/main/java/neqsim/processSimulation/util/monitor/SeparatorResponse.java

+13-17
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
public class SeparatorResponse {
1515
public String name;
1616
public Double gasLoadFactor;
17-
public Double massflow;
18-
public FluidResponse gasFluid, liquidFluid, oilFluid, waterFluid;
17+
public StreamResponse feed, gas, liquid, oil, water;
1918

2019
/**
2120
* <p>
@@ -27,17 +26,19 @@ public class SeparatorResponse {
2726
*/
2827
public SeparatorResponse(ThreePhaseSeparator inputSeparator) {
2928
name = inputSeparator.getName();
30-
massflow = inputSeparator.getFluid().getFlowRate("kg/hr");
3129
gasLoadFactor = inputSeparator.getGasLoadFactor();
30+
31+
feed = new StreamResponse(inputSeparator.getFeedStream());
3232
if (inputSeparator.getThermoSystem().hasPhaseType("aqueous")) {
33-
waterFluid = new FluidResponse(inputSeparator.getWaterOutStream().getFluid());
33+
water = new StreamResponse(inputSeparator.getWaterOutStream());
3434
}
3535
if (inputSeparator.getThermoSystem().hasPhaseType("oil")) {
36-
oilFluid = new FluidResponse(inputSeparator.getOilOutStream().getFluid());
36+
oil = new StreamResponse(inputSeparator.getOilOutStream());
3737
}
3838
if (inputSeparator.getThermoSystem().hasPhaseType("gas")) {
39-
gasFluid = new FluidResponse(inputSeparator.getGasOutStream().getFluid());
39+
gas = new StreamResponse(inputSeparator.getGasOutStream());
4040
}
41+
4142
}
4243

4344
/**
@@ -50,20 +51,15 @@ public SeparatorResponse(ThreePhaseSeparator inputSeparator) {
5051
*/
5152
public SeparatorResponse(Separator inputSeparator) {
5253
name = inputSeparator.getName();
53-
massflow = inputSeparator.getFluid().getFlowRate("kg/hr");
5454
gasLoadFactor = inputSeparator.getGasLoadFactor();
55-
if (inputSeparator.getThermoSystem().hasPhaseType("aqueous")) {
56-
waterFluid = new FluidResponse(inputSeparator.getThermoSystem().phaseToSystem("aqueous"));
57-
}
58-
if (inputSeparator.getThermoSystem().hasPhaseType("oil")) {
59-
oilFluid = new FluidResponse(inputSeparator.getThermoSystem().phaseToSystem("oil"));
55+
feed = new StreamResponse(inputSeparator.getFeedStream());
56+
if (inputSeparator.getThermoSystem().hasPhaseType("aqueous")
57+
|| inputSeparator.getThermoSystem().hasPhaseType("liquid")
58+
|| inputSeparator.getThermoSystem().hasPhaseType("oil")) {
59+
liquid = new StreamResponse(inputSeparator.getLiquidOutStream());
6060
}
6161
if (inputSeparator.getThermoSystem().hasPhaseType("gas")) {
62-
gasFluid = new FluidResponse(inputSeparator.getGasOutStream().getFluid());
63-
}
64-
if (inputSeparator.getThermoSystem().hasPhaseType("oil")
65-
|| inputSeparator.getThermoSystem().hasPhaseType("aqueous")) {
66-
liquidFluid = new FluidResponse(inputSeparator.getLiquidOutStream().getFluid());
62+
gas = new StreamResponse(inputSeparator.getGasOutStream());
6763
}
6864
}
6965
}

src/main/java/neqsim/processSimulation/util/report/Report.java

+2-12
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package neqsim.processSimulation.util.report;
22

33
import java.util.HashMap;
4-
import java.util.List;
54
import java.util.Map;
65
import com.google.gson.Gson;
76
import com.google.gson.GsonBuilder;
@@ -23,9 +22,6 @@
2322
* @version $Id: $Id
2423
*/
2524
public class Report {
26-
private HashMap<String, List<String[]>> reports = new HashMap<>();
27-
private HashMap<String, String> json_reports = new HashMap<>();
28-
Gson gson = new Gson();
2925
ProcessSystem process = null;
3026
ProcessEquipmentBaseClass processEquipment = null;
3127
SystemInterface fluid = null;
@@ -65,17 +61,13 @@ public String generateJsonReport() {
6561
json_reports.put(fluid.getFluidName(), fluid.toJson());
6662
}
6763

68-
// Create a Gson instance
69-
Gson gson = new Gson();
70-
JsonParser jsonParser = new JsonParser();
71-
7264
// Create a JsonObject to hold the parsed nested JSON objects
7365
JsonObject finalJsonObject = new JsonObject();
7466

7567
// Iterate through the entries of the json_reports map
7668
for (Map.Entry<String, String> entry : json_reports.entrySet()) {
77-
// Parse each value as a separate JSON object
78-
JsonObject nestedJsonObject = jsonParser.parse(entry.getValue()).getAsJsonObject();
69+
// Parse each value as a separate JSON object using the static parseString method
70+
JsonObject nestedJsonObject = JsonParser.parseString(entry.getValue()).getAsJsonObject();
7971
// Update the final JsonObject with the parsed JSON object
8072
finalJsonObject.add(entry.getKey(), nestedJsonObject);
8173
}
@@ -85,5 +77,3 @@ public String generateJsonReport() {
8577
return prettyGson.toJson(finalJsonObject);
8678
}
8779
}
88-
89-

src/main/java/neqsim/thermo/system/SystemThermo.java

-1
Original file line numberDiff line numberDiff line change
@@ -2401,7 +2401,6 @@ public double getMass(String unit) {
24012401
case "kg":
24022402
conversionFactor = 1.0;
24032403
break;
2404-
24052404
case "gr":
24062405
conversionFactor = 1000.0;
24072406
break;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package neqsim.processSimulation.util.monitor;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import org.junit.jupiter.api.Test;
5+
import com.google.gson.JsonObject;
6+
import com.google.gson.JsonParser;
7+
import neqsim.processSimulation.processEquipment.separator.Separator;
8+
import neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator;
9+
import neqsim.processSimulation.processEquipment.stream.Stream;
10+
import neqsim.processSimulation.processSystem.ProcessSystem;
11+
import neqsim.thermo.system.SystemSrkEos;
12+
13+
public class SeparatorResponseTest {
14+
15+
@Test
16+
void testWrite() {
17+
18+
SystemSrkEos testSystem = new SystemSrkEos(298.0, 10.0);
19+
testSystem.addComponent("methane", 100.0);
20+
testSystem.addComponent("n-heptane", 100.0);
21+
testSystem.addComponent("water", 100.0);
22+
testSystem.setMixingRule("classic");
23+
testSystem.setMultiPhaseCheck(true);
24+
25+
ProcessSystem processOps = new ProcessSystem();
26+
27+
Stream inletStream = new Stream("inletStream", testSystem);
28+
inletStream.setName("feed stream");
29+
inletStream.setPressure(10.0, "bara");
30+
inletStream.setTemperature(20.0, "C");
31+
inletStream.setFlowRate(290.0, "kg/hr");
32+
33+
Separator separator = new Separator("two phase separator", inletStream);
34+
separator.setInternalDiameter(0.05);
35+
36+
ThreePhaseSeparator separator3phase =
37+
new ThreePhaseSeparator("three phase separator", inletStream);
38+
separator3phase.setInternalDiameter(0.05);
39+
40+
processOps.add(inletStream);
41+
processOps.add(separator);
42+
processOps.add(separator3phase);
43+
processOps.run();
44+
45+
String sepjson = separator.toJson();
46+
String sep3json = separator3phase.toJson();
47+
JsonObject jsonObject = JsonParser.parseString(sep3json).getAsJsonObject();
48+
Double reldens = jsonObject.getAsJsonObject("feed").getAsJsonObject("properties")
49+
.getAsJsonObject("oil").getAsJsonObject("relative density").get("value").getAsDouble();
50+
assertEquals(0.688292615281, reldens, 0.01);
51+
52+
53+
}
54+
}

0 commit comments

Comments
 (0)