Question about T_DR modelling approach
While using FreeTTES as a reference model for validation of a 1D Euler-based thermal storage model, I noticed that T_DR (the steam/headspace temperature above the water surface) is treated as a fixed, constant boundary condition rather than a dynamic thermodynamic state.
Context
I am implementing a stratified 1D thermal energy storage model based on a finite-volume Euler discretization (both explicit and implicit solvers) for co-simulation with district heating network tools. As part of a master's thesis, I am comparing several model variants of increasing complexity:
- 0D fully-mixed reference
- 1D Upwind explicit/implicit, N = 2…200 nodes
- 1D TVD explicit/implicit, N = 2…200 nodes
... and more
FreeTTES serves as the Lagrangian reference model for accuracy benchmarking as you have validated the model against measured data (current comparison is MAE of outlet temperature over a 60 h charge/idle/discharge scenario).
Observed behaviour
In FreeTTES_model.py (line 377), each timestep reads:
theta_DR = speicher_param["T_DR"] # read fresh from config every step
This value is passed to __Modell_Waermeleitung as an upper boundary temperature (analogous to T_Boden at the bottom), and Q_V_DR (line 537) is computed as the resulting heat flux into the water - without any heat capacity or energy balance for the headspace itself.
Questions
-
Is this intentional? For an atmospheric outdoor tank, the headspace could be expected to lose heat through the roof and exchange heat with the top water layer - i.e. its temperature should evolve dynamically.
-
What is the physical motivation for keeping T_DR constant? Is it meant to represent solar irradiation keeping the roof structure at a roughly constant elevated temperature? Or is it a deliberate simplification?
-
Is there any documentation beyond docs/ that describes the assumptions behind this boundary condition?
Impact on validation
With T_DR = 99 °C as a constant energy source, FreeTTES effectively injects heat into the top water layer throughout the simulation. In my Euler model, this creates a systematic MAE contribution of ~0.3 K at N = 200 implicit, which I would like to either replicate correctly (as a fixed boundary condition) or replace with a physically motivated dynamic headspace model.
Understanding the intent behind this design would help me decide which approach is more appropriate for atmospheric large-scale tank modelling.
Thank you for the great open-source work!
Question about
T_DRmodelling approachWhile using FreeTTES as a reference model for validation of a 1D Euler-based thermal storage model, I noticed that
T_DR(the steam/headspace temperature above the water surface) is treated as a fixed, constant boundary condition rather than a dynamic thermodynamic state.Context
I am implementing a stratified 1D thermal energy storage model based on a finite-volume Euler discretization (both explicit and implicit solvers) for co-simulation with district heating network tools. As part of a master's thesis, I am comparing several model variants of increasing complexity:
... and more
FreeTTES serves as the Lagrangian reference model for accuracy benchmarking as you have validated the model against measured data (current comparison is MAE of outlet temperature over a 60 h charge/idle/discharge scenario).
Observed behaviour
In
FreeTTES_model.py(line 377), each timestep reads:This value is passed to
__Modell_Waermeleitungas an upper boundary temperature (analogous toT_Bodenat the bottom), andQ_V_DR(line 537) is computed as the resulting heat flux into the water - without any heat capacity or energy balance for the headspace itself.Questions
Is this intentional? For an atmospheric outdoor tank, the headspace could be expected to lose heat through the roof and exchange heat with the top water layer - i.e. its temperature should evolve dynamically.
What is the physical motivation for keeping
T_DRconstant? Is it meant to represent solar irradiation keeping the roof structure at a roughly constant elevated temperature? Or is it a deliberate simplification?Is there any documentation beyond
docs/that describes the assumptions behind this boundary condition?Impact on validation
With
T_DR = 99 °Cas a constant energy source, FreeTTES effectively injects heat into the top water layer throughout the simulation. In my Euler model, this creates a systematic MAE contribution of ~0.3 K at N = 200 implicit, which I would like to either replicate correctly (as a fixed boundary condition) or replace with a physically motivated dynamic headspace model.Understanding the intent behind this design would help me decide which approach is more appropriate for atmospheric large-scale tank modelling.
Thank you for the great open-source work!