SPINS Science Files: Difference between revisions
m (Add comments on units) |
No edit summary |
||
Line 22: | Line 22: | ||
== bottom_slope.cpp == | == bottom_slope.cpp == | ||
Compute the vector of the bottom slope at each x-grid point. This is used for calculating the stresses along the bottom boundary (cf. [[#bottom_stress_x.cpp|bottom_stress_x.cpp]] and [[#bottom_stress_y.cpp|bottom_stress_y.cpp]]). | |||
<div id="bottom_stress_x.cpp"></div> | <div id="bottom_stress_x.cpp"></div> | ||
== bottom_stress_x.cpp == | == bottom_stress_x.cpp == | ||
Compute the 2D vector of the x-component of stress on the bottom boundary. The z boundary condition must be no slip. | |||
If the case is unmapped: | If the case is unmapped: | ||
Line 44: | Line 44: | ||
<div id="bottom_stress_y.cpp"></div> | <div id="bottom_stress_y.cpp"></div> | ||
== bottom_stress_y.cpp == | == bottom_stress_y.cpp == | ||
Compute the 2D vector of the y-component of stress on the bottom boundary. The z boundary condition must be no slip. | |||
If the case is unmapped: | If the case is unmapped: | ||
Line 61: | Line 61: | ||
<div id="compute_Background_PE.cpp"></div> | <div id="compute_Background_PE.cpp"></div> | ||
== compute_Background_PE.cpp == | == compute_Background_PE.cpp == | ||
Compute the value of the background potential energy, | |||
<math> E_b = g \int_V \rho_* z_* dV </math> | <math> E_b = g \int_V \rho_* z_* dV </math> | ||
Line 69: | Line 69: | ||
<div id="compute_BPE_from_internal.cpp"></div> | <div id="compute_BPE_from_internal.cpp"></div> | ||
== compute_BPE_from_internal.cpp == | == compute_BPE_from_internal.cpp == | ||
Compute the rate of energy transfer from internal energy into background potential energy. | |||
<math> \phi_i = -g\kappa \int_A \rho(z=z_u) - \rho(z=z_l) dA </math> | <math> \phi_i = -g\kappa \int_A \rho(z=z_u) - \rho(z=z_l) dA </math> | ||
Line 77: | Line 77: | ||
== compute_quadweights.cpp == | == compute_quadweights.cpp == | ||
Compute the quadrature weights for each dimension. | |||
If the boundary condition is no-slip, use the Clenshaw-Curtis quadrature weights: | If the boundary condition is no-slip, use the Clenshaw-Curtis quadrature weights: | ||
Line 98: | Line 98: | ||
== compute_vort_z.cpp == | == compute_vort_z.cpp == | ||
Compute the z-component of vorticity: <math> \omega_z = v_x - u_y </math> | Compute the z-component of vorticity: <math> \omega_z = v_x - u_y </math> | ||
== dissipation.cpp == | |||
Compute the viscous dissipation <math> \epsilon = 2 \mu e_{ij} e_{ij} </math> where | |||
<math> e_{ij} = \frac{1}{2} (\frac{\partial u_i}{\partial x_j} + \frac{\partial u_j}{\partial x_i})</math> | |||
is the strain rate tensor. | |||
== enstrophy_density.cpp == | |||
Compute the enstrophy density | |||
<math> \Omega = \frac{1}{2} (\omega_x^2 + \omega_y^2 + \omega_z^2) </math> | |||
== enstrophy_stretch_production.cpp == | |||
Compute the enstrophy production due to vortex tilting/stretching | |||
<math> \sum_{ij} \omega_i \omega_j e_{ij} = \sum_{ij} \omega_i \omega_j \frac{\partial u_i}{\partial x_j} </math> where, | |||
<math> e_{ij} = \frac{1}{2} (\frac{\partial u_i}{\partial x_j} + \frac{\partial u_j}{\partial x_i})</math> | |||
is the strain rate tensor. | |||
cf. The [[Enstrophy equation]]. |
Revision as of 18:42, 17 September 2020
SPINS comes with a variety of Science files which help with simulation data analysis. Below is a list of currently available functions with a brief description of their purpose and the assumptions behind their implementation. These Science files are in spins/src/Science.
Unless otherwise mentioned, the functions below work for both unmapped and mapped domains where the mapping is along the bottom of the domain (where the bottom is at the 0-index in the z-dimension, as opposed to at the index). Another way to say this is that z increases with the index.
Units
The units of each of the functions have been built under the assumption that physical units are being used in the simulation. These computations will work for nondimensional simulations, but more care must be taken to ensure the scalings are appropriate. Physical units are typically:
Length | m |
Time | s |
Density | kg/m^3 |
The reference density should be 1000 kg/m^3 for the stress and dissipation calculations to be physically correct. The density field can be (and often is) non-dimensionalized to . If nondimensionalized, compute_Background_PE.cpp and compute_BPE_from_internal.cpp assume this form of scaling. These two functions also need to know if the density field is dimensional or not.
bottom_slope.cpp
Compute the vector of the bottom slope at each x-grid point. This is used for calculating the stresses along the bottom boundary (cf. bottom_stress_x.cpp and bottom_stress_y.cpp).
bottom_stress_x.cpp
Compute the 2D vector of the x-component of stress on the bottom boundary. The z boundary condition must be no slip.
If the case is unmapped:
where is the dynamic viscosity.
If the case is mapped:
where and where is the bottom slope.
bottom_stress_y.cpp
Compute the 2D vector of the y-component of stress on the bottom boundary. The z boundary condition must be no slip.
If the case is unmapped:
where is the dynamic viscosity.
If the case is mapped:
where and where is the bottom slope.
compute_Background_PE.cpp
Compute the value of the background potential energy,
where is the depth of an element of the sorted density field which minimized the potential energy (ie. ). For more information see Winters et al. (1995).
compute_BPE_from_internal.cpp
Compute the rate of energy transfer from internal energy into background potential energy.
where and are the depths of the upper and lower boundaries, respectively. The integral is taken over the horizontal extent. For more information see Winters et al. (1995).
compute_quadweights.cpp
Compute the quadrature weights for each dimension.
If the boundary condition is no-slip, use the Clenshaw-Curtis quadrature weights:
If the boundary condition is free-slip, use the trapezoid rule:
compute_vorticity.cpp
Compute all vorticity components.
compute_vort_x.cpp
Compute the x-component of vorticity:
compute_vort_y.cpp
Compute the y-component of vorticity:
compute_vort_z.cpp
Compute the z-component of vorticity:
dissipation.cpp
Compute the viscous dissipation where
is the strain rate tensor.
enstrophy_density.cpp
Compute the enstrophy density
enstrophy_stretch_production.cpp
Compute the enstrophy production due to vortex tilting/stretching where,
is the strain rate tensor.
cf. The Enstrophy equation.