From 84f9135e737147fee779962a3b3f33ea40479657 Mon Sep 17 00:00:00 2001 From: Alessandro Maccarini Date: Tue, 23 May 2023 09:36:11 +0200 Subject: [PATCH 01/85] Added first version of ATES model --- IBPSA/Fluid/Geothermal/Aquifer/AquiferWell.mo | 199 ++++++++++++++++++ .../Validation/Well_Simulation_Test.mo | 25 +++ .../Geothermal/Aquifer/Validation/package.mo | 4 + .../Aquifer/Validation/package.order | 1 + IBPSA/Fluid/Geothermal/Aquifer/package.mo | 5 + IBPSA/Fluid/Geothermal/Aquifer/package.order | 2 + 6 files changed, 236 insertions(+) create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/AquiferWell.mo create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/Validation/Well_Simulation_Test.mo create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/Validation/package.order create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/package.mo create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/package.order diff --git a/IBPSA/Fluid/Geothermal/Aquifer/AquiferWell.mo b/IBPSA/Fluid/Geothermal/Aquifer/AquiferWell.mo new file mode 100644 index 0000000000..a4964a0692 --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/AquiferWell.mo @@ -0,0 +1,199 @@ +within IBPSA.Fluid.Geothermal.Aquifer; +model AquiferWell + "Model of a single well for aquifer thermal energy storage" + replaceable package Medium = + Modelica.Media.Interfaces.PartialMedium "Medium in the component" annotation (choices( + choice(redeclare package Medium = IBPSA.Media.Air "Moist air"), + choice(redeclare package Medium = IBPSA.Media.Water "Water"), + choice(redeclare package Medium = + IBPSA.Media.Antifreeze.PropyleneGlycolWater ( + property_T=293.15, + X_a=0.40) + "Propylene glycol water, 40% mass fraction"))); + parameter Integer nVol(min=1)=10 "Number of volumes" annotation ( + Dialog(group="Domain discretization")); + parameter Modelica.Units.SI.Height h=200 "Aquifer thickness"; + parameter Real phi=0.2 "Reservoir porosity"; + parameter Modelica.Units.SI.Radius r_wb=0.1 "Wellbore radius" annotation ( + Dialog(group="Domain discretization")); + parameter Modelica.Units.SI.Radius r_max=2400 "Domain radius" annotation ( + Dialog(group="Domain discretization")); + parameter Real griFac(min=1) = 1.15 "Grid factor for spacing" annotation ( + Dialog(group="Domain discretization")); + parameter Modelica.Units.SI.Temperature T_ini=273.15+10 "Initial temperature of domain" annotation ( + Dialog(group="Domain discretization")); + parameter Modelica.Units.SI.Density rhoAqu=2680 "Density of aquifer" annotation ( + Dialog(group="Properties of aquifer")); + parameter Modelica.Units.SI.SpecificHeatCapacity cpAqu=833 "Specific heat capacity of aquifer" annotation ( + Dialog(group="Properties of aquifer")); + parameter Modelica.Units.SI.ThermalConductivity kAqu=2.8 "Thermal conductivity of aquifer" annotation ( + Dialog(group="Properties of aquifer")); + parameter Modelica.Units.SI.Temperature TGro=273.15+12 "Undirsturbed ground temperature" annotation ( + Dialog(group="Properties of ground")); + + IBPSA.Fluid.MixingVolumes.MixingVolume vol[nVol]( + redeclare final package Medium=Medium, + each T_start=T_ini, + each m_flow_nominal=1, + V=VWat, each nPorts=2) + annotation (Placement(transformation(extent={{-10,20},{10,40}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_a(redeclare final package Medium=Medium) + annotation (Placement(transformation(extent={{-10,90},{10,110}}))); + IBPSA.Fluid.Sources.Boundary_pT bou(redeclare final package Medium=Medium, + T=T_ini, + nPorts=1) + annotation (Placement(transformation(extent={{60,-10},{40,10}}))); + Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heatCapacitor[nVol](C=C, each T( + start=T_ini)) + annotation (Placement(transformation(extent={{-52,-40},{-32,-20}}))); + Modelica.Thermal.HeatTransfer.Components.ThermalResistor thermalResistor[nVol](R=R) + annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); + Modelica.Thermal.HeatTransfer.Sources.FixedTemperature fixedTemperature(T=TGro) + annotation (Placement(transformation(extent={{90,-50},{70,-30}}))); + + Modelica.Fluid.Sensors.TemperatureTwoPort temperature(redeclare final package + Medium = Medium) + annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); + Modelica.Thermal.HeatTransfer.Components.ThermalResistor thermalResistorWell(each R=R[ + 1]) + annotation (Placement(transformation(extent={{-90,-50},{-70,-30}}))); + IBPSA.Fluid.FixedResistances.PressureDrop res( redeclare final package Medium = + Medium, + m_flow_nominal=1, + dp_nominal=1) + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); +protected + parameter Modelica.Units.SI.Radius r[nVol + 1](each fixed=false) + "Radius to the boundary of the i-th domain"; + parameter Modelica.Units.SI.Radius rC[nVol](each fixed=false) + "Radius to the center of the i-th domain"; + parameter Modelica.Units.SI.SpecificHeatCapacity cpWat(fixed=false) + "Water specific heat capacity"; + parameter Modelica.Units.SI.Density rhoWat(fixed=false) + "Water density"; + parameter Modelica.Units.SI.ThermalConductivity kWat(fixed=false) + "Water thermal conductivity"; + parameter Modelica.Units.SI.HeatCapacity C[nVol](each fixed=false) + "Heat capacity of segment"; + parameter Modelica.Units.SI.Volume VWat[nVol](each fixed=false) + "Volumes of water"; + parameter Modelica.Units.SI.ThermalResistance R[nVol+1](each fixed=false) + "Thermal resistances between nodes"; + parameter Real cAqu(each fixed=false) + "Heat capacity normalized with volume for aquifer"; + parameter Real kVol(each fixed=false) + "Heat conductivity normalized with volume"; + +initial equation + assert(r_wb < r_max, "Error: Model requires r_wb < r_max"); + assert(0 < r_wb, "Error: Model requires 0 < r_wb"); + + cAqu=rhoAqu*cpAqu*(1-phi); + kVol=kWat*phi+kAqu*(1-phi); + + cpWat=Medium.specificHeatCapacityCp(Medium.setState_pTX( + Medium.p_default, + Medium.T_default, + Medium.X_default)); + rhoWat=Medium.density(Medium.setState_pTX( + Medium.p_default, + Medium.T_default, + Medium.X_default)); + kWat=Medium.thermalConductivity(Medium.setState_pTX( + Medium.p_default, + Medium.T_default, + Medium.X_default)); + + r[1] = r_wb; + for i in 2:nVol+1 loop + r[i]= r[i-1] + (r_max - r_wb) * (1-griFac)/(1-griFac^(nVol)) * griFac^(i-2); + end for; + for i in 1:nVol loop + rC[i] = (r[i]+r[i+1])/2; + end for; + for i in 1:nVol loop + C[i] = cAqu*h*3.14*(r[i+1]^2-r[i]^2); + end for; + for i in 1:nVol loop + VWat[i] = phi*h*3.14*(r[i+1]^2-r[i]^2); + end for; + R[1]=Modelica.Math.log(rC[1]/r_wb)/(2*Modelica.Constants.pi*kVol*h); + R[nVol+1]=Modelica.Math.log(r_max/rC[nVol])/(2*Modelica.Constants.pi*kVol*h); + for i in 2:nVol loop + R[i] = Modelica.Math.log(rC[i]/rC[i-1])/(2*Modelica.Constants.pi*kVol*h); + end for; + +equation + + if nVol > 1 then + for i in 1:(nVol - 1) loop + connect(vol[i].ports[2], vol[i + 1].ports[1]); + end for; + end if; + if nVol > 1 then + for i in 1:(nVol - 1) loop + connect(heatCapacitor[i+1].port, thermalResistor[i].port_b); + end for; + end if; + + connect(fixedTemperature.port, thermalResistor[nVol].port_b) + annotation (Line(points={{70,-40},{50,-40}}, color={191,0,0})); + connect(temperature.port_b, vol[1].ports[1]) annotation (Line(points={{-30,0}, + {-1,0},{-1,20}}, color={0,127,255})); + connect(bou.ports[1], vol[nVol].ports[2]) annotation (Line(points={{40,0},{1,0}, + {1,20}}, color={0,127,255})); + connect(thermalResistorWell.port_b, heatCapacitor[1].port) + annotation (Line(points={{-70,-40},{-42,-40}}, color={191,0,0})); + + connect(vol.heatPort, heatCapacitor.port) annotation (Line(points={{-10,30},{-20, + 30},{-20,-12},{0,-12},{0,-40},{-42,-40}}, color={191,0,0})); + connect(thermalResistor.port_a, vol.heatPort) annotation (Line(points={{30,-40}, + {0,-40},{0,-12},{-20,-12},{-20,30},{-10,30}}, color={191,0,0})); + connect(port_a, res.port_a) + annotation (Line(points={{0,100},{0,60},{-90,60},{-90,0},{-80,0}}, + color={0,127,255})); + connect(res.port_b, temperature.port_a) + annotation (Line(points={{-60,0},{-50,0}}, color={0,127,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-20,100},{20,-2}}, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + lineColor={0,0,0}), + Ellipse( + extent={{20,2},{-20,-6}}, + lineColor={0,0,0}, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={211,168,137}, + fillPattern=FillPattern.Forward), + Rectangle( + extent={{-100,20},{100,-48}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + lineColor={0,0,0}), + Rectangle( + extent={{-100,100},{100,82}}, + lineColor={0,0,0}, + fillColor={0,140,72}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-36,100},{36,-16}}, + fillColor={218,218,218}, + fillPattern=FillPattern.Solid, + lineColor={0,0,0}), + Ellipse( + extent={{36,-8},{-36,-24}}, + lineColor={0,0,0}, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Text( + extent={{-147,-108},{153,-148}}, + textColor={0,0,255}, + textString="%name")}), Diagram( + coordinateSystem(preserveAspectRatio=false)), + defaultComponentName="AquWel"); +end AquiferWell; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Validation/Well_Simulation_Test.mo b/IBPSA/Fluid/Geothermal/Aquifer/Validation/Well_Simulation_Test.mo new file mode 100644 index 0000000000..d0c46b747b --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/Validation/Well_Simulation_Test.mo @@ -0,0 +1,25 @@ +within IBPSA.Fluid.Geothermal.Aquifer.Validation; +model Well_Simulation_Test + Modelica.Blocks.Sources.CombiTimeTable + combiTimeTable(table=[0.0,1; 86400*120,1; + 86400*120,0; 86400*180,0.0; 86400*180,-1; 86400*300,-1]) + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + Sources.MassFlowSource_T boundary( + redeclare package Medium = IBPSA.Media.Water, + use_m_flow_in=true, + T=393.15, + nPorts=1) annotation (Placement(transformation(extent={{-20,0},{0,20}}))); + AquiferWell AquWel( + nVol=232, + griFac=1.1, + T_ini=307.15, + TGro=307.15) + annotation (Placement(transformation(extent={{40,-20},{60,0}}))); +equation + connect(combiTimeTable.y[1], boundary.m_flow_in) annotation (Line(points={{ + -59,50},{-40,50},{-40,18},{-22,18}}, color={0,0,127})); + connect(boundary.ports[1], AquWel.port_a) + annotation (Line(points={{0,10},{50,10},{50,0}}, color={0,127,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end Well_Simulation_Test; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo b/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo new file mode 100644 index 0000000000..b6e24a878f --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo @@ -0,0 +1,4 @@ +within IBPSA.Fluid.Geothermal.Aquifer; +package Validation + +end Validation; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.order b/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.order new file mode 100644 index 0000000000..74ff231669 --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.order @@ -0,0 +1 @@ +Well_Simulation_Test diff --git a/IBPSA/Fluid/Geothermal/Aquifer/package.mo b/IBPSA/Fluid/Geothermal/Aquifer/package.mo new file mode 100644 index 0000000000..b40a7a09a6 --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/package.mo @@ -0,0 +1,5 @@ +within IBPSA.Fluid.Geothermal; +package Aquifer + extends Modelica.Icons.VariantsPackage; + +end Aquifer; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/package.order b/IBPSA/Fluid/Geothermal/Aquifer/package.order new file mode 100644 index 0000000000..74e6eb291f --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/package.order @@ -0,0 +1,2 @@ +AquiferWell +Validation From b9dce374db7c6371e53d2e24c14aa30df097701f Mon Sep 17 00:00:00 2001 From: Alessandro Maccarini Date: Wed, 24 May 2023 11:20:47 +0200 Subject: [PATCH 02/85] Added documentation SingleWell --- .../Aquifer/{AquiferWell.mo => SingleWell.mo} | 118 ++++++++++++------ ...l_Simulation_Test.mo => SimulationTest.mo} | 18 +-- .../Geothermal/Aquifer/Validation/package.mo | 3 +- .../Aquifer/Validation/package.order | 2 +- IBPSA/Fluid/Geothermal/Aquifer/package.mo | 2 +- IBPSA/Fluid/Geothermal/Aquifer/package.order | 2 +- .../Validation/Analytic_20Years.mo | 2 +- .../BaseClasses/PartialBorefield.mo | 2 +- IBPSA/Fluid/Geothermal/package.order | 1 + .../Fluid/Geothermal/Aquifer/Geometry.png | Bin 0 -> 49815 bytes .../Fluid/Geothermal/Aquifer/Geometry.svg | 1 + 11 files changed, 99 insertions(+), 52 deletions(-) rename IBPSA/Fluid/Geothermal/Aquifer/{AquiferWell.mo => SingleWell.mo} (62%) rename IBPSA/Fluid/Geothermal/Aquifer/Validation/{Well_Simulation_Test.mo => SimulationTest.mo} (70%) create mode 100644 IBPSA/Resources/Images/Fluid/Geothermal/Aquifer/Geometry.png create mode 100644 IBPSA/Resources/Images/Fluid/Geothermal/Aquifer/Geometry.svg diff --git a/IBPSA/Fluid/Geothermal/Aquifer/AquiferWell.mo b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo similarity index 62% rename from IBPSA/Fluid/Geothermal/Aquifer/AquiferWell.mo rename to IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo index a4964a0692..1f8e516921 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/AquiferWell.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo @@ -1,5 +1,5 @@ within IBPSA.Fluid.Geothermal.Aquifer; -model AquiferWell +model SingleWell "Model of a single well for aquifer thermal energy storage" replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component" annotation (choices( @@ -31,37 +31,34 @@ model AquiferWell parameter Modelica.Units.SI.Temperature TGro=273.15+12 "Undirsturbed ground temperature" annotation ( Dialog(group="Properties of ground")); - IBPSA.Fluid.MixingVolumes.MixingVolume vol[nVol]( + IBPSA.Fluid.MixingVolumes.MixingVolume vol[nVol]( redeclare final package Medium=Medium, each T_start=T_ini, each m_flow_nominal=1, - V=VWat, each nPorts=2) + V=VWat, + each nPorts=2) annotation (Placement(transformation(extent={{-10,20},{10,40}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a(redeclare final package Medium=Medium) annotation (Placement(transformation(extent={{-10,90},{10,110}}))); - IBPSA.Fluid.Sources.Boundary_pT bou(redeclare final package Medium=Medium, + IBPSA.Fluid.Sources.Boundary_pT bou(redeclare final package Medium=Medium, T=T_ini, nPorts=1) annotation (Placement(transformation(extent={{60,-10},{40,10}}))); - Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heatCapacitor[nVol](C=C, each T( - start=T_ini)) + Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heaCap[nVol](C=C, + each T(start=T_ini)) annotation (Placement(transformation(extent={{-52,-40},{-32,-20}}))); - Modelica.Thermal.HeatTransfer.Components.ThermalResistor thermalResistor[nVol](R=R) - annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); - Modelica.Thermal.HeatTransfer.Sources.FixedTemperature fixedTemperature(T=TGro) + Modelica.Thermal.HeatTransfer.Components.ThermalResistor theRes[nVol](R=R) + annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); + Modelica.Thermal.HeatTransfer.Sources.FixedTemperature groTem(T=TGro) annotation (Placement(transformation(extent={{90,-50},{70,-30}}))); - - Modelica.Fluid.Sensors.TemperatureTwoPort temperature(redeclare final package - Medium = Medium) - annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); - Modelica.Thermal.HeatTransfer.Components.ThermalResistor thermalResistorWell(each R=R[ - 1]) - annotation (Placement(transformation(extent={{-90,-50},{-70,-30}}))); - IBPSA.Fluid.FixedResistances.PressureDrop res( redeclare final package Medium = - Medium, - m_flow_nominal=1, - dp_nominal=1) - annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + IBPSA.Fluid.FixedResistances.PressureDrop res(redeclare final package Medium = Medium, + m_flow_nominal=m_flow_nominal, + dp_nominal=dp_nominal) + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal=1 + "Nominal mass flow rate"; + parameter Modelica.Units.SI.PressureDifference dp_nominal=1 + "Pressure drop at nominal mass flow rate"; protected parameter Modelica.Units.SI.Radius r[nVol + 1](each fixed=false) "Radius to the boundary of the i-th domain"; @@ -120,40 +117,37 @@ initial equation R[1]=Modelica.Math.log(rC[1]/r_wb)/(2*Modelica.Constants.pi*kVol*h); R[nVol+1]=Modelica.Math.log(r_max/rC[nVol])/(2*Modelica.Constants.pi*kVol*h); for i in 2:nVol loop - R[i] = Modelica.Math.log(rC[i]/rC[i-1])/(2*Modelica.Constants.pi*kVol*h); + R[i] = Modelica.Math.log(rC[i]/rC[i-1])/(2*Modelica.Constants.pi*kVol*h); end for; equation if nVol > 1 then for i in 1:(nVol - 1) loop - connect(vol[i].ports[2], vol[i + 1].ports[1]); + connect(vol[i].ports[1], vol[i + 1].ports[1]); end for; end if; if nVol > 1 then for i in 1:(nVol - 1) loop - connect(heatCapacitor[i+1].port, thermalResistor[i].port_b); + connect(heaCap[i + 1].port, theRes[i].port_b); end for; end if; - connect(fixedTemperature.port, thermalResistor[nVol].port_b) + connect(groTem.port, theRes[nVol].port_b) annotation (Line(points={{70,-40},{50,-40}}, color={191,0,0})); - connect(temperature.port_b, vol[1].ports[1]) annotation (Line(points={{-30,0}, - {-1,0},{-1,20}}, color={0,127,255})); connect(bou.ports[1], vol[nVol].ports[2]) annotation (Line(points={{40,0},{1,0}, {1,20}}, color={0,127,255})); - connect(thermalResistorWell.port_b, heatCapacitor[1].port) - annotation (Line(points={{-70,-40},{-42,-40}}, color={191,0,0})); - connect(vol.heatPort, heatCapacitor.port) annotation (Line(points={{-10,30},{-20, - 30},{-20,-12},{0,-12},{0,-40},{-42,-40}}, color={191,0,0})); - connect(thermalResistor.port_a, vol.heatPort) annotation (Line(points={{30,-40}, - {0,-40},{0,-12},{-20,-12},{-20,30},{-10,30}}, color={191,0,0})); + connect(vol.heatPort, heaCap.port) annotation (Line(points={{-10,30},{-20,30}, + {-20,-12},{0,-12},{0,-40},{-42,-40}}, color={191,0,0})); + connect(theRes.port_a, vol.heatPort) annotation (Line(points={{30,-40},{0,-40}, + {0,-12},{-20,-12},{-20,30},{-10,30}}, color={191,0,0})); connect(port_a, res.port_a) - annotation (Line(points={{0,100},{0,60},{-90,60},{-90,0},{-80,0}}, + annotation (Line(points={{0,100},{0,60},{-80,60},{-80,0},{-60,0}}, color={0,127,255})); - connect(res.port_b, temperature.port_a) - annotation (Line(points={{-60,0},{-50,0}}, color={0,127,255})); + connect(res.port_b, vol[1].ports[1]) + annotation (Line(points={{-40,0},{-1,0},{-1,20}}, + color={0,127,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-20,100},{20,-2}}, @@ -195,5 +189,53 @@ equation textColor={0,0,255}, textString="%name")}), Diagram( coordinateSystem(preserveAspectRatio=false)), - defaultComponentName="AquWel"); -end AquiferWell; + defaultComponentName="aquWel", + Documentation(info=" +

+This model simulates aquifer thermal energy storage. +

+

+To calculate aquifer temperature at different locations over time, the model applies +theoretical principles of water flow and heat transfer phenomena. The model is based on +the partial differential equation (PDE) for 1D conductive-convective transient +radial heat transport in porous media +

+ρ c (∂ T(r,t) ⁄ ∂t) = +k (∂² T(r,t) ⁄ ∂r²) - ρw cw u(∂ T(r,t) ⁄ ∂t), +

+

+where +ρ +is the mass density, +c +is the specific heat capacity per unit mass, +T +is the temperature at location r and time t, +u is water velocity and +k is the heat conductivity. The subscript w indicates water. +The first term on the right hand side of the equation describes the effect of conduction, while +the second term describes the fluid flow. +

Spatial discretization

+To discretize the conductive-convective equation, the domain is divided into a series +of thermal capacitances and thermal resistances along the radial direction. The +implementation uses an array of +Modelica.Thermal.HeatTransfer.Components.HeatCapacitor +and Modelica.Thermal.HeatTransfer.Components.ThermalResistor +Fluid flow was modelled by adding a series of fluid volumes, which are connected +to the thermal capacitances via heat ports. The fluid stream was developed using +the model IBPSA.Fluid.MixingVolumes.MixingVolume. +The geometric representation of the model is illustrated in the figure below. + +

+

+\"image\" +

+", revisions=" + +")); +end SingleWell; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Validation/Well_Simulation_Test.mo b/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo similarity index 70% rename from IBPSA/Fluid/Geothermal/Aquifer/Validation/Well_Simulation_Test.mo rename to IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo index d0c46b747b..f59efebe9b 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/Validation/Well_Simulation_Test.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo @@ -1,25 +1,27 @@ within IBPSA.Fluid.Geothermal.Aquifer.Validation; -model Well_Simulation_Test +model SimulationTest + extends Modelica.Icons.Example; Modelica.Blocks.Sources.CombiTimeTable - combiTimeTable(table=[0.0,1; 86400*120,1; - 86400*120,0; 86400*180,0.0; 86400*180,-1; 86400*300,-1]) + combiTimeTable(table=[0.0,1; 86400*120,1; 86400 + *120,0; 86400*180,0.0; 86400*180,-1; 86400*300,-1]) annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); Sources.MassFlowSource_T boundary( redeclare package Medium = IBPSA.Media.Water, use_m_flow_in=true, T=393.15, nPorts=1) annotation (Placement(transformation(extent={{-20,0},{0,20}}))); - AquiferWell AquWel( + SingleWell aquWel( + redeclare package Medium = IBPSA.Media.Water, nVol=232, griFac=1.1, T_ini=307.15, TGro=307.15) annotation (Placement(transformation(extent={{40,-20},{60,0}}))); equation - connect(combiTimeTable.y[1], boundary.m_flow_in) annotation (Line(points={{ - -59,50},{-40,50},{-40,18},{-22,18}}, color={0,0,127})); - connect(boundary.ports[1], AquWel.port_a) + connect(combiTimeTable.y[1], boundary.m_flow_in) annotation (Line(points={{-59, + 50},{-40,50},{-40,18},{-22,18}}, color={0,0,127})); + connect(boundary.ports[1], aquWel.port_a) annotation (Line(points={{0,10},{50,10},{50,0}}, color={0,127,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( coordinateSystem(preserveAspectRatio=false))); -end Well_Simulation_Test; +end SimulationTest; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo b/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo index b6e24a878f..a0d50d16e7 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo @@ -1,4 +1,5 @@ within IBPSA.Fluid.Geothermal.Aquifer; package Validation - + extends Modelica.Icons.ExamplesPackage; + end Validation; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.order b/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.order index 74ff231669..532a23653c 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.order +++ b/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.order @@ -1 +1 @@ -Well_Simulation_Test +SimulationTest diff --git a/IBPSA/Fluid/Geothermal/Aquifer/package.mo b/IBPSA/Fluid/Geothermal/Aquifer/package.mo index b40a7a09a6..fa573e5293 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/package.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/package.mo @@ -1,5 +1,5 @@ within IBPSA.Fluid.Geothermal; -package Aquifer +package Aquifer "Package with aquifer thermal energy storage models" extends Modelica.Icons.VariantsPackage; end Aquifer; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/package.order b/IBPSA/Fluid/Geothermal/Aquifer/package.order index 74e6eb291f..fda59b4ae9 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/package.order +++ b/IBPSA/Fluid/Geothermal/Aquifer/package.order @@ -1,2 +1,2 @@ -AquiferWell +SingleWell Validation diff --git a/IBPSA/Fluid/Geothermal/Borefields/BaseClasses/HeatTransfer/Validation/Analytic_20Years.mo b/IBPSA/Fluid/Geothermal/Borefields/BaseClasses/HeatTransfer/Validation/Analytic_20Years.mo index 38b642cf99..e07fcef7eb 100644 --- a/IBPSA/Fluid/Geothermal/Borefields/BaseClasses/HeatTransfer/Validation/Analytic_20Years.mo +++ b/IBPSA/Fluid/Geothermal/Borefields/BaseClasses/HeatTransfer/Validation/Analytic_20Years.mo @@ -1,4 +1,4 @@ -within IBPSA.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation; +within IBPSA.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation; model Analytic_20Years "Long term validation of ground temperature response model" extends Modelica.Icons.Example; diff --git a/IBPSA/Fluid/Geothermal/Borefields/BaseClasses/PartialBorefield.mo b/IBPSA/Fluid/Geothermal/Borefields/BaseClasses/PartialBorefield.mo index 0252c3d5e6..fd4f2d8630 100644 --- a/IBPSA/Fluid/Geothermal/Borefields/BaseClasses/PartialBorefield.mo +++ b/IBPSA/Fluid/Geothermal/Borefields/BaseClasses/PartialBorefield.mo @@ -190,7 +190,7 @@ equation annotation (Line(points={{-4.44089e-16,-20},{0,-20},{0,-30}}, color={191,0,0})); connect(QBorHol.Q_flow, QTotSeg_flow.u) - annotation (Line(points={{-10,-10},{-86,-10},{-86,80},{-62,80}}, + annotation (Line(points={{-11,-10},{-86,-10},{-86,80},{-62,80}}, color={0,0,127})); connect(groTemRes.delTBor, repDelTBor.u) annotation (Line(points={{41,80},{58,80}}, color={0,0,127})); diff --git a/IBPSA/Fluid/Geothermal/package.order b/IBPSA/Fluid/Geothermal/package.order index b4d445b8a6..9465d41136 100644 --- a/IBPSA/Fluid/Geothermal/package.order +++ b/IBPSA/Fluid/Geothermal/package.order @@ -1 +1,2 @@ Borefields +Aquifer diff --git a/IBPSA/Resources/Images/Fluid/Geothermal/Aquifer/Geometry.png b/IBPSA/Resources/Images/Fluid/Geothermal/Aquifer/Geometry.png new file mode 100644 index 0000000000000000000000000000000000000000..1f95f652e20bce548a51cc51638423a33b414bc6 GIT binary patch literal 49815 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

mVd0mXEAeXgCvuBh0qtSHv-$qj~ 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 yIZ;rdPJWLHd54hRqf(+|9rQo`?tqg3 literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Fluid/Geothermal/Aquifer/Geometry.svg b/IBPSA/Resources/Images/Fluid/Geothermal/Aquifer/Geometry.svg new file mode 100644 index 0000000000..4829707cac --- /dev/null +++ b/IBPSA/Resources/Images/Fluid/Geothermal/Aquifer/Geometry.svg @@ -0,0 +1 @@ +rrwellraquiferr1r2T1T2ur=rwellr=raquiferzru \ No newline at end of file From 0b83b17eef3455040af2ba12954ca6d7d6329500 Mon Sep 17 00:00:00 2001 From: Alessandro Maccarini Date: Wed, 24 May 2023 13:12:10 +0200 Subject: [PATCH 03/85] Added aquifer properties as record --- IBPSA/Fluid/Geothermal/Aquifer/Data/Rock.mo | 37 +++++++++++++++++++ .../Fluid/Geothermal/Aquifer/Data/Template.mo | 13 +++++++ .../Fluid/Geothermal/Aquifer/Data/package.mo | 5 +++ .../Geothermal/Aquifer/Data/package.order | 2 + IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo | 12 +++--- .../Aquifer/Validation/SimulationTest.mo | 6 ++- IBPSA/Fluid/Geothermal/Aquifer/package.order | 1 + 7 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/Data/Rock.mo create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/Data/Template.mo create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/Data/package.mo create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/Data/package.order diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Data/Rock.mo b/IBPSA/Fluid/Geothermal/Aquifer/Data/Rock.mo new file mode 100644 index 0000000000..5694cd33a2 --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/Data/Rock.mo @@ -0,0 +1,37 @@ +within IBPSA.Fluid.Geothermal.Aquifer.Data; +record Rock "Soil data record of rock heat transfer properties" + extends IBPSA.Fluid.Geothermal.Aquifer.Data.Template( + kSoi=2.8, + dSoi=2680, + cSoi=833); + annotation ( + defaultComponentPrefixes="parameter", + defaultComponentName="soiDat", +Documentation( +info=" +

+This soil data record contains the heat transfer properties of sandstone. +

+", +revisions=" +
    +
  • +December 21, 2018, by Jianjun Hu:
    +Changed the default properties based on Table 4 in the + +McQuay geothermal heat pump design manual. +See #1062. +
  • + +
  • +July 15, 2018, by Michael Wetter:
    +Revised implementation, added defaultComponentPrefixes and +defaultComponentName. +
  • +
  • +June 28, 2018, by Damien Picard:
    +First implementation. +
  • +
+")); +end Rock; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Data/Template.mo b/IBPSA/Fluid/Geothermal/Aquifer/Data/Template.mo new file mode 100644 index 0000000000..208030b1ca --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/Data/Template.mo @@ -0,0 +1,13 @@ +within IBPSA.Fluid.Geothermal.Aquifer.Data; +record Template + "Template for soil data records" + extends Modelica.Icons.Record; + parameter Modelica.Units.SI.ThermalConductivity kSoi + "Thermal conductivity of the soil material"; + parameter Modelica.Units.SI.SpecificHeatCapacity cSoi + "Specific heat capacity of the soil material"; + parameter Modelica.Units.SI.Density dSoi(displayUnit="kg/m3") + "Density of the soil material"; + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end Template; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Data/package.mo b/IBPSA/Fluid/Geothermal/Aquifer/Data/package.mo new file mode 100644 index 0000000000..42fe1fac8a --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/Data/package.mo @@ -0,0 +1,5 @@ +within IBPSA.Fluid.Geothermal.Aquifer; +package Data "Collection of data records for aquifer thermal energy storage" + extends Modelica.Icons.MaterialPropertiesPackage; + +end Data; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Data/package.order b/IBPSA/Fluid/Geothermal/Aquifer/Data/package.order new file mode 100644 index 0000000000..97b1637927 --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/Data/package.order @@ -0,0 +1,2 @@ +Template +Rock diff --git a/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo index 1f8e516921..48f8cd082a 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo @@ -30,6 +30,7 @@ model SingleWell Dialog(group="Properties of aquifer")); parameter Modelica.Units.SI.Temperature TGro=273.15+12 "Undirsturbed ground temperature" annotation ( Dialog(group="Properties of ground")); + parameter IBPSA.Fluid.Geothermal.Aquifer.Data.Template aquDat "Aquifer thermal properties" annotation (choicesAllMatching=true); IBPSA.Fluid.MixingVolumes.MixingVolume vol[nVol]( redeclare final package Medium=Medium, @@ -124,7 +125,7 @@ equation if nVol > 1 then for i in 1:(nVol - 1) loop - connect(vol[i].ports[1], vol[i + 1].ports[1]); + connect(vol[i].ports[2], vol[i + 1].ports[1]); end for; end if; if nVol > 1 then @@ -135,8 +136,6 @@ equation connect(groTem.port, theRes[nVol].port_b) annotation (Line(points={{70,-40},{50,-40}}, color={191,0,0})); - connect(bou.ports[1], vol[nVol].ports[2]) annotation (Line(points={{40,0},{1,0}, - {1,20}}, color={0,127,255})); connect(vol.heatPort, heaCap.port) annotation (Line(points={{-10,30},{-20,30}, {-20,-12},{0,-12},{0,-40},{-42,-40}}, color={191,0,0})); @@ -145,9 +144,10 @@ equation connect(port_a, res.port_a) annotation (Line(points={{0,100},{0,60},{-80,60},{-80,0},{-60,0}}, color={0,127,255})); - connect(res.port_b, vol[1].ports[1]) - annotation (Line(points={{-40,0},{-1,0},{-1,20}}, - color={0,127,255})); + connect(res.port_b, vol[1].ports[1]) annotation (Line(points={{-40,0},{-1,0},{ + -1,20}}, color={0,127,255})); + connect(bou.ports[1], vol[nVol].ports[2]) annotation (Line(points={{40,0},{1,0}, + {1,20}}, color={0,127,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-20,100},{20,-2}}, diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo b/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo index f59efebe9b..301a553e86 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo @@ -15,7 +15,8 @@ model SimulationTest nVol=232, griFac=1.1, T_ini=307.15, - TGro=307.15) + TGro=307.15, + aquDat=IBPSA.Fluid.Geothermal.Aquifer.Data.Rock()) annotation (Placement(transformation(extent={{40,-20},{60,0}}))); equation connect(combiTimeTable.y[1], boundary.m_flow_in) annotation (Line(points={{-59, @@ -23,5 +24,6 @@ equation connect(boundary.ports[1], aquWel.port_a) annotation (Line(points={{0,10},{50,10},{50,0}}, color={0,127,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); + coordinateSystem(preserveAspectRatio=false)), + experiment(StopTime=31536000, __Dymola_Algorithm="Dassl")); end SimulationTest; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/package.order b/IBPSA/Fluid/Geothermal/Aquifer/package.order index fda59b4ae9..084ead276e 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/package.order +++ b/IBPSA/Fluid/Geothermal/Aquifer/package.order @@ -1,2 +1,3 @@ SingleWell Validation +Data From b073350fe7952dc70ff3f60a014f4431ad3f5d43 Mon Sep 17 00:00:00 2001 From: Alessandro Maccarini Date: Wed, 24 May 2023 15:27:42 +0200 Subject: [PATCH 04/85] Added documentation of validation case --- IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo | 10 +--- .../Aquifer/Validation/SimulationTest.mo | 50 +++++++++++++++++- IBPSA/Fluid/Geothermal/Aquifer/package.order | 2 +- IBPSA/Fluid/Geothermal/package.order | 3 +- .../Fluid/Geothermal/Aquifer/results.png | Bin 0 -> 85904 bytes 5 files changed, 53 insertions(+), 12 deletions(-) create mode 100644 IBPSA/Resources/Images/Fluid/Geothermal/Aquifer/results.png diff --git a/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo index 48f8cd082a..6270bfd501 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo @@ -22,12 +22,6 @@ model SingleWell Dialog(group="Domain discretization")); parameter Modelica.Units.SI.Temperature T_ini=273.15+10 "Initial temperature of domain" annotation ( Dialog(group="Domain discretization")); - parameter Modelica.Units.SI.Density rhoAqu=2680 "Density of aquifer" annotation ( - Dialog(group="Properties of aquifer")); - parameter Modelica.Units.SI.SpecificHeatCapacity cpAqu=833 "Specific heat capacity of aquifer" annotation ( - Dialog(group="Properties of aquifer")); - parameter Modelica.Units.SI.ThermalConductivity kAqu=2.8 "Thermal conductivity of aquifer" annotation ( - Dialog(group="Properties of aquifer")); parameter Modelica.Units.SI.Temperature TGro=273.15+12 "Undirsturbed ground temperature" annotation ( Dialog(group="Properties of ground")); parameter IBPSA.Fluid.Geothermal.Aquifer.Data.Template aquDat "Aquifer thermal properties" annotation (choicesAllMatching=true); @@ -86,8 +80,8 @@ initial equation assert(r_wb < r_max, "Error: Model requires r_wb < r_max"); assert(0 < r_wb, "Error: Model requires 0 < r_wb"); - cAqu=rhoAqu*cpAqu*(1-phi); - kVol=kWat*phi+kAqu*(1-phi); + cAqu=aquDat.dSoi*aquDat.cSoi*(1-phi); + kVol=kWat*phi+aquDat.kSoi*(1-phi); cpWat=Medium.specificHeatCapacityCp(Medium.setState_pTX( Medium.p_default, diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo b/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo index 301a553e86..d7313ddbaa 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo @@ -1,4 +1,4 @@ -within IBPSA.Fluid.Geothermal.Aquifer.Validation; +within IBPSA.Fluid.Geothermal.Aquifer.Validation; model SimulationTest extends Modelica.Icons.Example; Modelica.Blocks.Sources.CombiTimeTable @@ -25,5 +25,51 @@ equation annotation (Line(points={{0,10},{50,10},{50,0}}, color={0,127,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( coordinateSystem(preserveAspectRatio=false)), - experiment(StopTime=31536000, __Dymola_Algorithm="Dassl")); + experiment(StopTime=31536000, __Dymola_Algorithm="Dassl"), + Documentation(info=" +

+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: +

    +
  • Injection: Water is pumped at Q = 0.001 m3 s-1 and Tinj = 120°C for 120 days.
  • +
  • Falloff: Well is shut-in, Q = 0 m3 s-1 for 60 days.
  • +
  • Drawdown: Water is pumped at Q = -0.001 m3 s-1 for 120 days.
  • +
  • Build-up phase: Well is shut-in, at Q = 0 m3 s-1 for 65.25.
  • +
+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, Rubén 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. +

+ +", revisions=" +
    +
  • +May 2023, by Alessandro Maccarini:
    +First Implementation. +
  • +
+")); end SimulationTest; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/package.order b/IBPSA/Fluid/Geothermal/Aquifer/package.order index 084ead276e..238fd56b03 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/package.order +++ b/IBPSA/Fluid/Geothermal/Aquifer/package.order @@ -1,3 +1,3 @@ SingleWell -Validation Data +Validation diff --git a/IBPSA/Fluid/Geothermal/package.order b/IBPSA/Fluid/Geothermal/package.order index 9465d41136..8ec14f19ff 100644 --- a/IBPSA/Fluid/Geothermal/package.order +++ b/IBPSA/Fluid/Geothermal/package.order @@ -1,2 +1,3 @@ -Borefields Aquifer +Borefields + diff --git a/IBPSA/Resources/Images/Fluid/Geothermal/Aquifer/results.png b/IBPSA/Resources/Images/Fluid/Geothermal/Aquifer/results.png new file mode 100644 index 0000000000000000000000000000000000000000..ebeba1b72610e5e06fad129a8e418a7705e6fbfd GIT binary patch literal 85904 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 Date: Thu, 25 May 2023 11:45:12 +0200 Subject: [PATCH 05/85] Added example --- .../Aquifer/Examples/CoolingOffice.mo | 83 +++++++++++++++++++ .../Geothermal/Aquifer/Examples/package.mo | 5 ++ .../Geothermal/Aquifer/Examples/package.order | 1 + IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo | 15 ++-- .../Aquifer/Validation/SimulationTest.mo | 5 +- .../Geothermal/Aquifer/Validation/package.mo | 7 ++ IBPSA/Fluid/Geothermal/Aquifer/package.mo | 5 ++ IBPSA/Fluid/Geothermal/Aquifer/package.order | 1 + 8 files changed, 116 insertions(+), 6 deletions(-) create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/Examples/CoolingOffice.mo create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/Examples/package.mo create mode 100644 IBPSA/Fluid/Geothermal/Aquifer/Examples/package.order diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Examples/CoolingOffice.mo b/IBPSA/Fluid/Geothermal/Aquifer/Examples/CoolingOffice.mo new file mode 100644 index 0000000000..4a9546c0c3 --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/Examples/CoolingOffice.mo @@ -0,0 +1,83 @@ +within IBPSA.Fluid.Geothermal.Aquifer.Examples; +model CoolingOffice + extends Modelica.Icons.Example; + parameter Modelica.Units.SI.HeatFlowRate Qcoo=30000 "Cooling power"; + parameter Modelica.Units.SI.TemperatureDifference deltaT=4 "Temperature difference at heat exchanger"; + parameter Modelica.Units.SI.SpecificHeatCapacity cpWat=4186 "Heat capacity of water"; + parameter Modelica.Units.SI.MassFlowRate mWat=Qcoo/(deltaT*cpWat) "Nominal water mass flow rate"; + + SingleWell cooWel( + redeclare package Medium = IBPSA.Media.Water, + nVol=80, + h=20, + r_max=500, + T_ini=285.15, + TGro=283.15, + aquDat=IBPSA.Fluid.Geothermal.Aquifer.Data.Rock(), + m_flow_nominal=mWat, + dp_nominal(displayUnit="Pa") = 10) "Cold well" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + SingleWell heaWel( + redeclare package Medium = IBPSA.Media.Water, + nVol=80, + h=20, + r_max=500, + T_ini=285.15, + TGro=283.15, + aquDat=IBPSA.Fluid.Geothermal.Aquifer.Data.Rock(), + m_flow_nominal=mWat, + dp_nominal(displayUnit="Pa") = 10) "Warm well" + annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); + Movers.FlowControlled_m_flow mov( + redeclare package Medium = IBPSA.Media.Water, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + addPowerToMedium=false, + nominalValuesDefineDefaultPressureCurve=true, + m_flow_nominal=mWat, + dp_nominal=10) "Circulation pump" + annotation (Placement(transformation(extent={{-50,10},{-30,30}}))); + HeatExchangers.HeaterCooler_u hea( + redeclare package Medium = IBPSA.Media.Water, + m_flow_nominal=mWat, + dp_nominal=10, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + Q_flow_nominal=Qcoo) "Heat exchanger" + annotation (Placement(transformation(extent={{30,10},{50,30}}))); + Modelica.Blocks.Sources.Constant watMas(k=mWat) "Water mass flow rate" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + Modelica.Blocks.Sources.Constant heaFlo(k=1) "Cooling load" + annotation (Placement(transformation(extent={{-20,60},{0,80}}))); +equation + connect(cooWel.port_a, mov.port_a) + annotation (Line(points={{-70,-20},{-70,20},{-50,20}}, color={0,127,255})); + connect(watMas.y, mov.m_flow_in) + annotation (Line(points={{-59,70},{-40,70},{-40,32}}, color={0,0,127})); + connect(heaFlo.y, hea.u) annotation (Line(points={{1,70},{20,70},{20,26},{28,26}}, + color={0,0,127})); + connect(mov.port_b, hea.port_a) + annotation (Line(points={{-30,20},{30,20}}, color={0,127,255})); + connect(hea.port_b, heaWel.port_a) + annotation (Line(points={{50,20},{70,20},{70,-20}}, color={0,127,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + experiment(StopTime=7776000, __Dymola_Algorithm="Dassl"), + Documentation(info=" +

+This example shows the application of the model +IBPSA.Fluid.Geothermal.Aquifer.SingleWell. +

+

+The system consists of two wells, a warm well and a cold well. Water is extracted from the cold well at 12°C and +after passing through a heat exchanger it is injected in the warm well at 16°C. This represents a typical operation of +aquifer thermal energy storage systems for cooling of buildings. +

+ +", revisions=" +
    +
  • +May 2023, by Alessandro Maccarini:
    +First Implementation. +
  • +
+")); +end CoolingOffice; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Examples/package.mo b/IBPSA/Fluid/Geothermal/Aquifer/Examples/package.mo new file mode 100644 index 0000000000..37685e597e --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/Examples/package.mo @@ -0,0 +1,5 @@ +within IBPSA.Fluid.Geothermal.Aquifer; +package Examples "Example models for IBPSA.Fluid.Geothermal.Aquifer" + extends Modelica.Icons.ExamplesPackage; + +end Examples; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Examples/package.order b/IBPSA/Fluid/Geothermal/Aquifer/Examples/package.order new file mode 100644 index 0000000000..36b8a6c3c7 --- /dev/null +++ b/IBPSA/Fluid/Geothermal/Aquifer/Examples/package.order @@ -0,0 +1 @@ +CoolingOffice diff --git a/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo index 6270bfd501..040501b357 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo @@ -32,23 +32,28 @@ model SingleWell each m_flow_nominal=1, V=VWat, each nPorts=2) + "Array of fluid volumes representing the fluid flow in the aquifer" annotation (Placement(transformation(extent={{-10,20},{10,40}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a(redeclare final package Medium=Medium) + "Fluid connector" annotation (Placement(transformation(extent={{-10,90},{10,110}}))); IBPSA.Fluid.Sources.Boundary_pT bou(redeclare final package Medium=Medium, T=T_ini, - nPorts=1) + nPorts=1) "Sink" annotation (Placement(transformation(extent={{60,-10},{40,10}}))); - Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heaCap[nVol](C=C, - each T(start=T_ini)) + Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heaCap[nVol](C=C, each T( + start=T_ini, fixed=true)) "Array of thermal capacitor" annotation (Placement(transformation(extent={{-52,-40},{-32,-20}}))); Modelica.Thermal.HeatTransfer.Components.ThermalResistor theRes[nVol](R=R) + "Array of thermal resistances" annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); Modelica.Thermal.HeatTransfer.Sources.FixedTemperature groTem(T=TGro) + "Boundary condition ground temperature" annotation (Placement(transformation(extent={{90,-50},{70,-30}}))); - IBPSA.Fluid.FixedResistances.PressureDrop res(redeclare final package Medium = Medium, + IBPSA.Fluid.FixedResistances.PressureDrop res(redeclare final package + Medium = Medium, m_flow_nominal=m_flow_nominal, - dp_nominal=dp_nominal) + dp_nominal=dp_nominal) "Pressure drop in the aquifer" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); parameter Modelica.Units.SI.MassFlowRate m_flow_nominal=1 "Nominal mass flow rate"; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo b/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo index d7313ddbaa..defc256aad 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo @@ -4,12 +4,14 @@ model SimulationTest Modelica.Blocks.Sources.CombiTimeTable combiTimeTable(table=[0.0,1; 86400*120,1; 86400 *120,0; 86400*180,0.0; 86400*180,-1; 86400*300,-1]) + "Stages of operation" annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); Sources.MassFlowSource_T boundary( redeclare package Medium = IBPSA.Media.Water, use_m_flow_in=true, T=393.15, - nPorts=1) annotation (Placement(transformation(extent={{-20,0},{0,20}}))); + nPorts=1) "Water mass flow rate" + annotation (Placement(transformation(extent={{-20,0},{0,20}}))); SingleWell aquWel( redeclare package Medium = IBPSA.Media.Water, nVol=232, @@ -17,6 +19,7 @@ model SimulationTest T_ini=307.15, TGro=307.15, aquDat=IBPSA.Fluid.Geothermal.Aquifer.Data.Rock()) + "Single well for aquifer thermal energy storage" annotation (Placement(transformation(extent={{40,-20},{60,0}}))); equation connect(combiTimeTable.y[1], boundary.m_flow_in) annotation (Line(points={{-59, diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo b/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo index a0d50d16e7..d278d296d6 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/Validation/package.mo @@ -2,4 +2,11 @@ within IBPSA.Fluid.Geothermal.Aquifer; package Validation extends Modelica.Icons.ExamplesPackage; +annotation (preferredView="info", Documentation(info=" +

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

+")); end Validation; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/package.mo b/IBPSA/Fluid/Geothermal/Aquifer/package.mo index fa573e5293..a1eee4b4b3 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/package.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/package.mo @@ -2,4 +2,9 @@ within IBPSA.Fluid.Geothermal; package Aquifer "Package with aquifer thermal energy storage models" extends Modelica.Icons.VariantsPackage; +annotation (preferredView="info", Documentation(info=" +

+Package with models for aquifer thermal energy storage. +

+")); end Aquifer; diff --git a/IBPSA/Fluid/Geothermal/Aquifer/package.order b/IBPSA/Fluid/Geothermal/Aquifer/package.order index 238fd56b03..7ad571b291 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/package.order +++ b/IBPSA/Fluid/Geothermal/Aquifer/package.order @@ -1,3 +1,4 @@ SingleWell Data +Examples Validation From efdbaf92da722449cb01dd5fb52fa65e4c6a2594 Mon Sep 17 00:00:00 2001 From: Alessandro Maccarini Date: Thu, 25 May 2023 12:28:36 +0200 Subject: [PATCH 06/85] Fixed html documentation --- IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo index 040501b357..fb4e76f8db 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo @@ -202,6 +202,7 @@ radial heat transport in porous media ρ c (∂ T(r,t) ⁄ ∂t) = k (∂² T(r,t) ⁄ ∂r²) - ρw cw u(∂ T(r,t) ⁄ ∂t),

+

where ρ @@ -224,7 +225,6 @@ Fluid flow was modelled by adding a series of fluid volumes, which are connected to the thermal capacitances via heat ports. The fluid stream was developed using the model IBPSA.Fluid.MixingVolumes.MixingVolume. The geometric representation of the model is illustrated in the figure below. -

\"image\" From 31e668626951afdf4d3d7c90ef05099f615678bc Mon Sep 17 00:00:00 2001 From: Alessandro Maccarini Date: Thu, 25 May 2023 12:33:41 +0200 Subject: [PATCH 07/85] Working on html errors --- IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo | 2 +- IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo index fb4e76f8db..0c3901939d 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/SingleWell.mo @@ -198,11 +198,11 @@ To calculate aquifer temperature at different locations over time, the model app theoretical principles of water flow and heat transfer phenomena. The model is based on the partial differential equation (PDE) for 1D conductive-convective transient radial heat transport in porous media +

ρ c (∂ T(r,t) ⁄ ∂t) = k (∂² T(r,t) ⁄ ∂r²) - ρw cw u(∂ T(r,t) ⁄ ∂t),

-

where ρ diff --git a/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo b/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo index defc256aad..e8bd054865 100644 --- a/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo +++ b/IBPSA/Fluid/Geothermal/Aquifer/Validation/SimulationTest.mo @@ -43,7 +43,7 @@ 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: