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. | |
| virtual MaxwellSharedData * | data () const |
| Returns the data to be shared. | |
| virtual void | data (concepts::Cloneable *d) |
| Sets the data to be shared. | |
| DivDiv (SingularSet &singularities, const uint i=0, const uint j=0, const concepts::Formula< Real > *frm=0) | |
| Constructor. | |
| 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. | |
| void | operator() (const Quad< Real > &elmX, const Quad< Real > &elmY, concepts::ElementMatrix< Real > &em) |
| virtual void | operator() (const concepts::Element< Real > &elmX, const concepts::Element< Real > &elmY, concepts::ElementMatrix< Real > &em) |
| 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) |
Evaluates the bilinear form for all shape functions on elmX and elmY and stores the result in the matrix em. | |
| virtual void | operator() (const Element< typename Realtype< Real >::type > &elmX, const Element< typename Realtype< Real >::type > &elmY, ElementMatrix< Real > &em)=0 |
Evaluates the bilinear form for all shape functions on elmX and elmY and stores the result in the matrix em. | |
| 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. | |
Protected Member Functions | |
| virtual std::ostream & | info (std::ostream &os) const |
| Returns information in an output stream. | |
Private Attributes | |
| concepts::Array < concepts::MapReal2d > | coeffMatrix_ |
| Intermediate data for element matrix computation. | |
| std::auto_ptr< const concepts::Formula< Real > > | frm_ |
Formula for dielectricity . | |
| uint | i_ |
| Row and column inside the vectorial bilinear form. | |
| uint | j_ |
| SingularSet & | singularities_ |
| Set of singular points. | |
| Weight | weight_ |
| Weight of regularization. | |
| concepts::Array< Real > * | jacobian_ |
| Intermediate data for element matrix computation. | |
| concepts::Array < concepts::MapReal2d > * | jacobianInv_ |
| Intermediate data for element matrix computation. | |
| const Quad< Real > ** | oldElm_ |
| Intermediate data for element matrix computation. | |
| MaxwellSharedData * | sharedData_ |
| Intermediate data for element matrix computation. | |
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.
| hp2D::DivDiv< Weight >::DivDiv | ( | SingularSet & | singularities, |
| const uint | i = 0, |
||
| const uint | j = 0, |
||
| const concepts::Formula< Real > * | frm = 0 |
||
| ) |
Constructor.
| 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 |
| 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.
| 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 and jacobianInv 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 |
| virtual hp2D::DivDiv< Weight >::~DivDiv | ( | ) | [virtual] |
| virtual DivDiv* hp2D::DivDiv< Weight >::clone | ( | ) | const [virtual] |
Virtual constructor.
Returns a pointer to a copy of itself. The caller is responsible to destroy this copy.
Implements concepts::Cloneable.
| virtual void hp2D::DivDiv< Weight >::data | ( | concepts::Cloneable * | ) | [virtual] |
Sets the data to be shared.
Implements vectorial::Vectorizable.
| virtual MaxwellSharedData* hp2D::DivDiv< Weight >::data | ( | ) | const [virtual] |
Returns the data to be shared.
Implements vectorial::Vectorizable.
| virtual std::ostream& hp2D::DivDiv< Weight >::info | ( | std::ostream & | os | ) | const [protected, virtual] |
Returns information in an output stream.
Reimplemented from concepts::BilinearForm< Real >.
| virtual void concepts::BilinearForm< Real , typename Realtype<Real >::type >::operator() | ( | const Element< typename Realtype<Real >::type > & | elmX, |
| const Element< typename Realtype<Real >::type > & | elmY, | ||
| ElementMatrix< Real > & | em | ||
| ) | [pure virtual, inherited] |
Evaluates the bilinear form for all shape functions on elmX and elmY and stores the result in the matrix em.
em has the correct size. | elmX | Left element (test functions) |
| elmY | Right element (trial functions) |
| em | Return element matrix |
| virtual void concepts::BilinearForm< Real , typename Realtype<Real >::type >::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 | ||
| ) | [inline, virtual, inherited] |
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.
em has the correct size. | elmX | Left element |
| elmY | Right element |
| em | Return element matrix |
| ep | Element pair holding more information on the pair elmX and elmY |
Definition at line 53 of file bilinearForm.hh.

| virtual void hp2D::DivDiv< Weight >::operator() | ( | const concepts::Element< Real > & | elmX, |
| const concepts::Element< Real > & | elmY, | ||
| concepts::ElementMatrix< Real > & | em | ||
| ) | [virtual] |
| void hp2D::DivDiv< Weight >::operator() | ( | const Quad< Real > & | elmX, |
| const Quad< Real > & | elmY, | ||
| concepts::ElementMatrix< Real > & | em | ||
| ) |
| static void hp2D::DivDiv< Weight >::setup | ( | vectorial::BilinearForm< Real, Real > & | bf, |
| hp2D::SingularSet & | singularities, | ||
| const concepts::Formula< Real > * | frm = 0 |
||
| ) | [static] |
Sets up the bilinear form for the div-div part for Maxwell's equation using weighted regularization.
| 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) |
bf needs to be 2 x 2. concepts::Array<concepts::MapReal2d> hp2D::DivDiv< Weight >::coeffMatrix_ [private] |
std::auto_ptr<const concepts::Formula<Real> > hp2D::DivDiv< Weight >::frm_ [private] |
uint hp2D::DivDiv< Weight >::i_ [private] |
uint hp2D::DivDiv< Weight >::j_ [private] |
concepts::Array<Real>* hp2D::DivDiv< Weight >::jacobian_ [private] |
concepts::Array<concepts::MapReal2d>* hp2D::DivDiv< Weight >::jacobianInv_ [private] |
const Quad<Real>** hp2D::DivDiv< Weight >::oldElm_ [private] |
MaxwellSharedData* hp2D::DivDiv< Weight >::sharedData_ [private] |
SingularSet& hp2D::DivDiv< Weight >::singularities_ [private] |
Weight hp2D::DivDiv< Weight >::weight_ [private] |