IEA EBC Annex 60 EBC logo

Annex60.BoundaryConditions.SolarIrradiation.BaseClasses

Package with base classes for Annex60.BoundaryConditions.SolarIrradiation

Information

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

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

Package Content

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

Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.BrighteningCoefficient Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.BrighteningCoefficient

Circumsolar and horizon brightening coefficients

Annex60.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 = Annex60.Utilities.Math.Functions.regStep; Modelica.Blocks.Interfaces.RealInput zen( quantity="Angle", unit="rad", displayUnit="degree") "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 = Annex60.Utilities.Math.Functions.smoothMax( 0, F11 + F12*skyBri + F13*zen, 0.01); F2 = F21 + F22*skyBri + F23*zen; end BrighteningCoefficient;

Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.DiffuseIsotropic Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.DiffuseIsotropic

Diffuse solar irradiation on a tilted surface with an isotropic model

Annex60.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.SIunits.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;

Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.DiffusePerez Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.DiffusePerez

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

Annex60.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.SIunits.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="degree") "Zenith angle of the sun beam"; Modelica.Blocks.Interfaces.RealInput incAng( quantity="Angle", unit="rad", displayUnit="degree") "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 = Annex60.Utilities.Math.Functions.smoothMax( 0, Modelica.Math.cos(incAng), 0.01); b = Annex60.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;

Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.DirectTiltedSurface Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.DirectTiltedSurface

Direct solar irradiation on a tilted surface

Annex60.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="degree") "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;

Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.PartialSolarIrradiation Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.PartialSolarIrradiation

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

Annex60.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.SIunits.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;

Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.RelativeAirMass Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.RelativeAirMass

Relative air mass

Annex60.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 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 zen( quantity="Angle", unit="rad", displayUnit="degree") "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 = Annex60.Utilities.Math.Functions.smoothMin( zen, Modelica.Constants.pi/2, 0.01); zenDeg = zenLim*180/Modelica.Constants.pi; relAirMas = 1/(Modelica.Math.cos(zenLim) + 0.15*(93.9 - zenDeg)^(-1.253)); end RelativeAirMass;

Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.SkyBrightness Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.SkyBrightness

Sky brightness

Annex60.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]
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.RealOutput skyBri "Sky brightness"; equation skyBri = Annex60.Utilities.Math.Functions.smoothMin( HDifHor*relAirMas/1367, 1, 0.025); end SkyBrightness;

Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.SkyClearness Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.SkyClearness

Sky clearness

Annex60.BoundaryConditions.SolarIrradiation.BaseClasses.SkyClearness

Information

This component computes the sky clearness.

Implementation

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

The function call Annex60.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 RealInputHGloHorHorizontal 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="degreeC") "Zenith angle of the sun beam"; 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 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.SIunits.Irradiance hSmall = 0.5e-4 "Small radiation for regularization"; constant Modelica.SIunits.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.SIunits.Irradiance HDifHorBou "Diffuse horizontal irradiation, bounded away from zero"; equation tmp1 = k*zen^3; HDifHorBou = Annex60.Utilities.Math.Functions.smoothMax( x1 = HDifHor, x2 = hSmall, deltaX = deltaX); // In the Buildings library, HGloHor is always larger than 1E-4 // (minus some small undershoot due to regularization. Hence, // it makes no sense to simplify the equation for // HGloHor < Modelica.Constants.small. skyCle = Annex60.Utilities.Math.Functions.smoothLimit( x = (HGloHor/HDifHorBou + tmp1)/(1 + tmp1), l = 1, u = 8, deltaX = 0.01); end SkyClearness;

http://iea-annex60.org