Skip to content

Commit 64c9cfb

Browse files
authored
Merge pull request #4487 from lbl-srg/maint_11.x_issue4480_integerRounding
improved ill-posed integer rounding (maint_11.x)
2 parents a134dbe + 238365f commit 64c9cfb

25 files changed

Lines changed: 136 additions & 120 deletions

File tree

Buildings/BoundaryConditions/WeatherData/BaseClasses/PartialConvertTime.mo

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,24 @@ protected
1616
parameter Boolean canRepeatWeatherFile = abs(mod(lenWea, 365*24*3600)) < 1E-2
1717
"=true, if the weather file can be repeated, since it has the length of a year or a multiple of it";
1818

19-
discrete Modelica.Units.SI.Time tNext(start=0, fixed=true)
19+
discrete Modelica.Units.SI.Time tNext
2020
"Start time of next period";
2121

22+
Integer k "Period index";
23+
24+
initial equation
25+
k = integer(modTimAux/lenWea)+1;
26+
tNext = if canRepeatWeatherFile then k * lenWea else time;
27+
2228
equation
23-
when {initial(), canRepeatWeatherFile and modTimAux > pre(tNext)} then
24-
// simulation time stamp went over the end time of the weather file
25-
//(last time stamp of the weather file + average increment)
26-
tNext = if canRepeatWeatherFile then integer(modTimAux/lenWea)*lenWea + lenWea else time;
29+
// simulation time stamp went over the end time of the weather file
30+
// (last time stamp of the weather file + average increment)
31+
when (canRepeatWeatherFile and modTimAux > pre(tNext)) then
32+
k = pre(k) + 1;
33+
tNext = k * lenWea;
2734
end when;
28-
calTimAux = if canRepeatWeatherFile then modTimAux - tNext + lenWea else modTimAux;
2935

36+
calTimAux = if canRepeatWeatherFile then modTimAux - tNext + lenWea else modTimAux;
3037

3138
annotation (
3239
defaultComponentName="conTim",
@@ -38,6 +45,11 @@ or a multiple of it, if this is the length of the weather file.
3845
</html>", revisions="<html>
3946
<ul>
4047
<li>
48+
February 18, 2026, by Jianjun Hu:<br/>
49+
Improved ill-posed integer rounding.<br/>
50+
This is for <a href=\"https://github.com/lbl-srg/modelica-buildings/issues/4480\">#4480</a>.
51+
</li>
52+
<li>
4153
March 27, 2023, by Ettore Zanetti:<br/>
4254
Added partial class for conversion from simulation time to calendar time, to be
4355
used by solar models that require calendar time for calculations.<br/>

Buildings/Resources/ReferenceResults/Dymola/Buildings_Air_Systems_SingleZone_VAV_Examples_Guideline36.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
last-generated=2023-06-16
1+
last-generated=2026-04-02
22
statistics-initialization=
33
{
44
"linear": "19",
@@ -7,7 +7,7 @@ statistics-initialization=
77
}
88
statistics-simulation=
99
{
10-
"linear": "11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0",
10+
"linear": "0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0",
1111
"nonlinear": "2",
1212
"number of continuous time states": "77",
1313
"numerical Jacobians": "0"

Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_Predictors_Examples_BESTEST.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
last-generated=2024-06-04
1+
last-generated=2026-04-02
22
statistics-initialization=
33
{
44
"nonlinear": "1, 1, 1, 1, 1, 1, 13",
@@ -12,6 +12,6 @@ statistics-simulation=
1212
"numerical Jacobians": "0"
1313
}
1414
time=[0e+00, 2.6784e+06]
15-
preErr.u1=[0e+00, 0e+00, 0e+00, 0e+00, 2.303678955078125e+03, 0e+00, 1.337272705078125e+03, 1.572665649414062e+03, 0e+00, 4.09544921875e+02, 2.92858203125e+03, 5.131741333007812e+02, -4.333637237548828e+00, 2.174172119140625e+03, 5.17844482421875e+02, 7.055908966064453e+01, 1.313465698242188e+03, 1.617517700195312e+03, 3.731184387207031e+01, 1.478359252929688e+03, 2.974756591796875e+03, 9.80560302734375e+01, 6.110154418945312e+02, 1.650769775390625e+03, 2.109486694335938e+02, 2.68127685546875e+02, 1.731957641601562e+03, 1.2577392578125e+03, 1.314761047363281e+02, 1.502902587890625e+03, 2.181248046875e+03, 8.957655334472656e+01, 1.403294311523438e+03, 2.201409423828125e+03, 9.482363891601562e+01, 6.58642822265604e+02, 1.569314697265625e+03, 1.904386291503906e+02, 3.37332763671875e+02, 1.489906372070312e+03, 2.166605834960938e+02, 3.863743286132812e+02, 1.11515576171875e+03, 8.392061157226562e+02, 7.589768218994141e+01, 1.082682250976562e+03, 1.781062255859375e+03, 4.865094757080078e+01, 8.466860961914062e+02, 1.575365844726562e+03, 4.100833435058594e+02, 4.296234741210938e+02, 1.819734375e+03, 5.7081201171875e+02, 3.202418212890625e+02, 2.522838623046875e+03, 1.98135400390625e+03, 7.880828094481303e+01, 3.982030334472656e+02, 1.135372680664062e+03, 5.161629486083984e+01, 1.181847900390625e+03, 2.115939453125e+03, 5.288035583496094e+01, 7.619041748046875e+02, 2.21596435546875e+03, 7.051448822021484e+01, 2.878596878051758e+01, 1.555550659179688e+03, 2.591931762696198e+02, 4.673244857788063e+01, 1.409021728515625e+03, 1.504286743164062e+03, 0e+00, 1.3328505859375e+03, 1.291101928710938e+03, 0e+00, 1.698884887695312e+02, 1.741897216796875e+03, 0e+00, 1.364693908691406e+02, 1.75282666015625e+03, 8.135733032226562e+01, 1.409916019439697e+01, 2.008351318359375e+03, 6.251177368164062e+02, 0e+00, 2.38537841796875e+03, 2.289972412109375e+03, 0e+00, 1.959386352539062e+03, 2.707929443359375e+03, 0e+00, 1.417863403320312e+03, 2.5532216796875e+03, 2.508784103393555e+01, 3.085204467773438e+02, 2.180174072265625e+03, 2.659416198730469e+02, 0e+00, 1.921511352539062e+03]
16-
preErr.u2=[0e+00, 2.478068603515625e+03, 0e+00, 2.058224365234375e+03, 2.258753662109375e+03, 0e+00, 1.145573608398438e+03, 1.824521728515625e+03, 0e+00, 1.15553857421875e+03, 2.83174169921875e+03, 8.957255859375e+02, 5.17280029296875e+02, 1.087612182617188e+03, 2.082686920165976e+02, 0e+00, 1.434194091796875e+03, 1.731513061523438e+03, 0e+00, 1.766441650390625e+03, 2.6050224609375e+03, 8.887545776367188e+02, 1.194807861328125e+03, 1.6302841796875e+03, 0e+00, 0e+00, 1.90238671875e+03, 1.583158588409424e+01, 0e+00, 1.862014282226562e+03, 2.106814697265625e+03, 0e+00, 1.601412841796875e+03, 2.1504482421875e+03, 0e+00, 5.714791870117014e+02, 1.73233935546875e+03, 8.786129760742188e+02, 1.321961303710938e+03, 1.523708251953125e+03, 0e+00, 0e+00, 1.293326293945312e+03, 8.717203979492188e+02, 0e+00, 1.302357177734375e+03, 1.834732177734375e+03, 0e+00, 7.443673095703125e+02, 1.5315224609375e+03, 0e+00, 6.491541137695312e+02, 1.821916259765625e+03, 1.947208557128906e+02, 0e+00, 2.642611328125003e+03, 5.536232299803693e+02, 0e+00, 6.355892333984375e+02, 9.96706787109375e+02, 0e+00, 1.307259399414062e+03, 2.144968994140625e+03, 0e+00, 5.851476440429688e+02, 2.19490966796875e+03, 0e+00, 0e+00, 1.545131835937505e+03, 0e+00, 0e+00, 1.572803344726562e+03, 1.376703979492188e+03, 0e+00, 1.100157958984375e+03, 1.277076416015625e+03, 0e+00, 5.128423461914062e+02, 1.764412719726562e+03, 0e+00, 0e+00, 1.605523559570312e+03, 3.551871948242188e+02, 0e+00, 1.927239624023438e+03, 9.84614501953125e+02, 0e+00, 1.971852294921875e+03, 2.293435302734375e+03, 0e+00, 1.916801879882812e+03, 2.7829716796875e+03, 0e+00, 1.543123168945312e+03, 2.58825830078125e+03, 0e+00, 0e+00, 2.15079052734375e+03, 1.12035791015625e+03, 0e+00, 2.102244873046875e+03]
17-
preErr.y=[0e+00, -6.195171475410461e-01, 0e+00, -5.145561099052429e-01, 1.123129110783339e-02, 0e+00, 4.792478680610657e-02, -6.296400725841528e-02, 0e+00, -1.864984035491943e-01, 2.421008050441742e-02, -9.563786536455154e-02, -1.304034143686295e-01, 2.716400027275085e-01, 7.739395648241143e-02, 1.76397729665041e-02, -3.018209524452686e-02, -2.849883027374745e-02, 9.327961131930351e-03, -7.202058285474777e-02, 9.243353456258774e-02, -1.976746469736099e-01, -1.459481120109558e-01, 5.12140616774559e-03, 5.273716896772385e-02, 6.703192740678787e-02, -4.260727390646935e-02, 3.104768991470337e-01, 3.286902606487274e-02, -8.977790176868439e-02, 1.860833540558815e-02, 2.239413931965828e-02, -4.952963814139366e-02, 1.274026837199926e-02, 2.370590902864933e-02, 2.179090492427259e-02, -4.075614735484123e-02, -1.720435917377472e-01, -2.461571246385574e-01, -8.450493216514587e-03, 5.416514724493027e-02, 9.659358859062195e-02, -4.454263299703598e-02, -8.128572255373001e-03, 1.8974419683218e-02, -5.491871386766434e-02, -1.341748423874378e-02, 1.216273661702871e-02, 2.557969838380814e-02, 1.096082758158445e-02, 1.025208383798599e-01, -5.488266795873642e-02, -5.454721977002919e-04, 9.402278810739517e-02, 8.006045967340469e-02, -2.994319237768717e-02, 3.569326996803532e-01, 1.970206946134288e-02, -5.934654548764229e-02, 3.466648608446121e-02, 1.290407311171293e-02, -3.135288506746292e-02, -7.257440593093634e-03, 1.322008855640888e-02, 4.418912902474403e-02, 5.263715051114559e-03, 1.76286231726408e-02, 7.196492049843073e-03, 2.604725304989672e-03, 6.479829549791641e-02, 1.168311201035971e-02, -4.09453883767128e-02, 3.189569339156151e-02, 0e+00, 5.817315727472305e-02, 3.506377339363098e-03, 0e+00, -8.573845773935318e-02, -5.628874991089106e-03, 0e+00, 3.411734849214554e-02, 3.68257649242878e-02, -6.84574693441391e-02, 3.524790052324533e-03, 2.027795277535915e-02, -8.987418562173843e-02, 0e+00, 1.033815518021584e-01, -8.657308644615114e-04, 0e+00, 1.064609829336405e-02, -1.876051165163517e-02, 0e+00, -3.131493926048279e-02, -8.759177289903164e-03, 6.271960213780403e-03, 7.713010907173157e-02, 7.345909252762794e-03, -2.136040776968002e-01, 0e+00, -4.518335312604904e-02]
15+
preErr.u1=[0e+00, 0e+00, 0e+00, 0e+00, 2.303678955078125e+03, 0e+00, 1.337272705078125e+03, 1.572665649414062e+03, 0e+00, 4.09544921875e+02, 2.92858203125e+03, 5.131741333007812e+02, -4.333637237548828e+00, 2.174172119140625e+03, 5.17844482421875e+02, 7.055908966064453e+01, 1.313465698242188e+03, 1.617517700195312e+03, 3.731184387207031e+01, 1.478359252929688e+03, 2.974756591796875e+03, 9.80560302734375e+01, 6.110154418945312e+02, 1.650769775390625e+03, 2.109486694335938e+02, 2.68127685546875e+02, 1.731957641601562e+03, 1.2577392578125e+03, 1.314761047363281e+02, 1.502902587890625e+03, 2.181248046875e+03, 8.957655334472656e+01, 1.403294311523438e+03, 2.201409423828125e+03, 9.482363891601562e+01, 6.58642822265604e+02, 1.569314697265625e+03, 1.904386291503906e+02, 3.37332763671875e+02, 1.489906372070312e+03, 2.166605834960938e+02, 3.863743286132812e+02, 1.11515576171875e+03, 8.392061157226562e+02, 7.589768218994141e+01, 1.082682250976562e+03, 1.781062255859375e+03, 4.865094757080078e+01, 8.466860961914062e+02, 1.575362182617188e+03, 4.100327758789062e+02, 4.296234741210938e+02, 1.820141479492188e+03, 5.7032763671875e+02, 3.202418823242188e+02, 2.522727783203125e+03, 1.980938598632812e+03, 7.880828094481303e+01, 3.982154846191406e+02, 1.135901123046875e+03, 5.161629486083984e+01, 1.1818935546875e+03, 2.11594189453125e+03, 5.288035583496094e+01, 7.618367309570312e+02, 2.215941162109375e+03, 7.051448822021484e+01, 2.875113677978516e+01, 1.555337280273438e+03, 2.592018737793853e+02, 4.673244857788063e+01, 1.409078979492188e+03, 1.50437451171875e+03, 0e+00, 1.332945678710938e+03, 1.291196899414062e+03, 0e+00, 1.697826538085938e+02, 1.741969970703125e+03, 0e+00, 1.364723358154297e+02, 1.752691772460938e+03, 8.096208190917969e+01, 1.422135639190674e+01, 2.008407836914062e+03, 6.248989868164062e+02, 0e+00, 2.38536083984375e+03, 2.29002294921875e+03, 0e+00, 1.959299926757812e+03, 2.70812255859375e+03, 0e+00, 1.418204711914062e+03, 2.553181884765625e+03, 2.508586120605469e+01, 3.086241149902344e+02, 2.180221923828125e+03, 2.654600219726562e+02, 0e+00, 1.92238330078125e+03]
16+
preErr.u2=[0e+00, 2.478068603515625e+03, 0e+00, 2.058224365234375e+03, 2.258753662109375e+03, 0e+00, 1.145573608398438e+03, 1.824521728515625e+03, 0e+00, 1.15553857421875e+03, 2.83174169921875e+03, 8.957255859375e+02, 5.17280029296875e+02, 1.087612182617188e+03, 2.082686920165976e+02, 0e+00, 1.434194091796875e+03, 1.731513061523438e+03, 0e+00, 1.766441650390625e+03, 2.6050224609375e+03, 8.887545776367188e+02, 1.194807861328125e+03, 1.6302841796875e+03, 0e+00, 0e+00, 1.90238671875e+03, 1.583158588409424e+01, 0e+00, 1.862014282226562e+03, 2.106814697265625e+03, 0e+00, 1.601412841796875e+03, 2.1504482421875e+03, 0e+00, 5.714791870117014e+02, 1.73233935546875e+03, 8.786129760742188e+02, 1.321961303710938e+03, 1.523708251953125e+03, 0e+00, 0e+00, 1.293326293945312e+03, 8.717203979492188e+02, 0e+00, 1.302357177734375e+03, 1.834732177734375e+03, 0e+00, 7.443825073242188e+02, 1.53159375e+03, 0e+00, 6.490366821289062e+02, 1.821678344726562e+03, 1.945625610351562e+02, 0e+00, 2.642624267578128e+03, 5.533667602538069e+02, 0e+00, 6.35634765625e+02, 9.97257568359375e+02, 0e+00, 1.30698828125e+03, 2.14497900390625e+03, 0e+00, 5.858211059570312e+02, 2.1949189453125e+03, 0e+00, 0e+00, 1.545095581054693e+03, 0e+00, 0e+00, 1.57281103515625e+03, 1.376708374023438e+03, 0e+00, 1.100110229492188e+03, 1.276415649414062e+03, 0e+00, 5.129060668945312e+02, 1.7644443359375e+03, 0e+00, 0e+00, 1.605454345703125e+03, 3.551610412597656e+02, 0e+00, 1.927255249023438e+03, 9.85282470703125e+02, 0e+00, 1.971860473632812e+03, 2.293281005859375e+03, 0e+00, 1.916804077148438e+03, 2.782947509765625e+03, 0e+00, 1.54337939453125e+03, 2.588267333984375e+03, 0e+00, 0e+00, 2.150815673828125e+03, 1.120386596679688e+03, 0e+00, 2.102429931640625e+03]
17+
preErr.y=[0e+00, -6.195171475410461e-01, 0e+00, -5.145561099052429e-01, 1.123129110783339e-02, 0e+00, 4.792478680610657e-02, -6.296400725841528e-02, 0e+00, -1.864984035491943e-01, 2.421008050441742e-02, -9.563786536455154e-02, -1.304034143686295e-01, 2.716400027275085e-01, 7.739395648241143e-02, 1.76397729665041e-02, -3.018209524452686e-02, -2.849883027374745e-02, 9.327961131930351e-03, -7.202058285474777e-02, 9.243353456258774e-02, -1.976746469736099e-01, -1.459481120109558e-01, 5.12140616774559e-03, 5.273716896772385e-02, 6.703192740678787e-02, -4.260727390646935e-02, 3.104768991470337e-01, 3.286902606487274e-02, -8.977790176868439e-02, 1.860833540558815e-02, 2.239413931965828e-02, -4.952963814139366e-02, 1.274026837199926e-02, 2.370590902864933e-02, 2.179090492427259e-02, -4.075614735484123e-02, -1.720435917377472e-01, -2.461571246385574e-01, -8.450493216514587e-03, 5.416514724493027e-02, 9.659358859062195e-02, -4.454263299703598e-02, -8.128572255373001e-03, 1.8974419683218e-02, -5.491871386766434e-02, -1.341748423874378e-02, 1.216273661702871e-02, 2.55759060382843e-02, 1.094210334122181e-02, 1.025081947445869e-01, -5.485330149531364e-02, -3.842075821012259e-04, 9.394127875566483e-02, 8.006046712398529e-02, -2.997414954006739e-02, 3.568929731846104e-01, 1.970206946134288e-02, -5.935482308268547e-02, 3.466090187430382e-02, 1.290407404303551e-02, -3.127365931868553e-02, -7.259246427565813e-03, 1.322008855640888e-02, 4.400391131639481e-02, 5.255564581602812e-03, 1.76286231726408e-02, 7.187784183770418e-03, 2.560424152760359e-03, 6.48004636168701e-02, 1.168311201035971e-02, -4.093300178647041e-02, 3.191650658845901e-02, 0e+00, 5.820886790752411e-02, 3.695322899147868e-03, 0e+00, -8.578085899353027e-02, -5.618605297058821e-03, 0e+00, 3.411808609962463e-02, 3.680934756994247e-02, -6.8549744784832e-02, 3.55533929541707e-03, 2.028815075755119e-02, -9.009587019681931e-02, 0e+00, 1.033750772476196e-01, -8.145241299644113e-04, 0e+00, 1.062395516782999e-02, -1.870621740818024e-02, 0e+00, -3.129368275403976e-02, -8.771412074565887e-03, 6.271465215831995e-03, 7.715602964162827e-02, 7.351559586822987e-03, -2.137316316366196e-01, 0e+00, -4.501167312264442e-02]

0 commit comments

Comments
 (0)