...
This transformation function is used to calculate the Riemann Boundary of an input time series (grid) on the boundary locations of a finer grid.
Configuration
To help configure this transformation, an option to automatically calculate/construct the needed attributes and location sets was added to the F12 debug menu.
...
This transformation takes four different input variables to produce a single output variable. The input variables are:
- waterHeight: scalar timeseries on the locationSet containing the needed coarse grid locations.
- uSpeed: scalar timeseries on the locationSet containing the needed coarse grid locations
- vSpeed: scalar timeseries on the locationSet containing the needed coarse grid locations
- bathymetry: scalar timeseries on the locationSet containing the boundary locations
...
The different components in this formula are calculated as follows:
- speedComponent: a weighted average is used to obtain the u and v component of the speed vector. To obtain the weights used in these weighted average calculations, the transformation either uses the uWeightAttribute and vWeightAttribute of the output location (in the case of a staggered coarse grid), or simply uses the weighAttribute for both averages (in the case of a non-staggered coarse grid). Then, the transformation uses the angle and border attribute to determine the component of this speedvector perpendicular to the boundary of the fine grid.
- sign: -1 if the border attribute is UP or RIGHT, 1 otherwise.
- zeta: a weighted average of the waterheights on the surrounding coarse grid locations. Calculated using the weightAttribute.
- g: the physical gravitational constant
- depth: the water depth on the output location for this time step.
Example
...
Code Block | ||||
---|---|---|---|---|
| ||||
<transformation id="riemann"> <interpolationSpatial> <riemannBoundary> <waterHeight> <variableId>waterHeight</variableId> </waterHeight> <uSpeed> <variableId>uSpeed</variableId> </uSpeed> <vSpeed> <variableId>vSpeed</variableId> </vSpeed> <bathymetry> <variableId>bathymetry</variableId> </bathymetry> <borderAttributeId>border</borderAttributeId> <angleAttributeId>angle</angleAttributeId> <coarseGridLocationAttributeId>center_coarse_grid_id</coarseGridLocationAttributeId> <weightAttributeId>center_weight</weightAttributeId> <!-- Optional attributes for staggered coarse grids: --> <uCoarseGridLocationAttributeId>u_coarse_grid_id</uCoarseGridLocationAttributeId> <uWeightAttributeId>u_weight</uWeightAttributeId> <vCoarseGridLocationAttributeId>v_coarse_grid_id</vCoarseGridLocationAttributeId> <vWeightAttributeId>v_weight</vWeightAttributeId> <outputVariable> <variableId>output</variableId> </outputVariable> </riemannBoundary> </interpolationSpatial> </transformation> |