net.simplace.client.simulation.lap.transformer.AstronomicParametersTransformer

Calculated daylength, photoperiodic daylength, solar constant and daily total effective solar height for each DOY at a given latitude.

Input and output of the transformer

For each row in the ressource it creates 366 rows containing values for each day of year (DOY)

The transformer needs the field names of a resource, that contain

It outputs a resource with following fields

References

The calculation method follows mainly the routine from the Gecros model (1): . Differences between this routine and Gecros

the range from -90 to 90 degrees as in Lintul5 (2)

equivalent way)

values than from the FORTRAN code.

(1) YIN, X. and van Laar, H. H., Crop Systems Dynamics, 2005 (2) Wolf, J., User guide for Lintul 5, 2012 http://models.pps.wur.nl/sites/models.pps.wur.nl/files/LINTUL5-report-vs1_0.zip

Usage

Transformer is used in the FST based models:

Formulas

Conversion factor from degrees to radians. The original Fortran/FST-Modules use a less precise approximation of \(\pi \approx 3.141592654\), whereas here \(\pi \approx 3.141592653589793\). \[ \begin{eqnarray} rad &=& \frac{\pi}{180}\\ \end{eqnarray} \] Sine and cosine of latitude, maximal declination. Values calculated only once per location. \[ \begin{eqnarray} sinlat &=& \sin(rad \cdot latitutde)\\ coslat &=& \cos(rad \cdot latitutde)\\ sindcm &=& \sin(rad \cdot 23.45)\\ \end{eqnarray} \] Sine and cosine of declination of the sun as function of day of year. Calculation is taken from Goudriaan, van Laar 1994. Some models first calculate \(dec\) as the arcsine of \(sindec\) and then take the sine and cosine. The methods are mathematically equivalent due to \(sin^2+cos^2=1\) \[ \begin{eqnarray} sindec &=& -sindcm \cos(2 \pi \frac{doy+10}{365})\\ cosdec &=& \sqrt{1-sindec^2}\\ sinld &=& sinlat \cdot sindec\\ cosld &=& coslat \cdot cosdec \end{eqnarray} \] Daylength calculation. \[ \begin{eqnarray} arg &=& \min(1,\max(-1,\frac{sinld}{cosld}))\\ daylength &=& 12 (1 + \frac{2}{\pi} \arcsin(arg))\\ \end{eqnarray} \] Photoperiodic daylength \[ \begin{eqnarray} arg2 &=& \min(1,\max(-1,\frac{-\sin(rad \cdot inclination)+sinld}{cosld}))\\ ddlp &=& 12(1+\frac{2}{\pi}\arcsin(arg2))\\ \end{eqnarray} \] Solar constant \[ \begin{eqnarray} sc &=& 1367(1 + 0.033 \cos(2 \pi\frac{doy-10}{365}))\\ \end{eqnarray} \] Daily total of effective solar height \[ \begin{eqnarray} dsinb &=& 3600(dayl \cdot sinld+24 cosld \frac{\sqrt{1-arg^2}}{\pi})\\ dsinbe &=& 3600(dayl(sinld+0.4(sinld^2+\frac{cosld^2}{2})) + 12 cosld(2+3\cdot 0.4 sinld)\frac{\sqrt{1-arg^2}}{\pi}) \end{eqnarray} Notice: The sine of solar height is \(sin\beta(h) = sinld + cosld \cdot \cos(2 \pi \frac{h-12}{24})\), \(dsinb\) is the integral \(\int_0^{24} sin\beta(h)dh\) converted to seconds. \]


public class AstronomicParametersTransformer extends
net.simplace.simulation.io.resources.FWSimResourceTransformer {
// Public Constructors
public AstronomicParametersTransformer(FWSimSession aSession, Element
aResourceElement, Integer aOrderNumber);
public AstronomicParametersTransformer(FWSimSession aSession, Integer
aOrderNumber);


// Public Instance Methods
public HashMap createVariables(); // Defines
net.simplace.simulation.io.FWSimIOAdapter


public FWSimResourceCache getData(FWSimVarMap aVarMap)
throws MissingSimResourceException; // Defines
net.simplace.simulation.io.resources.FWSimInputAdapter


standard method from outside
public FWSimResourceCache getData(FWSimVarMap aVarMap, FWSimResourceCache
aResourceCache) throws MissingSimResourceException;

used by test cases
returns delivered new data from transformer
public void fillVarMap(FWSimVarMap aVarMap);
// Defines
net.simplace.simulation.io.resources.FWSimResourceTransformer


public FWSimResourceCache calculateDaylength(FWSimVariable idname,
FWSimVariable latitudename, FWSimVariable inclinationname, String
aProjectID, FWSimResourceCache aCache)
throws MissingSimResourceException;

Calculates Daylengths
returns the new created {@link FWSimResourceCache}
public Element toXML(); // Defines
net.simplace.simulation.io.resources.FWSimResourceTransformer


public void updateFields(FWObservable aObservable);
// Defines
net.simplace.simulation.io.resources.FWSimResourceTransformer




}



Hierarchy: java.lang.Object - net.simplace.simulation.io.FWSimIOAdapter (net.simplace.simulation.util.FWSimFieldContainer) - net.simplace.simulation.io.resources.FWSimInputAdapter - net.simplace.simulation.io.resources.FWSimResourceTransformer - AstronomicParametersTransformer