|
BEM++
2.0
|
Classes | |
| class | Bempp::Laplace3dDoubleLayerPotentialOperator< BasisFunctionType_, ResultType_ > |
| Double-layer potential operator for the Laplace equation in 3D. More... | |
| class | Bempp::Laplace3dPotentialOperatorBase< Impl, BasisFunctionType_, ResultType_ > |
| Base class for potential operators related to the Laplace equation in 3D. More... | |
| class | Bempp::Laplace3dSingleLayerPotentialOperator< BasisFunctionType_, ResultType_ > |
| Single-layer potential operator for the Laplace equation in 3D. More... | |
| class | Fiber::Laplace3dAdjointDoubleLayerPotentialKernelFunctor< ValueType_ > |
| Adjoint double-layer-potential kernel functor for the Laplace equation in 3D. More... | |
| class | Fiber::Laplace3dDoubleLayerPotentialKernelFunctor< ValueType_ > |
| Double-layer-potential kernel functor for the Laplace equation in 3D. More... | |
| class | Fiber::Laplace3dHypersingularOffDiagonalKernelFunctor< ValueType_ > |
| Kernel functor for the hypersingular operator associated with the Laplace equation in 3D, applicable for test and trial points lying on nonadjacent elements. More... | |
| class | Fiber::Laplace3dSingleLayerPotentialKernelFunctor< ValueType_ > |
| Single-layer-potential kernel functor for the Laplace equation in 3D. More... | |
Functions | |
| template<typename BasisFunctionType , typename ResultType > | |
| BoundaryOperator < BasisFunctionType, ResultType > | Bempp::laplace3dAdjointDoubleLayerBoundaryOperator (const shared_ptr< const Context< BasisFunctionType, ResultType > > &context, const shared_ptr< const Space< BasisFunctionType > > &domain, const shared_ptr< const Space< BasisFunctionType > > &range, const shared_ptr< const Space< BasisFunctionType > > &dualToRange, const std::string &label="", int symmetry=NO_SYMMETRY) |
| Construct a BoundaryOperator object representing the adjoint double-layer boundary operator associated with the Laplace equation in 3D. More... | |
| template<typename BasisFunctionType , typename ResultType > | |
| BoundaryOperator < BasisFunctionType, ResultType > | Bempp::laplace3dDoubleLayerBoundaryOperator (const shared_ptr< const Context< BasisFunctionType, ResultType > > &context, const shared_ptr< const Space< BasisFunctionType > > &domain, const shared_ptr< const Space< BasisFunctionType > > &range, const shared_ptr< const Space< BasisFunctionType > > &dualToRange, const std::string &label="", int symmetry=NO_SYMMETRY) |
| Construct a BoundaryOperator object representing the double-layer boundary operator associated with the Laplace equation in 3D. More... | |
| template<typename BasisFunctionType , typename ResultType > | |
| BoundaryOperator < BasisFunctionType, ResultType > | Bempp::laplace3dSyntheticDoubleLayerBoundaryOperator (const shared_ptr< const Context< BasisFunctionType, ResultType > > &context, const shared_ptr< const Space< BasisFunctionType > > &domain, const shared_ptr< const Space< BasisFunctionType > > &range, const shared_ptr< const Space< BasisFunctionType > > &dualToRange, const shared_ptr< const Space< BasisFunctionType > > &internalTrialSpace, const shared_ptr< const Space< BasisFunctionType > > &internalTestSpace, const std::string &label="", int symmetry=NO_SYMMETRY) |
| Construct a "synthetic" representation of the double-layer boundary operator associated with the Laplace equation in 3D. More... | |
| template<typename BasisFunctionType , typename ResultType > | |
| BoundaryOperator < BasisFunctionType, ResultType > | Bempp::laplace3dHypersingularBoundaryOperator (const shared_ptr< const Context< BasisFunctionType, ResultType > > &context, const shared_ptr< const Space< BasisFunctionType > > &domain, const shared_ptr< const Space< BasisFunctionType > > &range, const shared_ptr< const Space< BasisFunctionType > > &dualToRange, const std::string &label="", int symmetry=NO_SYMMETRY) |
| Construct a BoundaryOperator object representing the hypersingular boundary operator associated with the Laplace equation in 3D. More... | |
| template<typename BasisFunctionType , typename ResultType > | |
| BoundaryOperator < BasisFunctionType, ResultType > | Bempp::laplace3dSingleLayerBoundaryOperator (const shared_ptr< const Context< BasisFunctionType, ResultType > > &context, const shared_ptr< const Space< BasisFunctionType > > &domain, const shared_ptr< const Space< BasisFunctionType > > &range, const shared_ptr< const Space< BasisFunctionType > > &dualToRange, const std::string &label="", int symmetry=NO_SYMMETRY) |
| Construct a BoundaryOperator object representing the single-layer boundary operator associated with the Laplace equation in 3D. More... | |
This submodule contains classes implementing kernels, boundary operators and potential operators related to the Laplace equation in 3D,
| BoundaryOperator< BasisFunctionType, ResultType > Bempp::laplace3dAdjointDoubleLayerBoundaryOperator | ( | const shared_ptr< const Context< BasisFunctionType, ResultType > > & | context, |
| const shared_ptr< const Space< BasisFunctionType > > & | domain, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | range, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | dualToRange, | ||
| const std::string & | label = "", |
||
| int | symmetry = NO_SYMMETRY |
||
| ) |
Construct a BoundaryOperator object representing the adjoint double-layer boundary operator associated with the Laplace equation in 3D.
| [in] | context | A Context object that will be used to build the weak form of the boundary operator when necessary. |
| [in] | domain | Function space being the domain of the boundary operator. |
| [in] | range | Function space being the range of the boundary operator. |
| [in] | dualToRange | Function space dual to the the range of the boundary operator. |
| [in] | label | Textual label of the operator. If empty, a unique label is generated automatically. |
| [in] | symmetry | Symmetry of the weak form of the operator. Can be any combination of the flags defined in the enumeration type Symmetry. |
None of the shared pointers may be null and the spaces range and dualToRange must be defined on the same grid, otherwise an exception is thrown.
If local-mode ACA assembly is requested (see AcaOptions::mode), after discretization, the weak form of this operator is stored as the product
where
is the weak form of this operator discretized with test and trial functions being the restrictions of the basis functions of domain and range to individual elements;
is the sparse matrix representing the expansion of the basis functions of domain in the just mentioned single-element trial functions; and
is the sparse matrix whose transpose represents the expansion of the basis functions of dualToRange in the single-element test functions.
If each basis function of domain extends over a single element only (i.e. domain->isDiscontinuous() method returns true), the matrix
is omitted from the discretized weak form. The same applies to dualToDomain and the matrix
.
| BasisFunctionType | Type of the values of the basis functions into which functions acted upon by the operator are expanded. |
| ResultType | Type used to represent elements of the weak form of the operator. |
Both template parameters can take the following values: float, double, std::complex<float> and std::complex<double>. Both types must have the same precision: for instance, mixing float with std::complex<double> is not allowed. The parameter ResultType is by default set to BasisFunctionType. You should override that only if you set BasisFunctionType to a real type, but you want the entries of the operator's weak form to be stored as complex numbers.
References Bempp::AssemblyOptions::ACA, Bempp::AssemblyOptions::acaOptions(), Bempp::AssemblyOptions::assemblyMode(), and Bempp::AcaOptions::mode.
| BoundaryOperator< BasisFunctionType, ResultType > Bempp::laplace3dDoubleLayerBoundaryOperator | ( | const shared_ptr< const Context< BasisFunctionType, ResultType > > & | context, |
| const shared_ptr< const Space< BasisFunctionType > > & | domain, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | range, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | dualToRange, | ||
| const std::string & | label = "", |
||
| int | symmetry = NO_SYMMETRY |
||
| ) |
Construct a BoundaryOperator object representing the double-layer boundary operator associated with the Laplace equation in 3D.
| [in] | context | A Context object that will be used to build the weak form of the boundary operator when necessary. |
| [in] | domain | Function space being the domain of the boundary operator. |
| [in] | range | Function space being the range of the boundary operator. |
| [in] | dualToRange | Function space dual to the the range of the boundary operator. |
| [in] | label | Textual label of the operator. If empty, a unique label is generated automatically. |
| [in] | symmetry | Symmetry of the weak form of the operator. Can be any combination of the flags defined in the enumeration type Symmetry. |
None of the shared pointers may be null and the spaces range and dualToRange must be defined on the same grid, otherwise an exception is thrown.
| BasisFunctionType | Type of the values of the basis functions into which functions acted upon by the operator are expanded. |
| ResultType | Type used to represent elements of the weak form of the operator. |
Both template parameters can take the following values: float, double, std::complex<float> and std::complex<double>. Both types must have the same precision: for instance, mixing float with std::complex<double> is not allowed. The parameter ResultType is by default set to BasisFunctionType. You should override that only if you set BasisFunctionType to a real type, but you want the entries of the operator's weak form to be stored as complex numbers.
References Bempp::AssemblyOptions::ACA, Bempp::AssemblyOptions::acaOptions(), Bempp::AssemblyOptions::assemblyMode(), and Bempp::AcaOptions::mode.
| BoundaryOperator< BasisFunctionType, ResultType > Bempp::laplace3dHypersingularBoundaryOperator | ( | const shared_ptr< const Context< BasisFunctionType, ResultType > > & | context, |
| const shared_ptr< const Space< BasisFunctionType > > & | domain, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | range, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | dualToRange, | ||
| const std::string & | label = "", |
||
| int | symmetry = NO_SYMMETRY |
||
| ) |
Construct a BoundaryOperator object representing the hypersingular boundary operator associated with the Laplace equation in 3D.
| [in] | context | A Context object that will be used to build the weak form of the boundary operator when necessary. |
| [in] | domain | Function space being the domain of the boundary operator. |
| [in] | range | Function space being the range of the boundary operator. |
| [in] | dualToRange | Function space dual to the the range of the boundary operator. |
| [in] | label | Textual label of the operator. If empty, a unique label is generated automatically. |
| [in] | symmetry | Symmetry of the weak form of the operator. Can be any combination of the flags defined in the enumeration type Symmetry. |
None of the shared pointers may be null and the spaces range and dualToRange must be defined on the same grid, otherwise an exception is thrown.
If local-mode ACA assembly is requested (see AcaOptions::mode), after discretization, the weak form of this operator is stored as
where
is the weak form of the single-layer Laplace boundary operator discretized with test and trial functions being the restrictions of the basis functions of domain and range to individual elements;
is the sparse matrix representing the expansion of ith component of the surface curl of the basis functions of domain in the just mentioned single-element trial functions; and
is the sparse matrix whose transpose represents the expansion of the ith component of the surface curl of the basis functions of dualToRange in the single-element test functions.
| BasisFunctionType | Type of the values of the basis functions into which functions acted upon by the operator are expanded. |
| ResultType | Type used to represent elements of the weak form of the operator. |
Both template parameters can take the following values: float, double, std::complex<float> and std::complex<double>. Both types must have the same precision: for instance, mixing float with std::complex<double> is not allowed. The parameter ResultType is by default set to BasisFunctionType. You should override that only if you set BasisFunctionType to a real type, but you want the entries of the operator's weak form to be stored as complex numbers.
References Bempp::AssemblyOptions::ACA, Bempp::AssemblyOptions::acaOptions(), Bempp::AssemblyOptions::assemblyMode(), and Bempp::AcaOptions::mode.
| BoundaryOperator< BasisFunctionType, ResultType > Bempp::laplace3dSingleLayerBoundaryOperator | ( | const shared_ptr< const Context< BasisFunctionType, ResultType > > & | context, |
| const shared_ptr< const Space< BasisFunctionType > > & | domain, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | range, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | dualToRange, | ||
| const std::string & | label = "", |
||
| int | symmetry = NO_SYMMETRY |
||
| ) |
Construct a BoundaryOperator object representing the single-layer boundary operator associated with the Laplace equation in 3D.
| [in] | context | A Context object that will be used to build the weak form of the boundary operator when necessary. |
| [in] | domain | Function space being the domain of the boundary operator. |
| [in] | range | Function space being the range of the boundary operator. |
| [in] | dualToRange | Function space dual to the the range of the boundary operator. |
| [in] | label | Textual label of the operator. If empty, a unique label is generated automatically. |
| [in] | symmetry | Symmetry of the weak form of the operator. Can be any combination of the flags defined in the enumeration type Symmetry. |
None of the shared pointers may be null and the spaces range and dualToRange must be defined on the same grid, otherwise an exception is thrown.
If local-mode ACA assembly is requested (see AcaOptions::mode), after discretization, the weak form of this operator is stored as the product
where
is the weak form of this operator discretized with test and trial functions being the restrictions of the basis functions of domain and range to individual elements;
is the sparse matrix representing the expansion of the basis functions of domain in the just mentioned single-element trial functions; and
is the sparse matrix whose transpose represents the expansion of the basis functions of dualToRange in the single-element test functions.
If each basis function of domain extends over a single element only (i.e. domain->isDiscontinuous() method returns true), the matrix
is omitted from the discretized weak form. The same applies to dualToDomain and the matrix
.
| BasisFunctionType | Type of the values of the basis functions into which functions acted upon by the operator are expanded. |
| ResultType | Type used to represent elements of the weak form of the operator. |
Both template parameters can take the following values: float, double, std::complex<float> and std::complex<double>. Both types must have the same precision: for instance, mixing float with std::complex<double> is not allowed. The parameter ResultType is by default set to BasisFunctionType. You should override that only if you set BasisFunctionType to a real type, but you want the entries of the operator's weak form to be stored as complex numbers.
References Bempp::AssemblyOptions::ACA, Bempp::AssemblyOptions::acaOptions(), Bempp::AssemblyOptions::assemblyMode(), and Bempp::AcaOptions::mode.
| BoundaryOperator<BasisFunctionType, ResultType> Bempp::laplace3dSyntheticDoubleLayerBoundaryOperator | ( | const shared_ptr< const Context< BasisFunctionType, ResultType > > & | context, |
| const shared_ptr< const Space< BasisFunctionType > > & | domain, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | range, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | dualToRange, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | internalTrialSpace, | ||
| const shared_ptr< const Space< BasisFunctionType > > & | internalTestSpace, | ||
| const std::string & | label = "", |
||
| int | symmetry = NO_SYMMETRY |
||
| ) |
Construct a "synthetic" representation of the double-layer boundary operator associated with the Laplace equation in 3D.
This function creates a double-layer Laplace boundary operator
whose weak form is stored as the product
where
is the weak form of
discretised with the discontinuous test and trial function spaces passed in the parameters internalTestSpace and internalTrialSpace,
is the sparse matrix mapping the degrees of freedom of domain to those of internalTrialSpace, and
the matrix mapping the degrees of freedom of internalTestSpace to dualToRange.
If internalTrialSpace == domain or internalTestSpace == dualToRange,
or
becomes an identity matrix and is not physically created.
In ACA mode, synthetic operators are, as a rule, built more quickly than "standard" operators (ACA is faster for operators discretised with discontinuous spaces), but use up more memory and their matrix-vector product may be more time-consuming.
See the documentation of SyntheticIntegralOperator for more information about the concept of synthetic operators.
| [in] | context | A Context object that will be used to build the weak form of the boundary operator when necessary. |
| [in] | domain | Function space being the domain of the boundary operator. |
| [in] | range | Function space being the range of the boundary operator. |
| [in] | dualToRange | Function space dual to the the range of the boundary operator. |
| [in] | internalTrialSpace | Trial function space used in the discretisation of to . It must be a discontinuous space, with basis functions extending over single elements only. |
| [in] | internalTestSpace | Test function space used in the discretisation of to . It must be a discontinuous space, with basis functions extending over single elements only. |
| [in] | label | Textual label of the operator. If empty, a unique label is generated automatically. |
| [in] | symmetry | Symmetry of the weak form of the operator. Can be any combination of the flags defined in the enumeration type Symmetry. |
None of the shared pointers may be null. internalTestSpace must be defined on the same grid as range and dualToRange, while internalTrialSpace must be defined on the same grid as domain; otherwise an exception is thrown.
| BasisFunctionType | Type of the values of the basis functions into which functions acted upon by the operator are expanded. |
| ResultType | Type used to represent elements of the weak form of the operator. |
float, double, std::complex<float> and std::complex<double>. Both types must have the same precision: for instance, mixing float with std::complex<double> is not allowed. The parameter ResultType is by default set to BasisFunctionType. You should override that only if you set BasisFunctionType to a real type, but you want the entries of the operator's weak form to be stored as complex numbers.
1.8.5