Klasse STMPsimCalculator

java.lang.Object
net.simplace.sim.model.FWSimComponent
net.simplace.sim.components.soil.temperature.STMPsimCalculator
Alle implementierten Schnittstellen:
net.simplace.sim.util.FWSimFieldContainer

public class STMPsimCalculator extends net.simplace.sim.model.FWSimComponent
Calculates the soil temperature in n layers depending on climate and soil conditions.

STMP

Soil temperature of the soil layers is calculated using the formula:

\[ \begin{eqnarray} STMPUngültige Eingabe: "&"=Ungültige Eingabe: "&LAG" \cdot STMP0+(1.0-LAG) \cdot (FZ \cdot (AVT-DST0)+DST0) \label{stmp} \end{eqnarray} \]

Reference:

Williams, J.R., Izaurralde, C.A., 2005. The APEX model, Blackland Research Center Reports, Vol. 2. Blackland Research Center, USDA, Temple, Texas, USA

STMP calculation

Daily average soil temperature at the center of each soil layer is simulated for use in nutrient cycling and hydrology. The basic soil temperature equation is shown in Eq \(\eqref{stmp}\) with

\[ \begin{eqnarray} FZUngültige Eingabe: "&"=Ungültige Eingabe: "&"\frac{X1}{X1+\exp(-0.8669-2.0775 \cdot X1)} \\ X1Ungültige Eingabe: "&"=Ungültige Eingabe: "&"0.5 \cdot \frac{Z(l)+Z(l-1)}{DD} \label{x1} \end{eqnarray} \]

where STMP is the soil temperature at the center of a soil layer in °C, Z is the depth from the surface to the bottom of the soil layer l in m, LAG is a coefficient ranging from 0.0 to 1.0 that allows proper weighting of yesterday's temperature STMP0, AVT is the long-term average annual air temperature at the site, DST0 is the soil surface temperature, and DD is the damping depth in m. Thus, given yesterday's temperature, Eq \(\eqref{stmp}\) estimates today's temperature as a function of soil surface temperature, depth, and a lag coefficient. It is assumed that the temperature remains almost constant at the damping depth and is approximately AVT. Obviously, Eq \(\eqref{stmp}\) makes near surface temperatures a strong function of DST0. As depth increases, AVT has more influence until finally at the damping depth, the temperature is within 5% of AVT.

The damping depth is a function of soil bulk density and water content as expressed in the equation

\[ \begin{eqnarray} DDUngültige Eingabe: "&"=Ungültige Eingabe: "&DP" \cdot \exp(\ln(\frac{0.5}{DP}) \cdot \frac{1.-WC}{1.+WC} \cdot 2) \\ DPUngültige Eingabe: "&"=Ungültige Eingabe: "&"1.+\frac{2.5 \cdot ABD}{ABD+\exp(6.53-5.63 \cdot ABD)} \\ WCUngültige Eingabe: "&"=Ungültige Eingabe: "&"0.001 \cdot \frac{ST}{Z(n) \cdot (0.356-0.144 \cdot ABD)} \end{eqnarray} \]

where DP is the maximum damping depth for the soil in m, ABD is the average soil bulk density of the profile in t m-3, n is the number of soil layers in the profile, and ST is the water stored in the profile in mm.

To complete the solution of Eq \(\eqref{stmp}\), the soil surface temperature must be estimated. The first step is to estimate the bare soil surface temperature.

\[ \begin{eqnarray} DSTUngültige Eingabe: "&"=Ungültige Eingabe: "&"0.5 \cdot (TMX+TMN)+(TMX-TMN) \cdot \frac{RA \cdot (1.0-AB)-14.}{20} \label{dst} \end{eqnarray} \]

The first term in \(\eqref{dst}\) estimates bare soil temperature to equal average daily air temperature. The second term adjusts the basic estimate using the net radiation as a driver and half the temperature difference as a range. The adjustment changes signs at a net radiation value of 14 MJ m-2 d-1. If the soil surface is not bare, the surface temperature can be affected considerably by the amount of cover (crop residue or snow). This effect can be simulated by combining the estimated bare surface temperature for the day with the previous day's temperature in the second soil layer (the top 10 mm layer is considered too thin for this purpose).

\[ \begin{eqnarray} DST0Ungültige Eingabe: "&"=Ungültige Eingabe: "&"(1.-BCV) \cdot DST+BCV \cdot STMP(2)) \end{eqnarray} \]

where DST0 is the final estimate of soil surface temperature in °C and BCV is a lagging factor for simulating residue and snow cover effects on surface temperature.

This is done using the SnowCoverCalculator SimComponent that can therefore be linked using the outputted SoilTemperature array and delivering the SoilSurfaceTemperature (DST0)

Autor:
Andreas Enders, Gunther Krauss

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
constantcABDMean bulk densityDOUBLEt/m31.04.02.0
constantcAVTConstant Temperature of deepest soil layer - use long term mean air temperatureDOUBLE°C-10.020.0-
constantcDampingDepthInitial value for damping depth of soilDOUBLEm1.520.06.0
constantcFirstDayMeanTempMean air temperature on first dayDOUBLE°C-40.050.0-
constantcSoilLayerDepthDepth of soil layerDOUBLEARRAYm0.0320.0-
inputiDoInitializeSwitch to re-initialize the model with initial values.BOOLEAN1--false
inputiSoilSurfaceTemperatureTemperature at soil surfaceDOUBLE°C1.520.0-
inputiSoilWaterContentWater content, sum of whole soil profileDOUBLEmm1.520.05.0
stateSoilTempArrayArray of soil temperatures in layers DOUBLEARRAY°C-40.050.0-
raterSoilTempArrayRateArray of daily temperature changeDOUBLEARRAYdegree_Celsius_per_day-20.020.0-
  • Verschachtelte Klassen - Übersicht

    Von Klasse geerbte verschachtelte Klassen/Schnittstellen net.simplace.sim.model.FWSimComponent

    net.simplace.sim.model.FWSimComponent.TEST_STATE
  • Feldübersicht

    Von Klasse geerbte Felder net.simplace.sim.model.FWSimComponent

    iFieldMap, iFrequence, iInputMap, iJexlRule, iMasterComponentGroup, iName, iOrderNumber, isComponentGroup, iSimComponentElement, iSimModel, iVarMap
  • Konstruktorübersicht

    Konstruktoren
    Konstruktor
    Beschreibung
    Empty constructor used by class.forName()
  • Methodenübersicht

    Modifizierer und Typ
    Methode
    Beschreibung
    protected net.simplace.sim.model.FWSimComponent
    clone(net.simplace.sim.util.FWSimVarMap aVarMap)
     
    HashMap<String,net.simplace.sim.util.FWSimVariable<?>>
    create the FWSimVariables as interface for this SimComponent
    HashMap<String,net.simplace.sim.util.FWSimVariable<?>>
    fillTestVariables(int aTestIndex, net.simplace.sim.model.FWSimComponent.TEST_STATE aDefineOrCheck)
    called for single component test to check the components algorithm.
    protected void
    initializes the fields by getting input and output FWSimVariables from VarMap
    protected void
    process the algorithm and write the results back to VarMap TMX = Maximum air temperature at 2 m (°C) TMN = Minimum air temperature at 2 m (°C) RA = RA(t) = Mean daily solar radiation on day t (kJ/m2*d) PREC = Precipitation on day t (mm) CV = Crop residues plus above ground biomass (kg/ha) SNO = Water content in snow layer (mm) SW = ST(t) = Soil water stored in the soil profile at day t (mm) SLA = Leaf area index (m*m-1) PEVAP = Potential soil evaporation (mm)
    protected void
     

    Von Klasse geerbte Methoden net.simplace.sim.model.FWSimComponent

    addVariable, bind, checkCondition, createSimComponent, createSimComponent, createSimComponent, createSimComponent, doProcess, getConstantVariables, getContentType, getCreateFormXML, getDescription, getEditFormXML, getFieldMap, getFrequence, getFrequenceRuleScript, getInputs, getInputVariables, getMasterComponentGroup, getName, getOrderNumber, getOutputVariables, getVariable, getVariableField, getVarMap, initialize, isConditionCheck, isVariableAvailable, performLinks, performLinks, readInputs, removeVariable, reset, runComponentTest, setVariablesDefault, toComponentLinkingXML, toDocXML, toGroupXML, toOutputDefinitionXML, toResourcesDataXML, toResourcesDefinitionXML, toString, toXML, writeVarInfos

    Von Klasse geerbte Methoden java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Konstruktordetails

    • STMPsimCalculator

      public STMPsimCalculator()
      Empty constructor used by class.forName()
  • Methodendetails

    • createVariables

      public HashMap<String,net.simplace.sim.util.FWSimVariable<?>> createVariables()
      create the FWSimVariables as interface for this SimComponent
      Angegeben von:
      createVariables in Schnittstelle net.simplace.sim.util.FWSimFieldContainer
      Angegeben von:
      createVariables in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • FWSimComponent.createVariables()
    • init

      protected void init()
      initializes the fields by getting input and output FWSimVariables from VarMap
      Angegeben von:
      init in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • Z(IndexOfSoilLayer) = Depth to the bottom of the soil layer L (m) ABD = Average bulk density over all layers in the soil profile (t m-3) AVT = Annual mean air temperature at 2 m (°C) STMP = SoilTemperature of layer (°C)
    • reInitialize

      protected void reInitialize()
    • process

      protected void process()
      process the algorithm and write the results back to VarMap TMX = Maximum air temperature at 2 m (°C) TMN = Minimum air temperature at 2 m (°C) RA = RA(t) = Mean daily solar radiation on day t (kJ/m2*d) PREC = Precipitation on day t (mm) CV = Crop residues plus above ground biomass (kg/ha) SNO = Water content in snow layer (mm) SW = ST(t) = Soil water stored in the soil profile at day t (mm) SLA = Leaf area index (m*m-1) PEVAP = Potential soil evaporation (mm)
      Angegeben von:
      process in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • FWSimComponent.process()
    • fillTestVariables

      public HashMap<String,net.simplace.sim.util.FWSimVariable<?>> fillTestVariables(int aTestIndex, net.simplace.sim.model.FWSimComponent.TEST_STATE aDefineOrCheck)
      called for single component test to check the components algorithm. aParamIndex: Used to set up different test cases. Start with 0 - result check with 1 aso
      Angegeben von:
      fillTestVariables in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • Ungültige Referenz
        net.simplace.sim.util.FWSimFieldContainer#fillTestVariables(int aParamIndex, TEST_STATE aDefineOrCheck)
    • clone

      protected net.simplace.sim.model.FWSimComponent clone(net.simplace.sim.util.FWSimVarMap aVarMap)
      Angegeben von:
      clone in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • FWSimComponent.clone(net.simplace.sim.util.FWSimVarMap)