Skip to content

Commit

Permalink
Merge branch '1860_weeklyschedule' of github.com:ibpsa/modelica into …
Browse files Browse the repository at this point in the history
…1860_weeklyschedule
  • Loading branch information
Mathadon committed Apr 3, 2024
2 parents a911c6a + 0a7bae2 commit f53f16d
Show file tree
Hide file tree
Showing 9 changed files with 94 additions and 4 deletions.
6 changes: 3 additions & 3 deletions IBPSA/Resources/C-Sources/WeeklySchedule.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ int cmpfun(const void * tuple1, const void * tuple2) {
return (time1 - time2);
}

void* weeklyScheduleInit(const int tableOnFile, const char* name, const double t_offset, char* stringData) {
void* weeklyScheduleInit(const int tableOnFile, const char* name, const double t_offset, const char* stringData) {
const int bufLen = 255;
WeeklySchedule* scheduleID = NULL;


int i = 0; /* iterator */
int j = 0; /* iterator */
int k = 0; /* iterator */
Expand Down Expand Up @@ -526,7 +526,7 @@ double getScheduleValue(void * ID, const int column, const double modelicaTime)
int i;
const int columnIndex = column - 1; /* Since we do not store the time indices in the data table */

/* Not calling weeklyScheduleFreeInit() or weeklyScheduleFree() since weeklyScheduleFreeInit() has already been called at the end of the
/* Not calling weeklyScheduleFreeInit() or weeklyScheduleFree() since weeklyScheduleFreeInit() has already been called at the end of the
initialization and Modelica will call weeklyScheduleFree() upon a call of ModelicaFormatError) */
if (column < 0 || column > scheduleID->n_cols_in - 1) {
ModelicaFormatError("The requested column index '%i' is outside of the table range.", column + 1);
Expand Down
2 changes: 1 addition & 1 deletion IBPSA/Resources/C-Sources/WeeklySchedule.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ typedef struct WeeklySchedule {



void* weeklyScheduleInit(const int tableOnFile, const char* name, const double t_offset, char* stringData);
void* weeklyScheduleInit(const int tableOnFile, const char* name, const double t_offset, const char* stringData);

void weeklyScheduleFree(void * ID);

Expand Down
7 changes: 7 additions & 0 deletions IBPSA/Resources/Data/scheduleWindows.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Comments start with a #
# The user is responsible for making sure that the header dimensions are correct
double tab1(3,5) # Comments can be added at the end of a line for adding local documentation
mon:0:0:10 - 3 1 -
# Comments can be added in the table too
tue,thu:20:30:59 123 - 45 -
wed 12 1 4 -
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
last-generated=2024-04-02
statistics-simulation=
{
"linear": " ",
"nonlinear": " ",
"numerical Jacobians": "0"
}
time=[-1e+04, 1e+06]
weeSchLin.y[1]=[1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02, 1.23e+02]
weeSchLin.y[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00]
weeSchLin.y[3]=[4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 4.5e+01, 4.5e+01, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01, 4.5e+01]
weeSchLin.y[4]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00]
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
simulateModel("IBPSA.Utilities.IO.Files.Validation.WeeklyScheduleWindowsLineEndings", startTime=-10000, stopTime=1000000, tolerance=1e-6, method="dassl", resultFile="WeeklyScheduleWindowsLineEndings");
createPlot(id=1, position={15, 15, 592, 364}, y={"weeSchLin.y[1]", "weeSchLin.y[2]", "weeSchLin.y[3]", "weeSchLin.y[4]"}, range={-100000.0, 1000000.0, -20.0, 140.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}}, timeUnit="s");
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
within IBPSA.Utilities.IO.Files.Validation;
model WeeklyScheduleWindowsLineEndings "Weekly schedule example"
extends Modelica.Icons.Example;
parameter String data = "double tab1(3,5) #test:
mon:0:0:10 - 3 1 -
tue,thu:20:30:59 123 - 45 -
wed 12 1 4 -" "Contents of schedule.txt";
IBPSA.Utilities.IO.Files.WeeklySchedule weeSchLin(
columns={2,3,4,5},
tableOnFile=true,
fileName=Modelica.Utilities.Files.loadResource("modelica://IBPSA/Resources/Data/schedule.txt"),
t_offset=1e6) "Weekly schedule example using file data source"
annotation (Placement(transformation(extent={{-10,20},{10,40}})));

IBPSA.Utilities.IO.Files.WeeklySchedule weeSchWin(
columns={2,3,4,5},
tableOnFile=true,
fileName=Modelica.Utilities.Files.loadResource("modelica://IBPSA/Resources/Data/scheduleWindows.txt"),
t_offset=1e6) "Weekly schedule example using parameter data source"
annotation (Placement(transformation(extent={{-10,-32},{10,-12}})));
Diagnostics.AssertEquality assEqu[4](
each startTime=-10000,
each threShold=Modelica.Constants.small)
"Trigger an assertion if the outputs differ"
annotation (Placement(transformation(extent={{40,-10},{60,10}})));
equation
connect(weeSchLin.y, assEqu.u1)
annotation (Line(points={{11,30},{24,30},{24,6},{38,6}}, color={0,0,127}));
connect(weeSchWin.y, assEqu.u2) annotation (Line(points={{11,-22},{24,-22},{24,
-6},{38,-6}}, color={0,0,127}));
annotation (
Documentation(info="<html>
<p>
Example for a weekly schedule that reads the schedule data from a file.
There are two file readers, one reading a file with Windows line endings and the other with Linux line endings.
</p>
</html>",
revisions="<html>
<ul>
<li>
April 2, 2024, by Michael Wetter:<br/>
First implementation.<br/>
This is for
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/1860\">IBPSA, #1860</a>.
</li>
</ul>
</html>"),
experiment(
StartTime=-10000,
StopTime=1000000,
Tolerance=1e-06),
__Dymola_Commands(file=
"modelica://IBPSA/Resources/Scripts/Dymola/Utilities/IO/Files/Validation/WeeklyScheduleWindowsLineEndings.mos"
"Simulate and plot"));
end WeeklyScheduleWindowsLineEndings;
12 changes: 12 additions & 0 deletions IBPSA/Utilities/IO/Files/Validation/package.mo
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
within IBPSA.Utilities.IO.Files;
package Validation "Collection of models that validate the models that access files"
extends Modelica.Icons.ExamplesPackage;

annotation (preferredView="info", Documentation(info="<html>
<p>
This package contains models that validate the models that access files.
The examples plot various outputs. These model outputs are stored as reference data to
allow continuous validation whenever models in the library change.
</p>
</html>"));
end Validation;
1 change: 1 addition & 0 deletions IBPSA/Utilities/IO/Files/Validation/package.order
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
WeeklyScheduleWindowsLineEndings
1 change: 1 addition & 0 deletions IBPSA/Utilities/IO/Files/package.order
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ CombiTimeTableWriter
JSONWriter
WeeklySchedule
Examples
Validation
BaseClasses

0 comments on commit f53f16d

Please sign in to comment.