Package net.simplace.sim.transformers
Class SoilLayerTransformer
java.lang.Object
net.simplace.sim.io.FWSimIOAdapter
net.simplace.sim.io.resources.FWSimInputAdapter
net.simplace.sim.io.resources.FWSimResourceTransformer
net.simplace.sim.transformers.SoilLayerTransformer
- All Implemented Interfaces:
net.simplace.sim.util.FWSimFieldContainer
public class SoilLayerTransformer
extends net.simplace.sim.io.resources.FWSimResourceTransformer
WIKI_START
Distributes values of n layers of arbitrary thickness to m layers with uniform thickness.
== Description ==
Original resolution is taken from an array that contains the depth of the lower boundary
of each layer. The input `depthfieldid` is used to name the resource variable that contains
the depth information.
To to specify the output data resolution either the `layercount` or the `layerthickness` input
can be set. If `layercount` is given, then `layerthickness` is ignored, otherwise `layercount`
is calculated by dividing the maximum soil depth by the layerthickness.
Output will be written as follows:
Scalar variables like CHAR,DOUBLE,INT,... are kept as they are.
Array variables (layers) like DOUBLEARRAY and INTARRAY are transformed to an array of `layercount` elements.
There are different modes how to determine the values of the target layer:
- CENTER - takes the value of the source layer that hits the center of target layer (default method)
- FIRST - takes the value of the first source layer that overlaps with the target layer
- LAST - takes the value of the last source layer that overlaps with the target layer
For numeric values (DOUBLEARRAY and INTARRAY) there are two additional methods available
- AVG - takes the weighted average of the overlapping source layers
- SUM - takes the sum of overlapping source layers, multiplied by the proportion of their overlap
=== Notice ===
If the values of a variable are amounts and not proportions, then they have to be summed up / partitioned for the new layers.
Therefore one has to supply the `mode` attribute for the specific variable: `mode="SUM"`.
(If the source layer overlaps several target layers, then the source layer value
is partitioned to the target layers, if the target layer overlaps several source layers,
then the source layers are summed up for the target layer.)
== Configuration ==
{{{
...
...
depth
0.03
}}}
The variable `depth` contains the depth information for the initial layers,
therefore the input `depthfieldid` is set to `depth`.
Scalar values like `drainagerate` are not transformed, they are just passed
unchanged to the transformer's output.
The variable `nitrogen` contains amounts (absolute values), therefore
the values from overlapping layers have to be summed up / partitioned.
The resource variables to be transformed have to be all in the transformed
resource `soil`. Only those variables mentioned in the transformer will be
transformed.
WIKI_END
- Author:
- Andreas Enders, Guther Krauss
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class net.simplace.sim.io.FWSimIOAdapter
net.simplace.sim.io.FWSimIOAdapter.FREQUENCE
-
Field Summary
Fields inherited from class net.simplace.sim.io.resources.FWSimResourceTransformer
iFieldMap, iIntColumnMap, iLastInputValuesMap, iLastProjectID, iLastUniqueID, iPoolName, iSourceName
Fields inherited from class net.simplace.sim.io.resources.FWSimInputAdapter
iJexlScript, iShouldCacheToDB
Fields inherited from class net.simplace.sim.io.FWSimIOAdapter
iArrayMode, iFieldcount, iFrequence, iHeaderVariables, iInterface, iJexlRule, iKeyMap, iName, iOrderNumber, iProcessTime, iResourceElement, iSession, iSourceKey
-
Constructor Summary
ConstructorDescriptionSoilLayerTransformer
(net.simplace.sim.FWSimSession aSession, Integer aOrderNumber) SoilLayerTransformer
(net.simplace.sim.FWSimSession aSession, org.jdom2.Element aResourceElement, Integer aOrderNumber) -
Method Summary
Modifier and TypeMethodDescriptionnet.simplace.sim.io.resources.FWSimResourceCache
getData
(net.simplace.sim.util.FWSimVarMap aVarMap) standard method from outsidenet.simplace.sim.io.resources.FWSimResourceCache
getData
(net.simplace.sim.util.FWSimVarMap aVarMap, net.simplace.sim.io.resources.FWSimResourceCache aResourceCache) used by test casesnet.simplace.sim.io.resources.FWSimResourceCache
resampleSoilLayers
(net.simplace.sim.util.FWSimVariable<Double> aThicknessOfLayers, net.simplace.sim.util.FWSimVariable<Integer> aLayerCount, net.simplace.sim.util.FWSimVariable<String> aDepthFieldName, String aProjectID, net.simplace.sim.io.resources.FWSimResourceCache aCache) Rescales the soil layervoid
updateFields
(net.simplace.core.FWObservable aObservable) Methods inherited from class net.simplace.sim.io.resources.FWSimResourceTransformer
addVariable, createFormFields, createResourceTransformer, createResourceTransformer, createResourceTransformer, fillVarMap, getCreateFormXML, getEditFormXML, getSourceResourceCache, getVariable, isUpdated, toXML
Methods inherited from class net.simplace.sim.io.resources.FWSimInputAdapter
getContentType, getInputVariables, getJexlScript, getOutputVariables, getVarMap, isTransformer, shouldCacheToDB, toHTMLTablestring
Methods inherited from class net.simplace.sim.io.FWSimIOAdapter
addProcessTime, checkCondition, createFormFields, finalize, getFieldMap, getFrequence, getHeaderVariables, getHeaderXML, getInterface, getJexlRule, getKeyMap, getName, getOrderNumber, isArrayMode, isConditionCheck, removeVariable, setInterface, setOrderNumber, toString, writeHeaderList
-
Constructor Details
-
SoilLayerTransformer
public SoilLayerTransformer(net.simplace.sim.FWSimSession aSession, org.jdom2.Element aResourceElement, Integer aOrderNumber) - Parameters:
aSession
-aResourceElement
-aOrderNumber
-
-
SoilLayerTransformer
- Parameters:
aSession
-aOrderNumber
-
-
-
Method Details
-
createVariables
- Specified by:
createVariables
in interfacenet.simplace.sim.util.FWSimFieldContainer
- Overrides:
createVariables
in classnet.simplace.sim.io.FWSimIOAdapter
-
getData
public net.simplace.sim.io.resources.FWSimResourceCache getData(net.simplace.sim.util.FWSimVarMap aVarMap) throws net.simplace.sim.exceptions.MissingSimResourceException standard method from outside- Specified by:
getData
in classnet.simplace.sim.io.resources.FWSimInputAdapter
- Throws:
net.simplace.sim.exceptions.MissingSimResourceException
- See Also:
-
FWSimInputAdapter.getData(net.simplace.sim.util.FWSimVarMap)
-
getData
public net.simplace.sim.io.resources.FWSimResourceCache getData(net.simplace.sim.util.FWSimVarMap aVarMap, net.simplace.sim.io.resources.FWSimResourceCache aResourceCache) throws net.simplace.sim.exceptions.MissingSimResourceException used by test cases- Parameters:
aVarMap
- variable mapaResourceCache
- Cached resources (soil data)- Returns:
- delivered new data from transformer
- Throws:
net.simplace.sim.exceptions.MissingSimResourceException
-
resampleSoilLayers
public net.simplace.sim.io.resources.FWSimResourceCache resampleSoilLayers(net.simplace.sim.util.FWSimVariable<Double> aThicknessOfLayers, net.simplace.sim.util.FWSimVariable<Integer> aLayerCount, net.simplace.sim.util.FWSimVariable<String> aDepthFieldName, String aProjectID, net.simplace.sim.io.resources.FWSimResourceCache aCache) throws net.simplace.sim.exceptions.MisconfiguredTransformerException Rescales the soil layer- Parameters:
aThicknessOfLayers
- thickness of the layersaLayerCount
- total number of layersaDepthFieldName
- name of the depth fieldaProjectID
- id of the projectaCache
- original soil info stored- Returns:
- the new created
FWSimResourceCache
- Throws:
net.simplace.sim.exceptions.MisconfiguredTransformerException
-
updateFields
public void updateFields(net.simplace.core.FWObservable aObservable) - Specified by:
updateFields
in classnet.simplace.sim.io.resources.FWSimResourceTransformer
- See Also:
-
FWSimResourceTransformer.updateFields(net.simplace.core.FWObservable)
-