From e8369417d521e3aa6e1427322cfc605b770a15fd Mon Sep 17 00:00:00 2001 From: Sim4/CarlesRT Date: Fri, 17 Jan 2020 11:07:58 +0100 Subject: [PATCH 1/2] Add variable IrrDif_g to the RadiationPortGeneral to give information how much of diffuse radiation comes from the ground and set value in TransfoemrIsotropic. (Needed for the solar thermal collector models) --- .../SolarRadiationTransformerIsotropicSky.mo | 4 +++- BuildingSystems/Interfaces/RadiationPortGeneral.mo | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/BuildingSystems/Climate/SolarRadiationTransformers/SolarRadiationTransformerIsotropicSky.mo b/BuildingSystems/Climate/SolarRadiationTransformers/SolarRadiationTransformerIsotropicSky.mo index e3c02152..b3370cbb 100644 --- a/BuildingSystems/Climate/SolarRadiationTransformers/SolarRadiationTransformerIsotropicSky.mo +++ b/BuildingSystems/Climate/SolarRadiationTransformers/SolarRadiationTransformerIsotropicSky.mo @@ -5,10 +5,12 @@ model SolarRadiationTransformerIsotropicSky equation IrrTotTil = radiationPort.IrrDir + 0.5 * (1.0 + cosAngleTil) * IrrDifHor + 0.5 * (1.0 - cosAngleTil) * rhoAmb * IrrTotHor; + radiationPort.IrrDif_g = 0.5 * (1.0 - cosAngleTil) * rhoAmb * IrrTotHor; annotation (defaultComponentName="solRadTra", Icon(graphics={ Rectangle(extent={{-80,80},{80,-80}}, lineColor={170,213,255},fillPattern = FillPattern.Solid,fillColor={170,213,255}), - Ellipse(extent={{-60,62},{20,-18}},lineColor={255,128,0},fillColor={255,128,0},fillPattern = FillPattern.Solid), + Ellipse(extent={{-60,62},{20,-18}},lineColor={255,128,0},fillColor={255,128,0}, + fillPattern = FillPattern.Solid), Line(points={{72,-8},{8,-72}},color={0,0,0},smooth=Smooth.None,thickness=2), Line(points={{12,-12},{32,-32}},color={255,128,0},thickness=1,smooth=Smooth.None), Line(points={{22,-2},{42,-22}}, color={255,128,0},thickness=1,smooth=Smooth.None), diff --git a/BuildingSystems/Interfaces/RadiationPortGeneral.mo b/BuildingSystems/Interfaces/RadiationPortGeneral.mo index e9829f44..538e5ce5 100644 --- a/BuildingSystems/Interfaces/RadiationPortGeneral.mo +++ b/BuildingSystems/Interfaces/RadiationPortGeneral.mo @@ -5,6 +5,8 @@ connector RadiationPortGeneral "Area specific direct solar radiation"; Modelica.SIunits.RadiantEnergyFluenceRate IrrDif "Area specific diffuse solar radiation"; + Modelica.SIunits.RadiantEnergyFluenceRate IrrDif_g + "Area specific diffuse solar radiation reflected from the ground."; Modelica.SIunits.Conversions.NonSIunits.Angle_deg angleDegInc "Incident angle of the direct solar radiation"; Modelica.SIunits.Conversions.NonSIunits.Angle_deg angleDegAziSun From f646c07a26e74d397b090ae0ec512460029f25e5 Mon Sep 17 00:00:00 2001 From: Sim4/CarlesRT Date: Fri, 17 Jan 2020 11:08:47 +0100 Subject: [PATCH 2/2] Add incident angle modifiers for the diffuse radiation (sky and ground diffuse). --- .../SolarThermal/ThermalCollector.mo | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/BuildingSystems/Technologies/SolarThermal/ThermalCollector.mo b/BuildingSystems/Technologies/SolarThermal/ThermalCollector.mo index 6f33af34..cf4bf8da 100644 --- a/BuildingSystems/Technologies/SolarThermal/ThermalCollector.mo +++ b/BuildingSystems/Technologies/SolarThermal/ThermalCollector.mo @@ -81,7 +81,11 @@ model ThermalCollector "Constant shading coefficient (if use_GSC_in = true)"; final parameter Modelica.SIunits.Area A = if AColData then collectorData.A else width * height "Absorber area of the collector"; - Real IAM "IncidenceAngleModifier"; + Real IAM_b "IncidenceAngleModifier beam radiation"; + Real IAM_d "IncidenceAngleModifier sky diffuse radiation"; + Real IAM_g "IncidenceAngleModifier ground diffuse radiation"; + Modelica.SIunits.Angle theta_d "Effective incident angle sky diffuse radiation"; + Modelica.SIunits.Angle theta_g "Effective incident angle ground diffuse radiation"; Modelica.SIunits.RadiantEnergyFluenceRate IrrTot "Total solar radiation on collector's absorber surfcace"; Modelica.Blocks.Sources.RealExpression QCon[nEle](y=-A/nEle .* (C_1 .* (vol.T .- @@ -109,6 +113,7 @@ model ThermalCollector protected Modelica.Blocks.Interfaces.RealInput GSC_internal "Shading coefficient"; + final parameter Real deg_to_rad = (Modelica.Constants.pi/180); parameter Real IAMC = collectorData.IAMC "Incidence Angle Modifier Coefficient: Value of IAM at 50 degree"; parameter Real C_0 = collectorData.C_0 @@ -117,13 +122,20 @@ protected "Collector constant in W/(m2.K) using absorber area as a reference"; parameter Real C_2 = collectorData.C_2 "Collector constant in W/(m2*K.2) using absorber area as a reference"; + parameter Real b0 = (1 - IAMC)/0.5557 "Incidence angle modifier coefficient"; equation + + theta_d = deg_to_rad*(59.68 - 0.1388*(angleDegTil) + 0.001497*(angleDegTil)^2); + theta_g = deg_to_rad*(90 - 0.5788*(angleDegTil) + 0.002693*(angleDegTil)^2); + IAM_d = max(0,1 - b0*(1/Modelica.Math.cos(theta_d)-1)); + IAM_g = max(0,1 - b0*(1/Modelica.Math.cos(theta_g)-1)); + connect(GSC_internal, GSC_in); if not use_GSC_in then GSC_internal = GSC_constant; end if; - IAM = BuildingSystems.Utilities.SmoothFunctions.softcut_lower(1.0 + (IAMC - 1.0)/0.5557 * (1.0 / Modelica.Math.cos((radiationPort.angleDegInc-0.01) * Modelica.Constants.pi / 180.0) - 1.0),0.0,0.01); - IrrTot = radiationPort.IrrDir * (1.0 - GSC_internal) * IAM + radiationPort.IrrDif; + IAM_b = BuildingSystems.Utilities.SmoothFunctions.softcut_lower(1.0 + (IAMC - 1.0)/0.5557 * (1.0 / Modelica.Math.cos((radiationPort.angleDegInc-0.01) * Modelica.Constants.pi / 180.0) - 1.0),0.0,0.01); + IrrTot = radiationPort.IrrDir * (1.0 - GSC_internal) * IAM_b + IAM_d*(radiationPort.IrrDif-radiationPort.IrrDif_g) + IAM_g*radiationPort.IrrDif_g; connect(QCon.y, sumConRad.u[1]) annotation (Line( points={{-79,-30},{-70,-30},{-70,-21},{-62,-21}}, color={0,0,127},