From c39f767b12e8bbb0de306d706f67237fa57ac4e0 Mon Sep 17 00:00:00 2001 From: Ate Hempenius Date: Wed, 30 Apr 2025 17:08:01 +0200 Subject: [PATCH] Bugfix voor de energycarriers boekhouding in het model Tijdens de model simulatie het is nu mogelijk om compleet nieuwe energy carriers toe te voegen. Door middel van bijvoorbeeld het toevoegen van een waterstof auto voordat er waterstof consumptie was. Verder andere boekhouding bugs opgelost. --- .../ConnectionOwner/AOC.ConnectionOwner.xml | 3 - _alp/Agents/EnergyCoop/Code/Functions.java | 27 +++++-- _alp/Agents/EnergyModel/Code/Functions.java | 47 +++++++----- _alp/Agents/EnergyModel/Code/Functions.xml | 22 +++++- .../Agents/GCNeighborhood/Code/Functions.java | 42 +++++++---- .../Agents/GridConnection/Code/Functions.java | 73 ++++++++++++------- _alp/Classes/Class.J_RapidRunData.java | 62 ++++++++-------- 7 files changed, 177 insertions(+), 99 deletions(-) diff --git a/_alp/Agents/ConnectionOwner/AOC.ConnectionOwner.xml b/_alp/Agents/ConnectionOwner/AOC.ConnectionOwner.xml index 2c32c145..fe077c75 100644 --- a/_alp/Agents/ConnectionOwner/AOC.ConnectionOwner.xml +++ b/_alp/Agents/ConnectionOwner/AOC.ConnectionOwner.xml @@ -20,9 +20,6 @@ - - - diff --git a/_alp/Agents/EnergyCoop/Code/Functions.java b/_alp/Agents/EnergyCoop/Code/Functions.java index ccb966f7..985872a7 100644 --- a/_alp/Agents/EnergyCoop/Code/Functions.java +++ b/_alp/Agents/EnergyCoop/Code/Functions.java @@ -1514,9 +1514,14 @@ HashSet f_getAllChildCustomerGridConnections_recursion(HashSet f_getAllChildCustomerGridConnections_recursion(HashSet f_getAllChildCustomerGridConnections_recursion(HashSet f_getGridConnections() f_initializeLiveDataSets(); -//v_rapidRunData.initializeAccumulators(p_runEndTime_h - p_runStartTime_h, p_timeStep_h, v_activeEnergyCarriers, v_activeConsumptionEnergyCarriers, v_activeProductionEnergyCarriers); //f_initializeAccumulators(); //f_initializeAccumulators(); // Use parallelisation? @@ -1794,28 +1793,19 @@ EnergyCoop f_removeEnergyCoop(EnergyCoop energyCoop) /*ALCODEEND*/} -EnergyCoop f_addEnergyCarrier(OL_EnergyCarriers EC) +EnergyCoop f_addConsumptionEnergyCarrier(OL_EnergyCarriers EC) {/*ALCODESTART::1740056275008*/ v_activeEnergyCarriers.add(EC); +v_activeConsumptionEnergyCarriers.add(EC); DataSet dsDemand = new DataSet( (int)(168 / p_timeStep_h) ); -DataSet dsSupply = new DataSet( (int)(168 / p_timeStep_h) ); + double startTime = v_liveData.dsm_liveDemand_kW.get(OL_EnergyCarriers.ELECTRICITY).getXMin(); double endTime = v_liveData.dsm_liveDemand_kW.get(OL_EnergyCarriers.ELECTRICITY).getXMax(); for (double t = startTime; t <= endTime; t += p_timeStep_h) { dsDemand.add( t, 0); - dsSupply.add( t, 0); } v_liveData.dsm_liveDemand_kW.put( EC, dsDemand); -v_liveData.dsm_liveSupply_kW.put( EC, dsSupply); -/* -dsm_dailyAverageDemandDataSets_kW.put( EC, new DataSet(365)); -dsm_dailyAverageSupplyDataSets_kW.put( EC, new DataSet(365)); -dsm_summerWeekDemandDataSets_kW.put( EC, new DataSet( (int)(168 / p_timeStep_h))); -dsm_summerWeekSupplyDataSets_kW.put( EC, new DataSet( (int)(168 / p_timeStep_h))); -dsm_winterWeekDemandDataSets_kW.put( EC, new DataSet( (int)(168 / p_timeStep_h))); -dsm_winterWeekSupplyDataSets_kW.put( EC, new DataSet( (int)(168 / p_timeStep_h))); -*/ /*ALCODEEND*/} double f_rapidRunDataLogging() @@ -1853,8 +1843,13 @@ EnergyCoop f_addEnergyCarrier(OL_EnergyCarriers EC) for (OL_EnergyCarriers EC : v_activeEnergyCarriers) { double currentBalance_kW = fm_currentBalanceFlows_kW.get(EC); - v_rapidRunData.am_daytimeImports_kW.get(EC).addStep(max( 0, currentBalance_kW )); - v_rapidRunData.am_daytimeExports_kW.get(EC).addStep(max( 0, -currentBalance_kW )); + + if(v_activeConsumptionEnergyCarriers.contains(EC)){ + v_rapidRunData.am_daytimeImports_kW.get(EC).addStep(max( 0, currentBalance_kW )); + } + if(v_activeProductionEnergyCarriers.contains(EC)){ + v_rapidRunData.am_daytimeExports_kW.get(EC).addStep(max( 0, -currentBalance_kW )); + } } v_rapidRunData.acc_daytimeElectricityProduction_kW.addStep(fm_currentProductionFlows_kW.get(OL_EnergyCarriers.ELECTRICITY) ); @@ -1869,8 +1864,12 @@ EnergyCoop f_addEnergyCarrier(OL_EnergyCarriers EC) if (!b_isWeekday) { // for (OL_EnergyCarriers EC : v_activeEnergyCarriers) { double currentBalance_kW = fm_currentBalanceFlows_kW.get(EC); - v_rapidRunData.am_weekendImports_kW.get(EC).addStep(max( 0, currentBalance_kW )); - v_rapidRunData.am_weekendExports_kW.get(EC).addStep(max( 0, -currentBalance_kW )); + if(v_activeConsumptionEnergyCarriers.contains(EC)){ + v_rapidRunData.am_weekendImports_kW.get(EC).addStep(max( 0, currentBalance_kW )); + } + if(v_activeProductionEnergyCarriers.contains(EC)){ + v_rapidRunData.am_weekendExports_kW.get(EC).addStep(max( 0, -currentBalance_kW )); + } } v_rapidRunData.acc_weekendElectricityProduction_kW.addStep(fm_currentProductionFlows_kW.get(OL_EnergyCarriers.ELECTRICITY) ); @@ -2026,3 +2025,17 @@ EnergyCoop f_addEnergyCarrier(OL_EnergyCarriers EC) /*ALCODEEND*/} +EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC) +{/*ALCODESTART::1746021439807*/ +v_activeEnergyCarriers.add(EC); +v_activeProductionEnergyCarriers.add(EC); + +DataSet dsSupply = new DataSet( (int)(168 / p_timeStep_h) ); +double startTime = v_liveData.dsm_liveDemand_kW.get(OL_EnergyCarriers.ELECTRICITY).getXMin(); +double endTime = v_liveData.dsm_liveDemand_kW.get(OL_EnergyCarriers.ELECTRICITY).getXMax(); +for (double t = startTime; t <= endTime; t += p_timeStep_h) { + dsSupply.add( t, 0); +} +v_liveData.dsm_liveSupply_kW.put( EC, dsSupply); +/*ALCODEEND*/} + diff --git a/_alp/Agents/EnergyModel/Code/Functions.xml b/_alp/Agents/EnergyModel/Code/Functions.xml index 555e35b8..22807629 100644 --- a/_alp/Agents/EnergyModel/Code/Functions.xml +++ b/_alp/Agents/EnergyModel/Code/Functions.xml @@ -634,7 +634,7 @@ VOID EnergyCoop 1740056275008 - + 1680 580