LifeV
PostProcessingBoundary< MeshType > Class Template Reference

Class with methods to manage fields defined on the domain boundary. More...

#include <PostProcessingBoundary.hpp>

+ Collaboration diagram for PostProcessingBoundary< MeshType >:

Public Types

typedef MeshType::elementShape_Type elementGeometricShape_Type
 
typedef elementGeometricShape_Type::GeoBShape facetGeometricShape_Type
 
typedef MeshType mesh_Type
 
typedef std::shared_ptr< MeshTypemeshPtr_Type
 
typedef CurrentFEManifoldcurrentBdFEPtr_Type
 
typedef DOFdofPtr_Type
 

Constructors & Destructor

 PostProcessingBoundary ()
 Empty Constructor. More...
 
 PostProcessingBoundary (const PostProcessingBoundary &)
 Copy constructor. More...
 
 PostProcessingBoundary (meshPtr_Type mesh, std::vector< currentBdFEPtr_Type > currentBdFEVector, std::vector< dofPtr_Type > dofVector, const MapEpetra &epetraMap, UInt nFESpaces=1)
 Constructor. More...
 
 PostProcessingBoundary (meshPtr_Type mesh, currentBdFEPtr_Type currentBdFE, dofPtr_Type dof, const MapEpetra &epetraMap)
 Constructor for the case in which we have only one currentBdFE and dof. More...
 
 PostProcessingBoundary (meshPtr_Type mesh, currentBdFEPtr_Type feBdu, dofPtr_Type dofu, currentBdFEPtr_Type feBdp, dofPtr_Type dofp, const MapEpetra &epetraMap)
 Constructor for the case in which we have two currentBdFE's and dof's. More...
 

Methods

Real measure (const markerID_Type &flag)
 
template<typename VectorType >
Real flux (const VectorType &vectorField, const markerID_Type &flag, UInt feSpace=0, UInt nDim=nDimensions)
 
template<typename VectorType >
Real kineticNormalStress (const VectorType &velocity, const Real &density, const markerID_Type &flag, UInt feSpace=0, UInt nDim=nDimensions)
 
template<typename VectorType >
Real kineticNormalStressDerivative (const VectorType &velocity, const VectorType &velocityDerivative, const Real &density, const markerID_Type &flag, UInt feSpace=0, UInt nDim=nDimensions)
 
template<typename VectorType >
Vector average (const VectorType &field, const markerID_Type &flag, UInt feSpace=0, UInt nDim=1)
 
Vector normal (const markerID_Type &flag, UInt feSpace=0, UInt nDim=nDimensions)
 
Vector geometricCenter (const markerID_Type &flag, UInt feSpace=0, UInt nDim=nDimensions)
 
void showDOFIndexMap (std::ostream &output=std::cout) const
 
void showPatchesMeasure (std::ostream &output=std::cout) const
 
void showPatchesNormal (std::ostream &output=std::cout) const
 
void showPatchesPhi (std::ostream &output=std::cout) const
 
const VectorpatchMeasureInFESpace (const UInt &feSpace=0) const
 
const VectorpatchNormalInFESpace (const UInt &feSpace=0) const
 
const std::vector< ID > & dofGlobalIdInFESpace (const UInt &feSpace=0) const
 
const UIntnumBoundaryDofInFESpace (const UInt &feSpace=0) const
 Number of boundary DOF for the mesh at hand. More...
 

Private Methods

UInt M_numFESpaces
 
std::vector< UIntM_numBoundaryDofVector
 
std::vector< UIntM_numDofPerPeakVector
 
std::vector< UIntM_numDofPerRidgeVector
 
std::vector< UIntM_numDofPerFacetVector
 
UInt M_numRidgesPerFacet
 
UInt M_numFacetPerFacet
 
UInt M_numPeaksPerElement
 
UInt M_numRidgesPerElement
 
std::vector< UIntM_numPeakDofPerFacetVector
 
std::vector< UIntM_numRidgeDofPerFacetVector
 
std::vector< UIntM_numTotalDofPerFacetVector
 
std::vector< UIntM_numPeakDofPerElement
 
std::vector< UIntM_numRidgeDofPerElementVector
 
UInt M_numBoundaryFacets
 
std::vector< UIntM_numTotalDofVector
 
std::vector< VectorM_patchMeasureVector
 
std::vector< VectorM_patchNormalVector
 
std::vector< VectorM_patchIntegratedPhiVector
 
std::map< markerID_Type, std::list< ID > > M_boundaryMarkerToFacetIdMap
 
std::vector< std::vector< std::vector< ID > > > M_vectorNumberingPerFacetVector
 
std::vector< std::vector< ID > > M_dofGlobalIdVector
 
std::vector< currentBdFEPtr_TypeM_currentBdFEPtrVector
 
std::vector< dofPtr_TypeM_dofPtrVector
 
meshPtr_Type M_meshPtr
 
std::shared_ptr< MapEpetraM_epetraMapPtr
 
const Int M_geoDimension
 
void computePatchesMeasure ()
 
void computePatchesNormal ()
 
void computePatchesPhi ()
 
void buildVectors ()
 

Detailed Description

template<typename MeshType>
class LifeV::PostProcessingBoundary< MeshType >

Class with methods to manage fields defined on the domain boundary.

The data structures are based on vector M_vectorNumberingPerFacetVector:

  1. the size is equal to the number of boundary facets in the mesh
  2. each component is a vector of identifiers
  3. in each vector of identifiers, the i-th component is the position in vector M_dofGlobalIdVector where to find the global Id for i-th dof in the facet

Vector M_dofGlobalIdVector has this usage:

  1. the size is equal to the total number of boundary dof's
  2. the k-th component is the global numbering of the k-th boundary dof

How to use M_vectorNumberingPerFacetVector and M_dofGlobalIdVector together?

  1. M_vectorNumberingPerFacetVector[ j ] is a vector containing the vector indices for boundary face j
  2. M_dofGlobalIdVector[ M_vectorNumberingPerFacetVector[ j ][ i ] ] is the global ID associated to the i-th dof on j-th face

NB: here "global" is intended wrt the global mesh (prior to partitioning, if this applies)

Definition at line 78 of file PostProcessingBoundary.hpp.

Member Typedef Documentation

◆ elementGeometricShape_Type

◆ facetGeometricShape_Type

typedef elementGeometricShape_Type::GeoBShape facetGeometricShape_Type
private

Definition at line 84 of file PostProcessingBoundary.hpp.

◆ mesh_Type

typedef MeshType mesh_Type
private

Definition at line 85 of file PostProcessingBoundary.hpp.

◆ meshPtr_Type

typedef std::shared_ptr<MeshType> meshPtr_Type
private

Definition at line 86 of file PostProcessingBoundary.hpp.

◆ currentBdFEPtr_Type

Definition at line 87 of file PostProcessingBoundary.hpp.

◆ dofPtr_Type

typedef DOF* dofPtr_Type
private

Definition at line 88 of file PostProcessingBoundary.hpp.

Constructor & Destructor Documentation

◆ PostProcessingBoundary() [1/5]

Empty Constructor.

Definition at line 97 of file PostProcessingBoundary.hpp.

◆ PostProcessingBoundary() [2/5]

Copy constructor.

Note
all pointer members are copied (no new allocation is done in the class)

Definition at line 104 of file PostProcessingBoundary.hpp.

◆ PostProcessingBoundary() [3/5]

PostProcessingBoundary ( meshPtr_Type  mesh,
std::vector< currentBdFEPtr_Type currentBdFEVector,
std::vector< dofPtr_Type dofVector,
const MapEpetra epetraMap,
UInt  nFESpaces = 1 
)

Constructor.

In this general case we allow to pass an arbitrary number (nFESpaces) of dof/fe classes

NOTE: in most parts of the code, only currentBdFEVector[0] and dofVector[0] will be considered

Parameters
meshthe mesh
currentBdFEVectora vector of finite element prototypes for boundary elements
dofVectora vector of classes for the description of degrees of freedom
epetraMapthe map describing the partition over different processors
nFESpacesnumber of elements in vectors currentBdFEVector, dofVector

Definition at line 389 of file PostProcessingBoundary.hpp.

◆ PostProcessingBoundary() [4/5]

PostProcessingBoundary ( meshPtr_Type  mesh,
currentBdFEPtr_Type  currentBdFE,
dofPtr_Type  dof,
const MapEpetra epetraMap 
)

Constructor for the case in which we have only one currentBdFE and dof.

Definition at line 430 of file PostProcessingBoundary.hpp.

◆ PostProcessingBoundary() [5/5]

PostProcessingBoundary ( meshPtr_Type  mesh,
currentBdFEPtr_Type  feBdu,
dofPtr_Type  dofu,
currentBdFEPtr_Type  feBdp,
dofPtr_Type  dofp,
const MapEpetra epetraMap 
)

Constructor for the case in which we have two currentBdFE's and dof's.

This is the case of NS problem, in which we will want to consider both velocity and pressure dof/fe classes

Definition at line 467 of file PostProcessingBoundary.hpp.

Member Function Documentation

◆ computePatchesMeasure()

void computePatchesMeasure ( )
private

These methods build the data structures describing patches of boundary elements (patch measure, patch normal and integral of the test function over the patch)

Definition at line 1137 of file PostProcessingBoundary.hpp.

◆ computePatchesNormal()

void computePatchesNormal ( )
private

Definition at line 1230 of file PostProcessingBoundary.hpp.

◆ computePatchesPhi()

void computePatchesPhi ( )
private

Definition at line 1317 of file PostProcessingBoundary.hpp.

◆ buildVectors()

void buildVectors ( )
private

Definition at line 508 of file PostProcessingBoundary.hpp.

Field Documentation

◆ M_numFESpaces

UInt M_numFESpaces
private

Definition at line 346 of file PostProcessingBoundary.hpp.

◆ M_numBoundaryDofVector

std::vector<UInt> M_numBoundaryDofVector
private

Definition at line 348 of file PostProcessingBoundary.hpp.

◆ M_numDofPerPeakVector

std::vector<UInt> M_numDofPerPeakVector
private

Definition at line 349 of file PostProcessingBoundary.hpp.

◆ M_numDofPerRidgeVector

std::vector<UInt> M_numDofPerRidgeVector
private

Definition at line 349 of file PostProcessingBoundary.hpp.

◆ M_numDofPerFacetVector

std::vector<UInt> M_numDofPerFacetVector
private

Definition at line 349 of file PostProcessingBoundary.hpp.

◆ M_numRidgesPerFacet

UInt M_numRidgesPerFacet
private

Definition at line 350 of file PostProcessingBoundary.hpp.

◆ M_numFacetPerFacet

UInt M_numFacetPerFacet
private

Definition at line 350 of file PostProcessingBoundary.hpp.

◆ M_numPeaksPerElement

UInt M_numPeaksPerElement
private

Definition at line 351 of file PostProcessingBoundary.hpp.

◆ M_numRidgesPerElement

UInt M_numRidgesPerElement
private

Definition at line 351 of file PostProcessingBoundary.hpp.

◆ M_numPeakDofPerFacetVector

std::vector<UInt> M_numPeakDofPerFacetVector
private

Definition at line 352 of file PostProcessingBoundary.hpp.

◆ M_numRidgeDofPerFacetVector

std::vector<UInt> M_numRidgeDofPerFacetVector
private

Definition at line 352 of file PostProcessingBoundary.hpp.

◆ M_numTotalDofPerFacetVector

std::vector<UInt> M_numTotalDofPerFacetVector
private

Definition at line 353 of file PostProcessingBoundary.hpp.

◆ M_numPeakDofPerElement

std::vector<UInt> M_numPeakDofPerElement
private

Definition at line 354 of file PostProcessingBoundary.hpp.

◆ M_numRidgeDofPerElementVector

std::vector<UInt> M_numRidgeDofPerElementVector
private

Definition at line 354 of file PostProcessingBoundary.hpp.

◆ M_numBoundaryFacets

UInt M_numBoundaryFacets
private

Definition at line 355 of file PostProcessingBoundary.hpp.

◆ M_numTotalDofVector

std::vector<UInt> M_numTotalDofVector
private

Definition at line 356 of file PostProcessingBoundary.hpp.

◆ M_patchMeasureVector

std::vector<Vector > M_patchMeasureVector
private

Definition at line 358 of file PostProcessingBoundary.hpp.

◆ M_patchNormalVector

std::vector<Vector > M_patchNormalVector
private

Definition at line 360 of file PostProcessingBoundary.hpp.

◆ M_patchIntegratedPhiVector

std::vector<Vector > M_patchIntegratedPhiVector
private

Definition at line 362 of file PostProcessingBoundary.hpp.

◆ M_boundaryMarkerToFacetIdMap

std::map< markerID_Type, std::list<ID> > M_boundaryMarkerToFacetIdMap
private

Definition at line 365 of file PostProcessingBoundary.hpp.

◆ M_vectorNumberingPerFacetVector

std::vector< std::vector< std::vector<ID> > > M_vectorNumberingPerFacetVector
private

Definition at line 368 of file PostProcessingBoundary.hpp.

◆ M_dofGlobalIdVector

std::vector< std::vector< ID > > M_dofGlobalIdVector
private

Definition at line 370 of file PostProcessingBoundary.hpp.

◆ M_currentBdFEPtrVector

std::vector<currentBdFEPtr_Type > M_currentBdFEPtrVector
private

Definition at line 373 of file PostProcessingBoundary.hpp.

◆ M_dofPtrVector

std::vector<dofPtr_Type > M_dofPtrVector
private

Definition at line 375 of file PostProcessingBoundary.hpp.

◆ M_meshPtr

meshPtr_Type M_meshPtr
private

Definition at line 377 of file PostProcessingBoundary.hpp.

◆ M_epetraMapPtr

std::shared_ptr<MapEpetra> M_epetraMapPtr
private

Definition at line 379 of file PostProcessingBoundary.hpp.

◆ M_geoDimension

const Int M_geoDimension
private

Definition at line 381 of file PostProcessingBoundary.hpp.


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