diff --git a/_alp/Agents/EnergyCoop/Code/Functions.java b/_alp/Agents/EnergyCoop/Code/Functions.java index 70f005c4..131a2c25 100644 --- a/_alp/Agents/EnergyCoop/Code/Functions.java +++ b/_alp/Agents/EnergyCoop/Code/Functions.java @@ -572,7 +572,7 @@ v_activeEnergyCarriers.addAll(GC.v_activeEnergyCarriers); v_activeProductionEnergyCarriers.addAll(GC.v_activeProductionEnergyCarriers); v_activeConsumptionEnergyCarriers.addAll(GC.v_activeConsumptionEnergyCarriers); - + v_liveData.assetsMetaData.activeAssetFlows.addAll(GC.v_liveData.assetsMetaData.activeAssetFlows); if(!GC.v_liveConnectionMetaData.contractedDeliveryCapacityKnown){ v_liveConnectionMetaData.contractedDeliveryCapacityKnown = false; @@ -596,7 +596,6 @@ v_liveData.dsm_liveAssetFlows_kW.createEmptyDataSets(v_liveData.assetsMetaData.activeAssetFlows, (int)(168 / energyModel.p_timeStep_h)); // Initializing Live Data Class -v_liveAssetsMetaData.updateActiveAssetData(new ArrayList<>(f_getAllChildMemberGridConnections())); v_liveData.activeConsumptionEnergyCarriers = v_activeConsumptionEnergyCarriers; v_liveData.activeProductionEnergyCarriers = v_activeProductionEnergyCarriers; v_liveData.activeEnergyCarriers = v_activeEnergyCarriers; @@ -1071,6 +1070,7 @@ // Make collective profiles, electricity per timestep, other energy carriers per day! for (GridConnection gc : c_memberGridConnections) { + // Totals v_rapidRunData.am_totalBalanceAccumulators_kW.add(gc.v_rapidRunData.am_totalBalanceAccumulators_kW); v_rapidRunData.am_dailyAverageConsumptionAccumulators_kW.add(gc.v_rapidRunData.am_dailyAverageConsumptionAccumulators_kW); @@ -1079,6 +1079,7 @@ v_rapidRunData.acc_dailyAverageFinalEnergyConsumption_kW.add(gc.v_rapidRunData.acc_dailyAverageFinalEnergyConsumption_kW); v_rapidRunData.acc_totalEnergyCurtailed_kW.add(gc.v_rapidRunData.acc_totalEnergyCurtailed_kW); v_rapidRunData.acc_totalPrimaryEnergyProductionHeatpumps_kW.add(gc.v_rapidRunData.acc_totalPrimaryEnergyProductionHeatpumps_kW); + v_rapidRunData.am_assetFlowsAccumulators_kW.add(gc.v_rapidRunData.am_assetFlowsAccumulators_kW); // Daytime v_rapidRunData.acc_daytimeElectricityConsumption_kW.add(gc.v_rapidRunData.acc_daytimeElectricityConsumption_kW); @@ -1104,6 +1105,7 @@ v_rapidRunData.acc_summerWeekFinalEnergyConsumption_kW.add(gc.v_rapidRunData.acc_summerWeekFinalEnergyConsumption_kW); v_rapidRunData.acc_summerWeekEnergyCurtailed_kW.add(gc.v_rapidRunData.acc_summerWeekEnergyCurtailed_kW); v_rapidRunData.acc_summerWeekPrimaryEnergyProductionHeatpumps_kW.add(gc.v_rapidRunData.acc_summerWeekPrimaryEnergyProductionHeatpumps_kW); + v_rapidRunData.am_assetFlowsSummerWeek_kW.add(gc.v_rapidRunData.am_assetFlowsSummerWeek_kW); // Winterweek v_rapidRunData.am_winterWeekBalanceAccumulators_kW.add(gc.v_rapidRunData.am_winterWeekBalanceAccumulators_kW); @@ -1113,22 +1115,17 @@ v_rapidRunData.acc_winterWeekFinalEnergyConsumption_kW.add(gc.v_rapidRunData.acc_winterWeekFinalEnergyConsumption_kW); v_rapidRunData.acc_winterWeekEnergyCurtailed_kW.add(gc.v_rapidRunData.acc_winterWeekEnergyCurtailed_kW); v_rapidRunData.acc_winterWeekPrimaryEnergyProductionHeatpumps_kW.add(gc.v_rapidRunData.acc_winterWeekPrimaryEnergyProductionHeatpumps_kW); + v_rapidRunData.am_assetFlowsWinterWeek_kW.add(gc.v_rapidRunData.am_assetFlowsWinterWeek_kW); } -f_collectAssetSpecificEnergyFlows_rapidRun(); - // This is only true because we have no customers and only members of the Coop for this implementation acc_totalOwnElectricityProduction_kW = v_rapidRunData.am_dailyAverageProductionAccumulators_kW.get(OL_EnergyCarriers.ELECTRICITY); //acc_summerWeekOwnElectricityProduction_kW = am_summerWeekProductionAccumulators_kW.get(OL_EnergyCarriers.ELECTRICITY); //acc_winterWeekOwnElectricityProduction_kW = am_winterWeekProductionAccumulators_kW.get(OL_EnergyCarriers.ELECTRICITY); - //Calculate cumulative asset capacities f_getTotalInstalledCapacityOfAssets_rapidRun(); -//Recalculate SOC ts for energycoop -//f_recalculateSOC_rapidrun(); - /*ALCODEEND*/} double f_initializeCustomCoop(ArrayList gcList) @@ -1145,14 +1142,13 @@ for(GridConnection GC : c_memberGridConnections){ if(GC.v_rapidRunData == null){ allGCHaveRapidRun = false; + break; } } if(allGCHaveRapidRun){ - //Create rapid run data class used to collect rapid run data of other gc - v_rapidRunData = new J_RapidRunData(this); - v_rapidRunData.initializeAccumulators(energyModel.p_runEndTime_h - energyModel.p_runStartTime_h, energyModel.p_timeStep_h, EnumSet.copyOf(v_activeEnergyCarriers), EnumSet.copyOf(v_activeConsumptionEnergyCarriers), EnumSet.copyOf(v_activeProductionEnergyCarriers)); - v_rapidRunData.connectionMetaData = v_liveConnectionMetaData.getClone(); - v_rapidRunData.assetsMetaData = v_liveAssetsMetaData.getClone(); + + //Create rapid run data class used to store combined values of the members + f_createAndInitializeRapidRunDataClass(); //Collect current totals f_collectGridConnectionRapidRunData(); @@ -1312,63 +1308,6 @@ HashSet f_getAllChildCustomerGridConnections_recursion(HashSet gcList = f_getAllChildMemberGridConnections(); @@ -1477,49 +1416,6 @@ HashSet f_getAllChildCustomerGridConnections_recursion(HashSet 0){ - dailyAverageBatteriesSOC_fr[i] = v_rapidRunData.ts_dailyAverageBatteriesStoredEnergy_MWh.getY(i)/totalInstalledBatteryStorageCapacity_MWh; - } - else{ - dailyAverageBatteriesSOC_fr[i] = 0; - } -} - -//Summerweek SOC -for(int i = 0; i < v_rapidRunData.ts_summerWeekBatteriesStoredEnergy_MWh.getLength() ; i++){ - if(totalInstalledBatteryStorageCapacity_MWh > 0){ - summerWeekBatteriesSOC_fr[i] = v_rapidRunData.ts_summerWeekBatteriesStoredEnergy_MWh.getY(i)/totalInstalledBatteryStorageCapacity_MWh; - } - else{ - summerWeekBatteriesSOC_fr[i] = 0; - } -} - -//Winterweek SOC -for(int i = 0; i < v_rapidRunData.ts_winterWeekBatteriesStoredEnergy_MWh.getLength() ; i++){ - if(totalInstalledBatteryStorageCapacity_MWh > 0){ - winterWeekBatteriesSOC_fr[i] = v_rapidRunData.ts_winterWeekBatteriesStoredEnergy_MWh.getY(i)/totalInstalledBatteryStorageCapacity_MWh; - } - else{ - winterWeekBatteriesSOC_fr[i] = 0; - } -} - -v_rapidRunData.ts_dailyAverageBatteriesSOC_fr.setTimeSeries(dailyAverageBatteriesSOC_fr); -v_rapidRunData.ts_summerWeekBatteriesSOC_fr.setTimeSeries(summerWeekBatteriesSOC_fr); -v_rapidRunData.ts_winterWeekBatteriesSOC_fr.setTimeSeries(winterWeekBatteriesSOC_fr); -/*ALCODEEND*/} - double f_getTotalInstalledCapacityOfAssets_live() {/*ALCODESTART::1744211359139*/ //Collect live asset totals @@ -1640,3 +1536,38 @@ EnergyCoop f_addAssetFlow(OL_AssetFlowCategories AC) } /*ALCODEEND*/} +double f_createAndInitializeRapidRunDataClass() +{/*ALCODESTART::1754666678297*/ +//Create rapid run data class used to collect rapid run data of other gc +v_rapidRunData = new J_RapidRunData(this); +v_rapidRunData.assetsMetaData = v_liveAssetsMetaData.getClone(); + +EnumSet activeEnergyCarriers_rapidRun = EnumSet.copyOf(v_activeEnergyCarriers); +EnumSet activeConsumptionEnergyCarriers_rapidRun = EnumSet.copyOf(v_activeConsumptionEnergyCarriers); +EnumSet activeProductionEnergyCarriers_rapidRun = EnumSet.copyOf(v_activeProductionEnergyCarriers); + +//Need to do this, for if the sliders have changed, otherwise potential errors/missing data +boolean storeTotalAssetFlows = true; +for(GridConnection GC : c_memberGridConnections){ + activeEnergyCarriers_rapidRun.addAll(GC.v_rapidRunData.activeEnergyCarriers); + activeConsumptionEnergyCarriers_rapidRun.addAll(GC.v_rapidRunData.activeConsumptionEnergyCarriers); + activeProductionEnergyCarriers_rapidRun.addAll(GC.v_rapidRunData.activeProductionEnergyCarriers); + + v_rapidRunData.assetsMetaData.activeAssetFlows.addAll(GC.v_rapidRunData.assetsMetaData.activeAssetFlows); + + if(GC.v_rapidRunData.getStoreTotalAssetFlows() == false){ + storeTotalAssetFlows = false; + } +} + +//Adjust StoreTotalAssetFlows accordingly to the member data +v_rapidRunData.setStoreTotalAssetFlows(storeTotalAssetFlows); + +//For now assumed to stay the same even after slider change: can't see rapid run graphs anyway after slider change +v_rapidRunData.connectionMetaData = v_liveConnectionMetaData.getClone(); + +//Initialize the rapid run data +v_rapidRunData.initializeAccumulators(energyModel.p_runEndTime_h - energyModel.p_runStartTime_h, energyModel.p_timeStep_h, activeEnergyCarriers_rapidRun, activeConsumptionEnergyCarriers_rapidRun, activeProductionEnergyCarriers_rapidRun); + +/*ALCODEEND*/} + diff --git a/_alp/Agents/EnergyCoop/Code/Functions.xml b/_alp/Agents/EnergyCoop/Code/Functions.xml index 0749cce1..eb6d5d35 100644 --- a/_alp/Agents/EnergyCoop/Code/Functions.xml +++ b/_alp/Agents/EnergyCoop/Code/Functions.xml @@ -349,7 +349,7 @@ 1739970817879 990 - 210 + 230