fluidsim.solvers.plate2d.solver

Plate2d solver (fluidsim.solvers.plate2d.solver)

This module provides two classes defining the pseudo-spectral solver plate2d.

class fluidsim.solvers.plate2d.solver.InfoSolverPseudoSpectral(only_root=False, **kargs)[source]

Bases: InfoSolverBase

Contain the information on a base pseudo-spectral 2D solver.

_init_root()[source]

Init. self by writting the information on the solver.

The first-level classes for this base solver are:

class fluidsim.solvers.plate2d.solver.Simul(params)[source]

Bases: SimulBasePseudoSpectral

Pseudo-spectral solver solving the Föppl-von Kármán equations.

Notes

This class is dedicated to solve with a pseudo-spectral method the Föppl-von Kármán equations which describe the dynamics of a rigid plate. Using the non-dimensional variables displacement \(z\) and out of plane velocity \(w\):

\[\partial_t z = w,\]
\[\partial_t w = - \Delta^2 z + N_w(z) + f_w - \nu_\alpha (-\Delta)^\alpha w.\]

where \(\Delta = \partial_{xx} + \partial_{yy}\) is the Laplacian. The first term of the two equations corresponds to the linear part. \(f_w\) and \(\nu_\alpha \Delta^\alpha w\) are the forcing and the dissipation terms, respectively. The nonlinear term is equal to \(N_w(z) = \{ z, \chi \}\), where \(\{ \cdot, \cdot \}\) is the Monge-Ampère operator

\[\{ a, b \} = \partial_{xx} a \partial_{yy} b + \partial_{yy} a \partial_{xx} b - 2 \partial_{xy} a \partial_{xy} b,\]

and

\[\Delta^2 \chi = -\{ z, z \}.\]

Taking the Fourier transform, we get:

\[\partial_t \hat z = \hat w,\]
\[\partial_t \hat w = - k^4 \hat z + \widehat{N_w(z)} + \hat f_w - \nu_\alpha k^{2\alpha} \hat w,\]

where \(k^2 = |\mathbf{k}|^2\). For this simple solver, we will use the variables \(z\) and \(w\) and only the dissipative term will be solve exactly. Thus, all the other terms are included in the tendencies_nonlin() function.

Energetics: The total energy can be decomposed in the kinetic energy

\[E_K = \frac{1}{2} \langle w^2 \rangle = \frac{1}{2} \sum_\mathbf{k} |\hat w|^2,\]

the flexion energy

\[E_L = \frac{1}{2} \langle (\Delta z)^2 \rangle = \frac{1}{2} \sum_\mathbf{k} k^4|\hat z|^2,\]

and the non-quadratic extension energy

\[E_E = \frac{1}{4} \langle (\Delta \chi)^2 \rangle = \frac{1}{4} \sum_\mathbf{k} k^4 |\hat \chi|^2.\]

The energy injected into the system by the forcing is

\[P = \langle f_w w \rangle,\]

and the dissipation is

\[D = \nu_\alpha \langle w (-\Delta)^\alpha w \rangle.\]
InfoSolver

alias of InfoSolverPlate2D

static _complete_params_with_default(params)[source]

Complete the params container (static method).

tendencies_nonlin(state_spect=None, old=None)[source]

Compute the “nonlinear” tendencies.

compute_freq_diss()[source]

Compute the dissipation frequencies with dissipation only for w.

test_tendencies_nonlin(tendencies_fft=None, w_fft=None, z_fft=None, chi_fft=None)[source]

Test if the tendencies conserves the total energy.

We consider the conservative Föppl-von Kármán equations (without dissipation and forcing) written as

\[ \begin{align}\begin{aligned}\partial_t z = F_z\\\partial_t w = F_w\end{aligned}\end{align} \]

We have:

\[ \begin{align}\begin{aligned}\partial_t E_K(\mathbf{k}) = \mathcal{R} ( \hat F_w \hat w ^* )\\\partial_t E_L(\mathbf{k}) = k^4 \mathcal{R} ( \hat F_z \hat z ^* )\\\partial_t E_{NQ}(\mathbf{k}) = - \mathcal{R} ( \widehat{\{ F_z, z\}} \hat \chi ^* )\end{aligned}\end{align} \]

Since the total energy is conserved, we should have

\[\sum_{\mathbf{k}} \partial_t E_K(\mathbf{k}) + \partial_t E_L(\mathbf{k}) + \partial_t E_{NQ}(\mathbf{k}) = 0\]

This function computes this quantities.

Classes

InfoSolverPlate2D([only_root])

Contain the information on the solver plate2d.

Simul(params)

Pseudo-spectral solver solving the Föppl-von Kármán equations.