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

Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
bem::AdaptConst3d002< F > Class Template Reference

A 3D adaptive BEM space with piecewise constant basis functions. More...

#include <space.hh>

Inheritance diagram for bem::AdaptConst3d002< F >:
Inheritance graph
[legend]
Collaboration diagram for bem::AdaptConst3d002< F >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef Scan< ElementWithCell
< F > > 
Scanner

Public Member Functions

 AdaptConst3d002 (concepts::Mesh2 &msh, uint lvl, ushort deltal, ushort deltaL)
 Constructor.
virtual void adjust (const Element< F > &elm, const AdaptiveAdjust &a)=0
 Adjusts the space in the next rebuild step for this element.
void adjust (const concepts::Element< F > &elm, const AdaptiveAdjust &a)
 Sets the adjustments for an element.
void adjust (const Constant3d001< F > &elm, const AdaptiveAdjust &a)
uint dim ()
uint dim () const
 Returns the number of degrees of freedom.
std::ostream & info (std::ostream &os, uint mode=0) const
 Gives some information about the space.
short l (Constant3d001< F > &elm)
 Returns the level of a element.
uint maxlevel ()
 Returns the maximal level of all elements.
uint minlevel ()
 Returns the minimal level of all elements.
uint nelm () const
 Returns the number of elements of the space.
uint nelm ()
void rebuild ()
 Rebuilds the space.
concepts::Scan
< concepts::ElementWithCell< F > > * 
scan ()
concepts::Scan
< concepts::ElementWithCell< F > > * 
scan () const
 Returns a scanner for the active elements of the space.
 ~AdaptConst3d002 ()

Protected Member Functions

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

Private Member Functions

void rebuild0_ (concepts::Connector2 &cntr, int l, int &L)
 Marks the cells correctly for the new space.
void rebuild1_ (concepts::Connector2 &cntr, uint l)
void rebuild2_ ()
void rebuild3_ (concepts::Triangle3d &cell, uint l, ushort tag)

Private Attributes

concepts::DynArray
< AdaptiveAdjust
adj_
 Dynamic array of the adjustment information of the mesh.
concepts::DynArray
< concepts::AdaptiveControl<> > 
ctrl_
 Dynamic array of the control information for the elements.
ushort deltal_
 level difference between two neighbouring elements less or equal to $\Delta l$.
ushort deltaL_
 level difference between two elements less or equal to $\Delta L$.
uint dim_
 Number of degrees of freedom in the space.
concepts::DynArray< EdgeMapedgmap_
 Dynamic array of the edge $\rightarrow$ panel mapping.
concepts::Joiner
< concepts::ElementWithCell< F > *, 1 > * 
elm_
 Linked list of the elements.
uint maxlvl_
 Maximal level of all elements.
uint minlvl_
 Minimal level of all elements.
concepts::Mesh2msh_
 The mesh.
uint nelm_
 Number of elements currently active in the mesh.
bool rebuild_
 If true: the mesh has to be rebuilt (refined or coarsened)
std::stack< EdgeMap * > stk_
 stack for the edge $\rightarrow$ panels mappings with a too large level difference

Detailed Description

template<class F = concepts::Real>
class bem::AdaptConst3d002< F >

A 3D adaptive BEM space with piecewise constant basis functions.

Constraints: level difference between neighbouring elements is less or equal to $\Delta l$, Maximal level difference between two panels is less of equal to $\Delta L$.

Parameters:
FField of the space (Real or Cmplx)
Test:
test::BEMSpaceTest

Definition at line 610 of file space.hh.


Member Typedef Documentation

template<class F>
typedef Scan<ElementWithCell<F> > concepts::SpaceOnCells< F >::Scanner [inherited]

Reimplemented from concepts::Space< F >.

Reimplemented in linDG3D::FvdgSpace.

Definition at line 74 of file space.hh.


Constructor & Destructor Documentation

template<class F = concepts::Real>
bem::AdaptConst3d002< F >::AdaptConst3d002 ( concepts::Mesh2 msh,
uint  lvl,
ushort  deltal,
ushort  deltaL 
)

Constructor.

Scans the mesh and sets the cells in the mesh active and the level of refinement in all cells to the given values. rebuild_ is set to true, ie. if the mesh is used it will firstly be rebuilt.

Parameters:
mshThe surface of interest partitioned into a mesh.
lvlLevel of refinement
deltalMaximal local level difference
deltaLMaximal global level difference
template<class F = concepts::Real>
bem::AdaptConst3d002< F >::~AdaptConst3d002 ( )

Member Function Documentation

template<class F = concepts::Real>
void bem::AdaptConst3d002< F >::adjust ( const concepts::Element< F > &  elm,
const AdaptiveAdjust a 
)

Sets the adjustments for an element.

The adjustment information in adj_ is updated and the flag rebuild_ is set to true.

Parameters:
elmElement to be adjusted
lDifference in the level
Exceptions:
MissingFeature
template<class F = concepts::Real>
void bem::AdaptConst3d002< F >::adjust ( const Constant3d001< F > &  elm,
const AdaptiveAdjust a 
)
virtual void concepts::AdaptiveSpace< F, AdaptiveAdjust >::adjust ( const Element< F > &  elm,
const AdaptiveAdjust a 
) [pure virtual, inherited]

Adjusts the space in the next rebuild step for this element.

template<class F >
uint bem::AdaptConst3d002< F >::dim ( ) const [inline, virtual]

Returns the number of degrees of freedom.

Exceptions:
SpaceNotBuilt

Implements concepts::Space< F >.

Definition at line 729 of file space.hh.

template<class F >
uint bem::AdaptConst3d002< F >::dim ( ) [inline]

Definition at line 735 of file space.hh.

template<class F = concepts::Real>
std::ostream& bem::AdaptConst3d002< F >::info ( std::ostream &  os,
uint  mode = 0 
) const

Gives some information about the space.

Exceptions:
SpaceNotBuilt
Parameters:
osOutput stream
modeThere are different levels of information available. mode = 0 Output of dimension and number of elements mode = 1 Prints all elements
template<class F = concepts::Real>
std::ostream& bem::AdaptConst3d002< F >::info ( std::ostream &  os) const [inline, protected, virtual]

Returns information in an output stream.

Reimplemented from bem::AdaptiveSpace< F >.

Definition at line 660 of file space.hh.

Here is the call graph for this function:

template<class F = concepts::Real>
short bem::AdaptConst3d002< F >::l ( Constant3d001< F > &  elm) [inline]

Returns the level of a element.

Definition at line 696 of file space.hh.

Here is the call graph for this function:

template<class F >
uint bem::AdaptConst3d002< F >::maxlevel ( ) [inline]

Returns the maximal level of all elements.

Definition at line 753 of file space.hh.

template<class F >
uint bem::AdaptConst3d002< F >::minlevel ( ) [inline]

Returns the minimal level of all elements.

Definition at line 759 of file space.hh.

template<class F >
uint bem::AdaptConst3d002< F >::nelm ( ) [inline]

Definition at line 747 of file space.hh.

template<class F >
uint bem::AdaptConst3d002< F >::nelm ( ) const [inline, virtual]

Returns the number of elements of the space.

Exceptions:
SpaceNotBuilt

Implements concepts::Space< F >.

Definition at line 741 of file space.hh.

template<class F = concepts::Real>
void bem::AdaptConst3d002< F >::rebuild ( )

Rebuilds the space.

First the old list of elements in the space is removed (not the elements in the topology!). For every cell in the original mesh, rebuild0_ and rebuild1_ are called. From the mesh, they build the space and store the elements in elm_. rebuild0_ marks the elements with the right values and rebuild1_ really does the work.

Exceptions:
MissingFeature
template<class F = concepts::Real>
void bem::AdaptConst3d002< F >::rebuild0_ ( concepts::Connector2 cntr,
int  l,
int &  L 
) [private]

Marks the cells correctly for the new space.

First, the desired level in the current connector is determined. Second, the maximum desired level of the children is recursively determined, if we need to refine the current connector. Third, the edge $\rightarrow$ panel mapping is constructed Fourth, the level difference between the panels adjusted Fifth, the tag of the current connector is updated.

Parameters:
cntrThe current connector (part of the topology)
lThe current level
LThe desired level
template<class F = concepts::Real>
void bem::AdaptConst3d002< F >::rebuild1_ ( concepts::Connector2 cntr,
uint  l 
) [private]
template<class F = concepts::Real>
void bem::AdaptConst3d002< F >::rebuild2_ ( ) [private]
template<class F = concepts::Real>
void bem::AdaptConst3d002< F >::rebuild3_ ( concepts::Triangle3d cell,
uint  l,
ushort  tag 
) [private]
template<class F >
concepts::Scan< concepts::ElementWithCell< F > > * bem::AdaptConst3d002< F >::scan ( ) [inline]

Definition at line 773 of file space.hh.

template<class F >
concepts::Scan< concepts::ElementWithCell< F > > * bem::AdaptConst3d002< F >::scan ( ) const [inline, virtual]

Returns a scanner for the active elements of the space.

Exceptions:
SpaceNotBuilt

Implements concepts::SpaceOnCells< F >.

Definition at line 766 of file space.hh.


Member Data Documentation

template<class F = concepts::Real>
concepts::DynArray<AdaptiveAdjust> bem::AdaptConst3d002< F >::adj_ [private]

Dynamic array of the adjustment information of the mesh.

Definition at line 627 of file space.hh.

template<class F = concepts::Real>
concepts::DynArray<concepts::AdaptiveControl<> > bem::AdaptConst3d002< F >::ctrl_ [private]

Dynamic array of the control information for the elements.

Definition at line 625 of file space.hh.

template<class F = concepts::Real>
ushort bem::AdaptConst3d002< F >::deltal_ [private]

level difference between two neighbouring elements less or equal to $\Delta l$.

Definition at line 633 of file space.hh.

template<class F = concepts::Real>
ushort bem::AdaptConst3d002< F >::deltaL_ [private]

level difference between two elements less or equal to $\Delta L$.

Definition at line 635 of file space.hh.

template<class F = concepts::Real>
uint bem::AdaptConst3d002< F >::dim_ [private]

Number of degrees of freedom in the space.

Definition at line 612 of file space.hh.

template<class F = concepts::Real>
concepts::DynArray<EdgeMap> bem::AdaptConst3d002< F >::edgmap_ [private]

Dynamic array of the edge $\rightarrow$ panel mapping.

Definition at line 637 of file space.hh.

template<class F = concepts::Real>
concepts::Joiner<concepts::ElementWithCell<F>*, 1>* bem::AdaptConst3d002< F >::elm_ [private]

Linked list of the elements.

Definition at line 616 of file space.hh.

template<class F = concepts::Real>
uint bem::AdaptConst3d002< F >::maxlvl_ [private]

Maximal level of all elements.

Definition at line 621 of file space.hh.

template<class F = concepts::Real>
uint bem::AdaptConst3d002< F >::minlvl_ [private]

Minimal level of all elements.

Definition at line 623 of file space.hh.

template<class F = concepts::Real>
concepts::Mesh2& bem::AdaptConst3d002< F >::msh_ [private]

The mesh.

Definition at line 619 of file space.hh.

template<class F = concepts::Real>
uint bem::AdaptConst3d002< F >::nelm_ [private]

Number of elements currently active in the mesh.

Definition at line 614 of file space.hh.

template<class F = concepts::Real>
bool bem::AdaptConst3d002< F >::rebuild_ [private]

If true: the mesh has to be rebuilt (refined or coarsened)

Definition at line 629 of file space.hh.

template<class F = concepts::Real>
std::stack<EdgeMap*> bem::AdaptConst3d002< F >::stk_ [private]

stack for the edge $\rightarrow$ panels mappings with a too large level difference

Definition at line 641 of file space.hh.


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

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