Buildings.BoundaryConditions.SolarIrradiation.BaseClasses

Package with base classes for Buildings.BoundaryConditions.SolarIrradiation

Information

This package contains base classes that are used to construct the models in Buildings.BoundaryConditions.SolarIrradiation.

Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).

Package Content

Name Description
Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.BrighteningCoefficient BrighteningCoefficient Circumsolar and horizon brightening coefficients
Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DiffuseIsotropic DiffuseIsotropic Diffuse solar irradiation on a tilted surface with an isotropic model
Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DiffusePerez DiffusePerez Hemispherical diffuse irradiation on a tilted surface with Perez's anisotropic model
Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DirectTiltedSurface DirectTiltedSurface Direct solar irradiation on a tilted surface
Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.PartialSolarIrradiation PartialSolarIrradiation Partial model that is used to compute the direct and diffuse solar irradiation
Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.RelativeAirMass RelativeAirMass Relative air mass
Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.SkyBrightness SkyBrightness Sky brightness
Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.SkyClearness SkyClearness Sky clearness
Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.Examples Examples Collection of models that illustrate model use and test models

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.BrighteningCoefficient Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.BrighteningCoefficient

Circumsolar and horizon brightening coefficients

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.BrighteningCoefficient

Information

This component computes the circumsolar and horizon brightening coefficients.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Connectors

TypeNameDescription
input RealInputzenZenith angle of the sun beam [rad]
input RealInputskyCleSky clearness. skyCle=1: overcast sky; skyCle=8 clear sky
input RealInputskyBriSky brightness [0,1]
output RealOutputF1Circumsolar brightening coefficient
output RealOutputF2Horizon brightening coefficient

Modelica definition

block BrighteningCoefficient "Circumsolar and horizon brightening coefficients" extends Modelica.Blocks.Icons.Block; import H = Buildings.Utilities.Math.Functions.regStep; Modelica.Blocks.Interfaces.RealInput zen( quantity="Angle", unit="rad", displayUnit="deg") "Zenith angle of the sun beam"; Modelica.Blocks.Interfaces.RealInput skyCle "Sky clearness. skyCle=1: overcast sky; skyCle=8 clear sky"; Modelica.Blocks.Interfaces.RealInput skyBri "Sky brightness [0,1]"; Modelica.Blocks.Interfaces.RealOutput F1 "Circumsolar brightening coefficient"; Modelica.Blocks.Interfaces.RealOutput F2 "Horizon brightening coefficient"; protected Real F11; Real F12; Real F13; Real F21; Real F22; Real F23; Real d=0.01; Real a1; Real a2; Real a3; Real a4; Real a5; Real a6; Real a7; Real a8; Real b1; Real b2; Real b3; Real b4; Real b5; Real b6; Real b7; Real b8; equation b1 = H( y1=1, y2=0, x=1.065 - skyCle, x_small=d); b2 = H( y1=1, y2=0, x=1.23 - skyCle, x_small=d); b3 = H( y1=1, y2=0, x=1.50 - skyCle, x_small=d); b4 = H( y1=1, y2=0, x=1.95 - skyCle, x_small=d); b5 = H( y1=1, y2=0, x=2.80 - skyCle, x_small=d); b6 = H( y1=1, y2=0, x=4.50 - skyCle, x_small=d); b7 = H( y1=1, y2=0, x=6.20 - skyCle, x_small=d); b8 = H( y1=1, y2=0, x=skyCle - 6.20, x_small=d); a1 = b1; a2 = b2 - b1; a3 = b3 - b2; a4 = b4 - b3; a5 = b5 - b4; a6 = b6 - b5; a7 = b7 - b6; a8 = b8; F11 = -0.0083117*a1 + 0.1299457*a2 + 0.3296958*a3 + 0.5682053*a4 + 0.8730280* a5 + 1.1326077*a6 + 1.0601591*a7 + 0.6777470*a8; F12 = 0.5877285*a1 + 0.6825954*a2 + 0.4868735*a3 + 0.1874525*a4 - 0.3920403* a5 - 1.2367284*a6 - 1.5999137*a7 - 0.3272588*a8; F13 = -0.0620636*a1 - 0.1513725*a2 - 0.2210958*a3 - 0.2951290*a4 - 0.3616149* a5 - 0.4118494*a6 - 0.3589221*a7 - 0.2504286*a8; F21 = -0.0596012*a1 - 0.0189325*a2 + 0.0554140*a3 + 0.1088631*a4 + 0.2255647* a5 + 0.2877813*a6 + 0.2642124*a7 + 0.1561313*a8; F22 = 0.0721249*a1 + 0.0659650*a2 - 0.0639588*a3 - 0.1519229*a4 - 0.4620442* a5 - 0.8230357*a6 - 1.1272340*a7 - 1.3765031*a8; F23 = -0.0220216*a1 - 0.0288748*a2 - 0.0260542*a3 - 0.0139754*a4 + 0.0012448* a5 + 0.0558651*a6 + 0.1310694*a7 + 0.2506212*a8; F1 = Buildings.Utilities.Math.Functions.smoothMax( 0, F11 + F12*skyBri + F13*zen, 0.01); F2 = F21 + F22*skyBri + F23*zen; end BrighteningCoefficient;

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DiffuseIsotropic Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DiffuseIsotropic

Diffuse solar irradiation on a tilted surface with an isotropic model

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DiffuseIsotropic

Information

This component computes the hemispherical diffuse irradiation on a tilted surface. The irradiation is composed of the diffuse horizontal solar irradiation and the irradiation that has been reflected by the ground. Both components are adjusted to take into account the tilt of the receiving surface.

References

P. Ineichen, R. Perez and R. Seals (1987). The Importance of Correct Albedo Determination for Adequately Modeling Energy Received by Tilted Surface, Solar Energy, 39(4): 301-305.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Parameters

TypeNameDefaultDescription
Realrho0.2Ground reflectance
Angletil Surface tilt angle [rad]

Connectors

TypeNameDescription
input RealInputHDifHorHorizontal diffuse solar radiation [W/m2]
input RealInputHGloHorHorizontal global radiation [W/m2]
output RealOutputHGroDifTilDiffuse solar irradiation on a tilted surface from the ground [W/m2]
output RealOutputHSkyDifTilDiffuse solar irradiation on a tilted surface from the sky [W/m2]

Modelica definition

block DiffuseIsotropic "Diffuse solar irradiation on a tilted surface with an isotropic model" extends Modelica.Blocks.Icons.Block; parameter Real rho=0.2 "Ground reflectance"; parameter Modelica.Units.SI.Angle til(displayUnit="deg") "Surface tilt angle"; Modelica.Blocks.Interfaces.RealInput HDifHor(quantity= "RadiantEnergyFluenceRate", unit="W/m2") "Horizontal diffuse solar radiation"; Modelica.Blocks.Interfaces.RealInput HGloHor(quantity= "RadiantEnergyFluenceRate", unit="W/m2") "Horizontal global radiation"; Modelica.Blocks.Interfaces.RealOutput HGroDifTil(final quantity="RadiantEnergyFluenceRate", final unit="W/m2") "Diffuse solar irradiation on a tilted surface from the ground"; Modelica.Blocks.Interfaces.RealOutput HSkyDifTil(final quantity="RadiantEnergyFluenceRate", final unit="W/m2") "Diffuse solar irradiation on a tilted surface from the sky"; protected Real til_c "Cosine of tilt angle"; equation til_c = Modelica.Math.cos(til); HSkyDifTil = 0.5*HDifHor*(1 + til_c); HGroDifTil = 0.5*HGloHor*rho*(1 - til_c); end DiffuseIsotropic;

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DiffusePerez Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DiffusePerez

Hemispherical diffuse irradiation on a tilted surface with Perez's anisotropic model

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DiffusePerez

Information

This component computes the hemispherical diffuse irradiation on a tilted surface by using an anisotropic model proposed by Perez.

References

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Parameters

TypeNameDefaultDescription
Realrho0.2Ground reflectance
Angletil Surface tilt angle [rad]

Connectors

TypeNameDescription
input RealInputbriCof1Brightening Coeffcient F1
input RealInputbriCof2Brightening Coeffcient F2
input RealInputHDifHorDiffuse horizontal solar radiation [W/m2]
input RealInputHGloHorGlobal horizontal radiation [W/m2]
input RealInputzenZenith angle of the sun beam [rad]
input RealInputincAngSolar incidence angle on the surface [rad]
output RealOutputHGroDifTilHemispherical diffuse solar irradiation on a tilted surface from the ground [W/m2]
output RealOutputHSkyDifTilHemispherical diffuse solar irradiation on a tilted surface from the sky [W/m2]

Modelica definition

block DiffusePerez "Hemispherical diffuse irradiation on a tilted surface with Perez's anisotropic model" extends Modelica.Blocks.Icons.Block; parameter Real rho=0.2 "Ground reflectance"; parameter Modelica.Units.SI.Angle til(displayUnit="deg") "Surface tilt angle"; Modelica.Blocks.Interfaces.RealInput briCof1 "Brightening Coeffcient F1"; Modelica.Blocks.Interfaces.RealInput briCof2 "Brightening Coeffcient F2"; Modelica.Blocks.Interfaces.RealInput HDifHor(quantity= "RadiantEnergyFluenceRate", unit="W/m2") "Diffuse horizontal solar radiation"; Modelica.Blocks.Interfaces.RealInput HGloHor(quantity= "RadiantEnergyFluenceRate", unit="W/m2") "Global horizontal radiation"; Modelica.Blocks.Interfaces.RealInput zen( quantity="Angle", unit="rad", displayUnit="deg") "Zenith angle of the sun beam"; Modelica.Blocks.Interfaces.RealInput incAng( quantity="Angle", unit="rad", displayUnit="deg") "Solar incidence angle on the surface"; Modelica.Blocks.Interfaces.RealOutput HGroDifTil(final quantity= "RadiantEnergyFluenceRate", final unit="W/m2") "Hemispherical diffuse solar irradiation on a tilted surface from the ground"; Modelica.Blocks.Interfaces.RealOutput HSkyDifTil(final quantity= "RadiantEnergyFluenceRate", final unit="W/m2") "Hemispherical diffuse solar irradiation on a tilted surface from the sky"; protected Real a; Real b; constant Real bMin=Modelica.Math.cos(Modelica.Constants.pi*85/180) "Lower bound for b"; equation a = Buildings.Utilities.Math.Functions.smoothMax( 0, Modelica.Math.cos(incAng), 0.01); b = Buildings.Utilities.Math.Functions.smoothMax( bMin, Modelica.Math.cos(zen), 0.01); HSkyDifTil = HDifHor*(0.5*(1 - briCof1)*(1 + Modelica.Math.cos(til)) + briCof1*a/b + briCof2*Modelica.Math.sin(til)); HGroDifTil = HGloHor*0.5*rho*(1 - Modelica.Math.cos(til)); end DiffusePerez;

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DirectTiltedSurface Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DirectTiltedSurface

Direct solar irradiation on a tilted surface

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.DirectTiltedSurface

Information

This component computes the direct solar irradiation on a tilted surface.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Connectors

TypeNameDescription
input RealInputincAngIncidence angle of the sun beam on a tilted surface [rad]
input RealInputHDirNorDirect normal radiation [W/m2]
output RealOutputHDirTilDirect solar irradiation on a tilted surface [W/m2]

Modelica definition

block DirectTiltedSurface "Direct solar irradiation on a tilted surface" extends Modelica.Blocks.Icons.Block; Modelica.Blocks.Interfaces.RealInput incAng( quantity="Angle", unit="rad", displayUnit="deg") "Incidence angle of the sun beam on a tilted surface"; Modelica.Blocks.Interfaces.RealInput HDirNor(quantity= "RadiantEnergyFluenceRate", unit="W/m2") "Direct normal radiation"; Modelica.Blocks.Interfaces.RealOutput HDirTil(final quantity= "RadiantEnergyFluenceRate", final unit="W/m2") "Direct solar irradiation on a tilted surface"; equation HDirTil = max(0, Modelica.Math.cos(incAng)*HDirNor); end DirectTiltedSurface;

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.PartialSolarIrradiation Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.PartialSolarIrradiation

Partial model that is used to compute the direct and diffuse solar irradiation

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.PartialSolarIrradiation

Information

This is a partial model that is used to implement the direct and diffuse irradiation.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Parameters

TypeNameDefaultDescription
Angletil Surface tilt [rad]

Connectors

TypeNameDescription
output RealOutputHRadiation per unit area [W/m2]
BusweaBusBus with weather data

Modelica definition

partial block PartialSolarIrradiation "Partial model that is used to compute the direct and diffuse solar irradiation" extends Modelica.Blocks.Icons.Block; parameter Modelica.Units.SI.Angle til(displayUnit="deg") "Surface tilt"; Modelica.Blocks.Interfaces.RealOutput H( final quantity="RadiantEnergyFluenceRate", final unit="W/m2") "Radiation per unit area"; WeatherData.Bus weaBus "Bus with weather data"; end PartialSolarIrradiation;

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.RelativeAirMass Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.RelativeAirMass

Relative air mass

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.RelativeAirMass

Information

This component computes the relative air mass for sky brightness.

References

R. Perez (1999). Fortran Function irrpz.f, Emailed by R. Perez to F.C. Winkelmann on May 21, 1999.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Connectors

TypeNameDescription
input RealInputaltlocation altitude [m]
input RealInputzenZenith angle of the sun beam [rad]
output RealOutputrelAirMasRelative air mass

Modelica definition

block RelativeAirMass "Relative air mass" extends Modelica.Blocks.Icons.Block; Modelica.Blocks.Interfaces.RealInput alt( quantity="Length", unit="m") "location altitude"; Modelica.Blocks.Interfaces.RealInput zen( quantity="Angle", unit="rad", displayUnit="deg") "Zenith angle of the sun beam"; Modelica.Blocks.Interfaces.RealOutput relAirMas "Relative air mass"; protected Real zenLim "Zenith angle bounded from above by 90 degree"; Real zenDeg "Zenith angle in degree"; equation zenLim = Buildings.Utilities.Math.Functions.smoothMin( zen, Modelica.Constants.pi/2, 0.01); zenDeg = zenLim*180/Modelica.Constants.pi; relAirMas = exp(-0.0001184*alt)/(Modelica.Math.cos(zenLim) + 0.15*(93.9 - zenDeg)^(-1.253)); end RelativeAirMass;

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.SkyBrightness Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.SkyBrightness

Sky brightness

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.SkyBrightness

Information

This component computes the sky brightness.

References

R. Perez, P. Ineichen, R. Seals, J. Michalsky and R. Stewart (1990). Modeling Dyalight Availability and Irradiance Componets From Direct and Global Irradiance, Solar Energy, 44(5):271-289.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Connectors

TypeNameDescription
input RealInputrelAirMasRelative air mass
input RealInputHDifHorHorizontal diffuse solar radiation [W/m2]
input RealInputsolTimSolar time [s]
output RealOutputskyBriSky brightness

Modelica definition

block SkyBrightness "Sky brightness" extends Modelica.Blocks.Icons.Block; Modelica.Blocks.Interfaces.RealInput relAirMas "Relative air mass"; Modelica.Blocks.Interfaces.RealInput HDifHor(quantity= "RadiantEnergyFluenceRate", unit="W/m2") "Horizontal diffuse solar radiation"; Modelica.Blocks.Interfaces.RealInput solTim(quantity="Time", unit="s") "Solar time"; Modelica.Blocks.Interfaces.RealOutput skyBri "Sky brightness"; Real extRadCor "Correction for extraterrestrial radiation"; equation extRadCor =1 + 0.033*cos(2*Modelica.Constants.pi*(solTim/86400 + 1)/365); skyBri = Buildings.Utilities.Math.Functions.smoothMin( HDifHor*relAirMas/(1366.1*extRadCor), 1, 0.025); end SkyBrightness;

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.SkyClearness Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.SkyClearness

Sky clearness

Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.SkyClearness

Information

This component computes the sky clearness.

Implementation

In the Buildings library, HDirNor is always larger than 1E-4, minus some small undershoot due to regularization. Hence, the implementation is not simplified for HDirNor < Modelica.Constants.small.

The function call Buildings.Utilities.Math.Functions.smoothMax is such that the regularization is usually not triggered.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Connectors

TypeNameDescription
input RealInputzenZenith angle of the sun beam [rad]
input RealInputHDifHorHorizontal diffuse solar radiation [W/m2]
input RealInputHDirNorHorizontal global solar radiation [W/m2]
output RealOutputskyCleSky clearness. skyCle=1: overast sky; skyCle=8: clear sky

Modelica definition

block SkyClearness "Sky clearness" extends Modelica.Blocks.Icons.Block; Modelica.Blocks.Interfaces.RealInput zen( quantity="Angle", unit="rad", displayUnit="deg") "Zenith angle of the sun beam"; Modelica.Blocks.Interfaces.RealInput HDifHor(quantity= "RadiantEnergyFluenceRate", unit="W/m2") "Horizontal diffuse solar radiation"; Modelica.Blocks.Interfaces.RealInput HDirNor(quantity= "RadiantEnergyFluenceRate", unit="W/m2") "Horizontal global solar radiation"; Modelica.Blocks.Interfaces.RealOutput skyCle "Sky clearness. skyCle=1: overast sky; skyCle=8: clear sky"; // Set hSmall so that hSmall + deltaX < 1E-4. See info section. protected constant Modelica.Units.SI.Irradiance hSmall=0.5e-4 "Small radiation for regularization"; constant Modelica.Units.SI.Irradiance deltaX=hSmall/2 "Small radiation for regularization"; constant Real k = 5.534e-6*(180/Modelica.Constants.pi)^3 "Constant factor"; Real tmp1 "Intermediate variable"; Modelica.Units.SI.Irradiance HDifHorBou "Diffuse horizontal irradiation, bounded away from zero"; equation tmp1 = k*zen^3; HDifHorBou = Buildings.Utilities.Math.Functions.smoothMax( x1 = HDifHor, x2 = hSmall, deltaX = deltaX); // In the Buildings library, HDirNor is always larger than 1E-4 // (minus some small undershoot due to regularization. Hence, // it makes no sense to simplify the equation for // HDirNor < Modelica.Constants.small. skyCle = Buildings.Utilities.Math.Functions.smoothLimit( x = ((HDirNor+HDifHorBou)/HDifHorBou + tmp1)/(1 + tmp1), l = 1, u = 8, deltaX = 0.01); end SkyClearness;