WVFixedAmplitudeForcing
Hold selected wave-vortex coefficients at prescribed amplitudes.
Declaration
WVFixedAmplitudeForcing < WVForcingOverview
This forcing keeps selected wave-vortex coefficients at prescribed amplitudes while those modes continue to participate in nonlinear interactions.
As a simple example, one can set an internal wave mode with amplitude \(1\ \mathrm{cm\,s^{-1}}\), and that mode will continue to oscillate and maintain its amplitude. The wave will participate in all the nonlinear dynamics, but its amplitude will be maintained/restored at each time step.
There are several different ways to write this style of forcing mathematically. The equations of motion, written in the spectral domain, take the following form
\[\frac{\partial}{\partial t} A^{klj} = \sum_i F_i^{klj}\]where \(F_i\) are the contributions from the registered forcing objects. The transform evaluates physical-space forcing, spectral forcing, and then spectral-amplitude forcing. This forcing is evaluated last: it zeros the tendency at selected indices and restores the prescribed coefficient values after the integration step, giving \(\partial_t A^{k\ell j}=0\) for those modes.
In practice, of course, we simply restore the amplitudes to their desired value at the last step, e.g.,
A0(self.A0_indices) = self.A0bar
Notes
- This approach is commonly used in forced-dissipative turbulence to maintain some fixed forcing.
- Every fixed mode removes a degree of freedom because it no longer evolves freely. The setter methods therefore ignore coefficients below \(10^{-6}\) times the largest supplied magnitude unless an explicit mask is provided.
- Avoid selecting modes in a closure’s damping range. When
WVAdaptiveDampingis registered, the setter methods automatically remove requested modes with \(K_h>k_\mathrm{damp}\).
Example
wvt = WVTransformConstantStratification([40e3,30e3,2e3],[8,6,5],N0=5.2e-3,latitude=45,isHydrostatic=true);
wvt.setGeostrophicModes(kMode=1,lMode=0,j=1,u=0.01);
force = WVFixedAmplitudeForcing(wvt,name="geostrophic-mean-flow");
force.setGeostrophicForcingCoefficients(wvt.A0);
wvt.addForcing(force);
In practice you can initialize the flow in any way you want with any arbitrary structure, and then pass those coefficients to the forcing. The WVFixedAmplitudeForcing looks for coefficients that are small and ignores those.
Topics
- Create the forcing
WVFixedAmplitudeForcingCreate fixed-amplitude forcing for selected coefficients.
- Inspect forcing configuration
A0_indicesLinear indices of the selectedA0coefficients.A0barPrescribedA0values in \(\mathrm{m^{2}\,s^{-1}}\).Ap_indicesLinear indices of the selectedApcoefficients.ApbarPrescribedApvalues in \(\mathrm{m\,s^{-1}}\).Am_indicesLinear indices of the selectedAmcoefficients.AmbarPrescribedAmvalues in \(\mathrm{m\,s^{-1}}\).
- Configure forcing
setWaveForcingCoefficientsSelect positive- and negative-frequency coefficients to fix.setGeostrophicForcingCoefficientsSelect zero-frequency coefficients to fix.setNarrowBandGeostrophicForcingDeprecated 4.x helper for narrow-band geostrophic forcing.
Developer Topics
These items document internal implementation details and are not part of the primary public API.
- Forcing persistence
classRequiredPropertyNamesReturns the required property names for the class