BoundaryConditionSurfaceMeshAssociation Class Reference

#include <BoundaryConditionSurfaceMeshAssociation.hpp>

List of all members.

Public Types

typedef std::multimap< const
Dirichlet
*, ConstReferenceCounting
< SurfaceMesh > > 
DirichletMeshAssociation
typedef std::multimap
< ConstReferenceCounting
< VariationalLinearBorderOperator >
, ConstReferenceCounting
< SurfaceMesh > > 
LinearBorderOperatorMeshAssociation
typedef std::multimap
< ConstReferenceCounting
< VariationalBilinearBorderOperator >
, ConstReferenceCounting
< SurfaceMesh > > 
BilinearBorderOperatorMeshAssociation

Public Member Functions

void addPDEBoundaryConditionAndMesh (const size_t &i, const BoundaryCondition *bc, const SurfaceMesh *S)
DirichletMeshAssociationbc (const size_t &i)
const DirichletMeshAssociationbc (const size_t &i) const
void bcSetSize (const size_t &i)
void bilinearBorderOperatorAdd (ConstReferenceCounting< VariationalBilinearBorderOperator > v, const SurfaceMesh *s)
void linearBorderOperatorAdd (ConstReferenceCounting< VariationalLinearBorderOperator > v, const SurfaceMesh *s)
BoundaryConditionSurfaceMeshAssociation::BilinearBorderOperatorMeshAssociation::iterator beginOfBilinear ()
BoundaryConditionSurfaceMeshAssociation::BilinearBorderOperatorMeshAssociation::const_iterator beginOfBilinear () const
BoundaryConditionSurfaceMeshAssociation::BilinearBorderOperatorMeshAssociation::const_iterator endOfBilinear () const
BoundaryConditionSurfaceMeshAssociation::LinearBorderOperatorMeshAssociation::iterator beginOfLinear ()
BoundaryConditionSurfaceMeshAssociation::LinearBorderOperatorMeshAssociation::const_iterator beginOfLinear () const
BoundaryConditionSurfaceMeshAssociation::LinearBorderOperatorMeshAssociation::const_iterator endOfLinear () const
 BoundaryConditionSurfaceMeshAssociation (const Problem &P, const BoundaryMeshAssociation &bma)
 BoundaryConditionSurfaceMeshAssociation (const BoundaryConditionSurfaceMeshAssociation &B)
 ~BoundaryConditionSurfaceMeshAssociation ()

Private Attributes

std::vector
< DirichletMeshAssociation
__dirichletMeshAssociation
LinearBorderOperatorMeshAssociation __lboMeshAssociation
BilinearBorderOperatorMeshAssociation __bboMeshAssociation


Detailed Description

Definition at line 52 of file BoundaryConditionSurfaceMeshAssociation.hpp.


Member Typedef Documentation

Definition at line 59 of file BoundaryConditionSurfaceMeshAssociation.hpp.

Definition at line 65 of file BoundaryConditionSurfaceMeshAssociation.hpp.

Definition at line 71 of file BoundaryConditionSurfaceMeshAssociation.hpp.


Constructor & Destructor Documentation

BoundaryConditionSurfaceMeshAssociation::BoundaryConditionSurfaceMeshAssociation ( const Problem P,
const BoundaryMeshAssociation bma 
) [inline]

Constructor

Definition at line 275 of file BoundaryConditionSurfaceMeshAssociation.hpp.

References addPDEBoundaryConditionAndMesh(), bc(), VariationalProblem::beginBilinearBorderOperator(), VariationalProblem::beginLinearBorderOperator(), bilinearBorderOperatorAdd(), BoundaryCondition::boundary(), Problem::boundaryConditionSet(), VariationalProblem::endBilinearBorderOperator(), VariationalProblem::endLinearBorderOperator(), linearBorderOperatorAdd(), BoundaryConditionSet::nbBoundaryCondition(), Problem::numberOfUnknown(), Problem::type(), and Problem::variational.

00277     : __dirichletMeshAssociation(P.numberOfUnknown())
00278   {
00279     for (size_t i=0; i<P.numberOfUnknown(); ++i) {
00280       const BoundaryConditionSet& bcSet
00281         = P.boundaryConditionSet(i);
00282 
00283       for(size_t j=0; j<bcSet.nbBoundaryCondition(); ++j) {
00284         const BoundaryCondition& bc = bcSet[j];
00285         const Boundary& b = *bc.boundary();
00286         this->addPDEBoundaryConditionAndMesh(i,&bc,bma[b]);
00287       }
00288     }
00289 
00290     // Now sets the natural boundary conditions coming from a variational problem
00291     if(P.type() == Problem::variational) {
00292       const VariationalProblem& VP = dynamic_cast<const VariationalProblem&>(P);
00293       for (VariationalProblem::bilinearBorderOperatorConst_iterator i = VP.beginBilinearBorderOperator();
00294            i != VP.endBilinearBorderOperator(); ++i) {
00295         const Boundary& b = dynamic_cast<const Boundary&>(*(*i)->boundary());
00296         this->bilinearBorderOperatorAdd(*i,bma[b]);
00297       }
00298       for (VariationalProblem::linearBorderOperatorConst_iterator i = VP.beginLinearBorderOperator();
00299            i != VP.endLinearBorderOperator(); ++i) {
00300         const Boundary& b = dynamic_cast<const Boundary&>(*(*i)->boundary());
00301         this->linearBorderOperatorAdd(*i,bma[b]);
00302       }
00303     }
00304   }

Here is the call graph for this function:

BoundaryConditionSurfaceMeshAssociation::BoundaryConditionSurfaceMeshAssociation ( const BoundaryConditionSurfaceMeshAssociation B  )  [inline]

BoundaryConditionSurfaceMeshAssociation::~BoundaryConditionSurfaceMeshAssociation (  )  [inline]

Destructor

Definition at line 323 of file BoundaryConditionSurfaceMeshAssociation.hpp.

00324   {
00325     ;
00326   }


Member Function Documentation

void BoundaryConditionSurfaceMeshAssociation::addPDEBoundaryConditionAndMesh ( const size_t &  i,
const BoundaryCondition bc,
const SurfaceMesh S 
) [inline]

Adds a boundary condition coming from the PDE description and sort it according to its type.

Parameters:
i the number of the equation it comes from
bc the boundary condition itself
S the mesh

Definition at line 97 of file BoundaryConditionSurfaceMeshAssociation.hpp.

References __bboMeshAssociation, __dirichletMeshAssociation, __lboMeshAssociation, Fourrier::alpha(), BoundaryCondition::boundary(), BoundaryCondition::condition(), PDECondition::dirichlet, PDECondition::fourrier, Fourrier::g(), Neumann::g(), PDECondition::neumann, and PDECondition::unknownNumber().

Referenced by BoundaryConditionSurfaceMeshAssociation().

00099                                                             {
00100 
00101     switch (bc->condition()->type()) {
00102     case PDECondition::dirichlet: {
00103       const Dirichlet& D = dynamic_cast<const Dirichlet&>(*bc->condition());
00104       __dirichletMeshAssociation[i].insert(std::pair<const Dirichlet*,
00105                                            const SurfaceMesh*>(&D,S));
00106       break;
00107     }
00108     case PDECondition::neumann: {
00109       const Neumann& N = dynamic_cast<const Neumann&>(*bc->condition());
00110 
00111       ConstReferenceCounting<VariationalLinearBorderOperator>
00112         LV = new VariationalBorderOperatorFV(i, N.g(), bc->boundary());
00113 
00114       __lboMeshAssociation.insert(std::pair<ConstReferenceCounting<VariationalLinearBorderOperator>,
00115                                   const SurfaceMesh*>(LV,S));
00116       break;
00117     }
00118     case PDECondition::fourrier: {
00119       const Fourrier& F = dynamic_cast<const Fourrier&>(*bc->condition());
00120 
00121       ConstReferenceCounting<VariationalLinearBorderOperator>
00122         LV = new VariationalBorderOperatorFV(i, F.g(), bc->boundary());
00123 
00124       __lboMeshAssociation.insert(std::pair<ConstReferenceCounting<VariationalLinearBorderOperator>,
00125                                   const SurfaceMesh*>(LV,S));
00126 
00127       ConstReferenceCounting<VariationalBilinearBorderOperator>
00128         BLV = new VariationalBorderOperatorAlphaUV(i,F.unknownNumber(),
00129                                                    F.alpha(), bc->boundary());
00130 
00131       __bboMeshAssociation.insert(std::pair<ConstReferenceCounting<VariationalBilinearBorderOperator>,
00132                                   const SurfaceMesh*>(BLV, S));
00133 
00134       break;
00135     }
00136     }
00137   }

Here is the call graph for this function:

DirichletMeshAssociation& BoundaryConditionSurfaceMeshAssociation::bc ( const size_t &  i  )  [inline]

const DirichletMeshAssociation& BoundaryConditionSurfaceMeshAssociation::bc ( const size_t &  i  )  const [inline]

Returns the boundary condition mesh association related to test function number i

Parameters:
i 

Definition at line 157 of file BoundaryConditionSurfaceMeshAssociation.hpp.

References __dirichletMeshAssociation, and ASSERT.

00158   {
00159     ASSERT(i<__dirichletMeshAssociation.size());
00160     return __dirichletMeshAssociation[i];
00161   }

void BoundaryConditionSurfaceMeshAssociation::bcSetSize ( const size_t &  i  )  [inline]

Sets the number of test functions.

Parameters:
i 

Definition at line 168 of file BoundaryConditionSurfaceMeshAssociation.hpp.

References __dirichletMeshAssociation.

00169   {
00170     __dirichletMeshAssociation.resize(i);
00171   }

void BoundaryConditionSurfaceMeshAssociation::bilinearBorderOperatorAdd ( ConstReferenceCounting< VariationalBilinearBorderOperator v,
const SurfaceMesh s 
) [inline]

Adds a bilinear border operator and its mesh to the list.

Parameters:
v the variational border operator
s the surface mesh

Definition at line 179 of file BoundaryConditionSurfaceMeshAssociation.hpp.

References __bboMeshAssociation.

Referenced by BoundaryConditionSurfaceMeshAssociation().

00181   {
00182     __bboMeshAssociation.insert(std::pair<ConstReferenceCounting<VariationalBilinearBorderOperator>,
00183                                 const SurfaceMesh*>(v,s));
00184   }

void BoundaryConditionSurfaceMeshAssociation::linearBorderOperatorAdd ( ConstReferenceCounting< VariationalLinearBorderOperator v,
const SurfaceMesh s 
) [inline]

Adds a linear border operator and its mesh to the list.

Parameters:
v the variational border operator
s the surface mesh

Definition at line 192 of file BoundaryConditionSurfaceMeshAssociation.hpp.

References __lboMeshAssociation.

Referenced by BoundaryConditionSurfaceMeshAssociation().

00194   {
00195     __lboMeshAssociation.insert(std::pair<ConstReferenceCounting<VariationalLinearBorderOperator>,
00196                                           const SurfaceMesh*>(v,s));
00197   }

BoundaryConditionSurfaceMeshAssociation ::BilinearBorderOperatorMeshAssociation ::iterator BoundaryConditionSurfaceMeshAssociation::beginOfBilinear (  )  [inline]

BoundaryConditionSurfaceMeshAssociation ::BilinearBorderOperatorMeshAssociation ::const_iterator BoundaryConditionSurfaceMeshAssociation::beginOfBilinear (  )  const [inline]

Gets the begin iterator for the list of bi linear operators

Returns:
__bboMeshAssociation.begin()

Definition at line 218 of file BoundaryConditionSurfaceMeshAssociation.hpp.

References __bboMeshAssociation.

00219   {
00220     return __bboMeshAssociation.begin();
00221   }

BoundaryConditionSurfaceMeshAssociation ::BilinearBorderOperatorMeshAssociation ::const_iterator BoundaryConditionSurfaceMeshAssociation::endOfBilinear (  )  const [inline]

BoundaryConditionSurfaceMeshAssociation ::LinearBorderOperatorMeshAssociation ::iterator BoundaryConditionSurfaceMeshAssociation::beginOfLinear (  )  [inline]

Gets the begin iterator for the list of linear operators

Returns:
__lboMeshAssociation.begin()

Definition at line 242 of file BoundaryConditionSurfaceMeshAssociation.hpp.

References __lboMeshAssociation.

Referenced by BoundaryConditionCommonFEMDiscretization< MeshType, TypeOfDiscretization >::__StandardVariationalBorderLinearOperator(), and BoundaryConditionDiscretizationSpectralNonConform::setSecondMember().

00243   {
00244     return __lboMeshAssociation.begin();
00245   }

BoundaryConditionSurfaceMeshAssociation ::LinearBorderOperatorMeshAssociation ::const_iterator BoundaryConditionSurfaceMeshAssociation::beginOfLinear (  )  const [inline]

Gets the begin iterator for the list of linear operators

Returns:
__lboMeshAssociation.begin()

Definition at line 254 of file BoundaryConditionSurfaceMeshAssociation.hpp.

References __lboMeshAssociation.

00255   {
00256     return __lboMeshAssociation.begin();
00257   }

BoundaryConditionSurfaceMeshAssociation ::LinearBorderOperatorMeshAssociation ::const_iterator BoundaryConditionSurfaceMeshAssociation::endOfLinear (  )  const [inline]

Gets the end iterator for the list of linear operators

Returns:
__lboMeshAssociation.end()

Definition at line 266 of file BoundaryConditionSurfaceMeshAssociation.hpp.

References __lboMeshAssociation.

Referenced by BoundaryConditionCommonFEMDiscretization< MeshType, TypeOfDiscretization >::__StandardVariationalBorderLinearOperator(), and BoundaryConditionDiscretizationSpectralNonConform::setSecondMember().

00267   {
00268     return __lboMeshAssociation.end();
00269   }


Member Data Documentation

Association of BoundaryCondition and Mesh (uses a vector since it appears for each equation)

Definition at line 75 of file BoundaryConditionSurfaceMeshAssociation.hpp.

Referenced by addPDEBoundaryConditionAndMesh(), bc(), and bcSetSize().

Association of Linear Border Operator and Mesh

Definition at line 80 of file BoundaryConditionSurfaceMeshAssociation.hpp.

Referenced by addPDEBoundaryConditionAndMesh(), beginOfLinear(), endOfLinear(), and linearBorderOperatorAdd().

Association of Bilinear Border Operator and Mesh

Definition at line 84 of file BoundaryConditionSurfaceMeshAssociation.hpp.

Referenced by addPDEBoundaryConditionAndMesh(), beginOfBilinear(), bilinearBorderOperatorAdd(), and endOfBilinear().


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

Generated on Wed Nov 19 00:04:51 2008 for FreeFEM3D (aka ff3d) by  doxygen 1.5.6