Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 117 additions & 25 deletions _alp/Agents/EnergyCoop/Code/Functions.java
Original file line number Diff line number Diff line change
Expand Up @@ -1100,7 +1100,7 @@

/*ALCODEEND*/}

double f_collectGridConnectionTotals()
double f_collectGridConnectionRapidRunData()
{/*ALCODESTART::1739970817879*/
// Make collective profiles, electricity per timestep, other energy carriers per day!

Expand Down Expand Up @@ -1149,7 +1149,7 @@
v_rapidRunData.acc_winterWeekPrimaryEnergyProductionHeatpumps_kW.add(gc.v_rapidRunData.acc_winterWeekPrimaryEnergyProductionHeatpumps_kW);
}

f_collectAssetSpecificEnergyFlows();
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);
Expand All @@ -1158,10 +1158,10 @@


//Calculate cumulative asset capacities
f_getTotalInstalledCapacityOfAssets();
f_getTotalInstalledCapacityOfAssets_rapidRun();

//Calculate cumulative individual values
f_getCumulativeIndividualGCValues();
//Recalculate SOC ts for energycoop
f_recalculateSOC_rapidrun();

/*ALCODEEND*/}

Expand All @@ -1173,7 +1173,7 @@
f_initialize();

//Collect live datasets
f_collectLiveDataSets();
f_collectGridConnectionLiveData();

if(energyModel.v_rapidRunData != null){
//Create rapid run data class used to collect rapid run data of other gc
Expand All @@ -1183,7 +1183,7 @@
v_rapidRunData.assetsMetaData = v_liveAssetsMetaData.getClone();

//Collect current totals
f_collectGridConnectionTotals();
f_collectGridConnectionRapidRunData();

//Calculate KPIs
f_calculateKPIs();
Expand Down Expand Up @@ -1265,27 +1265,28 @@

/*ALCODEEND*/}

double f_getTotalInstalledCapacityOfAssets()
double f_getTotalInstalledCapacityOfAssets_rapidRun()
{/*ALCODESTART::1740480839774*/
v_liveAssetsMetaData.totalInstalledWindPower_kW = 0.0;
v_liveAssetsMetaData.totalInstalledPVPower_kW = 0.0;
v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh = 0.0;
//Collect rapid run asset totals
v_rapidRunData.assetsMetaData.totalInstalledWindPower_kW = 0.0;
v_rapidRunData.assetsMetaData.totalInstalledPVPower_kW = 0.0;
v_rapidRunData.assetsMetaData.totalInstalledBatteryStorageCapacity_MWh = 0.0;

//Add all battery storage capacities of gc
for(GridConnection GC : c_memberGridConnections){
v_liveAssetsMetaData.totalInstalledWindPower_kW += GC.v_liveAssetsMetaData.totalInstalledWindPower_kW;
v_liveAssetsMetaData.totalInstalledPVPower_kW += GC.v_liveAssetsMetaData.totalInstalledPVPower_kW;
v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh += GC.v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh;
v_rapidRunData.assetsMetaData.totalInstalledWindPower_kW += GC.v_rapidRunData.assetsMetaData.totalInstalledWindPower_kW;
v_rapidRunData.assetsMetaData.totalInstalledPVPower_kW += GC.v_rapidRunData.assetsMetaData.totalInstalledPVPower_kW;
v_rapidRunData.assetsMetaData.totalInstalledBatteryStorageCapacity_MWh += GC.v_rapidRunData.assetsMetaData.totalInstalledBatteryStorageCapacity_MWh;
}

//Do this also for the 'child' coops
for(Agent a : c_coopMembers ) { // Take 'behind the meter' production and consumption!
if (a instanceof EnergyCoop) {
EnergyCoop EC = (EnergyCoop)a;
EC.f_getTotalInstalledCapacityOfAssets();
v_liveAssetsMetaData.totalInstalledWindPower_kW += EC.v_liveAssetsMetaData.totalInstalledWindPower_kW;
v_liveAssetsMetaData.totalInstalledPVPower_kW += EC.v_liveAssetsMetaData.totalInstalledPVPower_kW;
v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh += EC.v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh;
EC.f_getTotalInstalledCapacityOfAssets_rapidRun();
v_rapidRunData.assetsMetaData.totalInstalledWindPower_kW += EC.v_rapidRunData.assetsMetaData.totalInstalledWindPower_kW;
v_rapidRunData.assetsMetaData.totalInstalledPVPower_kW += EC.v_rapidRunData.assetsMetaData.totalInstalledPVPower_kW;
v_rapidRunData.assetsMetaData.totalInstalledBatteryStorageCapacity_MWh += EC.v_rapidRunData.assetsMetaData.totalInstalledBatteryStorageCapacity_MWh;
}
}
/*ALCODEEND*/}
Expand Down Expand Up @@ -1339,7 +1340,7 @@ HashSet<GridConnection> f_getAllChildCustomerGridConnections_recursion(HashSet<G

/*ALCODEEND*/}

double f_collectAssetSpecificEnergyFlows()
double f_collectAssetSpecificEnergyFlows_rapidRun()
{/*ALCODESTART::1740502128178*/
for (GridConnection gc : c_memberGridConnections) {
v_rapidRunData.acc_dailyAverageBaseloadElectricityConsumption_kW.add(gc.v_rapidRunData.acc_dailyAverageBaseloadElectricityConsumption_kW);
Expand All @@ -1355,7 +1356,6 @@ HashSet<GridConnection> f_getAllChildCustomerGridConnections_recursion(HashSet<G
v_rapidRunData.acc_dailyAverageBatteriesProduction_kW.add(gc.v_rapidRunData.acc_dailyAverageBatteriesProduction_kW);
v_rapidRunData.acc_dailyAverageCHPElectricityProduction_kW.add(gc.v_rapidRunData.acc_dailyAverageCHPElectricityProduction_kW);
v_rapidRunData.ts_dailyAverageBatteriesStoredEnergy_MWh.add(gc.v_rapidRunData.ts_dailyAverageBatteriesStoredEnergy_MWh);
v_rapidRunData.ts_dailyAverageBatteriesSOC_fr.add(gc.v_rapidRunData.ts_dailyAverageBatteriesSOC_fr);

v_rapidRunData.acc_summerWeekBaseloadElectricityConsumption_kW.add(gc.v_rapidRunData.acc_summerWeekBaseloadElectricityConsumption_kW);
v_rapidRunData.acc_summerWeekHeatPumpElectricityConsumption_kW.add(gc.v_rapidRunData.acc_summerWeekHeatPumpElectricityConsumption_kW);
Expand All @@ -1370,7 +1370,6 @@ HashSet<GridConnection> f_getAllChildCustomerGridConnections_recursion(HashSet<G
v_rapidRunData.acc_summerWeekBatteriesProduction_kW.add(gc.v_rapidRunData.acc_summerWeekBatteriesProduction_kW);
v_rapidRunData.acc_summerWeekCHPElectricityProduction_kW.add(gc.v_rapidRunData.acc_summerWeekCHPElectricityProduction_kW );
v_rapidRunData.ts_summerWeekBatteriesStoredEnergy_MWh.add(gc.v_rapidRunData.ts_summerWeekBatteriesStoredEnergy_MWh);
v_rapidRunData.ts_summerWeekBatteriesSOC_fr.add(gc.v_rapidRunData.ts_summerWeekBatteriesSOC_fr);

v_rapidRunData.acc_winterWeekBaseloadElectricityConsumption_kW.add(gc.v_rapidRunData.acc_winterWeekBaseloadElectricityConsumption_kW);
v_rapidRunData.acc_winterWeekHeatPumpElectricityConsumption_kW.add(gc.v_rapidRunData.acc_winterWeekHeatPumpElectricityConsumption_kW);
Expand All @@ -1385,13 +1384,11 @@ HashSet<GridConnection> f_getAllChildCustomerGridConnections_recursion(HashSet<G
v_rapidRunData.acc_winterWeekBatteriesProduction_kW.add(gc.v_rapidRunData.acc_winterWeekBatteriesProduction_kW);
v_rapidRunData.acc_winterWeekCHPElectricityProduction_kW.add(gc.v_rapidRunData.acc_winterWeekCHPElectricityProduction_kW);
v_rapidRunData.ts_winterWeekBatteriesStoredEnergy_MWh.add(gc.v_rapidRunData.ts_winterWeekBatteriesStoredEnergy_MWh);
v_rapidRunData.ts_winterWeekBatteriesSOC_fr.add(gc.v_rapidRunData.ts_winterWeekBatteriesSOC_fr);


}

/*ALCODEEND*/}

double f_collectLiveDataSets()
double f_collectGridConnectionLiveData()
{/*ALCODESTART::1740502128180*/
ArrayList<GridConnection> gcList = f_getAllChildMemberGridConnections();

Expand Down Expand Up @@ -1494,6 +1491,13 @@ HashSet<GridConnection> f_getAllChildCustomerGridConnections_recursion(HashSet<G
v_liveData.data_batteryStoredEnergyLiveWeek_MWh.add(timeAxisValue, batteryStoredEnergyLiveWeek_MWh);
}


//Calculate cumulative asset capacities
f_getTotalInstalledCapacityOfAssets_live();

//Recalculate SOC ts for energycoop
f_recalculateSOCDataSet_live();

/*ALCODEEND*/}

double f_rapidRunDataLogging()
Expand Down Expand Up @@ -1685,3 +1689,91 @@ HashSet<GridConnection> f_getAllChildCustomerGridConnections_recursion(HashSet<G
}
/*ALCODEEND*/}

double f_recalculateSOC_rapidrun()
{/*ALCODESTART::1744211126429*/
double[] dailyAverageBatteriesSOC_fr = new double[v_rapidRunData.ts_dailyAverageBatteriesSOC_fr.getLength()];
double[] summerWeekBatteriesSOC_fr = new double[v_rapidRunData.ts_summerWeekBatteriesSOC_fr.getLength()];
double[] winterWeekBatteriesSOC_fr = new double[v_rapidRunData.ts_winterWeekBatteriesSOC_fr.getLength()];

double totalInstalledBatteryStorageCapacity_MWh = v_rapidRunData.assetsMetaData.totalInstalledBatteryStorageCapacity_MWh;

//Total
for(int i = 0; i < v_rapidRunData.ts_dailyAverageBatteriesStoredEnergy_MWh.getLength() ; i++){
if(totalInstalledBatteryStorageCapacity_MWh > 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
v_liveAssetsMetaData.totalInstalledWindPower_kW = 0.0;
v_liveAssetsMetaData.totalInstalledPVPower_kW = 0.0;
v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh = 0.0;

//Add all battery storage capacities of gc
for(GridConnection GC : c_memberGridConnections){
v_liveAssetsMetaData.totalInstalledWindPower_kW += GC.v_liveAssetsMetaData.totalInstalledWindPower_kW;
v_liveAssetsMetaData.totalInstalledPVPower_kW += GC.v_liveAssetsMetaData.totalInstalledPVPower_kW;
v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh += GC.v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh;
}

//Do this also for the 'child' coops
for(Agent a : c_coopMembers ) { // Take 'behind the meter' production and consumption!
if (a instanceof EnergyCoop) {
EnergyCoop EC = (EnergyCoop)a;
EC.f_getTotalInstalledCapacityOfAssets_live();
v_liveAssetsMetaData.totalInstalledWindPower_kW += EC.v_liveAssetsMetaData.totalInstalledWindPower_kW;
v_liveAssetsMetaData.totalInstalledPVPower_kW += EC.v_liveAssetsMetaData.totalInstalledPVPower_kW;
v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh += EC.v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh;
}
}
/*ALCODEEND*/}

double f_recalculateSOCDataSet_live()
{/*ALCODESTART::1744271942642*/
double totalInstalledBatteryStorageCapacity_MWh = v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh;


double currentSOC = 0;
int liveWeekSize = v_liveData.data_batteryStoredEnergyLiveWeek_MWh.size();

for (int i=0; i < liveWeekSize; i++){
if(totalInstalledBatteryStorageCapacity_MWh > 0){
currentSOC = v_liveData.data_batteryStoredEnergyLiveWeek_MWh.getY(i)/totalInstalledBatteryStorageCapacity_MWh;
}
else{
currentSOC = 0;
}
v_liveData.data_batterySOC_fr.add(v_liveData.data_batteryStoredEnergyLiveWeek_MWh.getX(i), currentSOC);
}
/*ALCODEEND*/}

78 changes: 63 additions & 15 deletions _alp/Agents/EnergyCoop/Code/Functions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -347,9 +347,9 @@
<ReturnModificator>VOID</ReturnModificator>
<ReturnType>double</ReturnType>
<Id>1739970817879</Id>
<Name><![CDATA[f_collectGridConnectionTotals]]></Name>
<X>890</X>
<Y>100</Y>
<Name><![CDATA[f_collectGridConnectionRapidRunData]]></Name>
<X>970</X>
<Y>170</Y>
<Label>
<X>10</X>
<Y>0</Y>
Expand All @@ -364,7 +364,7 @@
<ReturnType>double</ReturnType>
<Id>1739974426481</Id>
<Name><![CDATA[f_initializeCustomCoop]]></Name>
<X>880</X>
<X>960</X>
<Y>80</Y>
<Label>
<X>10</X>
Expand Down Expand Up @@ -431,9 +431,9 @@
<ReturnModificator>VOID</ReturnModificator>
<ReturnType>double</ReturnType>
<Id>1740480839774</Id>
<Name><![CDATA[f_getTotalInstalledCapacityOfAssets]]></Name>
<X>1420</X>
<Y>420</Y>
<Name><![CDATA[f_getTotalInstalledCapacityOfAssets_rapidRun]]></Name>
<X>990</X>
<Y>210</Y>
<Label>
<X>10</X>
<Y>0</Y>
Expand Down Expand Up @@ -521,9 +521,9 @@
<ReturnModificator>VOID</ReturnModificator>
<ReturnType>double</ReturnType>
<Id>1740502128178</Id>
<Name><![CDATA[f_collectAssetSpecificEnergyFlows]]></Name>
<X>910</X>
<Y>120</Y>
<Name><![CDATA[f_collectAssetSpecificEnergyFlows_rapidRun]]></Name>
<X>990</X>
<Y>190</Y>
<Label>
<X>10</X>
<Y>0</Y>
Expand All @@ -537,9 +537,9 @@
<ReturnModificator>VOID</ReturnModificator>
<ReturnType>double</ReturnType>
<Id>1740502128180</Id>
<Name><![CDATA[f_collectLiveDataSets]]></Name>
<X>890</X>
<Y>140</Y>
<Name><![CDATA[f_collectGridConnectionLiveData]]></Name>
<X>970</X>
<Y>100</Y>
<Label>
<X>10</X>
<Y>0</Y>
Expand Down Expand Up @@ -570,8 +570,56 @@
<ReturnType>double</ReturnType>
<Id>1742569887460</Id>
<Name><![CDATA[f_connectCoopBattery]]></Name>
<X>890</X>
<Y>160</Y>
<X>970</X>
<Y>260</Y>
<Label>
<X>10</X>
<Y>0</Y>
</Label>
<PublicFlag>false</PublicFlag>
<PresentationFlag>true</PresentationFlag>
<ShowLabel>true</ShowLabel>
<Body xmlns:al="http://anylogic.com"/>
</Function>
<Function AccessType="default" StaticFunction="false">
<ReturnModificator>VOID</ReturnModificator>
<ReturnType>double</ReturnType>
<Id>1744211126429</Id>
<Name><![CDATA[f_recalculateSOC_rapidrun]]></Name>
<X>990</X>
<Y>230</Y>
<Label>
<X>10</X>
<Y>0</Y>
</Label>
<PublicFlag>false</PublicFlag>
<PresentationFlag>true</PresentationFlag>
<ShowLabel>true</ShowLabel>
<Body xmlns:al="http://anylogic.com"/>
</Function>
<Function AccessType="default" StaticFunction="false">
<ReturnModificator>VOID</ReturnModificator>
<ReturnType>double</ReturnType>
<Id>1744211359139</Id>
<Name><![CDATA[f_getTotalInstalledCapacityOfAssets_live]]></Name>
<X>990</X>
<Y>120</Y>
<Label>
<X>10</X>
<Y>0</Y>
</Label>
<PublicFlag>false</PublicFlag>
<PresentationFlag>true</PresentationFlag>
<ShowLabel>true</ShowLabel>
<Body xmlns:al="http://anylogic.com"/>
</Function>
<Function AccessType="default" StaticFunction="false">
<ReturnModificator>VOID</ReturnModificator>
<ReturnType>double</ReturnType>
<Id>1744271942642</Id>
<Name><![CDATA[f_recalculateSOCDataSet_live]]></Name>
<X>990</X>
<Y>140</Y>
<Label>
<X>10</X>
<Y>0</Y>
Expand Down
25 changes: 0 additions & 25 deletions _alp/Agents/EnergyCoop/Levels/Level.level.xml
Original file line number Diff line number Diff line change
Expand Up @@ -209,31 +209,6 @@
</Font>
<Alignment>CENTER</Alignment>
</Text>
<Text>
<Id>1740403771886</Id>
<Name><![CDATA[txt_cumulativeAssetCapacities]]></Name>
<X>1410</X>
<Y>390</Y>
<Label>
<X>0</X>
<Y>-10</Y>
</Label>
<PublicFlag>true</PublicFlag>
<PresentationFlag>true</PresentationFlag>
<ShowLabel>false</ShowLabel>
<DrawMode>SHAPE_DRAW_2D</DrawMode>
<EmbeddedIcon>false</EmbeddedIcon>
<Z>0</Z>
<Rotation>0.0</Rotation>
<Color>-16777216</Color>
<Text><![CDATA[Cumulative asset capacities]]></Text>
<Font>
<Name><![CDATA[SansSerif]]></Name>
<Size>12</Size>
<Style>1</Style>
</Font>
<Alignment>LEFT</Alignment>
</Text>
<Text>
<Id>1740403817351</Id>
<Name><![CDATA[txt_cumulativeIndividualGCValues]]></Name>
Expand Down
Loading