Skip to content

Commit 09ea7a6

Browse files
authored
Merge pull request #143 from Zenmo/DayOfWeek1stJan_and_summer_winter_week_numbers
Day of week1st jan and summer winter week numbers and enabled looping live-sim
2 parents c4470fd + 243d5af commit 09ea7a6

File tree

6 files changed

+70
-19
lines changed

6 files changed

+70
-19
lines changed

_alp/Agents/EnergyDataViewer/Code/Functions.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@
308308
{/*ALCODESTART::1741792546539*/
309309
//========== SUMMER WEEK ==========//
310310
// Consumption
311-
double summerWeekStartTime_h = energyModel.p_startHourSummerWeek - energyModel.p_runStartTime_h;
311+
double summerWeekStartTime_h = energyModel.p_startOfSummerWeek_h - energyModel.p_runStartTime_h;
312312
dsm_summerWeekConsumptionDataSets_kW = data.getRapidRunData().am_summerWeekConsumptionAccumulators_kW.getDataSetMap(summerWeekStartTime_h);
313313
v_dataElectricityBaseloadConsumptionSummerWeek_kW = data.getRapidRunData().acc_summerWeekBaseloadElectricityConsumption_kW.getDataSet(summerWeekStartTime_h);
314314
v_dataElectricityForHeatConsumptionSummerWeek_kW = data.getRapidRunData().acc_summerWeekHeatPumpElectricityConsumption_kW.getDataSet(summerWeekStartTime_h);
@@ -345,7 +345,7 @@
345345

346346
//========== WINTER WEEK ==========//
347347
// Consumption
348-
double winterWeekStartTime_h = energyModel.p_startHourWinterWeek - energyModel.p_runStartTime_h;
348+
double winterWeekStartTime_h = energyModel.p_startOfWinterWeek_h - energyModel.p_runStartTime_h;
349349
dsm_winterWeekConsumptionDataSets_kW = data.getRapidRunData().am_winterWeekConsumptionAccumulators_kW.getDataSetMap(winterWeekStartTime_h);
350350
v_dataElectricityBaseloadConsumptionWinterWeek_kW = data.getRapidRunData().acc_winterWeekBaseloadElectricityConsumption_kW.getDataSet(winterWeekStartTime_h);
351351
v_dataElectricityForHeatConsumptionWinterWeek_kW = data.getRapidRunData().acc_winterWeekHeatPumpElectricityConsumption_kW.getDataSet(winterWeekStartTime_h);

_alp/Agents/EnergyModel/AOC.EnergyModel.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ v_liveData.assetsMetaData = v_liveAssetsMetaData;]]></StartupCode>
319319
<PresentationFlag>true</PresentationFlag>
320320
<ShowLabel>true</ShowLabel>
321321
<InterpolationMethod>LINEAR</InterpolationMethod>
322-
<OutOfRangeBehaviour>NEAREST</OutOfRangeBehaviour>
322+
<OutOfRangeBehaviour>REPEATING</OutOfRangeBehaviour>
323323
<OutOfRangeCustomValue>0.0</OutOfRangeCustomValue>
324324
<ApproximationOrder>1</ApproximationOrder>
325325
<LoadFromDatabase>false</LoadFromDatabase>
@@ -350,7 +350,7 @@ v_liveData.assetsMetaData = v_liveAssetsMetaData;]]></StartupCode>
350350
<PresentationFlag>true</PresentationFlag>
351351
<ShowLabel>true</ShowLabel>
352352
<InterpolationMethod>LINEAR</InterpolationMethod>
353-
<OutOfRangeBehaviour>NEAREST</OutOfRangeBehaviour>
353+
<OutOfRangeBehaviour>REPEATING</OutOfRangeBehaviour>
354354
<OutOfRangeCustomValue>0.0</OutOfRangeCustomValue>
355355
<ApproximationOrder>1</ApproximationOrder>
356356
<LoadFromDatabase>false</LoadFromDatabase>
@@ -380,7 +380,7 @@ v_liveData.assetsMetaData = v_liveAssetsMetaData;]]></StartupCode>
380380
<PresentationFlag>true</PresentationFlag>
381381
<ShowLabel>true</ShowLabel>
382382
<InterpolationMethod>LINEAR</InterpolationMethod>
383-
<OutOfRangeBehaviour>NEAREST</OutOfRangeBehaviour>
383+
<OutOfRangeBehaviour>REPEATING</OutOfRangeBehaviour>
384384
<OutOfRangeCustomValue>0.0</OutOfRangeCustomValue>
385385
<ApproximationOrder>1</ApproximationOrder>
386386
<LoadFromDatabase>false</LoadFromDatabase>

_alp/Agents/EnergyModel/Code/Functions.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -401,8 +401,8 @@ null, roundToDecimal( a.v_electricityImported_kWh-a.v_electricityExported_kWh, 2
401401
{/*ALCODESTART::1664952601107*/
402402
b_isDaytime = t_h % 24 > 6 && t_h % 24 < 18;
403403
b_isWeekday = (t_h+(v_dayOfWeek1jan-1)*24) % (24*7) < (24*5);
404-
b_isSummerWeek = (t_h % 8760) >= p_startHourSummerWeek && (t_h % 8760) < p_startHourSummerWeek + 24*7;
405-
b_isWinterWeek = (t_h % 8760) >= p_startHourWinterWeek && (t_h % 8760) < p_startHourWinterWeek + 24*7;
404+
b_isSummerWeek = (t_h % 8760) >= p_startOfSummerWeek_h && (t_h % 8760) < p_startOfSummerWeek_h + 24*7;
405+
b_isWinterWeek = (t_h % 8760) >= p_startOfWinterWeek_h && (t_h % 8760) < p_startOfWinterWeek_h + 24*7;
406406
b_isLastTimeStepOfDay = t_h % 24 == (24-p_timeStep_h);
407407
t_hourOfDay = t_h % 24; // Assumes modelrun starts at midnight.
408408

@@ -1368,9 +1368,17 @@ null, roundToDecimal( a.v_electricityImported_kWh-a.v_electricityExported_kWh, 2
13681368

13691369
double f_runTimestep()
13701370
{/*ALCODESTART::1701162826549*/
1371-
// Update tijdreeksen in leesbare variabelen
13721371
t_h = p_runStartTime_h + v_timeStepsElapsed * p_timeStep_h;// + v_hourOfYearStart);// % 8760;
13731372

1373+
// Reduce startdate after one year, loop all dat
1374+
if(t_h-p_runStartTime_h!=0.0 && (t_h-p_runStartTime_h) % 8760 == 0.0) {
1375+
Date startDate = getExperiment().getEngine().getStartDate();
1376+
startDate.setYear(startDate.getYear()-1);
1377+
getExperiment().getEngine().setStartDate(startDate);
1378+
traceln("Reduced anylogic date by one year, looping all data");
1379+
}
1380+
1381+
// Update tijdreeksen in leesbare variabelen
13741382
f_updateTimeseries(t_h);
13751383

13761384
// Operate assets on each gridConnection
@@ -1464,6 +1472,9 @@ ArrayList<GridConnection> f_getGridConnections()
14641472

14651473
LocalDate localDate = LocalDate.of(p_year, 1, 1);
14661474
v_dayOfWeek1jan = DayOfWeek.from(localDate).getValue();
1475+
p_startOfWinterWeek_h = roundToInt(24 * (p_winterWeekNumber * 7 + (8-v_dayOfWeek1jan)%7)); // Week 49 is winterweek.
1476+
p_startOfSummerWeek_h = roundToInt(24 * (p_summerWeekNumber * 7 + (8-v_dayOfWeek1jan)%7)); // Week 18 is summerweek.
1477+
14671478

14681479
Date startDate = date();
14691480

_alp/Agents/EnergyModel/Variables.xml

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1464,7 +1464,7 @@
14641464
<Id>1731422704613</Id>
14651465
<Name><![CDATA[b_isSummerWeek]]></Name>
14661466
<X>680</X>
1467-
<Y>758</Y>
1467+
<Y>800</Y>
14681468
<Label>
14691469
<X>10</X>
14701470
<Y>0</Y>
@@ -1486,7 +1486,7 @@
14861486
<Id>1731422714256</Id>
14871487
<Name><![CDATA[b_isWinterWeek]]></Name>
14881488
<X>680</X>
1489-
<Y>778</Y>
1489+
<Y>820</Y>
14901490
<Label>
14911491
<X>10</X>
14921492
<Y>0</Y>
@@ -1508,7 +1508,7 @@
15081508
<Id>1731422900385</Id>
15091509
<Name><![CDATA[b_isLastTimeStepOfDay]]></Name>
15101510
<X>680</X>
1511-
<Y>798</Y>
1511+
<Y>840</Y>
15121512
<Label>
15131513
<X>10</X>
15141514
<Y>0</Y>
@@ -1712,6 +1712,44 @@
17121712
<Type><![CDATA[J_ConnectionMetaData]]></Type>
17131713
</Properties>
17141714
</Variable>
1715+
<Variable Class="PlainVariable">
1716+
<Id>1744272354153</Id>
1717+
<Name><![CDATA[p_startOfWinterWeek_h]]></Name>
1718+
<X>680</X>
1719+
<Y>780</Y>
1720+
<Label>
1721+
<X>10</X>
1722+
<Y>0</Y>
1723+
</Label>
1724+
<PublicFlag>false</PublicFlag>
1725+
<PresentationFlag>true</PresentationFlag>
1726+
<ShowLabel>true</ShowLabel>
1727+
<Properties SaveInSnapshot="true"
1728+
Constant="false"
1729+
AccessType="public"
1730+
StaticVariable="false">
1731+
<Type><![CDATA[int]]></Type>
1732+
</Properties>
1733+
</Variable>
1734+
<Variable Class="PlainVariable">
1735+
<Id>1744272373654</Id>
1736+
<Name><![CDATA[p_startOfSummerWeek_h]]></Name>
1737+
<X>680</X>
1738+
<Y>760</Y>
1739+
<Label>
1740+
<X>10</X>
1741+
<Y>0</Y>
1742+
</Label>
1743+
<PublicFlag>false</PublicFlag>
1744+
<PresentationFlag>true</PresentationFlag>
1745+
<ShowLabel>true</ShowLabel>
1746+
<Properties SaveInSnapshot="true"
1747+
Constant="false"
1748+
AccessType="public"
1749+
StaticVariable="false">
1750+
<Type><![CDATA[int]]></Type>
1751+
</Properties>
1752+
</Variable>
17151753
<Variable Class="Parameter">
17161754
<Id>1658496701675</Id>
17171755
<Name><![CDATA[p_timeStep_h]]></Name>
@@ -2008,7 +2046,7 @@
20082046
</Variable>
20092047
<Variable Class="Parameter">
20102048
<Id>1699275323339</Id>
2011-
<Name><![CDATA[p_startHourWinterWeek]]></Name>
2049+
<Name><![CDATA[p_winterWeekNumber]]></Name>
20122050
<X>680</X>
20132051
<Y>578</Y>
20142052
<Label>
@@ -2023,7 +2061,7 @@
20232061
<UnitType>NONE</UnitType>
20242062
<SdArray>false</SdArray>
20252063
<DefaultValue Class="CodeValue">
2026-
<Code><![CDATA[8256]]></Code>
2064+
<Code><![CDATA[49]]></Code>
20272065
</DefaultValue>
20282066
<ParameterEditor>
20292067
<Id>1699275323337</Id>
@@ -2036,7 +2074,7 @@
20362074
</Variable>
20372075
<Variable Class="Parameter">
20382076
<Id>1699275323347</Id>
2039-
<Name><![CDATA[p_startHourSummerWeek]]></Name>
2077+
<Name><![CDATA[p_summerWeekNumber]]></Name>
20402078
<X>680</X>
20412079
<Y>598</Y>
20422080
<Label>
@@ -2051,7 +2089,7 @@
20512089
<UnitType>NONE</UnitType>
20522090
<SdArray>false</SdArray>
20532091
<DefaultValue Class="CodeValue">
2054-
<Code><![CDATA[3048]]></Code>
2092+
<Code><![CDATA[18]]></Code>
20552093
</DefaultValue>
20562094
<ParameterEditor>
20572095
<Id>1699275323345</Id>

_alp/Classes/Class.J_EAProfile.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class J_EAProfile extends zero_engine.J_EA implements Serializable {
1313
//protected double outputTemperature_degC;
1414
public double loadLoad_kWh = 0;
1515
private double profileScaling_fr = 1;
16-
16+
private boolean enableProfileLooping = true;
1717

1818
/**
1919
* Default constructor
@@ -76,7 +76,9 @@ public void f_updateAllFlows(double time_h) {
7676
@Override
7777
//public Pair<J_FlowsMap, Double> operate(double time_h) {
7878
public void operate(double time_h) {
79-
if ( (int)floor(time_h/profileTimestep_h) >= a_energyProfile_kWh.length ) {
79+
if (enableProfileLooping && time_h >= a_energyProfile_kWh.length * profileTimestep_h) {
80+
time_h = time_h % a_energyProfile_kWh.length * profileTimestep_h;
81+
} else if ( (int)floor(time_h/profileTimestep_h) >= a_energyProfile_kWh.length ) {
8082
traceln("Time out of upper bound for evaluating J_EAProfile power in profile asset %s!", this.energyAssetName);
8183
// time_h = a_energyProfile_kWh.length * profileTimestep_h - 1;
8284
throw new RuntimeException(String.format("Time out of upper bound for evaluating J_EAProfile power! Time is: %s", time_h));

_alp/Classes/Class.J_LoadDurationCurves.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,11 @@ public void calculateLoadDurationCurves(double[] loadArray_kW) {
7272
ds_previousLoadDurationCurveTotal_kW.add(i*energyModel.p_timeStep_h,ds_loadDurationCurveTotal_kW.getY(i));
7373
}
7474
// summer/winter
75-
if (energyModel.p_runStartTime_h + i*energyModel.p_timeStep_h > energyModel.p_startHourSummerWeek && energyModel.p_runStartTime_h + i*energyModel.p_timeStep_h<= energyModel.p_startHourSummerWeek+24*7) {
75+
if (energyModel.p_runStartTime_h + i*energyModel.p_timeStep_h > energyModel.p_startOfSummerWeek_h && energyModel.p_runStartTime_h + i*energyModel.p_timeStep_h<= energyModel.p_startOfSummerWeek_h+24*7) {
7676
netLoadArraySummerweek_kW[i_summer]=-netLoadArrayAnnual_kW[i];
7777
i_summer++;
7878
}
79-
if (energyModel.p_runStartTime_h + i*energyModel.p_timeStep_h > energyModel.p_startHourWinterWeek && energyModel.p_runStartTime_h + i*energyModel.p_timeStep_h<= energyModel.p_startHourWinterWeek+24*7) {
79+
if (energyModel.p_runStartTime_h + i*energyModel.p_timeStep_h > energyModel.p_startOfWinterWeek_h && energyModel.p_runStartTime_h + i*energyModel.p_timeStep_h<= energyModel.p_startOfWinterWeek_h+24*7) {
8080
netLoadArrayWinterweek_kW[i_winter]=-netLoadArrayAnnual_kW[i];
8181
i_winter++;
8282
}

0 commit comments

Comments
 (0)