Skip to content

Commit 1d039fb

Browse files
committed
Added support for correctly reading in degenerate elements from feb file.
1 parent 19a1cd5 commit 1d039fb

1 file changed

Lines changed: 25 additions & 1 deletion

File tree

FEBio/FEBioFormat4.cpp

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -720,12 +720,36 @@ void FEBioFormat4::ParseGeometryElements(FEBioInputModel::Part* part, XMLTag& ta
720720
FSElement& el = mesh.Element(i);
721721
el.SetType(elemType);
722722
el.m_gid = pid;
723+
int ne = el.Nodes();
723724
dom->AddElement(i);
725+
int n[FSElement::MAX_NODES] = { 0 };
724726
if ((tag == "e") || (tag == "elem"))
725727
{
726728
int id = tag.AttributeValue<int>("id", -1);
727729
el.m_nid = id;
728-
tag.value(el.m_node, el.Nodes());
730+
tag.value(n, ne);
731+
732+
// check for degenerate elements
733+
if (elemType == FE_HEX8)
734+
{
735+
if ((n[2] == n[3]) && (n[6] == n[7]))
736+
{
737+
el.SetType(FE_PENTA6);
738+
ne = 6;
739+
n[3] = n[4];
740+
n[4] = n[5];
741+
n[5] = n[6];
742+
}
743+
else if ((n[2] == n[3]) && (n[4] == n[5]) && (n[4] == n[6]) && (n[4] == n[7]))
744+
{
745+
el.SetType(FE_TET4);
746+
ne = 4;
747+
n[3] = n[4];
748+
}
749+
}
750+
751+
for (int j = 0; j < ne; ++j) el.m_node[j] = n[j];
752+
729753
elemSet.push_back(id);
730754
}
731755
else throw XMLReader::InvalidTag(tag);

0 commit comments

Comments
 (0)