diff --git a/_alp/Agents/EnergyCoop/AOC.EnergyCoop.xml b/_alp/Agents/EnergyCoop/AOC.EnergyCoop.xml
index e537e3e7..82f2bba0 100644
--- a/_alp/Agents/EnergyCoop/AOC.EnergyCoop.xml
+++ b/_alp/Agents/EnergyCoop/AOC.EnergyCoop.xml
@@ -37,11 +37,11 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
I_EnergyData
- f_getAllChildCustomerGridConnections_recursion(HashSet f_getAllChildCustomerGridConnections_recursion(HashSet f_getAllChildCustomerGridConnections_recursion(HashSet activeEnergyCarriers_rapidRun = EnumSet.copyOf(v_activeEnergyCarriers);
-EnumSet activeConsumptionEnergyCarriers_rapidRun = EnumSet.copyOf(v_activeConsumptionEnergyCarriers);
-EnumSet activeProductionEnergyCarriers_rapidRun = EnumSet.copyOf(v_activeProductionEnergyCarriers);
+EnumSet activeEnergyCarriers_rapidRun = EnumSet.copyOf(v_liveData.activeEnergyCarriers);
+EnumSet activeConsumptionEnergyCarriers_rapidRun = EnumSet.copyOf(v_liveData.activeConsumptionEnergyCarriers);
+EnumSet activeProductionEnergyCarriers_rapidRun = EnumSet.copyOf(v_liveData.activeProductionEnergyCarriers);
//Need to do this, for if the sliders have changed, otherwise potential errors/missing data
boolean storeTotalAssetFlows = true;
@@ -1581,6 +1576,18 @@ ArrayList f_getMemberGridConnectionsCollectionPointer()
return this.c_memberGridConnections; // This should NOT be a copy, it should be a pointer!!
/*ALCODEEND*/}
+double f_addMembers(List gcList)
+{/*ALCODESTART::1756290844166*/
+c_memberGridConnections.addAll(gcList);
+f_initialize();
+/*ALCODEEND*/}
+
+double f_removeMembers(List gcList)
+{/*ALCODESTART::1756301338833*/
+c_memberGridConnections.removeAll(gcList);
+f_initialize();
+/*ALCODEEND*/}
+
double f_aggregatorBatteryManagement_EnergyCoop()
{/*ALCODESTART::1756207893357*/
if(p_aggregatorBatteryManagement != null){
diff --git a/_alp/Agents/EnergyCoop/Code/Functions.xml b/_alp/Agents/EnergyCoop/Code/Functions.xml
index 7c3d4a08..18b3d60d 100644
--- a/_alp/Agents/EnergyCoop/Code/Functions.xml
+++ b/_alp/Agents/EnergyCoop/Code/Functions.xml
@@ -705,6 +705,26 @@
true
+
+ VOID
+ double
+ 1756290844166
+
+ 990
+ 340
+
+ false
+ true
+ true
+
+
+ ]]>
+
+
+
VOID
double
@@ -721,6 +741,26 @@
true
+
+ VOID
+ double
+ 1756301338833
+
+ 990
+ 360
+
+ false
+ true
+ true
+
+
+ ]]>
+
+
+
VOID
double
diff --git a/_alp/Agents/EnergyCoop/Variables.xml b/_alp/Agents/EnergyCoop/Variables.xml
index 46803b54..522dec8c 100644
--- a/_alp/Agents/EnergyCoop/Variables.xml
+++ b/_alp/Agents/EnergyCoop/Variables.xml
@@ -1213,66 +1213,6 @@
-
- 1732886770078
-
- 75
- 860
-
- false
- true
- true
-
- ]]>
-
-
-
- 1740059065414
-
- 89.6
- 897.4
-
- false
- true
- true
-
- ]]>
-
-
-
-
-
-
- 1740059065416
-
- 89.6
- 877.4
-
- false
- true
- true
-
- ]]>
-
-
1740152681807
diff --git a/_alp/Agents/EnergyDataViewer/Code/Functions.java b/_alp/Agents/EnergyDataViewer/Code/Functions.java
index 57e68191..8d64171c 100644
--- a/_alp/Agents/EnergyDataViewer/Code/Functions.java
+++ b/_alp/Agents/EnergyDataViewer/Code/Functions.java
@@ -422,20 +422,21 @@
v_dataElectricityV2GProductionYear_kW = data.getRapidRunData().acc_dailyAverageV2GProduction_kW.getDataSet(startTime_h);
v_dataElectricityCHPProductionYear_kW = data.getRapidRunData().acc_dailyAverageCHPElectricityProduction_kW.getDataSet(startTime_h);
*/
-DataSet totalBatteryStorage = data.getRapidRunData().ts_dailyAverageBatteriesStoredEnergy_MWh.getDataSet(startTime_h);
-v_dataBatterySOCYear_fr.reset();
-for (int i = 0; i < totalBatteryStorage.size(); i++) {
- // Get the x and y values from the source dataset
- double x = totalBatteryStorage.getX(i);
- double y = totalBatteryStorage.getY(i);
-
- // Modify the y value (e.g., divide it by 2)
- double SOC = v_batteryStorageCapacityInstalled_MWh > 0 ? y / v_batteryStorageCapacityInstalled_MWh : 0;
-
- // Add the new x and y values to the target dataset
- v_dataBatterySOCYear_fr.add(x, SOC);
+if (data.getRapidRunData().ts_dailyAverageBatteriesStoredEnergy_MWh != null) {
+ DataSet totalBatteryStorage = data.getRapidRunData().ts_dailyAverageBatteriesStoredEnergy_MWh.getDataSet(startTime_h);
+ v_dataBatterySOCYear_fr.reset();
+ for (int i = 0; i < totalBatteryStorage.size(); i++) {
+ // Get the x and y values from the source dataset
+ double x = totalBatteryStorage.getX(i);
+ double y = totalBatteryStorage.getY(i);
+
+ // Modify the y value (e.g., divide it by 2)
+ double SOC = v_batteryStorageCapacityInstalled_MWh > 0 ? y / v_batteryStorageCapacityInstalled_MWh : 0;
+
+ // Add the new x and y values to the target dataset
+ v_dataBatterySOCYear_fr.add(x, SOC);
+ }
}
-
/*ALCODEEND*/}
double f_addTimeStepLiveDataSetsGC(I_EnergyData data)
diff --git a/_alp/Agents/EnergyModel/AOC.EnergyModel.xml b/_alp/Agents/EnergyModel/AOC.EnergyModel.xml
index 67a9e533..77f9d991 100644
--- a/_alp/Agents/EnergyModel/AOC.EnergyModel.xml
+++ b/_alp/Agents/EnergyModel/AOC.EnergyModel.xml
@@ -53,11 +53,10 @@ import com.querydsl.core.types.dsl.TimeExpression;
//import zero_engine.J_EAConsumption;
]]>
I_EnergyData
- f_getActiveGridConnections()
// Initializing Live Data Class
v_liveAssetsMetaData.updateActiveAssetData(c_gridConnections);
-v_liveData.activeConsumptionEnergyCarriers = v_activeConsumptionEnergyCarriers;
-v_liveData.activeProductionEnergyCarriers = v_activeProductionEnergyCarriers;
-v_liveData.activeEnergyCarriers = v_activeEnergyCarriers;
+for (GridConnection GC : c_gridConnections) {
+ v_liveData.activeEnergyCarriers.addAll(GC.v_liveData.activeEnergyCarriers);
+ v_liveData.activeConsumptionEnergyCarriers.addAll(GC.v_liveData.activeConsumptionEnergyCarriers);
+ v_liveData.activeProductionEnergyCarriers.addAll(GC.v_liveData.activeProductionEnergyCarriers);
+}
// Loop over populations to check v_ispaused
f_initializePause();
@@ -757,9 +759,9 @@ J_ProfilePointer f_findProfile(String assetName)
double f_initializeLiveDataSets()
{/*ALCODESTART::1731573713521*/
-v_liveData.dsm_liveDemand_kW.createEmptyDataSets(v_activeEnergyCarriers, (int) (168 / p_timeStep_h));
-v_liveData.dsm_liveSupply_kW.createEmptyDataSets(v_activeEnergyCarriers, (int) (168 / p_timeStep_h));
-v_liveData.dsm_liveAssetFlows_kW.createEmptyDataSets(v_liveData.assetsMetaData.activeAssetFlows, (int)(168 / p_timeStep_h));
+v_liveData.dsm_liveDemand_kW.createEmptyDataSets(v_liveData.activeEnergyCarriers, roundToInt(168/p_timeStep_h));
+v_liveData.dsm_liveSupply_kW.createEmptyDataSets(v_liveData.activeEnergyCarriers, roundToInt(168/p_timeStep_h));
+v_liveData.dsm_liveAssetFlows_kW.createEmptyDataSets(v_liveData.assetsMetaData.activeAssetFlows, roundToInt(168/p_timeStep_h));
/*ALCODEEND*/}
EnergyCoop f_addEnergyCoop(ArrayList gcList)
@@ -822,9 +824,9 @@ EnergyCoop f_removeEnergyCoop(EnergyCoop energyCoop)
EnergyCoop f_addConsumptionEnergyCarrier(OL_EnergyCarriers EC)
{/*ALCODESTART::1740056275008*/
-if (!v_activeConsumptionEnergyCarriers.contains(EC)) {
- v_activeEnergyCarriers.add(EC);
- v_activeConsumptionEnergyCarriers.add(EC);
+if (!v_liveData.activeConsumptionEnergyCarriers.contains(EC)) {
+ v_liveData.activeEnergyCarriers.add(EC);
+ v_liveData.activeConsumptionEnergyCarriers.add(EC);
DataSet dsDemand = new DataSet( (int)(168 / p_timeStep_h) );
@@ -857,9 +859,9 @@ EnergyCoop f_addConsumptionEnergyCarrier(OL_EnergyCarriers EC)
EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
{/*ALCODESTART::1746021439807*/
-if (!v_activeProductionEnergyCarriers.contains(EC)) {
- v_activeEnergyCarriers.add(EC);
- v_activeProductionEnergyCarriers.add(EC);
+if (!v_liveData.activeProductionEnergyCarriers.contains(EC)) {
+ v_liveData.activeEnergyCarriers.add(EC);
+ v_liveData.activeProductionEnergyCarriers.add(EC);
DataSet dsSupply = new DataSet( (int)(168 / p_timeStep_h) );
double startTime = v_liveData.dsm_liveDemand_kW.get(OL_EnergyCarriers.ELECTRICITY).getXMin();
@@ -1016,7 +1018,7 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
// Remaining difference due to different temps of houses start vs end?
traceln("");
-for (OL_EnergyCarriers EC : v_activeEnergyCarriers) {
+for (OL_EnergyCarriers EC : v_liveData.activeEnergyCarriers) {
traceln("Import " + EC.toString() + ": " + v_rapidRunData.getTotalImport_MWh(EC) + " MWh");
traceln("Export " + EC.toString() + ": " + v_rapidRunData.getTotalExport_MWh(EC) + " MWh");
}
diff --git a/_alp/Agents/EnergyModel/Variables.xml b/_alp/Agents/EnergyModel/Variables.xml
index 429f38fc..3651ee38 100644
--- a/_alp/Agents/EnergyModel/Variables.xml
+++ b/_alp/Agents/EnergyModel/Variables.xml
@@ -1283,63 +1283,6 @@
-
- 1731576444065
-
- 103
- 838
-
- false
- true
- true
-
- ]]>
-
-
-
- 1733478626642
-
- 123
- 878
-
- false
- true
- true
-
- ]]>
-
-
-
- 1733478626644
-
- 123
- 858
-
- false
- true
- true
-
- ]]>
-
-
1741277544181
diff --git a/_alp/Agents/GridConnection/AOC.GridConnection.xml b/_alp/Agents/GridConnection/AOC.GridConnection.xml
index 96472d6c..27a817ac 100644
--- a/_alp/Agents/GridConnection/AOC.GridConnection.xml
+++ b/_alp/Agents/GridConnection/AOC.GridConnection.xml
@@ -54,11 +54,11 @@ import com.fasterxml.jackson.annotation.JsonSubTypes;
I_EnergyData
(List.of(this)));
-v_liveData.activeConsumptionEnergyCarriers = v_activeConsumptionEnergyCarriers;
-v_liveData.activeProductionEnergyCarriers = v_activeProductionEnergyCarriers;
-v_liveData.activeEnergyCarriers = v_activeEnergyCarriers;
+//v_liveData.activeConsumptionEnergyCarriers = v_activeConsumptionEnergyCarriers;
+//v_liveData.activeProductionEnergyCarriers = v_activeProductionEnergyCarriers;
+//v_liveData.activeEnergyCarriers = v_activeEnergyCarriers;
f_initializeDataSets();
-for (OL_EnergyCarriers EC : v_activeEnergyCarriers){
- energyModel.v_activeEnergyCarriers.add(EC);
-}
-for (OL_EnergyCarriers EC_production : v_activeProductionEnergyCarriers){
- energyModel.v_activeProductionEnergyCarriers.add(EC_production);
-}
-for (OL_EnergyCarriers EC_consumption : v_activeConsumptionEnergyCarriers){
- energyModel.v_activeConsumptionEnergyCarriers.add(EC_consumption);
-}
-
/*ALCODEEND*/}
double f_addFlows(J_FlowsMap flowsMap,double energyUse_kW,J_ValueMap assetFlowsMap,J_EA caller)
@@ -1199,8 +1189,8 @@ else if (flowsMap.get(EC) > 0){
double f_initializeDataSets()
{/*ALCODESTART::1730728785333*/
-v_liveData.dsm_liveDemand_kW.createEmptyDataSets(v_activeConsumptionEnergyCarriers, (int)(168 / energyModel.p_timeStep_h));
-v_liveData.dsm_liveSupply_kW.createEmptyDataSets(v_activeProductionEnergyCarriers, (int)(168 / energyModel.p_timeStep_h));
+v_liveData.dsm_liveDemand_kW.createEmptyDataSets(v_liveData.activeConsumptionEnergyCarriers, (int)(168 / energyModel.p_timeStep_h));
+v_liveData.dsm_liveSupply_kW.createEmptyDataSets(v_liveData.activeProductionEnergyCarriers, (int)(168 / energyModel.p_timeStep_h));
v_liveData.dsm_liveAssetFlows_kW.createEmptyDataSets(v_liveData.assetsMetaData.activeAssetFlows, (int)(168 / energyModel.p_timeStep_h));
/*ALCODEEND*/}
@@ -1296,8 +1286,8 @@ OL_GridConnectionHeatingType f_getCurrentHeatingType()
EnergyCoop f_addConsumptionEnergyCarrier(OL_EnergyCarriers EC)
{/*ALCODESTART::1754380684463*/
-v_activeEnergyCarriers.add(EC);
-v_activeConsumptionEnergyCarriers.add(EC);
+v_liveData.activeEnergyCarriers.add(EC);
+v_liveData.activeConsumptionEnergyCarriers.add(EC);
DataSet dsDemand = new DataSet( (int)(168 / energyModel.p_timeStep_h) );
@@ -1312,8 +1302,8 @@ EnergyCoop f_addConsumptionEnergyCarrier(OL_EnergyCarriers EC)
EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
{/*ALCODESTART::1754380684465*/
-v_activeEnergyCarriers.add(EC);
-v_activeProductionEnergyCarriers.add(EC);
+v_liveData.activeEnergyCarriers.add(EC);
+v_liveData.activeProductionEnergyCarriers.add(EC);
DataSet dsSupply = new DataSet( (int)(168 / energyModel.p_timeStep_h) );
double startTime = v_liveData.dsm_liveDemand_kW.get(OL_EnergyCarriers.ELECTRICITY).getXMin();
diff --git a/_alp/Agents/GridConnection/Variables.xml b/_alp/Agents/GridConnection/Variables.xml
index dc4df818..75ea91f8 100644
--- a/_alp/Agents/GridConnection/Variables.xml
+++ b/_alp/Agents/GridConnection/Variables.xml
@@ -416,63 +416,6 @@
-
- 1731576190939
-
- 380
- 660
-
- false
- true
- true
-
- ]]>
-
-
-
- 1733478609497
-
- 390
- 700
-
- false
- true
- true
-
- ]]>
-
-
-
- 1733478609500
-
- 390
- 680
-
- false
- true
- true
-
- ]]>
-
-
1737539227165
diff --git a/_alp/Classes/Class.J_AccumulatorMap.java b/_alp/Classes/Class.J_AccumulatorMap.java
index 54f61224..ae34cc44 100644
--- a/_alp/Classes/Class.J_AccumulatorMap.java
+++ b/_alp/Classes/Class.J_AccumulatorMap.java
@@ -96,7 +96,7 @@ public double totalIntegralNeg_MWh() {
}
public void clear() {
- accumulatorArray = new ZeroAccumulator[OL_EnergyCarriers.values().length];
+ accumulatorArray = new ZeroAccumulator[this.enumClass.getEnumConstants().length];
enumSet.clear();
}
@@ -110,7 +110,7 @@ public J_AccumulatorMap add( J_AccumulatorMap accumulatorMap ) {
for (var EC : accumulatorMap.enumSet) {
if (!this.enumSet.contains(EC)) {
// make a new one?
- throw new RuntimeException("Tried to add an AccumulatorMap with a new EnergyCarrier.");
+ throw new RuntimeException("Tried to add two AccumulatorMaps without matching keys.");
}
this.get(EC).add(accumulatorMap.get(EC));
}
@@ -121,7 +121,7 @@ public J_AccumulatorMap subtract( J_AccumulatorMap accumulatorMap ) {
for (var EC : accumulatorMap.enumSet) {
if (!this.enumSet.contains(EC)) {
// make a new one?
- throw new RuntimeException("Tried to subtract an AccumulatorMap with a new EnergyCarrier.");
+ throw new RuntimeException("Tried to subtract two AccumulatorMaps without matching keys.");
}
this.get(EC).subtract(accumulatorMap.get(EC));
}
@@ -129,7 +129,7 @@ public J_AccumulatorMap subtract( J_AccumulatorMap accumulatorMap ) {
}
public J_DataSetMap getDataSetMap( double startTime_h ) {
- J_DataSetMap dsm = new J_DataSetMap(OL_EnergyCarriers.class);
+ J_DataSetMap dsm = new J_DataSetMap(this.enumClass);
for (var EC : this.enumSet) {
dsm.put(EC, this.get(EC).getDataSet(startTime_h));
}
diff --git a/_alp/Classes/Class.J_EAHydrogenVehicle.java b/_alp/Classes/Class.J_EAHydrogenVehicle.java
index efd07777..ec3249e2 100644
--- a/_alp/Classes/Class.J_EAHydrogenVehicle.java
+++ b/_alp/Classes/Class.J_EAHydrogenVehicle.java
@@ -29,7 +29,7 @@ public J_EAHydrogenVehicle(Agent ownerAssetAgent, double energyConsumption_kWhpk
}
@Override
- public void f_updateAllFlows(double powerFraction_fr) {
+ public void f_updateAllFlows() {
flowsMap.put(OL_EnergyCarriers.HYDROGEN, this.energyUse_kW);
diff --git a/_alp/Classes/Class.J_LiveData.java b/_alp/Classes/Class.J_LiveData.java
index 197e8f5c..f0c5a7ab 100644
--- a/_alp/Classes/Class.J_LiveData.java
+++ b/_alp/Classes/Class.J_LiveData.java
@@ -110,7 +110,7 @@ public void addTimeStep(double currentTime_h, J_FlowsMap fm_currentBalanceFlows_
//Batteries
this.data_batteryStoredEnergyLiveWeek_MWh.add(currentTime_h, currentStoredEnergyBatteries_MWh);
if(assetsMetaData.totalInstalledBatteryStorageCapacity_MWh > 0){
- this.data_batterySOC_fr.add(currentTime_h, currentStoredEnergyBatteries_MWh/assetsMetaData.totalInstalledBatteryStorageCapacity_MWh);
+ this.data_batterySOC_fr.add(currentTime_h, roundToDecimal(currentStoredEnergyBatteries_MWh/assetsMetaData.totalInstalledBatteryStorageCapacity_MWh, 3) );
}
else{
this.data_batterySOC_fr.add(currentTime_h, 0);
@@ -120,7 +120,24 @@ public void addTimeStep(double currentTime_h, J_FlowsMap fm_currentBalanceFlows_
}
public String toString() {
- return super.toString();
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("Active Energy Carriers: ");
+ sb.append(this.activeEnergyCarriers);
+ sb.append(System.lineSeparator());
+ sb.append("Consumption Carriers: ");
+ sb.append(this.activeConsumptionEnergyCarriers);
+ sb.append(System.lineSeparator());
+ sb.append("Production Carriers: ");
+ sb.append(this.activeProductionEnergyCarriers);
+ sb.append(System.lineSeparator());
+ sb.append("Asset Flow Caterogies: ");
+ sb.append(this.assetsMetaData.activeAssetFlows);
+ sb.append(System.lineSeparator());
+ sb.append("Number of datapoints: ");
+ sb.append(this.data_totalDemand_kW.size());
+
+ return sb.toString();
}
}
\ No newline at end of file
diff --git a/_alp/Classes/Class.J_RapidRunData.java b/_alp/Classes/Class.J_RapidRunData.java
index d6963918..3f067ba2 100644
--- a/_alp/Classes/Class.J_RapidRunData.java
+++ b/_alp/Classes/Class.J_RapidRunData.java
@@ -981,9 +981,20 @@ public double getWeekendPrimaryEnergyProductionHeatpumps_MWh() {
return this.acc_weekendPrimaryEnergyProductionHeatpumps_kW.getIntegral_MWh();
}
-
-//toString()
public String toString() {
- return super.toString();
- }
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("Active Energy Carriers: ");
+ sb.append(this.activeEnergyCarriers);
+ sb.append(System.lineSeparator());
+ sb.append("Consumption Carriers: ");
+ sb.append(this.activeConsumptionEnergyCarriers);
+ sb.append(System.lineSeparator());
+ sb.append("Production Carriers: ");
+ sb.append(this.activeProductionEnergyCarriers);
+ sb.append(System.lineSeparator());
+ sb.append("Asset Flow Caterogies: ");
+ sb.append(this.assetsMetaData.activeAssetFlows);
+
+ return sb.toString(); }
}
\ No newline at end of file