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