First time here? Check our help page!
3

Numerical equations with EMS

Hello,

I am trying to write a subroutine that calculates the temperature of my storage medium at each timestep. I am trying to apply a finite difference model that solves N ODEs for each node, the model is very similar to that of WaterHeater:Stratified where the temperature update equation for each node is:

Tfinal= (Tinitial +b/a).exp(a.deltaT)-b/a

Does EMS allow this sort of formulations ?

My idea is to create a trend variable for the temperature at each node, but I don`t understand how initialization works in EMS Any insights? Thank you

HoussemYounes's avatar
271
HoussemYounes
asked 2021-11-11 12:22:56 -0500
__AmirRoth__'s avatar
4.4k
__AmirRoth__
updated 2022-02-23 13:35:47 -0500
edit flag offensive 0 remove flag close merge delete

Comments

add a comment see more comments

1 Answer

1

If I'm understanding correctly, you do not need to use a trend variable just to retrieve a variable's value from a previous timestep. Rather, just use an EnergyManagementSystem:GlobalVariable. For example:

EnergyManagementSystem:Program,
TemperatureCalculation,
SET Tfinal = Tinitial + 10,
SET Tinitial = Tfinal;

And then set Tinitial as a global EMS variable so that its value at the end of the previous timestep can be used in the program in the subsequent timestep.

If you need to set the initial value for Tinitial for the beginning of the simulation, you can do this by creating a second EMS program that sets it value (e.g., SET Tinitial = 50) and uses the BeginNewEnvironment and/or AfterNewEnvironmentWarmUpIsComplete calling points (I forget which offhand).

shorowit's avatar
11.8k
shorowit
answered 2021-11-11 12:49:56 -0500
edit flag offensive 0 remove flag delete link

Comments

Thank you very much this is really helpful!

HoussemYounes's avatar HoussemYounes (2021-11-11 14:34:35 -0500) edit
add a comment see more comments