|
Peano
|
Sommerfeld (radiative, outgoing) boundary conditions: waves leave the domain with little reflection, and the solution approaches a far-field solution towards infinity. More...


Data Structures | |
| class | Generator |
| SommerfeldBoundaryConditions-specific code generation. More... | |
Public Member Functions | |
| __init__ (self, str implementation=None, Sequence[float] origin=None, bool stateless=False) | |
| get_origin (self, int dimensions) | |
| The origin with one entry per dimension. | |
Public Member Functions inherited from exahype2.api.PDETerm.PDETerm | |
| str | __repr__ (self) |
| str | __str__ (self) |
| "PDETerm.Generator" | generator (self) |
| Code generator for this term: an instance of this term's own (possibly subclass-specific) Generator. | |
Data Fields | |
| origin | |
| The origin with one entry per dimension. | |
Data Fields inherited from exahype2.api.PDETerm.PDETerm | |
| name | |
| implementation | |
| stateless | |
Static Public Attributes | |
| tuple | SIGNATURE |
| str | NAME = "sommerfeldFarFieldSolution" |
Static Public Attributes inherited from exahype2.api.PDETerm.PDETerm | |
| str | NAME |
| str | SIGNATURE |
Sommerfeld (radiative, outgoing) boundary conditions: waves leave the domain with little reflection, and the solution approaches a far-field solution towards infinity.
The term is an alternative to exahype2.api.DirichletBoundaryConditions. exahype2::blockstructured::applySommerfeldBoundaryConditions() documents the conditions, their discretisation, and how block-structured schemes realise them. The user specifies the far-field solution \( u_\\infty \):
Only the first NUMBER_OF_UNKNOWNS entries of Q are read, i.e. the implementation does not have to set the auxiliary variables.
The wave speed is the solver's maximum eigenvalue along the face normal, i.e. the solver has to hold a non-stateless exahype2.api.MaxEigenvalue term. The ghost cells are initialised with the initial condition (exahype2.api.InitPointWisely) before the first time step.
Different to Dirichlet conditions, there is no separate boundary task in the time step. The Sommerfeld update replaces the roll over of the face data instead (
A solver needs a boundary condition term if and only if at least one axis of the domain is not periodic (
Only the non-stateless variant is supported, i.e. the term has to be added with stateless=False.
Definition at line 10 of file SommerfeldBoundaryConditions.py.
| exahype2.api.blockstructured.SommerfeldBoundaryConditions.SommerfeldBoundaryConditions.__init__ | ( | self, | |
| str | implementation = None, |
||
| Sequence[float] | origin = None, |
||
| bool | stateless = False |
||
| ) |
| implementation | str A C++ snippet that becomes sommerfeldFarFieldSolution()'s body, or None (the default) to leave sommerfeldFarFieldSolution() pure virtual for you to implement by hand. |
| origin | Sequence[float] Centre of the system, i.e. the point the outgoing spherical waves emanate from. One entry per dimension. None (the default) is the origin of the coordinate system. |
| stateless | bool Has to be False, |
Reimplemented from exahype2.api.PDETerm.PDETerm.
Definition at line 61 of file SommerfeldBoundaryConditions.py.
References exahype2.api.blockstructured.SommerfeldBoundaryConditions.SommerfeldBoundaryConditions.__init__(), exahype2.api.blockstructured.DirichletBoundaryConditions.DirichletBoundaryConditions.NAME, exahype2.api.blockstructured.SommerfeldBoundaryConditions.SommerfeldBoundaryConditions.NAME, exahype2.api.Flux.Flux.NAME, exahype2.api.GradientRefinement.GradientRefinement.NAME, exahype2.api.InitPointWisely.InitPointWisely.NAME, exahype2.api.MassMatrix.MassMatrix.NAME, exahype2.api.MaxEigenvalue.MaxEigenvalue.NAME, exahype2.api.NonconservativeProduct.NonconservativeProduct.NAME, exahype2.api.PDETerm.PDETerm.NAME, exahype2.api.PointSource.PointSource.NAME, exahype2.api.RefineErasePointwisely.RefineErasePointwisely.NAME, and exahype2.api.VolumetricSource.VolumetricSource.NAME.
Referenced by exahype2.api.blockstructured.SommerfeldBoundaryConditions.SommerfeldBoundaryConditions.__init__().


| exahype2.api.blockstructured.SommerfeldBoundaryConditions.SommerfeldBoundaryConditions.get_origin | ( | self, | |
| int | dimensions | ||
| ) |
The origin with one entry per dimension.
| dimensions | int Number of dimensions of the domain. |
Definition at line 90 of file SommerfeldBoundaryConditions.py.
References exahype2.api.blockstructured.SommerfeldBoundaryConditions.SommerfeldBoundaryConditions.origin.
|
static |
Definition at line 59 of file SommerfeldBoundaryConditions.py.
Referenced by exahype2.api.blockstructured.DirichletBoundaryConditions.DirichletBoundaryConditions.__init__(), exahype2.api.Flux.Flux.__init__(), exahype2.api.GradientRefinement.GradientRefinement.__init__(), exahype2.api.InitPointWisely.InitPointWisely.__init__(), exahype2.api.MassMatrix.MassMatrix.__init__(), exahype2.api.MaxEigenvalue.MaxEigenvalue.__init__(), exahype2.api.NonconservativeProduct.NonconservativeProduct.__init__(), exahype2.api.PointSource.PointSource.__init__(), exahype2.api.RefineErasePointwisely.RefineErasePointwisely.__init__(), exahype2.api.VolumetricSource.VolumetricSource.__init__(), and exahype2.api.blockstructured.SommerfeldBoundaryConditions.SommerfeldBoundaryConditions.__init__().
| exahype2.api.blockstructured.SommerfeldBoundaryConditions.SommerfeldBoundaryConditions.origin |
The origin with one entry per dimension.
| dimensions | int Number of dimensions of the domain. |
Definition at line 88 of file SommerfeldBoundaryConditions.py.
Referenced by exahype2.api.blockstructured.SommerfeldBoundaryConditions.SommerfeldBoundaryConditions.get_origin().
|
static |
Definition at line 55 of file SommerfeldBoundaryConditions.py.