MFEM v2.0
|
Abstract parallel finite element space. More...
#include <pfespace.hpp>
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. | |
HypreParMatrix * | Dof_TrueDof_Matrix () |
The true dof-to-dof interpolation matrix. | |
void | DivideByGroupSize (double *vec) |
Scale a vector of true dofs. | |
GroupCommunicator & | GroupComm () |
Return a reference to the internal GroupCommunicator (on VDofs) | |
GroupCommunicator * | ScalarGroupComm () |
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 FiniteElementSpace * | SaveUpdate () |
Return a copy of the current FE space and update. | |
virtual | ~ParFiniteElementSpace () |
Private Member Functions | |
ParNURBSExtension * | pNURBSext () |
GroupTopology & | GetGroupTopo () |
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 |
ParMesh * | pmesh |
Parallel mesh. | |
GroupCommunicator * | gcomm |
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. | |
HypreParMatrix * | P |
The matrix P (interpolation from true dof to dof). |
Abstract parallel finite element space.
Definition at line 16 of file pfespace.hpp.
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.
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] |
Definition at line 87 of file pfespace.hpp.
References ldof_sign, FiniteElementSpace::NURBSext, and FiniteElementSpace::VDofToDof().
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.
Array<int> ParFiniteElementSpace::dof_offsets [private] |
Offsets for the dofs in each processor in global numbering.
Definition at line 39 of file pfespace.hpp.
Referenced by GetDofOffsets(), and LoseDofOffsets().
GroupCommunicator* ParFiniteElementSpace::gcomm [private] |
GroupCommunicator on the local VDofs.
Definition at line 27 of file pfespace.hpp.
Referenced by GroupComm(), and ~ParFiniteElementSpace().
Array<int> ParFiniteElementSpace::ldof_group [private] |
The group of each local dof.
Definition at line 33 of file pfespace.hpp.
Array<int> ParFiniteElementSpace::ldof_ltdof [private] |
For a local dof: the local true dof number in the master of its group.
Definition at line 36 of file pfespace.hpp.
Array<int> ParFiniteElementSpace::ldof_sign [private] |
The sign of the basis functions at the scalar local dofs.
Definition at line 48 of file pfespace.hpp.
Referenced by GetDofSign().
int ParFiniteElementSpace::ltdof_size [private] |
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] |
int ParFiniteElementSpace::MyRank [private] |
Definition at line 21 of file pfespace.hpp.
Referenced by GetMyRank().
int ParFiniteElementSpace::NRanks [private] |
Definition at line 21 of file pfespace.hpp.
Referenced by GetNRanks().
HypreParMatrix* ParFiniteElementSpace::P [private] |
The matrix P (interpolation from true dof to dof).
Definition at line 51 of file pfespace.hpp.
Referenced by ~ParFiniteElementSpace().
ParMesh* ParFiniteElementSpace::pmesh [private] |
Array<int> ParFiniteElementSpace::tdof_nb_offsets [private] |
Offsets for the true dofs in neighbor processor in global numbering.
Definition at line 45 of file pfespace.hpp.
Array<int> ParFiniteElementSpace::tdof_offsets [private] |
Offsets for the true dofs in each processor in global numbering.
Definition at line 42 of file pfespace.hpp.
Referenced by GetTrueDofOffsets(), and LoseTrueDofOffsets().