Template:Gravity Waves Courant Number: Difference between revisions

From XMS Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 2: Line 2:
__NOTOC__
__NOTOC__
===Gravity Waves Courant Number===
===Gravity Waves Courant Number===
The Courant number is a spatially varied (dataset) dimensionless value representing the time a particle stays in a cell of a mesh/grid. This is based on the size of the element and the speed of that particle.
The Courant number is a spatially varied dimensionless value (dataset) representing the time a particle stays in a cell of a mesh/grid. This is based on the size of the element and the speed of that particle.
A Courant number of 1.0 implies that a particle(parcel or drop of water) would take one time step to flow through the element. Since cells/elements are not guaranteed to align with the flow field, this number is an approximation. This dataset is computed at nodes so it is uses the average size of the cells/elements attached to the node. Since the typical Courant number calculation requires as an input a velocity as shown in the equation below:
A Courant number of 1.0 implies that a particle(parcel or drop of water) would take one time step to flow through the element. Since cells/elements are not guaranteed to align with the flow field, this number is an approximation. This dataset is computed at nodes so it is uses the average size of the cells/elements attached to the node. The size is computed in meters if the geometry (mesh / UGrid / ...) is in geographic space.
<!--
 
The toolbox includes a tool for calculating the Courant number given the time step.
A Courant number calculation requires as an input a velocity as shown in the equation below:
:Note: the variable here is depth, not elevation. For applications relative to mean sea level, using the negative of the elevation relative to a datum is acceptable, but if the water level will vary, the depth is actually the water level minus the ground elevation.-->
 
:<math>{\displaystyle CourantNumber=TimeStep*(Gravity*Depth)^{0.5}/NodalSpacing}</math>
:<math>{\displaystyle CourantNumber=TimeStep*(Gravity*Depth)^{0.5}/NodalSpacing}</math>
:*Time Step: a user specified constant
:*Time Step: a user specified desired timestep size
:*NodalSpacing: dependent on the computational grid/mesh
:*NodalSpacing: Average length of the edges connected to each node of the candidate grid/mesh
:*Velocity: typically computed by hydrodynamic simulation
:*Velocity: speed (celerity) of a gravity wave traveling through the medium


As noted above, the velocity is typically output from a simulation, so this tool approximates velocity based on the speed of a gravity wave through the water column.
This tool approximates velocity based on the speed of a gravity wave through the water column.


The speed of wave propagation is dependent on the depth of the water column. For purposes of this tool, the speed is assumed to be:
The speed of wave propagation is dependent on the depth of the water column. For purposes of this tool, the speed is assumed to be:
:<math>Velocity = TimeStep*(Gravity*Depth)^{0.5}</math>
:<math>Velocity = (Gravity*Depth)^{0.5}</math>
 
:Note: the variable in the equation above is "Depth", not "Elevation". For this tool the input dataset can be the elevation or a computed depth. If an elevation is used, the sign is inverted because SMS convention is elevation up.
 
Since the equation for velocity requires a positive value for depth, the depth is forced to be at least 0.1 for the calculation. If the input dataset is elevation, the depth used for computation of the time step is:
:<math>Depth = Max(-Elevation, 0.01)</math>
If the input dataset is depth, the depth used for computation of the time step is:
:<math>Computation_depth = Max(Depth, 0.01)</math>


:Note: the variable in the equation above is "Depth", not "Elevation".
This is assuming that the water level is approximately 0.0 (Mean Sea Level).
Depth is also typically output from a hydrodynamic simulation. For this tool it can be approximated as:
:<math>Depth = Max(WaterLevel - GroundElevation, Minimum Depth)</math>
For coastal applications the water level can be assumed as 0.0 (Mean Sea Level) or a constant offset from MSL.


For riverine applications the water level is more difficult to approximate. It may require computing a sloped plane. In this case, negative values should be filtered out.
If the water level is not relatively flat or not near 0.0, the best practice approach would be to compute a depth and use that dataset directly. Depth can be computed as:
:<math>Depth = Watersurface elevation - Ground elevation</math>


In all cases, the tool will truncate the depth to a minimum value of 0.1. Velocity only exists in a water column with positive depth.
In SMS, both of these are measured from a common datum with positive upwards.
   
   
The tool computes the Courant number at each node in the selected geometry based on the specified time step.
The tool computes the Courant number at each node in the selected geometry based on the specified time step.

Revision as of 19:30, 7 May 2024


Gravity Waves Courant Number

The Courant number is a spatially varied dimensionless value (dataset) representing the time a particle stays in a cell of a mesh/grid. This is based on the size of the element and the speed of that particle. A Courant number of 1.0 implies that a particle(parcel or drop of water) would take one time step to flow through the element. Since cells/elements are not guaranteed to align with the flow field, this number is an approximation. This dataset is computed at nodes so it is uses the average size of the cells/elements attached to the node. The size is computed in meters if the geometry (mesh / UGrid / ...) is in geographic space.

A Courant number calculation requires as an input a velocity as shown in the equation below:

  • Time Step: a user specified desired timestep size
  • NodalSpacing: Average length of the edges connected to each node of the candidate grid/mesh
  • Velocity: speed (celerity) of a gravity wave traveling through the medium

This tool approximates velocity based on the speed of a gravity wave through the water column.

The speed of wave propagation is dependent on the depth of the water column. For purposes of this tool, the speed is assumed to be:

Note: the variable in the equation above is "Depth", not "Elevation". For this tool the input dataset can be the elevation or a computed depth. If an elevation is used, the sign is inverted because SMS convention is elevation up.

Since the equation for velocity requires a positive value for depth, the depth is forced to be at least 0.1 for the calculation. If the input dataset is elevation, the depth used for computation of the time step is:

If the input dataset is depth, the depth used for computation of the time step is:

This is assuming that the water level is approximately 0.0 (Mean Sea Level).

If the water level is not relatively flat or not near 0.0, the best practice approach would be to compute a depth and use that dataset directly. Depth can be computed as:

In SMS, both of these are measured from a common datum with positive upwards.

The tool computes the Courant number at each node in the selected geometry based on the specified time step.

If the input velocity magnitude dataset is transient, the resulting CourantNumber dataset will also be transient.

For numerical solvers that are Courant limited/controlled, any violation of the Courant condition, where the Courant number exceeds the allowable threshold could result in instability. Therefore, the maximum of the Courant number dataset gives an indication of the stability of this mesh for the specified time step parameter.

This tool is intended to assist with numerical engine stability, and possibly the selection of an appropriate time step size.

The Gravity Waves Courant Number tool dialog has the following options:

Input Parameters

  • Input dataset – Specify the elevation dataset (or depth dataset if using depth option).
  • Input dataset is depth – Specify if the input dataset is depth.
  • Gravity – Enter the gravity value.
  • Use time step – Enter the computational time step value.

Output Parameters

  • Gravity waves courant number data set – Enter the name for the new gravity wave Courant number dataset. It is recommended to specify a name that references the input. Typically this would include the time step used in the calculation. The velocity dataset used could be referenced. The geometry is not necessary because the dataset resides on that geometry.

Related Topics