RandomGeostrophicSpectra#
- class fridom.nonhydro.initial_conditions.geostrophic_spectra.RandomGeostrophicSpectra(mset: ~fridom.nonhydro.model_settings.ModelSettings, seed=12345, spectral_energy_density=<function geostrophic_energy_spectrum>)[source]#
Bases:
StateRandom geostrophic state with a given spectral energy density.
Parameters#
- msetModelSettings
The model settings (need to be set up).
- seedint
Seed for the random number generator (for the phase)
- spectral_energy_densitycallable(kx, ky, kz)
Callable that returns the spectral energy density as a function of the wavenumbers kx, ky, and kz.
Examples#
import fridom.nonhydro as nh # Set up the model settings grid = nh.grid.cartesian.Grid( N=(128, 128, 32), L=(10, 10, 1), periodic_bounds=(False, True, False)) mset = nh.ModelSettings(grid=grid, f0=1, N2=1.0, dsqr=0.2**2) mset.time_stepper.dt = 0.1 mset.setup() # Create the initial conditions ic = nh.initial_conditions def spectra(kx, ky, kz): return ic.geostrophic_energy_spectrum(kx, ky, kz, c=0.2, k0=1.4, d=7) z = ic.RandomGeostrophicSpectra(mset, spectral_energy_density=spectra) * 0.1 # Create and run the model model = nh.Model(mset) model.z = z model.run(runlen=200.0)
- __init__(mset: ~fridom.nonhydro.model_settings.ModelSettings, seed=12345, spectral_energy_density=<function geostrophic_energy_spectrum>)[source]#
Methods
__init__(mset[, seed, spectral_energy_density])abs()Map the field by taking the absolute value (\(|f|\)).
apply_elementwise(vector_field, op)Apply an operation elementwise to the vector field.
apply_water_mask()Apply a water mask to the field.
conj()Compute the complex conjugate.
cumulative_integral(axis[, direction])Compute the cumulative integral along an axis.
diff(axis[, order])Compute the partial derivative along an axis.
div()Compute the divergence.
dot(other)Compute the dot product with another field.
extend(topo)Extend the field in the specified directions.
fft([padding])Perform a Fast Fourier Transform (FFT) on the field.
from_netcdf(mset, path)Create a field from a NetCDF file.
from_xarray(mset, ds)Create a field from an xarray object.
grad([axes])Compute the gradient.
has_nan()Check if the field contains NaN values.
ifft([padding])Perform an Inverse Fast Fourier Transform (IFFT) on the field.
integrate([axes])Global integral of the Field in specified axes.
laplacian([axes])Compute the Laplacian.
max([axes])Maximum value of the Field over the whole domain.
mean([axes])Global mean of the Field in specified axes.
min([axes])Minimum value of the Field over the whole domain.
norm_l2()Calculate the L2 norm of the field.
norm_of_diff(other)Norm of difference between two vector fields.
project(p_vec, q_vec)Project a Vector Field onto a (spectral) vector.
set_random([seed])Set the field to random values.
sum([axes])Sum of the Field over the whole domain in the specified axes.
sync()Synchronize the field across all MPI ranks and apply boundary conditions.
to_netcdf(path)Save the field to a NetCDF file.
Attributes
bBuoyancy.
cflThe CFL number.
ekinThe kinetic energy.
epotThe potential energy.
etotThe total energy.
field_listThe list of scalar fields.
fieldsThe dictionary of scalar fields.
gridThe grid object.
infoDictionary with information about the field.
is_constantFlag indicating whether the field is constant.
is_spectralFlag indicating whether the field is in spectral space.
linear_pot_vortLinearized potential vorticity.
local_rossby_numberLocal Rossby number.
msetThe model settings.
pot_vortScaled potential vorticity field.
rel_vortThe relative vorticity.
rel_vort_xX-component of the relative vorticity.
rel_vort_yY-component of the relative vorticity.
rel_vort_zZ-component of the relative vorticity (horizontal vorticity).
tracersThe tracer fields.
uVelocity in the x-direction.
vVelocity in the y-direction.
vector_dimThe vector dimension.
velocityThe velocity vector field.
wVelocity in the z-direction.
xrThe xarray representation of the field.
xrsConvert a slice of the field to an xarray object.