lbl-srg / modelica-buildings

Modelica Buildings library
250 stars 155 forks source link

Add surface with prescribed temperature to Spawn #2358

Closed mwetter closed 3 years ago

mwetter commented 3 years ago

This issue is to add a surface with prescribed temperature (computed by Modelica) to Spawn.

For the specification, see https://lbl-srg.github.io/soep/softwareArchitecture.html#coupling-of-a-zone-surface and https://lbl-srg.github.io/soep/softwareArchitecture.html#zone-surface

mwetter commented 3 years ago
mwetter commented 3 years ago

The configuration in which both surface temperatures are set is implemented in issue2358_spawn_surface_2_sided, which is based on issue2358_spawn_surface. This new branch also contains the latest documentation.

mwetter commented 3 years ago

The plot below is with commit b74af7b (the spawn binaries are not committed, they can be obtained by running Buildings/Resources/src/ThermalZones/EnergyPlus/install.py. The used command is

simulateModel("Buildings.ThermalZones.EnergyPlus.Examples.SingleFamilyHouse.Unconditioned", stopTime=432000, method="Cvode", tolerance=1e-06, resultFile="Unconditioned");

The model uses derivatives_delta={0.1} and relativeSurfaceTolerance = 1E-6

image The derivatives have biased errors during times when transients are slow. Increasing relativeSurfaceTolerance to 1E-20 changes them slightly at startup, but afterwards the error is about the same.


Next is the tests with Spawn that brings back the calls to the surface heat balance calculation, but has a key change that iterates the window surfaces. This is a86c86d3c2

This produces only slight deviations, as shown below: image


Next is the test that includes the item above, but also attempts to correct the surface API. This is ad13534f93 There is no noticeable difference.

image


All three version produce similar bias in the approximation in the derivative. The derivatives are however reasonably accurate during fast transients, e.g., at the plot below, which is from ad13534f93: image


For a controlled room air temperature, the situation looks better. Running with ad13534f93

simulateModel("Buildings.ThermalZones.EnergyPlus.Examples.SingleFamilyHouse.AirHeating", stopTime=86400, method="Cvode", tolerance=1e-06, resultFile="AirHeating");

Gives the following output. image