Buildings.Fluid.Geothermal.ZonedBorefields.Validation

Validation models for zoned geothermal energy storage

Information

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

Note that most validation models contain simple input data which may not be realistic, but for which the correct output can be obtained through an analytic solution. The examples plot various outputs, which have been verified against these solutions. These model outputs are stored as reference data and used for continuous validation whenever models in the library change.

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

Package Content

Name Description
Buildings.Fluid.Geothermal.ZonedBorefields.Validation.SteadyStateBoreholeDynamics SteadyStateBoreholeDynamics Description
Buildings.Fluid.Geothermal.ZonedBorefields.Validation.TransientBoreholeDynamics TransientBoreholeDynamics Description
Buildings.Fluid.Geothermal.ZonedBorefields.Validation.FEFLOW FEFLOW Package with models for comparative model validation with FEFLOW

Buildings.Fluid.Geothermal.ZonedBorefields.Validation.SteadyStateBoreholeDynamics Buildings.Fluid.Geothermal.ZonedBorefields.Validation.SteadyStateBoreholeDynamics

Description

Buildings.Fluid.Geothermal.ZonedBorefields.Validation.SteadyStateBoreholeDynamics

Information

This validation cases tests the independent operation of borefield zones for the borefield configured in Buildings.Fluid.Geothermal.ZonedBorefields.Data.Configuration.Validation.

The model assumes no dynamics in the boreholes. The heating rate to a zone is constant (when activated). The duration of heat injection into each zone is a multiple of 1 month, with alternating signals to each zone to obtain all possible combinations of activated and deactivated zones.

Extends from Buildings.Fluid.Geothermal.ZonedBorefields.Validation.TransientBoreholeDynamics (Description).

Parameters

TypeNameDefaultDescription
ValidationconDat Borefield configuration data
SandStonesoiDat Soil data
TemperatureT_start273.15Initial temperature of the soil [K]
ValidationborFieDat Borefield data

Modelica definition

model SteadyStateBoreholeDynamics "Description" extends Buildings.Fluid.Geothermal.ZonedBorefields.Validation.TransientBoreholeDynamics( borHol( energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyStateInitial), filDat( steadyState=true)); end SteadyStateBoreholeDynamics;

Buildings.Fluid.Geothermal.ZonedBorefields.Validation.TransientBoreholeDynamics Buildings.Fluid.Geothermal.ZonedBorefields.Validation.TransientBoreholeDynamics

Description

Buildings.Fluid.Geothermal.ZonedBorefields.Validation.TransientBoreholeDynamics

Information

This validation cases tests the independent operation of borefield zones for the borefield configured in Buildings.Fluid.Geothermal.ZonedBorefields.Data.Configuration.Validation.

The heating rate to a zone is constant (when activated). The duration of heat injection into each zone is a multiple of 1 month, with alternating signals to each zone to obtain all possible combinations of activated and deactivated zones.

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

Parameters

TypeNameDefaultDescription
ValidationconDat Borefield configuration data
BentonitefilDat Borehole filling data
SandStonesoiDat Soil data
TemperatureT_start273.15Initial temperature of the soil [K]
ValidationborFieDatborFieDat(filDat=filDat, soi...Borefield data

Modelica definition

model TransientBoreholeDynamics "Description" extends Modelica.Icons.Example; package Medium = Buildings.Media.Water; parameter ZonedBorefields.Data.Configuration.Validation conDat "Borefield configuration data"; parameter ZonedBorefields.Data.Filling.Bentonite filDat "Borehole filling data"; parameter ZonedBorefields.Data.Soil.SandStone soiDat "Soil data"; parameter Modelica.Units.SI.Temperature T_start=273.15 "Initial temperature of the soil"; final parameter Integer nZon(min=1) = borFieDat.conDat.nZon "Total number of independent bore field zones"; Buildings.Fluid.Geothermal.ZonedBorefields.OneUTube borHol( redeclare package Medium = Medium, nSeg=6, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, borFieDat=borFieDat, TExt0_start=T_start, dT_dz=0) "Borehole"; Movers.Preconfigured.FlowControlled_m_flow pum[nZon]( redeclare each package Medium = Medium, each T_start=T_start, each addPowerToMedium=false, each use_riseTime=false, each energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, m_flow_nominal=borFieDat.conDat.mZon_flow_nominal, each dp_nominal=60E3) "Circulation pump"; Sensors.TemperatureTwoPort TBorFieIn[nZon]( redeclare each package Medium = Medium, each T_start=T_start, m_flow_nominal=borFieDat.conDat.mZon_flow_nominal, each tau=0) "Inlet temperature of the borefield"; Sensors.TemperatureTwoPort TBorFieOut[nZon]( redeclare each package Medium = Medium, each T_start=T_start, m_flow_nominal=borFieDat.conDat.mZon_flow_nominal, each tau=0) "Outlet temperature of the borefield"; parameter Buildings.Fluid.Geothermal.ZonedBorefields.Data.Borefield.Validation borFieDat( filDat=filDat, soiDat=soiDat, conDat=conDat) "Borefield data"; Sources.Boundary_ph sin[nZon]( redeclare each package Medium = Medium, each nPorts=1) "Sink"; HeatExchangers.HeaterCooler_u hea[nZon]( redeclare each package Medium = Medium, each dp_nominal=10000, each show_T=true, each energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, each T_start=T_start, m_flow_nominal=borFieDat.conDat.mZon_flow_nominal, m_flow(start=borFieDat.conDat.mZon_flow_nominal), each p_start=100000, Q_flow_nominal=2*Modelica.Constants.pi*borFieDat.soiDat.kSoi*borFieDat.conDat.hBor *borFieDat.conDat.nBorPerZon) "Heater"; Modelica.Blocks.Sources.Pulse heaRat[nZon]( each amplitude=1, each width=50, period=3600.*24*60*{1,2}, startTime=3600.*24*30*{0,1}) "Heating rate into each zone"; Modelica.Blocks.Sources.CombiTimeTable timTabT( tableOnFile=true, tableName="tab1", columns={2,3}, smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Fluid/Geothermal/ZonedBorefields/Validation/SteadyStateBoreholeDynamics.txt"), y(each unit="degC", each displayUnit="degC"), timeScale=3600) "Reference results for the average borehole wall temperature in each zone"; Modelica.Blocks.Sources.Constant m_flow_nominal[nZon]( k=borFieDat.conDat.mZon_flow_nominal) "Design flow rates"; equation connect(TBorFieIn.port_b,borHol. port_a); connect(borHol.port_b,TBorFieOut. port_a); connect(pum.port_b,TBorFieIn. port_a); connect(sin[:].ports[1],TBorFieOut[:]. port_b); connect(hea.port_b,pum. port_a); connect(hea.port_a,TBorFieOut. port_b); connect(heaRat.y, hea.u); connect(m_flow_nominal.y, pum.m_flow_in); end TransientBoreholeDynamics;