Chaste  Release::3.4
AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > Class Template Reference

#include <AbstractBoundaryConditionsContainer.hpp>

+ Inheritance diagram for AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >:
+ Collaboration diagram for AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >:

Public Member Functions

 AbstractBoundaryConditionsContainer (bool deleteConditions=true)
 
 ~AbstractBoundaryConditionsContainer ()
 
bool HasDirichletBoundaryConditions ()
 
double GetDirichletBCValue (const Node< SPACE_DIM > *pBoundaryNode, unsigned indexOfUnknown=0)
 
bool HasDirichletBoundaryCondition (const Node< SPACE_DIM > *pNode, unsigned indexOfUnknown=0)
 
void ResetDirichletCommunication ()
 

Protected Types

typedef std::map< const Node
< SPACE_DIM > *, const
AbstractBoundaryCondition
< SPACE_DIM > *, LessThanNode
< SPACE_DIM > > 
DirichletMapType
 
typedef std::map< const Node
< SPACE_DIM > *, const
AbstractBoundaryCondition
< SPACE_DIM > *, LessThanNode
< SPACE_DIM >
>::const_iterator 
DirichletIteratorType
 

Protected Member Functions

void DeleteDirichletBoundaryConditions (std::set< const AbstractBoundaryCondition< SPACE_DIM > * > alreadyDeletedConditions=std::set< const AbstractBoundaryCondition< SPACE_DIM > * >())
 

Protected Attributes

DirichletMapTypempDirichletMap [PROBLEM_DIM]
 
DirichletIteratorType mDirichIterator
 
bool mHasDirichletBCs
 
bool mCheckedAndCommunicatedIfDirichletBcs
 
bool mDeleteConditions
 

Detailed Description

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
class AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >

Abstract boundary conditions container.

Definition at line 72 of file AbstractBoundaryConditionsContainer.hpp.

Member Typedef Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
typedef std::map< const Node<SPACE_DIM> *, const AbstractBoundaryCondition<SPACE_DIM>*, LessThanNode<SPACE_DIM> >::const_iterator AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::DirichletIteratorType
protected

To save typing

Definition at line 83 of file AbstractBoundaryConditionsContainer.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
typedef std::map< const Node<SPACE_DIM> *, const AbstractBoundaryCondition<SPACE_DIM>*, LessThanNode<SPACE_DIM> > AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::DirichletMapType
protected

To save typing

Definition at line 78 of file AbstractBoundaryConditionsContainer.hpp.

Constructor & Destructor Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AbstractBoundaryConditionsContainer ( bool  deleteConditions = true)

Constructor allocates memory for the Dirichlet boundary conditions lists.

Parameters
deleteConditionswhether to delete BCs in destructor (defaults to true)

Definition at line 43 of file AbstractBoundaryConditionsContainerImplementation.hpp.

References AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpDirichletMap.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::~AbstractBoundaryConditionsContainer ( )

Destructor.

Definition at line 55 of file AbstractBoundaryConditionsContainerImplementation.hpp.

Member Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
void AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::DeleteDirichletBoundaryConditions ( std::set< const AbstractBoundaryCondition< SPACE_DIM > * >  alreadyDeletedConditions = std::set<const AbstractBoundaryCondition<SPACE_DIM>*>())
protected

Delete the list of Dirichlet boundary conditions.

Note
This should stay as a protected method to avoid it being called with default arguments and causing seg faults (requires careful bookkeeping when calling this method).
Parameters
alreadyDeletedConditionsThis is a set of BCs that have already been deleted that we should avoid trying to delete inside this method. (defaults to empty = delete everything)

Definition at line 81 of file AbstractBoundaryConditionsContainerImplementation.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
double AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::GetDirichletBCValue ( const Node< SPACE_DIM > *  pBoundaryNode,
unsigned  indexOfUnknown = 0 
)
Returns
value of Dirichlet boundary condition at specified node.

This is unlikely to be needed by the user, the methods ApplyDirichletToLinearProblem or ApplyDirichletToNonlinearProblem can be called instead to apply all Dirichlet boundary conditions at the same time.

Parameters
pBoundaryNodepointer to a boundary node
indexOfUnknownindex of the unknown for which to obtain the value of the boundary condition (defaults to 0)

Definition at line 111 of file AbstractBoundaryConditionsContainerImplementation.hpp.

References Node< SPACE_DIM >::GetPoint().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
bool AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::HasDirichletBoundaryCondition ( const Node< SPACE_DIM > *  pNode,
unsigned  indexOfUnknown = 0 
)
Returns
true if there is a Dirichlet boundary condition defined on the given node.
Parameters
pNodepointer to a node
indexOfUnknownindex of the unknown for which to obtain the value of the boundary condition (defaults to 0)

Definition at line 123 of file AbstractBoundaryConditionsContainerImplementation.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
bool AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::HasDirichletBoundaryConditions ( )
Returns
whether any Dirichlet conditions are defined (for ANY of the unknowns, on ANY of the processes). Must be called collectively. The first time this is called, the result is communicated to all processes and then cached locally (the bool mHasDirichletBCs). If this needs recalculating mCheckedAndCommunicatedIfDirichletBcs must be reset to zero.

Definition at line 61 of file AbstractBoundaryConditionsContainerImplementation.hpp.

References PetscTools::ReplicateBool().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
void AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::ResetDirichletCommunication ( )
inline

When Dirichlet boundary conditions are likely to be added on one or more processes then we should call this method collectively in order to ensure that all processes do a collective communication on the next call to HasDirichletBoundaryConditions()

Definition at line 153 of file AbstractBoundaryConditionsContainer.hpp.

References AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mCheckedAndCommunicatedIfDirichletBcs.

Member Data Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
bool AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mCheckedAndCommunicatedIfDirichletBcs
protected
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
bool AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mDeleteConditions
protected
Returns
true if we need to delete BCs in destructor.

Definition at line 93 of file AbstractBoundaryConditionsContainer.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
DirichletIteratorType AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mDirichIterator
protected

Internal iterator over Dirichlet boundary conditions

Definition at line 84 of file AbstractBoundaryConditionsContainer.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
bool AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mHasDirichletBCs
protected
Returns
true if there are any Dirichlet BCs anywhere on the mesh

Definition at line 87 of file AbstractBoundaryConditionsContainer.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
DirichletMapType* AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpDirichletMap[PROBLEM_DIM]
protected

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