Buildings.Fluid.Geothermal.Aquifer.Validation

Validation models for aquifer thermal energy storage

Information

This package contains validation models for the classes in Buildings.Fluid.Geothermal.Aquifer.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Buildings.Fluid.Geothermal.Aquifer.Validation.NumberWells NumberWells Test model for aquifer thermal energy storage with multiple wells
Buildings.Fluid.Geothermal.Aquifer.Validation.SimulationTest SimulationTest Test model for aquifer thermal energy storage in comparison with other geothermal simulators

Buildings.Fluid.Geothermal.Aquifer.Validation.NumberWells Buildings.Fluid.Geothermal.Aquifer.Validation.NumberWells

Test model for aquifer thermal energy storage with multiple wells

Buildings.Fluid.Geothermal.Aquifer.Validation.NumberWells

Information

Example that verifies the scalability of Buildings.Fluid.Geothermal.Aquifer.MultiWell when multiple wells are used.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model NumberWells "Test model for aquifer thermal energy storage with multiple wells" extends Modelica.Icons.Example; package Medium = Buildings.Media.Water "Medium model"; model MyWell = MultiWell ( redeclare package Medium = Buildings.Media.Water, nVol=50, h=10, d=4800, length=200, THot_start=303.15, TGroCol=273.15, TGroHot=303.15, aquDat=Buildings.Fluid.Geothermal.Aquifer.Data.Rock(), m_flow_nominal=0.1, dpExt_nominal=0) "Well model"; MyWell aquWel1(d=4800) "ATES with one pair of wells"; MyWell aquWel2( d=4800, nPai=2, m_flow_nominal=0.2) "ATES with two pairs of wells"; Modelica.Blocks.Sources.Constant uPum(k=1) "Pump control signal"; Sources.Boundary_pT bou( redeclare package Medium = Medium, nPorts=2) "Sink"; Modelica.Blocks.Sources.RealExpression temWel1( y=aquWel1.TAquHot[10]) "Temperature output from aquifer model with one pair of wells"; Modelica.Blocks.Sources.RealExpression temWel2( y=aquWel2.TAquHot[10]) "Temperature output from aquifer model with two pairs of wells"; Buildings.Utilities.Diagnostics.CheckEquality cheEqu "Assertion that checks for equality of results"; equation connect(uPum.y, aquWel1.u); connect(aquWel2.u,uPum. y); connect(aquWel2.port_Col, aquWel2.port_Hot); connect(aquWel1.port_Col, aquWel1.port_Hot); connect(bou.ports[1], aquWel1.port_Hot); connect(bou.ports[2], aquWel2.port_Hot); connect(cheEqu.u1, temWel1.y); connect(cheEqu.u2, temWel2.y); end NumberWells;

Buildings.Fluid.Geothermal.Aquifer.Validation.SimulationTest Buildings.Fluid.Geothermal.Aquifer.Validation.SimulationTest

Test model for aquifer thermal energy storage in comparison with other geothermal simulators

Buildings.Fluid.Geothermal.Aquifer.Validation.SimulationTest

Information

This validation case simulates an idealized operation of an aquifer thermal storage system. Results are compared with simulations from a test suite developed by Mindel et al. (2021). This test suite comprises a set of cases to assess the thermo-hydraulic modelling capabilities of various geothermal simulators.

The comparison was carried out with respect to the test case called TC2 - well-test comparison. The main goal of TC2 is to compare aquifer temperatures under a typical operation of an ATES system consisting of injection, falloff, drawdown, and build-up. The injection phase represents the charging period, while the drawdown phase represents the discharge period. Intermediate phases of falloff and build-up represent periods of storage or inactivity. The overall operational period is one year, and the sequence of the different phases is the following:

The figure below shows the temperature vs. time comparison for a virtual sensor located at r = 1 m and r= 10 m from the well.

image

References

Julian E. Mindel, Peter Alt-Epping, Antoine Armandine Les Landes, Stijn Beernink, Daniel T. Birdsell, Martin Bloemendal, Virginie Hamm, Simon Lopez, Charles Maragna, Carsten M. Nielsen, Sebastia Olivella, Marc Perreaux, Maarten W. Saaltink, Martin O. Saar, Daniela Van den Heuvel, Ruben Vidal, Thomas Driesner, Benchmark study of simulators for thermo-hydraulic modelling of low enthalpy geothermal processes, Geothermics, Volume 96, 2021, 102130, ISSN 0375-6505, https://doi.org/10.1016/j.geothermics.2021.102130.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model SimulationTest "Test model for aquifer thermal energy storage in comparison with other geothermal simulators" extends Modelica.Icons.Example; package Medium = Buildings.Media.Water "Medium model"; MultiWell aquWel( redeclare package Medium = Medium, nVol=232, h=200, d=4800, length=40, griFac=1.1, TCol_start=307.15, THot_start=393.15, TGroCol=307.15, TGroHot=393.15, aquDat=Buildings.Fluid.Geothermal.Aquifer.Data.Rock(), m_flow_nominal=1, dpExt_nominal=0) "Aquifer wells"; Sources.Boundary_pT bou( redeclare package Medium = Medium, nPorts=1) "Boundary condition for pressure"; Modelica.Blocks.Sources.CombiTimeTable uPum(table=[0.0,-1; 86400*120,-1; 86400 *120,0; 86400*180,0; 86400*180,1; 86400*300,1; 86400*300,0]) "Pump control signal"; equation connect(aquWel.port_Col, aquWel.port_Hot); connect(bou.ports[1], aquWel.port_Hot); connect(uPum.y[1], aquWel.u); end SimulationTest;

Buildings.Fluid.Geothermal.Aquifer.Validation.NumberWells.MyWell Buildings.Fluid.Geothermal.Aquifer.Validation.NumberWells.MyWell

Well model

Buildings.Fluid.Geothermal.Aquifer.Validation.NumberWells.MyWell

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
Heighth10Aquifer thickness [m]
Lengthd4800Distance between wells [m]
Heightlength200Length of one well, used to compute pressure drop [m]
RealnPai1Number of paired wells
TemplateaquDatBuildings.Fluid.Geothermal.A...Aquifer thermal properties
Subsurface
IntegernVol50Number of control volumes used in discretization
RadiusrWB0.1Wellbore radius [m]
RadiusrMaxd/2Domain radius [m]
RealgriFac1.15Grid factor for spacing
TemperatureTCol_start283.15Initial temperature of cold well [K]
TemperatureTHot_start303.15Initial temperature of warm well [K]
Properties of ground
TemperatureTGroCol273.15Undisturbed ground temperature (cold well) [K]
TemperatureTGroHot303.15Undisturbed ground temperature (warm well) [K]
Hydraulic circuit
MassFlowRatem_flow_nominal0.1Nominal mass flow rate [kg/s]
PressureDifferencedpAquifer_nominalm_flow_nominal/nPai*Modelica...Pressure drop at nominal mass flow rate in the aquifer [Pa]
PressureDifferencedpExt_nominal0Pressure drop at nominal mass flow rate in the above-surface system (used to size the head of the well pump) [Pa]

Connectors

TypeNameDescription
replaceable package MediumMedium in the component
input RealInputuPump control input (-1: extract from hot well, +1: extract from cold well, 0: off) [1]
output RealOutputPTotTotal power consumed by all circulation pumps in the wells [W]
FluidPort_aport_ColFluid connector
FluidPort_aport_HotFluid connector

Modelica definition

model MyWell = MultiWell ( redeclare package Medium = Buildings.Media.Water, nVol=50, h=10, d=4800, length=200, THot_start=303.15, TGroCol=273.15, TGroHot=303.15, aquDat=Buildings.Fluid.Geothermal.Aquifer.Data.Rock(), m_flow_nominal=0.1, dpExt_nominal=0) "Well model";