working for simple 2D cases

This commit is contained in:
Robert W. Anderson
2017-12-05 15:32:22 -08:00
parent bc6b48421a
commit eba6d4805b
5 changed files with 714 additions and 518 deletions
-6
View File
@@ -477,12 +477,6 @@ void ParFiniteElementSpace::DivideByGroupSize(double *vec)
GroupCommunicator *ParFiniteElementSpace::ScalarGroupComm()
{
if (Nonconforming())
{
// MFEM_WARNING("Not implemented for NC mesh.");
return NULL;
}
GroupCommunicator *gc = new GroupCommunicator(GetGroupTopo());
if (NURBSext)
{
+2 -2
View File
@@ -740,13 +740,13 @@ FaceElementTransformations *Mesh::GetBdrFaceTransformations(int BdrElemNo)
return tr;
}
void Mesh::GetFaceElements(int Face, int *Elem1, int *Elem2)
void Mesh::GetFaceElements(int Face, int *Elem1, int *Elem2) const
{
*Elem1 = faces_info[Face].Elem1No;
*Elem2 = faces_info[Face].Elem2No;
}
void Mesh::GetFaceInfos(int Face, int *Inf1, int *Inf2)
void Mesh::GetFaceInfos(int Face, int *Inf1, int *Inf2) const
{
*Inf1 = faces_info[Face].Elem1Inf;
*Inf2 = faces_info[Face].Elem2Inf;
+2 -2
View File
@@ -832,8 +832,8 @@ public:
{
return (faces_info[FaceNo].Elem2No >= 0);
}
void GetFaceElements (int Face, int *Elem1, int *Elem2);
void GetFaceInfos (int Face, int *Inf1, int *Inf2);
void GetFaceElements (int Face, int *Elem1, int *Elem2) const;
void GetFaceInfos (int Face, int *Inf1, int *Inf2) const;
int GetFaceGeometryType(int Face) const;
int GetFaceElementType(int Face) const;
+659 -508
View File
File diff suppressed because it is too large Load Diff
+51
View File
@@ -88,6 +88,57 @@ protected:
bool WantSkipSharedMaster(const NCMesh::Master &master) const;
int FindSharedFaces(const Mesh &mesh, const int* partition,
Array<int>& face_group,
ListOfIntegerSets& groups);
int FindSharedEdges(const Mesh &mesh, const int* partition,
Table*& edge_element, ListOfIntegerSets& groups);
int FindSharedVertices(const Mesh &mesh, const int *partition,
Table* vertex_element,
ListOfIntegerSets& groups);
void BuildFaceGroup(int ngroups, const Array<int>& face_group,
Table& group_sface);
void BuildEdgeGroup(int ngroups, const Table& edge_element,
Table& group_sedge);
void BuildVertexGroup(int ngroups, const Table& vert_element,
Table& group_svert);
void BuildSharedFaceElems(int nfaces, const Mesh& mesh,
int* partitioning,
STable3D* faces_tbl,
Array<int>& face_group,
Array<int>& vert_global_local);
void BuildSharedEdgeElems(int nedges, Mesh& mesh,
Array<int>& vert_global_local,
Table* edge_element);
void BuildSharedVertMapping(int nvert, Table* vert_element,
Array<int>& vert_global_local);
int BuildVertGlobalLocal(Mesh& mesh, int* partitioning,
Array<int>& vert_global_local);
/// fills out partitioned Mesh::vertices
int BuildLocalVertices(const Mesh& global_mesh, const int* partitioning,
Array<int>& vert_global_local);
/// fills out partitioned Mesh::elements
int BuildLocalElements(const Mesh& global_mesh, const int* partitioning,
const Array<int>& vert_global_local);
/// fills out partitioned Mesh::boundary
int BuildLocalBoundary(const Mesh& global_mesh, const int* partitioning,
const Array<int>& vert_global_local,
Array<bool>& activeBdrElem,
Table*& edge_element);
public:
/** Copy constructor. Performs a deep copy of (almost) all data, so that the
source mesh can be modified (e.g. deleted, refined) without affecting the