15 #include "../config/config.hpp"
20 #include "../fem/fespace.hpp"
21 #include "../fem/gridfunc.hpp"
22 #include "../fem/pgridfunc.hpp"
23 #include "../fem/coefficient.hpp"
24 #include "../fem/bilininteg.hpp"
37 #include <apfNumbering.h>
38 #include <apfDynamicVector.h>
50 void ReadSCORECMesh(apf::Mesh2* apf_mesh, apf::Numbering* v_num_loc,
55 PumiMesh(apf::Mesh2* apf_mesh,
int generate_edges = 0,
int refine = 1,
56 bool fix_orientation =
true);
60 void Load(apf::Mesh2* apf_mesh,
int generate_edges = 0,
int refine = 1,
61 bool fix_orientation =
true);
74 apf::Numbering* v_num_loc;
79 int refine = 1,
bool fix_orientation =
true);
100 apf::NewArray<apf::Vector3>& pumi_xi,
101 bool checkOrientation =
true);
110 apf::MeshEntity* tet,
112 apf::NewArray<apf::Vector3>& pumi_xi,
113 bool checkOrientation =
true);
118 apf::Field* vel_field,
119 apf::Field* pr_field,
120 apf::Field* vel_mag_field);
125 apf::Field* pr_field,
126 apf::Field* pr_mag_field);
131 apf::Field* vel_field,
132 apf::Field* vel_mag_field);
137 apf::Field* nedelec_field);
157 const int mesh_order);
165 #endif // MFEM_USE_MPI
166 #endif // MFEM_USE_PUMI
void UpdateMesh(const ParMesh *AdaptedpMesh)
Update the mesh after adaptation.
Class for an integration rule - an Array of IntegrationPoint.
Class for grid function - Vector with associated FE space.
PumiMesh(apf::Mesh2 *apf_mesh, int generate_edges=0, int refine=1, bool fix_orientation=true)
Generate an MFEM mesh from a PUMI mesh.
Class for PUMI grid functions.
Base class for PUMI meshes.
void FieldMFEMtoPUMI(apf::Mesh2 *apf_mesh, ParGridFunction *grid_vel, ParGridFunction *grid_pr, apf::Field *vel_field, apf::Field *pr_field, apf::Field *vel_mag_field)
Transfer field from MFEM mesh to PUMI mesh [Mixed].
Class for PUMI parallel meshes.
int RotationPUMItoMFEM(apf::Mesh2 *apf_mesh, apf::MeshEntity *tet, int elemId)
Returns the PUMI-to-MFEM permutation (aka rotation, aka orientation)
virtual void Load(std::istream &input, int generate_edges=0, int refine=1, bool fix_orientation=true)
IntegrationRule ParentXisPUMItoMFEM(apf::Mesh2 *apf_mesh, apf::MeshEntity *tet, int elemId, apf::NewArray< apf::Vector3 > &pumi_xi, bool checkOrientation=true)
Convert the parent coordinate from PUMI to MFEM.
void CountBoundaryEntity(apf::Mesh2 *apf_mesh, const int BcDim, int &NumBC)
void VectorFieldMFEMtoPUMI(apf::Mesh2 *apf_mesh, ParGridFunction *grid_vel, apf::Field *vel_field, apf::Field *vel_mag_field)
Transfer field from MFEM mesh to PUMI mesh [Vector].
void FieldPUMItoMFEM(apf::Mesh2 *apf_mesh, apf::Field *field, ParGridFunction *grid)
Transfer a field from PUMI to MFEM after mesh adapt [Scalar and Vector].
virtual ~PumiMesh()
Destroys Mesh.
void Load(apf::Mesh2 *apf_mesh, int generate_edges=0, int refine=1, bool fix_orientation=true)
Load a PUMI mesh (following the steps in the MFEM Load function).
void ParentXisMFEMtoPUMI(apf::Mesh2 *apf_mesh, int elemId, apf::MeshEntity *tet, const IntegrationRule &mfem_xi, apf::NewArray< apf::Vector3 > &pumi_xi, bool checkOrientation=true)
Convert the parent coordinate from MFEM to PUMI.
ParPumiMesh(MPI_Comm comm, apf::Mesh2 *apf_mesh, int refine=1, bool fix_orientation=true)
Build a parallel MFEM mesh from a parallel PUMI mesh.
void NedelecFieldMFEMtoPUMI(apf::Mesh2 *apf_mesh, ParGridFunction *gf, apf::Field *nedelec_field)
Transfer Nedelec field from MFEM mesh to PUMI mesh [Vector].
void ReadSCORECMesh(apf::Mesh2 *apf_mesh, apf::Numbering *v_num_loc, const int curved)
Class for parallel grid function.
GridFunctionPumi(Mesh *m, apf::Mesh2 *PumiM, apf::Numbering *v_num_loc, const int mesh_order)
Construct a GridFunction from a PUMI mesh.
Class for parallel meshes.
virtual ~GridFunctionPumi()
Destroy the grid function.