net.simplace.sim.transformers.LayerAggregationTransformer

Aggregates values of several soil layers up to the user-specified maximal soil depth.

It can compute the sum for absolute values (e.g. N content in g/m^2). It can compute the avg for relative values (as volumetric water content m^3/m^3).

Configuration

Calculation details

The transformer transforms all DOUBLEARRAY entries of the original resource and outputs the resulting doubles in the same order. The aggregation method is applied to all entries, it is not possible to define methods per entry.

The layer thickness d is calculated as \(t_0=d_0\) and \(t_i = d_{i}-d_{i-1}\) for \(i>0\)

As user-specified maxdepth can be smaller than the soil profile depth, for each layer the remaining depth is calculated \(r_i = max(m-d_{i-1},0)\), which is zero if the actual layer is completely below maxdepth. If maxdepthfieldid is omitted, then all layers are aggregated.

Sum of absolute values

Values from all layers, that are above maxdepth are summed up. From the layer that contains maxdepth, only the fraction from the upper boundary to maxdepth is summed up. \[\sum_{i=0}^{n-1}V_i \frac{min(t_i,r_i)}{t_i}\]

Average of relative values

Average values over the layers that are above maxdepth are computed by multiplying relative values with layer thickness d. From the layer that contains maxdepth, only the fraction from the upper boundary to maxdepth is used as weighing factor. Then the sum is divided by maxdepth m (or the total depth, if maxdepth m exceeds the soil profile depth). \[\frac{\sum_{i=0}^{n-1}V_i min(t_i,r_i)}{min(m,d_{n-1})}\]

Utilisation

The transformer is used by soilwater models that need soil properties per layer as well as aggregated properties for a specific depth, that contains multiple layers, e.g.

Notice

The transformer is mainly designed for layered soil properties, but can be used also for other layered data that has a kind of 'depth' information (e.g. air temperature at different heights).

It transforms all numeric arrays of the resource and outputs them in the same order as they are specified in the resource. Non-array data in the resource is omitted in the transformer (except the keys).




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


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


public FWSimResourceCache getData(FWSimVarMap aVarMap)
throws MissingSimResourceException; // Defines
net.simplace.sim.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 FWSimResourceCache calculateAggregatedData(FWSimVariable aDepthField,
FWSimVariable aMaxdepthField, FWSimVariable aMethod, String aProjectID,
FWSimResourceCache aCache) throws MissingSimResourceException;


returns the transformed resource cache
public void updateFields(FWObservable aObservable);
// Defines net.simplace.sim.io.resources.FWSimResourceTransformer



// Protected Instance Methods
protected Object[] MergeKeysAndValues(int aKeyFieldCount, Object aKeys,
Object[] aValues);


returns


}



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