hp2D::DivDiv< Weight > Class Template Referenceabstract
A function class to calculate element matrices for the Div u*Div v Bilinearform. More...
#include <divdiv.hh>
Public Member Functions | |
virtual DivDiv * | clone () const |
Virtual constructor. More... | |
virtual BilinearForm * | clone () const=0 |
Virtual constructor. More... | |
virtual MaxwellSharedData * | data () const |
Returns the data to be shared. More... | |
virtual void | data (concepts::Cloneable *d) |
Sets the data to be shared. More... | |
DivDiv (concepts::Array< Real > &jacobian, concepts::Array< concepts::MapReal2d > &jacobianInv, const Quad< Real > **oldElm, SingularSet &singularities, const uint i=0, const uint j=0, const concepts::Formula< Real > *frm=0) | |
Constructor. More... | |
DivDiv (SingularSet &singularities, const uint i=0, const uint j=0, const concepts::Formula< Real > *frm=0) | |
Constructor. More... | |
virtual void | operator() (const concepts::Element< Real > &elmX, const concepts::Element< Real > &elmY, concepts::ElementMatrix< Real > &em) const |
virtual void | operator() (const Element< typename Realtype< Real >::type > &elmX, const Element< typename Realtype< Real >::type > &elmY, ElementMatrix< Real > &em) const=0 |
Evaluates the bilinear form for all shape functions on elmX and elmY and stores the result in the matrix em . More... | |
virtual void | operator() (const Element< typename Realtype< Real >::type > &elmX, const Element< typename Realtype< Real >::type > &elmY, ElementMatrix< Real > &em, const ElementPair< typename Realtype< Real >::type > &ep) const |
Evaluates the bilinear form for all shape functions on elmX and elmY and stores the result in the matrix em . More... | |
void | operator() (const Quad< Real > &elmX, const Quad< Real > &elmY, concepts::ElementMatrix< Real > &em) const |
virtual | ~DivDiv () |
Static Public Member Functions | |
static void | setup (vectorial::BilinearForm< Real, Real > &bf, hp2D::SingularSet &singularities, const concepts::Formula< Real > *frm=0) |
Sets up the bilinear form for the div-div part for Maxwell's equation using weighted regularization. More... | |
Protected Member Functions | |
virtual std::ostream & | info (std::ostream &os) const |
Returns information in an output stream. More... | |
Private Attributes | |
concepts::Array< concepts::MapReal2d > | coeffMatrix_ |
Intermediate data for element matrix computation. More... | |
std::unique_ptr< const concepts::Formula< Real > > | frm_ |
Formula for dielectricity . More... | |
uint | i_ |
Row and column inside the vectorial bilinear form. More... | |
uint | j_ |
concepts::Array< Real > * | jacobian_ |
Intermediate data for element matrix computation. More... | |
concepts::Array< concepts::MapReal2d > * | jacobianInv_ |
const Quad< Real > ** | oldElm_ |
MaxwellSharedData * | sharedData_ |
SingularSet & | singularities_ |
Set of singular points. More... | |
Weight | weight_ |
Weight of regularization. More... | |
Detailed Description
template<typename Weight = TrivialWeight>
class hp2D::DivDiv< Weight >
A function class to calculate element matrices for the Div u*Div v Bilinearform.
The Jacobian, its inverse and additional quantities only depending on the physical coordinates are only computed once for all components of the bilinear form. To this end, several additional parameters can be given to the constructor (see there). However, it is much simpler to use the DivDiv::setup method which sets up everything automatically.
TODO: setupDivDiv()-function with singularities using SharedJacobianAdj instead of MaxwellSharedData.
Constructor & Destructor Documentation
◆ DivDiv() [1/2]
hp2D::DivDiv< Weight >::DivDiv | ( | SingularSet & | singularities, |
const uint | i = 0 , |
||
const uint | j = 0 , |
||
const concepts::Formula< Real > * | frm = 0 |
||
) |
Constructor.
- Parameters
-
singularities List of singular edges and vertices. i Index of the bilinear form in the vector valued bilinear form j Index of the bilinear form in the vector valued bilinear form frm Formula for the dielectricity
◆ DivDiv() [2/2]
hp2D::DivDiv< Weight >::DivDiv | ( | concepts::Array< Real > & | jacobian, |
concepts::Array< concepts::MapReal2d > & | jacobianInv, | ||
const Quad< Real > ** | oldElm, | ||
SingularSet & | singularities, | ||
const uint | i = 0 , |
||
const uint | j = 0 , |
||
const concepts::Formula< Real > * | frm = 0 |
||
) |
Constructor.
- Parameters
-
jacobian Reference to the storage space for the Jacobian. Here, also other quantities are stored (premultiplied). jacobianInv Reference to the storage space for the inverse of the Jacobian. oldElm Pointer to the element of the last invocation to detect if the information in jacobian
andjacobianInv
is still valid.singularities List of singular edges and vertices. i Index of the bilinear form in the vector valued bilinear form j Index of the bilinear form in the vector valued bilinear form frm Formula for the dielectic
◆ ~DivDiv()
|
virtual |
Member Function Documentation
◆ clone() [1/2]
|
virtual |
Virtual constructor.
Returns a pointer to a copy of itself. The caller is responsible to destroy this copy.
Implements concepts::Cloneable.
◆ clone() [2/2]
|
pure virtualinherited |
Virtual constructor.
Returns a pointer to a copy of itself. The caller is responsible to destroy this copy.
◆ data() [1/2]
|
virtual |
Returns the data to be shared.
Implements vectorial::Vectorizable.
◆ data() [2/2]
|
virtual |
Sets the data to be shared.
Implements vectorial::Vectorizable.
◆ info()
|
protectedvirtual |
Returns information in an output stream.
Reimplemented from concepts::BilinearForm< Real >.
◆ operator()() [1/4]
|
virtual |
◆ operator()() [2/4]
|
pure virtualinherited |
Evaluates the bilinear form for all shape functions on elmX
and elmY
and stores the result in the matrix em
.
- Postcondition
- The returned matrix
em
has the correct size.
- Parameters
-
elmX Left element (test functions) elmY Right element (trial functions) em Return element matrix
◆ operator()() [3/4]
|
inlinevirtualinherited |
Evaluates the bilinear form for all shape functions on elmX
and elmY
and stores the result in the matrix em
.
If this method is not reimplemented in a derived class, the default behaviour is to call the application operator without ep
.
- Postcondition
- The returned matrix
em
has the correct size.
- Parameters
-
elmX Left element elmY Right element em Return element matrix ep Element pair holding more information on the pair elmX
andelmY
Definition at line 57 of file bilinearForm.hh.
◆ operator()() [4/4]
void hp2D::DivDiv< Weight >::operator() | ( | const Quad< Real > & | elmX, |
const Quad< Real > & | elmY, | ||
concepts::ElementMatrix< Real > & | em | ||
) | const |
◆ setup()
|
static |
Sets up the bilinear form for the div-div part for Maxwell's equation using weighted regularization.
- Parameters
-
bf Resulting bilinear form (use this to compute the matrix) singularities Singularities needed for computing the weight frm Formula for the dielectricity (if none is given, 1 is assumed)
- Precondition
- The number of components of
bf
needs to be 2 x 2.
Member Data Documentation
◆ coeffMatrix_
|
private |
◆ frm_
|
private |
◆ i_
|
private |
◆ j_
|
private |
◆ jacobian_
|
private |
◆ jacobianInv_
|
private |
◆ oldElm_
|
private |
◆ sharedData_
|
private |
◆ singularities_
|
private |
◆ weight_
|
private |
The documentation for this class was generated from the following file:
- hp2D/divdiv.hh