Description and Usage

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.

To use this option first configure a coarse grid, fine grid and a locationSet containing the boundary locations of the fine grid on which you wish to calculate the Riemann boundary. The F12 menu option will then generate csv-files for the two locationSets needed to configure this transformation as well as the needed attribute files. The wiki page on the F12 option contains an example configuration on how to configure the locationSets in the locationSets.xml:

  1. A locationSet containing locations on the boundary of the fine grid. The output will be calculated for this locationSet (and the bathymetry input variable must be defined on this locationSet as well). The locations in this set will exactly match the locations in the locationSet given to the F12 option as input.
  2. A locationSet containing all locations in the coarse grid needed to calculate the output. These will be the center of all grid cells close to one of the output boundary locations.

This transformation takes four different input variables to produce a single output variable. The input variables are:

  1. waterHeight: scalar timeseries on the locationSet containing the needed coarse grid locations.
  2. uSpeed: scalar timeseries on the locationSet containing the needed coarse grid locations
  3. vSpeed: scalar timeseries on the locationSet containing the needed coarse grid locations
  4. bathymetry: scalar timeseries on the locationSet containing the boundary locations

The resulting output variable will be contain scalar timeseries on the locationSet containing the boundary locations.

Calculation

To calculate the output for a certain time step, the following formula will be evaluated:

speedComponent + sign * zeta * sqrt(g / depth)

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

RiemannBoundary example
	<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>
  • No labels