Description: "Package with base classes for Buildings.BoundaryConditions.SolarIrradiation"

- Home > Modelica

## 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
--- | ---
BrighteningCoefficient | Circumsolar and horizon brightening coefficients
DiffuseIsotropic | Diffuse solar irradiation on a tilted surface with an isotropic model
DiffusePerez | Hemispherical diffuse irradiation on a tilted surface with Perez's anisotropic model
DirectTiltedSurface | Direct solar irradiation on a tilted surface
PartialSolarIrradiation | Partial model that is used to compute the direct and diffuse solar irradiation
RelativeAirMass | Relative air mass
SkyBrightness | Sky brightness
SkyClearness | Sky clearness
Examples | Collection of models that illustrate model use and test models

## Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.BrighteningCoefficient

Circumsolar and horizon brightening coefficients

### Information

This component computes the circumsolar and horizon brightening coefficients.

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

### Connectors

Type | Name | Description
--- | --- | ---
input RealInput | zen | Zenith angle of the sun beam [rad]
input RealInput | skyCle | Sky clearness. skyCle=1: overcast sky; skyCle=8 clear sky
input RealInput | skyBri | Sky brightness [0,1]
output RealOutput | F1 | Circumsolar brightening coefficient
output RealOutput | F2 | Horizon brightening coefficient

### Modelica definition

block BrighteningCoefficient "Circumsolar and horizon brightening coefficients" extends Modelica.Blocks.Icons.Block; import H = Buildings.Utilities.Math.Functions.spliceFunction; public 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( 1, 0, 1.065 - skyCle, d); b2 = H( 1, 0, 1.23 - skyCle, d); b3 = H( 1, 0, 1.50 - skyCle, d); b4 = H( 1, 0, 1.95 - skyCle, d); b5 = H( 1, 0, 2.80 - skyCle, d); b6 = H( 1, 0, 4.50 - skyCle, d); b7 = H( 1, 0, 6.20 - skyCle, d); b8 = H( 1, 0, skyCle - 6.20, 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

Diffuse solar irradiation on a tilted surface with an isotropic model

### 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

Type | Name | Default | Description
--- | --- | --- | ---
Real | rho | 0.2 | Ground reflectance
Angle | til |  | Surface tilt angle [rad]

### Connectors

Type | Name | Description
--- | --- | ---
input RealInput | HDifHor | Horizontal diffuse solar radiation [W/m2]
input RealInput | HGloHor | Horizontal global radiation [W/m2]
output RealOutput | HGroDifTil | Diffuse solar irradiation on a tilted surfce from the ground [W/m2]
output RealOutput | HSkyDifTil | Diffuse solar irradiation on a tilted surfce 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; public 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 surfce from the ground"; protected Real til_c "Cosine of tilt angle"; public Modelica.Blocks.Interfaces.RealOutput HSkyDifTil(final quantity="RadiantEnergyFluenceRate", final unit="W/m2") "Diffuse solar irradiation on a tilted surfce from the sky"; 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

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

### Information

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

#### 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.
- R. Perez, R. Seals, P. Ineichen, R. Stewart and D. Menicucci (1987). A New Simplified Version of the Perez Diffuse Irradiance Model for Tilted Surface, Solar Energy, 39(3): 221-231.
- 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).

### Parameters

Type | Name | Default | Description
--- | --- | --- | ---
Real | rho | 0.2 | Ground reflectance
Angle | til |  | Surface tilt angle [rad]

### Connectors

Type | Name | Description
--- | --- | ---
input RealInput | briCof1 | Brightening Coeffcient F1
input RealInput | briCof2 | Brightening Coeffcient F2
input RealInput | HDifHor | Diffuse horizontal solar radiation [W/m2]
input RealInput | HGloHor | Global horizontal radiation [W/m2]
input RealInput | zen | Zenith angle of the sun beam [rad]
input RealInput | incAng | Solar incidence angle on the surface [rad]
output RealOutput | HGroDifTil | Hemispherical diffuse solar irradiation on a tilted surfce from the ground [W/m2]
output RealOutput | HSkyDifTil | Hemispherical diffuse solar irradiation on a tilted surfce 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; public 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 surfce from the ground"; Modelica.Blocks.Interfaces.RealOutput HSkyDifTil(final quantity= "RadiantEnergyFluenceRate", final unit="W/m2") "Hemispherical diffuse solar irradiation on a tilted surfce 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

Direct solar irradiation on a tilted surface

### 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

Type | Name | Description
--- | --- | ---
input RealInput | incAng | Incidence angle of the sun beam on a tilted surface [rad]
input RealInput | HDirNor | Direct normal radiation [W/m2]
output RealOutput | HDirTil | Direct solar irradiation on a tilted surfce [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 surfce"; algorithm HDirTil := max(0, Modelica.Math.cos(incAng)*HDirNor); end DirectTiltedSurface;

## Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.PartialSolarIrradiation

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

### 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

Type | Name | Default | Description
--- | --- | --- | ---
Angle | til |  | Surface tilt [rad]

### Connectors

Type | Name | Description
--- | --- | ---
output RealOutput | H | Radiation per unit area [W/m2]
Bus | weaBus | Bus 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;

## Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.RelativeAirMass

Relative air mass

### 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

Type | Name | Description
--- | --- | ---
input RealInput | zen | Zenith angle of the sun beam [rad]
output RealOutput | relAirMas | Relative air mass

### Modelica definition

block RelativeAirMass "Relative air mass" extends Modelica.Blocks.Icons.Block; public 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 = Buildings.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;

## Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.SkyBrightness

Sky brightness

### 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

Type | Name | Description
--- | --- | ---
input RealInput | relAirMas | Relative air mass
input RealInput | HDifHor | Horizontal diffuse solar radiation [W/m2]
output RealOutput | skyBri | Sky brightness

### Modelica definition

block SkyBrightness "Sky brightness" extends Modelica.Blocks.Icons.Block; public 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 = Buildings.Utilities.Math.Functions.smoothMin( HDifHor*relAirMas/1367, 1, 0.025); end SkyBrightness;

## Buildings.BoundaryConditions.SolarIrradiation.BaseClasses.SkyClearness

Sky clearness

### Information

This component computes the sky clearness.

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

### Connectors

Type | Name | Description
--- | --- | ---
input RealInput | zen | Zenith angle of the sun beam [rad]
input RealInput | HDifHor | Horizontal diffuse solar radiation [W/m2]
input RealInput | HGloHor | Horizontal global solar radiation [W/m2]
output RealOutput | skyCle | Sky clearness. skyCle=1: overast sky; skyCle=8: clear sky

### Modelica definition

block SkyClearness "Sky clearness" extends Modelica.Blocks.Icons.Block; public 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"; protected Real tmp1 "Intermediate variable"; algorithm tmp1 := 5.534e-6*(zen*180/Modelica.Constants.pi)^3; skyCle := smooth(1, if (HGloHor < Modelica.Constants.small) then 1 else Buildings.Utilities.Math.Functions.smoothLimit( (HGloHor/Buildings.Utilities.Math.Functions.smoothMax( HDifHor, 1e-4, 1e-5) + tmp1)/(1 + tmp1), 1, 8, 0.1)); end SkyClearness;