|
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().
1.7.4