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:

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>