MFEM v2.0
Public Member Functions | Private Member Functions | Private Attributes
ParFiniteElementSpace Class Reference

Abstract parallel finite element space. More...

#include <pfespace.hpp>

Inheritance diagram for ParFiniteElementSpace:
Inheritance graph
[legend]
Collaboration diagram for ParFiniteElementSpace:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ParFiniteElementSpace (ParMesh *pm, FiniteElementCollection *f, int dim=1, int order=Ordering::byNODES)
MPI_Comm GetComm ()
int GetNRanks ()
int GetMyRank ()
int TrueVSize ()
int * GetDofOffsets ()
int * GetTrueDofOffsets ()
int GlobalVSize ()
int GlobalTrueVSize ()
int GetDofSign (int i)
virtual void GetElementDofs (int i, Array< int > &dofs) const
 Returns indexes of degrees of freedom in array dofs for i'th element.
virtual void GetBdrElementDofs (int i, Array< int > &dofs) const
 Returns indexes of degrees of freedom for i'th boundary element.
HypreParMatrixDof_TrueDof_Matrix ()
 The true dof-to-dof interpolation matrix.
void DivideByGroupSize (double *vec)
 Scale a vector of true dofs.
GroupCommunicatorGroupComm ()
 Return a reference to the internal GroupCommunicator (on VDofs)
GroupCommunicatorScalarGroupComm ()
 Return a new GroupCommunicator on Dofs.
void Synchronize (Array< int > &ldof_marker)
virtual void GetEssentialVDofs (Array< int > &bdr_attr_is_ess, Array< int > &ess_dofs)
 Determine the boundary degrees of freedom.
int GetLocalTDofNumber (int ldof)
int GetGlobalTDofNumber (int ldof)
 Returns the global tdof number of the given local degree of freedom.
int GetGlobalScalarTDofNumber (int sldof)
void Lose_Dof_TrueDof_Matrix ()
void LoseDofOffsets ()
void LoseTrueDofOffsets ()
virtual void Update ()
virtual FiniteElementSpaceSaveUpdate ()
 Return a copy of the current FE space and update.
virtual ~ParFiniteElementSpace ()

Private Member Functions

ParNURBSExtension * pNURBSext ()
GroupTopologyGetGroupTopo ()
 ParFiniteElementSpace (ParFiniteElementSpace &pf)
void GetGroupComm (GroupCommunicator &gcomm, int ldof_type, Array< int > *ldof_sign=NULL)
void GenerateGlobalOffsets ()
 Construct dof_offsets and tdof_offsets using global communication.
void ConstructTrueDofs ()
 Construct ldof_group and ldof_ltdof.
void ConstructTrueNURBSDofs ()

Private Attributes

MPI_Comm MyComm
 MPI data.
int NRanks
int MyRank
ParMeshpmesh
 Parallel mesh.
GroupCommunicatorgcomm
 GroupCommunicator on the local VDofs.
int ltdof_size
 Number of true dofs in this processor (local true dofs).
Array< int > ldof_group
 The group of each local dof.
Array< int > ldof_ltdof
 For a local dof: the local true dof number in the master of its group.
Array< int > dof_offsets
 Offsets for the dofs in each processor in global numbering.
Array< int > tdof_offsets
 Offsets for the true dofs in each processor in global numbering.
Array< int > tdof_nb_offsets
 Offsets for the true dofs in neighbor processor in global numbering.
Array< int > ldof_sign
 The sign of the basis functions at the scalar local dofs.
HypreParMatrixP
 The matrix P (interpolation from true dof to dof).

Detailed Description

Abstract parallel finite element space.

Definition at line 16 of file pfespace.hpp.


Constructor & Destructor Documentation

ParFiniteElementSpace::ParFiniteElementSpace ( ParFiniteElementSpace pf) [private]

Create a parallel FE space stealing all data (except RefData) from the given FE space. This is used in SaveUpdate().

ParFiniteElementSpace::ParFiniteElementSpace ( ParMesh pm,
FiniteElementCollection f,
int  dim = 1,
int  order = Ordering::byNODES 
)
virtual ParFiniteElementSpace::~ParFiniteElementSpace ( ) [inline, virtual]

Definition at line 133 of file pfespace.hpp.

References gcomm, and P.


Member Function Documentation

void ParFiniteElementSpace::ConstructTrueDofs ( ) [private]

Construct ldof_group and ldof_ltdof.

void ParFiniteElementSpace::ConstructTrueNURBSDofs ( ) [private]
void ParFiniteElementSpace::DivideByGroupSize ( double *  vec)

Scale a vector of true dofs.

HypreParMatrix* ParFiniteElementSpace::Dof_TrueDof_Matrix ( )

The true dof-to-dof interpolation matrix.

Referenced by GlobalTrueVSize(), and GlobalVSize().

void ParFiniteElementSpace::GenerateGlobalOffsets ( ) [private]

Construct dof_offsets and tdof_offsets using global communication.

virtual void ParFiniteElementSpace::GetBdrElementDofs ( int  i,
Array< int > &  dofs 
) const [virtual]

Returns indexes of degrees of freedom for i'th boundary element.

Reimplemented from FiniteElementSpace.

MPI_Comm ParFiniteElementSpace::GetComm ( ) [inline]

Definition at line 78 of file pfespace.hpp.

References MyComm.

int* ParFiniteElementSpace::GetDofOffsets ( ) [inline]

Definition at line 83 of file pfespace.hpp.

References dof_offsets.

int ParFiniteElementSpace::GetDofSign ( int  i) [inline]
virtual void ParFiniteElementSpace::GetElementDofs ( int  i,
Array< int > &  dofs 
) const [virtual]

Returns indexes of degrees of freedom in array dofs for i'th element.

Reimplemented from FiniteElementSpace.

virtual void ParFiniteElementSpace::GetEssentialVDofs ( Array< int > &  bdr_attr_is_ess,
Array< int > &  ess_dofs 
) [virtual]

Determine the boundary degrees of freedom.

Reimplemented from FiniteElementSpace.

Referenced by main().

int ParFiniteElementSpace::GetGlobalScalarTDofNumber ( int  sldof)

Returns the global tdof number of the given local degree of freedom in the scalar vesion of the current finite element space. The input should be a scalar local dof.

int ParFiniteElementSpace::GetGlobalTDofNumber ( int  ldof)

Returns the global tdof number of the given local degree of freedom.

void ParFiniteElementSpace::GetGroupComm ( GroupCommunicator gcomm,
int  ldof_type,
Array< int > *  ldof_sign = NULL 
) [private]
GroupTopology& ParFiniteElementSpace::GetGroupTopo ( ) [inline, private]

Definition at line 56 of file pfespace.hpp.

References ParMesh::gtopo, FiniteElementSpace::NURBSext, pmesh, and pNURBSext().

int ParFiniteElementSpace::GetLocalTDofNumber ( int  ldof)

If the given ldof is owned by the current processor, return its local tdof number, otherwise return -1

int ParFiniteElementSpace::GetMyRank ( ) [inline]

Definition at line 80 of file pfespace.hpp.

References MyRank.

int ParFiniteElementSpace::GetNRanks ( ) [inline]

Definition at line 79 of file pfespace.hpp.

References NRanks.

int* ParFiniteElementSpace::GetTrueDofOffsets ( ) [inline]

Definition at line 84 of file pfespace.hpp.

References tdof_offsets.

int ParFiniteElementSpace::GlobalTrueVSize ( ) [inline]

Definition at line 86 of file pfespace.hpp.

References Dof_TrueDof_Matrix(), and HypreParMatrix::GetGlobalNumCols().

Referenced by main().

int ParFiniteElementSpace::GlobalVSize ( ) [inline]

Definition at line 85 of file pfespace.hpp.

References Dof_TrueDof_Matrix(), and HypreParMatrix::GetGlobalNumRows().

GroupCommunicator& ParFiniteElementSpace::GroupComm ( ) [inline]

Return a reference to the internal GroupCommunicator (on VDofs)

Definition at line 102 of file pfespace.hpp.

References gcomm.

void ParFiniteElementSpace::Lose_Dof_TrueDof_Matrix ( )
void ParFiniteElementSpace::LoseDofOffsets ( ) [inline]

Definition at line 126 of file pfespace.hpp.

References dof_offsets, and Array< T >::LoseData().

void ParFiniteElementSpace::LoseTrueDofOffsets ( ) [inline]

Definition at line 127 of file pfespace.hpp.

References Array< T >::LoseData(), and tdof_offsets.

ParNURBSExtension* ParFiniteElementSpace::pNURBSext ( ) [inline, private]

Definition at line 53 of file pfespace.hpp.

References FiniteElementSpace::NURBSext.

Referenced by GetGroupTopo().

virtual FiniteElementSpace* ParFiniteElementSpace::SaveUpdate ( ) [virtual]

Return a copy of the current FE space and update.

Reimplemented from FiniteElementSpace.

GroupCommunicator* ParFiniteElementSpace::ScalarGroupComm ( )

Return a new GroupCommunicator on Dofs.

void ParFiniteElementSpace::Synchronize ( Array< int > &  ldof_marker)

Given an integer array on the local degrees of freedom, perform a bitwise OR between the shared dofs.

int ParFiniteElementSpace::TrueVSize ( ) [inline]

Definition at line 82 of file pfespace.hpp.

References ltdof_size.

virtual void ParFiniteElementSpace::Update ( ) [virtual]

Reimplemented from FiniteElementSpace.


Member Data Documentation

Offsets for the dofs in each processor in global numbering.

Definition at line 39 of file pfespace.hpp.

Referenced by GetDofOffsets(), and LoseDofOffsets().

GroupCommunicator on the local VDofs.

Definition at line 27 of file pfespace.hpp.

Referenced by GroupComm(), and ~ParFiniteElementSpace().

The group of each local dof.

Definition at line 33 of file pfespace.hpp.

For a local dof: the local true dof number in the master of its group.

Definition at line 36 of file pfespace.hpp.

The sign of the basis functions at the scalar local dofs.

Definition at line 48 of file pfespace.hpp.

Referenced by GetDofSign().

Number of true dofs in this processor (local true dofs).

Definition at line 30 of file pfespace.hpp.

Referenced by TrueVSize().

MPI_Comm ParFiniteElementSpace::MyComm [private]

MPI data.

Definition at line 20 of file pfespace.hpp.

Referenced by GetComm().

Definition at line 21 of file pfespace.hpp.

Referenced by GetMyRank().

Definition at line 21 of file pfespace.hpp.

Referenced by GetNRanks().

The matrix P (interpolation from true dof to dof).

Definition at line 51 of file pfespace.hpp.

Referenced by ~ParFiniteElementSpace().

Parallel mesh.

Definition at line 24 of file pfespace.hpp.

Referenced by GetGroupTopo().

Offsets for the true dofs in neighbor processor in global numbering.

Definition at line 45 of file pfespace.hpp.

Offsets for the true dofs in each processor in global numbering.

Definition at line 42 of file pfespace.hpp.

Referenced by GetTrueDofOffsets(), and LoseTrueDofOffsets().


The documentation for this class was generated from the following file:
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines