4.3.10 pde.pdes.wave module
A simple wave equation.
- class WavePDE(speed=1, *, bc=None)[source]
Bases:
PDEBase
A simple wave equation.
The mathematical definition, \(\partial_t^2 u = c^2 \nabla^2 u\), is implemented as two first-order equations,
\[\begin{split}\partial_t u &= v \\ \partial_t v &= c^2 \nabla^2 u\end{split}\]where \(c\) sets the wave speed and \(v\) is an auxiallary field. Note that the class expects an initial condition specifying both fields, which can be created using the
WavePDE.get_initial_condition()
method. The result will also return two fields.- Parameters:
speed (float) – The speed \(c\) of the wave
bc (BoundariesData | None) – The boundary conditions applied to the field \(u\). Boundary conditions are generally given as a dictionary with one condition for each axis side. For periodic axes, only periodic boundary conditions are allowed (indicated by ‘periodic’ and ‘anti-periodic’). For non-periodic axes, different boundary conditions can be specified for the lower and upper end (using specific identifiers, like x- and y+). For instance, Dirichlet conditions enforcing a value NUM (specified by {‘value’: NUM}) and Neumann conditions enforcing the value DERIV for the derivative in the normal direction (specified by {‘derivative’: DERIV}) are supported. Note that the special value ‘auto_periodic_neumann’ imposes periodic boundary conditions for periodic axis and a vanishing derivative otherwise. More information can be found in the boundaries documentation.
- default_bc = 'auto_periodic_neumann'
Default boundary condition used when no specific conditions are chosen.
- evolution_rate(state, t=0)[source]
Evaluate the right hand side of the PDE.
- Parameters:
state (
FieldCollection
) – The fields \(u\) and \(v\)t (float) – The current time point
- Returns:
Fields describing the evolution rates of the PDE
- Return type:
FieldCollection
- explicit_time_dependence: bool | None = False
Flag indicating whether the right hand side of the PDE has an explicit time dependence.
- Type:
- get_initial_condition(u, v=None)[source]
Create a suitable initial condition.
- Parameters:
u (
ScalarField
) – The initial density on the gridv (
ScalarField
, optional) – The initial rate of change. This is assumed to be zero if the value is omitted.
- Returns:
The combined fields u and v, suitable for the simulation
- Return type:
FieldCollection