BiharmonicDiffusion#
- class fridom.framework.modules.closures.biharmonic_diffusion.BiharmonicDiffusion(field_flags: list[str], diffusion_coefficients: list[float | ScalarField])[source]#
Bases:
HarmonicDiffusionBiharmonic diffusion module.
Description#
Following Griffiies et al. (2000), the biharmonic mixing operator \(\mathcal{B}\) iterates twice over the harmonic mixing operator \(\mathcal{H}\). For a scalar field \(u\) it is given by:
\[\mathcal{B}(u) = - \mathcal{H} \left( \mathcal{H}(u) \right)\]where we use the biharmonic diffusion coefficient \(\sqrt{|\kappa_i|}\). The index \(i\) refers to the direction of the diffusion.
Parameters#
- field_flagslist[str]
A list of strings that indicate which fields should be diffused. For example, if field_flags=[“ENABLE_MIXING”], all fields with the flag “ENABLE_MIXING” will be diffused. For more information on possible flags, see
fridom.framework.ScalarField.- diffusion_coefficientstuple[float | fr.ScalarField]
A tuple of diffusion coefficients. The length of the tuple must match the number of dimensions of the grid.
- __init__(field_flags: list[str], diffusion_coefficients: list[float | ScalarField]) None#
Methods
__init__(field_flags, diffusion_coefficients)diffuse(z, dz)Apply the biharmonic diffusion operator on a scalar field \(u\).
disable()Disable the module.
enable()Enable the module.
is_enabled()Whether the module is enabled or not.
reset()Stop and start the module.
setup(mset[, setup_mode])Set the module up.
start()Start the module.
stop()Stop the module.
update(mz)Update the model state.
Attributes
diff_moduleThe differentiation module to be used by this module.
A list of diffusion coefficients.
field_flagsA list of field flags that indicate which fields should be diffused.
gridThe grid of the model settings.
infoReturn a dictionary with information about the time stepper.
interp_moduleThe interpolation module to be used by this module.
is_setupWhether the module is set up.
msetThe model settings.
required_haloThe required halo points for this module.
Examples using
fridom.framework.modules.closures.BiharmonicDiffusion#- name = 'Biharmonic Diffusion'#
- diffusion_operator(u: ScalarField) ScalarField[source]#
Apply the biharmonic diffusion operator on a scalar field \(u\).
- property diffusion_coefficients: list[float | ScalarField]#
A list of diffusion coefficients.