Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes
hp3D::DivDiv< Weight > Class Template Reference

A function class to calculate element matrices for the Div u*Div v Bilinearform. More...

#include <divdiv.hh>

Inheritance diagram for hp3D::DivDiv< Weight >:
Inheritance graph
[legend]
Collaboration diagram for hp3D::DivDiv< Weight >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual DivDivclone () const
 Virtual constructor.
virtual MaxwellSharedDatadata () 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::MapReal3d > &jacobianInv, const Hexahedron **oldElm, SingularSet &singularities, const uint i=0, const uint j=0, const concepts::Formula< Real > *frm=0)
 Constructor.
void operator() (const Hexahedron &elmX, const Hexahedron &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, hp3D::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::MapReal3d
coeffMatrix_
 Intermediate data for element matrix computation.
std::auto_ptr< const
concepts::Formula< Real > > 
frm_
 Formula for dielectricity $\epsilon$.
uint i_
 row and column inside the vectorial Bilinearform
uint j_
SingularSetsingularities_
 two lists, one with edges, one with vertices (which are marked as singular)
Weight weight_
 weight of regularization
concepts::Array< Real > * jacobian_
 Data shared between components of the div-div bilinear forms,.
concepts::Array
< concepts::MapReal3d > * 
jacobianInv_
 Data shared between components of the div-div bilinear forms,.
const Hexahedron ** oldElm_
 Data shared between components of the div-div bilinear forms,.
MaxwellSharedDatasharedData_
 Data shared between components of the div-div bilinear forms,.

Detailed Description

template<class Weight = TrivialWeight>
class hp3D::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.

Author:
Kersten Schmidt, 2002

Definition at line 44 of file divdiv.hh.


Constructor & Destructor Documentation

template<class Weight = TrivialWeight>
hp3D::DivDiv< Weight >::DivDiv ( SingularSet singularities,
const uint  i = 0,
const uint  j = 0,
const concepts::Formula< Real > *  frm = 0 
)

Constructor.

Parameters:
singularitiesList of singular edges and vertices.
iIndex of the bilinear form in the vector valued bilinear form
jIndex of the bilinear form in the vector valued bilinear form
frmFormula for the dielectricity $\epsilon$
template<class Weight = TrivialWeight>
hp3D::DivDiv< Weight >::DivDiv ( concepts::Array< Real > &  jacobian,
concepts::Array< concepts::MapReal3d > &  jacobianInv,
const Hexahedron **  oldElm,
SingularSet singularities,
const uint  i = 0,
const uint  j = 0,
const concepts::Formula< Real > *  frm = 0 
)

Constructor.

Parameters:
jacobianReference to the storage space for the Jacobian. Here, also other quantities are stored (premultiplied).
jacobianInvReference to the storage space for the inverse of the Jacobian.
oldElmPointer to the element of the last invocation to detect if the information in jacobian and jacobianInv is still valid.
singularitiesList of singular edges and vertices.
iIndex of the bilinear form in the vector valued bilinear form
jIndex of the bilinear form in the vector valued bilinear form
frmFormula for the dielectricity $\epsilon$
template<class Weight = TrivialWeight>
virtual hp3D::DivDiv< Weight >::~DivDiv ( ) [virtual]

Member Function Documentation

template<class Weight = TrivialWeight>
virtual DivDiv* hp3D::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.

template<class Weight = TrivialWeight>
virtual void hp3D::DivDiv< Weight >::data ( concepts::Cloneable ) [virtual]

Sets the data to be shared.

Implements vectorial::Vectorizable.

template<class Weight = TrivialWeight>
virtual MaxwellSharedData* hp3D::DivDiv< Weight >::data ( ) const [virtual]

Returns the data to be shared.

Implements vectorial::Vectorizable.

template<class Weight = TrivialWeight>
virtual std::ostream& hp3D::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.

Postcondition:
The returned matrix em has the correct size.
Parameters:
elmXLeft element (test functions)
elmYRight element (trial functions)
emReturn 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.

Postcondition:
The returned matrix em has the correct size.
Parameters:
elmXLeft element
elmYRight element
emReturn element matrix
epElement pair holding more information on the pair elmX and elmY

Definition at line 53 of file bilinearForm.hh.

Here is the call graph for this function:

template<class Weight = TrivialWeight>
virtual void hp3D::DivDiv< Weight >::operator() ( const concepts::Element< Real > &  elmX,
const concepts::Element< Real > &  elmY,
concepts::ElementMatrix< Real > &  em 
) [virtual]
template<class Weight = TrivialWeight>
void hp3D::DivDiv< Weight >::operator() ( const Hexahedron elmX,
const Hexahedron elmY,
concepts::ElementMatrix< Real > &  em 
)
template<class Weight = TrivialWeight>
static void hp3D::DivDiv< Weight >::setup ( vectorial::BilinearForm< Real, Real > &  bf,
hp3D::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.

Parameters:
bfResulting bilinear form (use this to compute the matrix)
singularitiesSingularities needed for computing the weight
frmFormula for the dielectricity (if none is given, 1 is assumed)
Precondition:
The number of components of bf needs to be 3 x 3.
Examples:
hpFEM3d-EV.cc.

Member Data Documentation

template<class Weight = TrivialWeight>
concepts::Array<concepts::MapReal3d> hp3D::DivDiv< Weight >::coeffMatrix_ [private]

Intermediate data for element matrix computation.

Definition at line 111 of file divdiv.hh.

template<class Weight = TrivialWeight>
std::auto_ptr<const concepts::Formula<Real> > hp3D::DivDiv< Weight >::frm_ [private]

Formula for dielectricity $\epsilon$.

Definition at line 108 of file divdiv.hh.

template<class Weight = TrivialWeight>
uint hp3D::DivDiv< Weight >::i_ [private]

row and column inside the vectorial Bilinearform

Definition at line 100 of file divdiv.hh.

template<class Weight = TrivialWeight>
uint hp3D::DivDiv< Weight >::j_ [private]

Definition at line 100 of file divdiv.hh.

template<class Weight = TrivialWeight>
concepts::Array<Real>* hp3D::DivDiv< Weight >::jacobian_ [private]

Data shared between components of the div-div bilinear forms,.

Definition at line 115 of file divdiv.hh.

template<class Weight = TrivialWeight>
concepts::Array<concepts::MapReal3d>* hp3D::DivDiv< Weight >::jacobianInv_ [private]

Data shared between components of the div-div bilinear forms,.

Definition at line 116 of file divdiv.hh.

template<class Weight = TrivialWeight>
const Hexahedron** hp3D::DivDiv< Weight >::oldElm_ [private]

Data shared between components of the div-div bilinear forms,.

Definition at line 117 of file divdiv.hh.

template<class Weight = TrivialWeight>
MaxwellSharedData* hp3D::DivDiv< Weight >::sharedData_ [private]

Data shared between components of the div-div bilinear forms,.

Definition at line 118 of file divdiv.hh.

template<class Weight = TrivialWeight>
SingularSet& hp3D::DivDiv< Weight >::singularities_ [private]

two lists, one with edges, one with vertices (which are marked as singular)

Definition at line 103 of file divdiv.hh.

template<class Weight = TrivialWeight>
Weight hp3D::DivDiv< Weight >::weight_ [private]

weight of regularization

Definition at line 105 of file divdiv.hh.


The documentation for this class was generated from the following file:

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)