bem::AdaptLaplaceSL01< F > Class Template Referenceabstract

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

#include <bformAdapt.hh>

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

Public Member Functions

 AdaptLaplaceSL01 (uint stroud=0, uint gauss=0, concepts::Real deltaI=1.0, concepts::Real dist=0.0, concepts::Real eta=0.5)
 3-dim quadrature (3-d Gauss) More...
 
virtual AdaptLaplaceSL01clone () 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 deltaI_
 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 gauss_
 Number of Integration points (inner $y$ integration) More...
 
LplGal018< F > qr_
 Integration. More...
 
concepts::Realr_
 
uint stroud_
 Number of Integration points (outer $x$ integration) More...
 

Detailed Description

template<class F>
class bem::AdaptLaplaceSL01< F >

Bilinear form for the Laplace Single 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_I$.

Parameters
FField (Real or Cmplx)

Definition at line 263 of file bformAdapt.hh.

Constructor & Destructor Documentation

◆ AdaptLaplaceSL01()

template<class F >
bem::AdaptLaplaceSL01< F >::AdaptLaplaceSL01 ( uint  stroud = 0,
uint  gauss = 0,
concepts::Real  deltaI = 1.0,
concepts::Real  dist = 0.0,
concepts::Real  eta = 0.5 
)
inline

3-dim quadrature (3-d Gauss)

Parameters
stroudnumber of integration points in the integration formula for the outer ($x$) integration.
gaussnumber of Gauss points in the integration formula for the inner ($y$) integration and the case where the two panels intersect.
deltaIAdditional number of integration 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 343 of file bformAdapt.hh.

Member Function Documentation

◆ admissible_()

template<class F >
bool bem::AdaptLaplaceSL01< 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 353 of file bformAdapt.hh.

◆ ball_() [1/2]

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

◆ ball_() [2/2]

template<class F >
void bem::AdaptLaplaceSL01< 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 AdaptLaplaceSL01* bem::AdaptLaplaceSL01< 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 296 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::AdaptLaplaceSL01< 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::AdaptLaplaceSL01< 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::AdaptLaplaceSL01< 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::AdaptLaplaceSL01< F >::c_
private

Space for some intermediate values.

Definition at line 338 of file bformAdapt.hh.

◆ deltaI_

template<class F >
concepts::Real bem::AdaptLaplaceSL01< F >::deltaI_
private

Additional number of Integration points per level.

Definition at line 328 of file bformAdapt.hh.

◆ dist_

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

Distance to distinguish between near/far field.

Definition at line 330 of file bformAdapt.hh.

◆ eta_

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

Ratio between element size and distance for recursive subdivision.

Definition at line 332 of file bformAdapt.hh.

◆ gauss_

template<class F >
uint bem::AdaptLaplaceSL01< F >::gauss_
private

Number of Integration points (inner $y$ integration)

Definition at line 326 of file bformAdapt.hh.

◆ qr_

template<class F >
LplGal018<F> bem::AdaptLaplaceSL01< F >::qr_
private

Integration.

Definition at line 335 of file bformAdapt.hh.

◆ r_

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

Definition at line 339 of file bformAdapt.hh.

◆ stroud_

template<class F >
uint bem::AdaptLaplaceSL01< F >::stroud_
private

Number of Integration points (outer $x$ integration)

Definition at line 324 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