functionCosDirSunVectorHeightAz
Information
Function returning the sun's direction cosine, the solar elevation and azimuth angle
Hypothesis and equations
Function computing the sun's direction cosine (CosDir[3]), the solar elevation and azimuth angle (Haut and Az) à (t0+t) according to latitude and longitude.
- CosDir[1]=sin(phi)*sin(delta)+cos(phi)*cos(delta)*cos(HA) (=sinh)
- CosDir[2]=cos(delta)*sin(HA)
- CosDir[3]=cos(delta)*sin(phi)*cos(HA)-sin(delta)*cos(phi)
- Height=asin(CosDir[1])*180/pi in degrees
- Az is determined by its sine and cosine:
- sinAz=CosDir[2]/cosh
- cosAz=CosDir[3]/cosh
Where:
- phi : latitude converted in radians
- delta : Sun's declination in radians
- HA : hour angle in radians
The year is supposed to be not bisextile.
Bibliography
H. BOUIA, "Amélioration du temps de calcul dans BuildSysPro par traitements numériques optimisés de la conduction et des calculs solaires", Note H-E14-2013-00715-FR, 03/2013.
Instructions for use
none
Known limits / Use precautions
none
Validations
Validated function - Hassan BOUIA 03/2013.
--------------------------------------------------------------
Licensed by EDF under a 3-clause BSD-license
Copyright © EDF 2009 - 2023
BuildSysPro version 3.6.0
Author : Hassan BOUIA, EDF (2013)
--------------------------------------------------------------
Inputs
| Type | Name | Default | Description |
|---|---|---|---|
| Real | t0 | 0 | Time in seconds at t=0 |
| Modelica.Units.SI.Time | t | Universal time in seconds | |
| Modelica.Units.NonSI.Angle_deg | longitude | Longitude in degrees | |
| Modelica.Units.NonSI.Angle_deg | latitude | Latitude in degrees |
Outputs
| Type | Name | Default | Description |
|---|---|---|---|
| Real[3] | CosDir | Sun's direction cosine | |
| Real | Az | Solar azimuth angle | |
| Real | Haut | Solar elevation angle |
Revisions
Aurélie Kaemmerlen 11/2013 : Modification du calcul (cosAz*0.999) pour éviter une discontinuité dûe au calcul de l'arcosinus de Modelica
Benoît Charrier 01/2016 : Correction d'une erreur dans le calcul du quantième : remplacement de la ligne Real d=mod((t+t0)/86400,365); par Real d=mod((t+t0)/86400,365)+1;.