Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue 147 solarthermal #150

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
2 changes: 2 additions & 0 deletions BuildingSystems/Interfaces/RadiationPortGeneral.mo
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
18 changes: 15 additions & 3 deletions BuildingSystems/Technologies/SolarThermal/ThermalCollector.mo
Original file line number Diff line number Diff line change
Expand Up @@ -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 .-
Expand Down Expand Up @@ -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
Expand All @@ -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},
Expand Down