Base classes for operators.
A base class for hyperbolic Discontinuous Galerkin operators.
Estimate the largest stable timestep, given a time stepper stepper_class. If none is given, RK4 is assumed.
A base class for Discontinuous Galerkin operators.
You may derive your own operators from this class, but, at present this class provides no functionality. Its function is merely as documentation, to group related classes together in an inheritance tree.
A base class for time-dependent Discontinuous Galerkin operators.
You may derive your own operators from this class, but, at present this class provides no functionality. Its function is merely as documentation, to group related classes together in an inheritance tree.
Bases: hedge.models.HyperbolicOperator
A class for space- and time-dependent DG advection operators.
Parameters: |
|
---|
Optionally allows diffusion.
Bases: hedge.models.Operator
Bases: hedge.models.Operator
Bases: hedge.models.HyperbolicOperator
This operator discretizes the wave equation .
To be precise, we discretize the hyperbolic system
The sign of determines whether we discretize the forward or the backward wave equation.
is assumed to be constant across all space.
Bases: hedge.models.HyperbolicOperator
This operator discretizes the wave equation .
To be precise, we discretize the hyperbolic system
c and source are optemplate expressions.
Bases: hedge.models.HyperbolicOperator
A 3D Maxwell operator which supports fixed or variable isotropic, non-dispersive, positive epsilon and mu.
Field order is [Ex Ey Ez Hx Hy Hz].
Parameters: |
|
---|
Convert the abstract operator template into compiled code.
Helps find the indices of the E and H components, which can vary depending on number of dimensions and whether we have a full/TE/TM operator.
Splits an array into E and H components
Combines separate E and H vectors into a single array.
Return a 6-tuple of bool objects indicating whether field components are to be computed. The fields are numbered in the order specified in the class documentation.
Bases: hedge.models.em.MaxwellOperator
A 2D TM Maxwell operator with PEC boundaries.
Field order is [Ez Hx Hy].
Bases: hedge.models.em.MaxwellOperator
A 2D TE Maxwell operator.
Field order is [Ex Ey Hz].
Bases: hedge.models.em.MaxwellOperator
A 1D TE Maxwell operator.
Field order is [Ex Ey Hz].
Bases: hedge.models.em.MaxwellOperator
A 1D TE Maxwell operator.
Field order is [Ey Hz].
Bases: hedge.models.em.MaxwellOperator
Implements a PML as in
[1] S. Abarbanel and D. Gottlieb, “On the construction and analysis of absorbing layers in CEM,” Applied Numerical Mathematics, vol. 27, 1998, S. 331-340. (eq 3.7-3.11)
[2] E. Turkel and A. Yefet, “Absorbing PML boundary layers for wave-like equations,” Applied Numerical Mathematics, vol. 27, 1998, S. 533-557. (eq. 4.10)
[3] Abarbanel, D. Gottlieb, and J.S. Hesthaven, “Long Time Behavior of the Perfectly Matched Layer Equations in Computational Electromagnetics,” Journal of Scientific Computing, vol. 17, Dez. 2002, S. 405-422.
Generalized to 3D in doc/maxima/abarbanel-pml.mac.
Bases: hedge.models.em.TEMaxwellOperator, hedge.models.pml.AbarbanelGottliebPMLMaxwellOperator
Bases: hedge.models.em.TMMaxwellOperator, hedge.models.pml.AbarbanelGottliebPMLMaxwellOperator
Bases: hedge.models.TimeDependentOperator, hedge.models.poisson.LaplacianOperatorBase
Return a BoundPoissonOperator.
Bases: hedge.models.Operator, hedge.models.poisson.LaplacianOperatorBase
Implements the Local Discontinuous Galerkin (LDG) Method for elliptic operators.
See P. Castillo et al., Local discontinuous Galerkin methods for elliptic problems”, Communications in Numerical Methods in Engineering 18, no. 1 (2002): 69-75.
Return a BoundPoissonOperator.
Returned by PoissonOperator.bind().
Prepare the right-hand side for the linear system op(u)=rhs(f).
In matrix form, LDG looks like this:
where v is the auxiliary vector, u is the argument of the operator, f is the result of the grad operator, g and h are inhom boundary data, and A,B,C are some operator+lifting matrices.
so the linear system looks like
So the right hand side we’re putting together here is really
Note
Resist the temptation to left-multiply by the inverse mass matrix, as this will result in a non-symmetric matrix, which (e.g.) a conjugate gradient Krylov solver will not take well.