Buildings.Fluid.Geothermal.BuriedPipes.Validation

Collection of validation models

Information

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

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

Package Content

Name Description
Buildings.Fluid.Geothermal.BuriedPipes.Validation.GroundCouplingAIT GroundCouplingAIT Validation for pipe and ground coupling against data from Austrian Institute of Technology

Buildings.Fluid.Geothermal.BuriedPipes.Validation.GroundCouplingAIT Buildings.Fluid.Geothermal.BuriedPipes.Validation.GroundCouplingAIT

Validation for pipe and ground coupling against data from Austrian Institute of Technology

Buildings.Fluid.Geothermal.BuriedPipes.Validation.GroundCouplingAIT

Information

Validation of Buildings.Fluid.Geothermal.BuriedPipes.GroundCoupling using the experimental data collected by the Austrian Institute of Technology.

See Buildings.Fluid.FixedResistances.Validation.PlugFlowPipes.PlugFlowAIT for more info.

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

Parameters

TypeNameDefaultDescription
LengthLcap1Length over which transient effects typically take place [m]
RealR801/(2*0.024*Modelica.Constant...Thermal resistance per unit length of service pipes [(m.K)/W]
BooleanpipVoltrueFlag to decide whether volumes are included at the end points of the pipe
BooleanallowFlowReversaltrue= true to allow flow reversal, false restricts to design direction (port_a -> port_b)
MassFlowRatem_flow_nominal1Nominal mass flow rate, used for regularization near zero flow [kg/s]
TimetauHeaTra6500Time constant for heat transfer, default 20 minutes [s]
Lengththickness0.0032Pipe wall thickness [m]
GenericcliConcliCon(TSurMea=281.53, TSurA...Climatic constants in Pongau, Austria
GenericsoiDatsoiDat(k=2.4, c=1000, d=1600)Soil thermal properties

Modelica definition

model GroundCouplingAIT "Validation for pipe and ground coupling against data from Austrian Institute of Technology" extends Modelica.Icons.Example; package Medium = Buildings.Media.Water; parameter Modelica.Units.SI.Length Lcap=1 "Length over which transient effects typically take place"; parameter Real R80(unit="(m.K)/W")=1/(2*0.024*Modelica.Constants.pi) *log(0.07/0.0337) + 1/(2*2.4*Modelica.Constants.pi)*log(2/0.07) "Thermal resistance per unit length of service pipes"; parameter Boolean pipVol=true "Flag to decide whether volumes are included at the end points of the pipe"; parameter Boolean allowFlowReversal=true "= true to allow flow reversal, false restricts to design direction (port_a -> port_b)"; parameter Modelica.Units.SI.MassFlowRate m_flow_nominal=1 "Nominal mass flow rate, used for regularization near zero flow"; parameter Modelica.Units.SI.Time tauHeaTra=6500 "Time constant for heat transfer, default 20 minutes"; parameter Modelica.Units.SI.Length thickness=0.0032 "Pipe wall thickness"; Fluid.Sources.MassFlowSource_T Point1( redeclare package Medium = Medium, use_T_in=true, use_m_flow_in=true, nPorts=1) "Mass flow source"; Fluid.Sources.MassFlowSource_T Point4( redeclare package Medium = Medium, use_m_flow_in=true, nPorts=1) "Substation 4"; Fluid.Sources.MassFlowSource_T Point3( nPorts=1, redeclare package Medium = Medium, use_m_flow_in=true) "Subsation 3"; Fluid.Sources.MassFlowSource_T Point2( redeclare package Medium = Medium, use_m_flow_in=true, nPorts=1) "Subtation 2"; FixedResistances.PlugFlowPipe pip1( redeclare package Medium = Medium, dh=0.0825, dIns=0.045, kIns=0.024, length=115, allowFlowReversal=allowFlowReversal, m_flow_nominal=0.3, thickness=thickness, cPip=500, rhoPip=8000, initDelay=false, m_flow_start=0) "Pipe 1"; FixedResistances.PlugFlowPipe pip4( dh=0.0273, redeclare package Medium = Medium, length=29, dIns=0.0182, kIns=0.024, allowFlowReversal=allowFlowReversal, m_flow_nominal=0.3, thickness=thickness, cPip=500, rhoPip=8000, initDelay=false, m_flow_start=0) "Pipe 4"; FixedResistances.PlugFlowPipe pip5( redeclare package Medium = Medium, length=20, dh=0.0825, kIns=0.024, dIns=0.045, allowFlowReversal=allowFlowReversal, m_flow_nominal=0.3, thickness=thickness, cPip=500, rhoPip=8000, initDelay=false, m_flow_start=0) "Pipe 5"; FixedResistances.PlugFlowPipe pip2( redeclare package Medium = Medium, length=76, dIns=0.0182, kIns=0.024, allowFlowReversal=allowFlowReversal, m_flow_nominal=0.3, thickness=thickness, dh=0.0273, cPip=500, rhoPip=8000, initDelay=false, m_flow_start=0) "Pipe 2"; FixedResistances.PlugFlowPipe pip3( redeclare package Medium = Medium, length=38, dIns=0.0182, kIns=0.024, allowFlowReversal=allowFlowReversal, m_flow_nominal=0.3, thickness=thickness, dh=0.0273, cPip=500, rhoPip=8000, initDelay=false, m_flow_start=0) "Pipe 3"; Modelica.Blocks.Sources.CombiTimeTable DataReader( tableOnFile=true, tableName="dat", columns=2:pipeDataAIT151218.nCol, fileName=pipeDataAIT151218.filNam) "Read measurement data"; FixedResistances.Validation.PlugFlowPipes.Data.PipeDataAIT151218 pipeDataAIT151218 "Measurement data from AIT network"; Modelica.Blocks.Sources.RealExpression m_flow_p3(y=-DataReader.y[7]) "Mass flow rate for substation 3"; Modelica.Blocks.Sources.RealExpression m_flow_p4(y=-DataReader.y[8]) "Mass flow rate of substation 4"; Modelica.Blocks.Sources.RealExpression m_flow_p2(y=-DataReader.y[6]); Modelica.Blocks.Sources.RealExpression T_p1(y=DataReader.y[1]) "Inlet temperature"; Fluid.Sensors.TemperatureTwoPort senTem_p3( redeclare package Medium = Medium, m_flow_nominal=m_flow_nominal, transferHeat=true, tauHeaTra=tauHeaTra) "Temperature sensor"; Fluid.Sensors.TemperatureTwoPort senTem_p2( redeclare package Medium = Medium, m_flow_nominal=m_flow_nominal, transferHeat=true, tauHeaTra=tauHeaTra) "Temperature sensor"; Fluid.Sensors.TemperatureTwoPort senTem_p4( redeclare package Medium = Medium, m_flow_nominal=m_flow_nominal, transferHeat=true, tauHeaTra=tauHeaTra) "Temperature sensor"; Fluid.Sensors.TemperatureTwoPort senTem_p1( redeclare package Medium = Medium, m_flow_nominal=m_flow_nominal, transferHeat=true, tauHeaTra=tauHeaTra) "Temperature sensor"; FixedResistances.PlugFlowPipe pip0( redeclare package Medium = Medium, dh=0.0825, dIns=0.045, kIns=0.024, length=20, allowFlowReversal=allowFlowReversal, m_flow_nominal=0.3, thickness=thickness, cPip=500, rhoPip=8000, initDelay=false, m_flow_start=0) "Pipe 0"; Buildings.Fluid.Sources.Boundary_pT ExcludedBranch( redeclare package Medium = Medium, nPorts=1) "Mass flow sink for excluded branch"; Fluid.Sensors.TemperatureTwoPort senTemIn_p2( redeclare package Medium = Medium, m_flow_nominal=m_flow_nominal, transferHeat=true, tauHeaTra=tauHeaTra) "Temperature sensor"; Modelica.Blocks.Logical.Switch switch "Decide if mass flow rate is below measurement noise threshold or not"; Modelica.Blocks.Sources.RealExpression m_flow_zero(y=0) "Default value if mass flow rate is below measurement noise threshold"; Modelica.Blocks.Logical.LessThreshold lessThreshold(threshold=-0.001) "Measurement noise threshold"; Modelica.Blocks.Logical.Switch switch1 "Decide if mass flow rate is below measurement noise threshold or not"; Fluid.Sources.MassFlowSource_T Point5( redeclare package Medium = Medium, use_m_flow_in=true, nPorts=1) "Bypass temperature sensor when flow rate is below measurement threshold"; GroundCoupling groMai( nPip=1, nSeg=3, soiDat=soiDat, cliCon=cliCon, len={pip0.length,pip1.length,pip5.length}, dep={1}, pos={0}, rad={0.0889}) "Main line pipes ground coupling"; parameter BoundaryConditions.GroundTemperature.ClimaticConstants.Generic cliCon( TSurMea=281.53, TSurAmp=9.88, sinPha=9002880) "Climatic constants in Pongau, Austria"; parameter HeatTransfer.Data.Soil.Generic soiDat( k=2.4, c=1000, d=1600) "Soil thermal properties"; GroundCoupling groSup( nPip=1, nSeg=3, soiDat=soiDat, cliCon=cliCon, len={pip2.length,pip3.length,pip4.length}, dep={1}, pos={0}, rad={0.0337}) "Customers supply pipes ground coupling"; FixedResistances.Junction splPip2( redeclare package Medium = Medium, m_flow_nominal={pip5.m_flow_nominal,pip2.m_flow_nominal,pip3.m_flow_nominal}, from_dp=true, linearized=true, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, dp_nominal(each displayUnit="Pa") = {0,0,0}, portFlowDirection_1=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering, portFlowDirection_2=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving, portFlowDirection_3=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving) "Splitter coming out of pip5"; FixedResistances.Junction splPip1( redeclare package Medium = Medium, m_flow_nominal={pip1.m_flow_nominal,pip5.m_flow_nominal,pip4.m_flow_nominal}, from_dp=true, linearized=true, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, dp_nominal(each displayUnit="Pa") = {0,0,0}, portFlowDirection_1=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering, portFlowDirection_2=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving, portFlowDirection_3=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving) "Splitter coming out of pip1"; equation connect(m_flow_p3.y, Point3.m_flow_in); connect(Point2.m_flow_in, m_flow_p2.y); connect(T_p1.y, Point1.T_in); connect(DataReader.y[5], Point1.m_flow_in); connect(senTem_p2.port_b, Point2.ports[1]); connect(Point3.ports[1], senTem_p3.port_b); connect(senTem_p4.port_b, Point4.ports[1]); connect(Point1.ports[1], senTem_p1.port_b); connect(senTem_p1.port_a, pip0.port_a); connect(switch.u1, m_flow_p4.y); connect(m_flow_zero.y, switch.u3); connect(switch.y, Point4.m_flow_in); connect(switch.u2, lessThreshold.y); connect(lessThreshold.u, m_flow_p4.y); connect(senTemIn_p2.port_a, pip2.port_a); connect(switch1.y, Point5.m_flow_in); connect(m_flow_p4.y, switch1.u3); connect(m_flow_zero.y, switch1.u1); connect(lessThreshold.y, switch1.u2); connect(groMai.ports[1, 1], pip0.heatPort); connect(groMai.ports[1, 2], pip1.heatPort); connect(groMai.ports[1, 2], pip5.heatPort); connect(groSup.ports[1, 1], pip2.heatPort); connect(groSup.ports[1, 2], pip3.heatPort); connect(groSup.ports[1, 3], pip4.heatPort); connect(senTem_p2.port_a, pip2.port_b); connect(pip5.port_a, splPip1.port_2); connect(pip1.port_b, splPip1.port_1); connect(pip4.port_a, splPip1.port_3); connect(pip5.port_b, splPip2.port_1); connect(senTemIn_p2.port_b, splPip2.port_2); connect(pip3.port_a, splPip2.port_3); connect(pip1.port_a, pip0.port_b); connect(pip4.port_b, senTem_p4.port_a); connect(pip4.port_b, Point5.ports[1]); connect(pip0.port_b, ExcludedBranch.ports[1]); connect(pip3.port_b, senTem_p3.port_a); end GroundCouplingAIT;