| Name | Description | 
|---|---|
| Calculate black body sky temperature | |
| Collection of models that illustrate model use and test models | 
Buildings.BoundaryConditions.SkyTemperature.BlackBody
This component computes the black-body sky temperature.
For calTSky = 0, the model uses horizontal infrared irradiation. 
Otherwise, it uses dry buld temperature, dew point temperature and opaque sky cover.
Extends from Modelica.Blocks.Interfaces.BlockIcon (Basic graphical layout of input/output block).
| Type | Name | Default | Description | 
|---|---|---|---|
| Integer | calTSky | 0: Use radHor; 1: Use TDry, TDewPoi and nOpa | 
| Type | Name | Description | 
|---|---|---|
| input RealInput | TDryBul | Dry bulb temperature at ground level [K] | 
| input RealInput | TDewPoi | Dew point temperature [K] | 
| input RealInput | nOpa | Opaque sky cover | 
| output RealOutput | TBlaSky | Black-body sky temperature [K] | 
| input RealInput | radHor | Horizontal infrared irradiation [W/m2] | 
block BlackBody "Calculate black body sky temperature"
  extends Modelica.Blocks.Interfaces.BlockIcon;
  parameter Integer calTSky(min=0, max=1) 
    "0: Use radHor; 1: Use TDry, TDewPoi and nOpa";
  Modelica.Blocks.Interfaces.RealInput TDryBul(
    final quantity="Temperature",
    final unit="K",
    displayUnit="degC") "Dry bulb temperature at ground level";
  Modelica.Blocks.Interfaces.RealInput TDewPoi(
    final quantity="Temperature",
    final unit="K",
    displayUnit="degC") "Dew point temperature";
  Modelica.Blocks.Interfaces.RealInput nOpa "Opaque sky cover";
  Modelica.Blocks.Interfaces.RealOutput TBlaSky(
    final quantity="Temperature",
    displayUnit="degC",
    final unit="K") "Black-body sky temperature";
  Modelica.Blocks.Interfaces.RealInput radHor(unit="W/m2", min=0, nominal=100) 
    "Horizontal infrared irradiation"; 
protected 
  Modelica.SIunits.Temperature TDewPoiK "Dewpoint temperature";
  Modelica.SIunits.Emissivity epsSky "Black-body emissivity of sky";
  Real nOpa10(min=0, max=10) "Opaque sky cover";
algorithm 
  if calTSky == 1 then
    TBlaSky := (radHor/Modelica.Constants.sigma)^0.25;
  else
    TDewPoiK := Buildings.Utilities.Math.Functions.smoothMin(TDryBul, TDewPoi, 0.1);
    nOpa10 := 10*nOpa "Input nOpa is scaled to [0,1] instead of [0,10]";
    epsSky := (0.787 + 0.764*Modelica.Math.log(-TDewPoiK/Modelica.Constants.T_zero))*(1 + 0.0224*nOpa10 -
      0.0035*(nOpa10^2) + 0.00028*(nOpa10^3));
    TBlaSky := TDryBul*(epsSky^0.25);
  end if;
end BlackBody;