bem::AdaptLaplaceDL01< F > Class Template Referenceabstract

Bilinear form for the Laplace double layer potential with piecewise constant shape functions and hanging nodes (=> recursive subdivision of the larger triangle). More...

#include <bformAdapt.hh>

Inheritance diagram for bem::AdaptLaplaceDL01< F >:
concepts::BilinearForm< F > concepts::Cloneable concepts::OutputOperator

Public Member Functions

 AdaptLaplaceDL01 (uint gaussX=2, uint gaussY=2, concepts::Real deltaG=1.0, concepts::Real dist=0.0, concepts::Real eta=0.5)
 3-dim quadrature (3-d Gauss) More...
 
virtual AdaptLaplaceDL01clone () const
 Virtual constructor. More...
 
virtual BilinearForm * clone () const=0
 Virtual constructor. More...
 
void operator() (const concepts::Element< F > &elmX, const concepts::Element< F > &elmY, concepts::ElementMatrix< F > &em)
 Application operator. More...
 
void operator() (const Constant3d001< F > &elmX, const Constant3d001< F > &elmY, concepts::ElementMatrix< F > &em)
 
virtual void operator() (const Element< typename Realtype< F >::type > &elmX, const Element< typename Realtype< F >::type > &elmY, ElementMatrix< F > &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< F >::type > &elmX, const Element< typename Realtype< F >::type > &elmY, ElementMatrix< F > &em, const ElementPair< typename Realtype< F >::type > &ep) const
 Evaluates the bilinear form for all shape functions on elmX and elmY and stores the result in the matrix em. More...
 

Protected Member Functions

virtual std::ostream & info (std::ostream &os) const
 Returns information in an output stream. More...
 

Private Member Functions

bool admissible_ (const concepts::Real3d *cX, const concepts::Real *rX, const concepts::Real3d *cY, const concepts::Real *rY) const
 Admissible condition of two panels for integration. More...
 
void ball_ (const concepts::Triangle3d &cell, concepts::Real3d *c, concepts::Real *r) const
 
void ball_ (const Constant3d001< F > &elm, concepts::Real3d *c, concepts::Real *r) const
 Computes the center and radius of a panels. More...
 
void update_ (concepts::Triangle3d &cell, const Constant3d001< F > &elm, uint deltal, F *m, bool swp) const
 Recursive subdivison of the panel on the higher level. More...
 

Private Attributes

concepts::Real3dc_
 Space for some intermediate values. More...
 
concepts::Real deltaG_
 Additional number of Integration points per level. More...
 
concepts::Real dist_
 Distance to distinguish between near/far field. More...
 
concepts::Real eta_
 Ratio between element size and distance for recursive subdivision. More...
 
uint gaussX_
 Number of Gauss points. More...
 
uint gaussY_
 
LplGal011< F > qr_
 Integration. More...
 
concepts::Realr_
 

Detailed Description

template<class F>
class bem::AdaptLaplaceDL01< F >

Bilinear form for the Laplace double layer potential with piecewise constant shape functions and hanging nodes (=> recursive subdivision of the larger triangle).

Number of integration points depends on the level of the element. The number of integration points given in the constructor is used for the highest level $L$. For an element on level $l$ the number of integration points $n_I$ in each dimension is given by $n_I = {\rm gauss} + (L-l)*\Delta_G$.

Parameters
FField (Real or Cmplx)

Definition at line 153 of file bformAdapt.hh.

Constructor & Destructor Documentation

◆ AdaptLaplaceDL01()

template<class F >
bem::AdaptLaplaceDL01< F >::AdaptLaplaceDL01 ( uint  gaussX = 2,
uint  gaussY = 2,
concepts::Real  deltaG = 1.0,
concepts::Real  dist = 0.0,
concepts::Real  eta = 0.5 
)
inline

3-dim quadrature (3-d Gauss)

Parameters
gaussXnumber of Gauss points in the integration formula for the outer ( $x$) integration.
gaussYnumber of Gauss points in the integration formula for the inner ( $y$) integration and the case where the two panels intersect.
deltaGAdditional number of Gauss points per level
distdistance to distinguish between near/far field (far field if the distance between the two centers of the panels is larger than dist => 1-point formular)
etaratio between element size and distance for recursive subdivision ( $\eta \sim [1/2, 1]$)

Definition at line 232 of file bformAdapt.hh.

Member Function Documentation

◆ admissible_()

template<class F >
bool bem::AdaptLaplaceDL01< F >::admissible_ ( const concepts::Real3d cX,
const concepts::Real rX,
const concepts::Real3d cY,
const concepts::Real rY 
) const
inlineprivate

Admissible condition of two panels for integration.

Parameters
cXcenter of the first panel
rXradius of the first panel
cYcenter of the second panel
rYradius of the second panel

Definition at line 242 of file bformAdapt.hh.

◆ ball_() [1/2]

template<class F >
void bem::AdaptLaplaceDL01< F >::ball_ ( const concepts::Triangle3d cell,
concepts::Real3d c,
concepts::Real r 
) const
private

◆ ball_() [2/2]

template<class F >
void bem::AdaptLaplaceDL01< F >::ball_ ( const Constant3d001< F > &  elm,
concepts::Real3d c,
concepts::Real r 
) const
private

Computes the center and radius of a panels.

◆ clone() [1/2]

template<class F >
virtual AdaptLaplaceDL01* bem::AdaptLaplaceDL01< F >::clone ( ) const
inlinevirtual

Virtual constructor.

Returns a pointer to a copy of itself. The caller is responsible to destroy this copy.

Implements concepts::Cloneable.

Definition at line 186 of file bformAdapt.hh.

◆ clone() [2/2]

virtual BilinearForm* concepts::BilinearForm< F, typename Realtype<F>::type >::clone ( ) const
pure virtualinherited

Virtual constructor.

Returns a pointer to a copy of itself. The caller is responsible to destroy this copy.

◆ info()

virtual std::ostream& concepts::BilinearForm< F, typename Realtype<F>::type >::info ( std::ostream &  os) const
protectedvirtualinherited

Returns information in an output stream.

Reimplemented from concepts::OutputOperator.

Reimplemented in hp3D::LinearElasticity< F >, and constraints::ConstraintsList< F >.

◆ operator()() [1/4]

template<class F >
void bem::AdaptLaplaceDL01< F >::operator() ( const concepts::Element< F > &  elmX,
const concepts::Element< F > &  elmY,
concepts::ElementMatrix< F > &  em 
)

Application operator.

Exceptions
MissingFeature
Parameters
elmXElement
elmYElement
emElement matrix for the two given elements.

◆ operator()() [2/4]

template<class F >
void bem::AdaptLaplaceDL01< F >::operator() ( const Constant3d001< F > &  elmX,
const Constant3d001< F > &  elmY,
concepts::ElementMatrix< F > &  em 
)

◆ operator()() [3/4]

virtual void concepts::BilinearForm< F, typename Realtype<F>::type >::operator() ( const Element< G > &  elmX,
const Element< G > &  elmY,
ElementMatrix< F > &  em 
) const
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
elmXLeft element (test functions)
elmYRight element (trial functions)
emReturn element matrix

◆ operator()() [4/4]

virtual void concepts::BilinearForm< F, typename Realtype<F>::type >::operator() ( const Element< G > &  elmX,
const Element< G > &  elmY,
ElementMatrix< F > &  em,
const ElementPair< G > &  ep 
) const
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
elmXLeft element
elmYRight element
emReturn element matrix
epElement pair holding more information on the pair elmX and elmY

Definition at line 57 of file bilinearForm.hh.

◆ update_()

template<class F >
void bem::AdaptLaplaceDL01< F >::update_ ( concepts::Triangle3d cell,
const Constant3d001< F > &  elm,
uint  deltal,
F *  m,
bool  swp 
) const
private

Recursive subdivison of the panel on the higher level.

Parameters
deltallevel difference between cell and elm
melement matrix (update_ just sums the all parts up => set m to 0.0 before calling update_ for the first time!)
swpswap cell and elm for integration

Member Data Documentation

◆ c_

template<class F >
concepts::Real3d* bem::AdaptLaplaceDL01< F >::c_
private

Space for some intermediate values.

Definition at line 227 of file bformAdapt.hh.

◆ deltaG_

template<class F >
concepts::Real bem::AdaptLaplaceDL01< F >::deltaG_
private

Additional number of Integration points per level.

Definition at line 217 of file bformAdapt.hh.

◆ dist_

template<class F >
concepts::Real bem::AdaptLaplaceDL01< F >::dist_
private

Distance to distinguish between near/far field.

Definition at line 219 of file bformAdapt.hh.

◆ eta_

template<class F >
concepts::Real bem::AdaptLaplaceDL01< F >::eta_
private

Ratio between element size and distance for recursive subdivision.

Definition at line 221 of file bformAdapt.hh.

◆ gaussX_

template<class F >
uint bem::AdaptLaplaceDL01< F >::gaussX_
private

Number of Gauss points.

Definition at line 214 of file bformAdapt.hh.

◆ gaussY_

template<class F >
uint bem::AdaptLaplaceDL01< F >::gaussY_
private

Definition at line 215 of file bformAdapt.hh.

◆ qr_

template<class F >
LplGal011<F> bem::AdaptLaplaceDL01< F >::qr_
private

Integration.

Definition at line 224 of file bformAdapt.hh.

◆ r_

template<class F >
concepts::Real* bem::AdaptLaplaceDL01< F >::r_
private

Definition at line 228 of file bformAdapt.hh.


The documentation for this class was generated from the following file:
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich