Compare commits

...
2 changed files with 11 additions and 3 deletions
+1
View File
@@ -1875,6 +1875,7 @@ L2_FECollection::L2_FECollection(const int p, const int dim, const int btype,
L2_Elements[Geometry::CUBE]->SetMapType(map_type);
L2_Elements[Geometry::PRISM]->SetMapType(map_type);
// All trace element use the default Gauss-Legendre nodal points
Tr_Elements[Geometry::SEGMENT] = new L2_SegmentElement(p);
Tr_Elements[Geometry::TRIANGLE] = new L2_TriangleElement(p);
Tr_Elements[Geometry::SQUARE] = new L2_QuadrilateralElement(p);
+10 -3
View File
@@ -569,7 +569,7 @@ void Mesh::GetEdgeTransformation(int EdgeNo, IsoparametricTransformation *EdTr)
}
EdTr->SetFE(GetTransformationFEforElementType(Element::SEGMENT));
}
else
else // curved mesh
{
const FiniteElement *edge_el = Nodes->FESpace()->GetEdgeElement(EdgeNo);
if (edge_el)
@@ -587,9 +587,16 @@ void Mesh::GetEdgeTransformation(int EdgeNo, IsoparametricTransformation *EdTr)
}
EdTr->SetFE(edge_el);
}
else
else // L2 Nodes (e.g., periodic mesh), go through the volume of Elem1
{
MFEM_ABORT("Not implemented.");
// The element index is not used in the following
const FiniteElement *edge_el =
Nodes->FESpace()->GetTraceElement(-1, Geometry::SEGMENT);
// 'Transformation' is not used
Nodes->GetVectorValues(Transformation, edge_el->GetNodes(), pm);
EdTr->SetFE(edge_el);
}
}
EdTr->FinalizeTransformation();