Skip to content

Commit 475b82c

Browse files
committed
Alfeld split in 3D
1 parent 25c6161 commit 475b82c

File tree

4 files changed

+53
-3
lines changed

4 files changed

+53
-3
lines changed

libsrc/interface/nginterface_v2.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1178,7 +1178,7 @@ namespace netgen
11781178
{
11791179
NgLock meshlock (mesh->MajorMutex(), true);
11801180
Refinement & ref = const_cast<Refinement&> (mesh->GetGeometry()->GetRefinement());
1181-
::netgen::HPRefinement (*mesh, &ref, SPLIT_ALFELD, 1, 1.0/3.0, true, true);
1181+
::netgen::HPRefinement (*mesh, &ref, SPLIT_ALFELD, 1, 1.0 / (mesh->GetDimension()+1), true, true);
11821182
}
11831183

11841184

libsrc/meshing/hpref_tet.hpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4184,6 +4184,47 @@ HPRef_Struct reftet_3f_0e_0v =
41844184

41854185

41864186

4187+
4188+
// HP_TET_ALFELD
4189+
int reftet_Alfeld_splitedges[][3] =
4190+
{
4191+
{ 0, 0, 0 }
4192+
};
4193+
int reftet_Alfeld_splitfaces[][4] =
4194+
{
4195+
{ 0, 0, 0, 0 }
4196+
};
4197+
4198+
int reftet_Alfeld_splitelements[][5] =
4199+
{
4200+
{ 1, 2, 3, 4, 5},
4201+
{ 0 }
4202+
};
4203+
4204+
HPREF_ELEMENT_TYPE reftet_Alfeld_newelstypes[] =
4205+
{
4206+
HP_TET, HP_TET, HP_TET, HP_TET,
4207+
HP_NONE,
4208+
};
4209+
4210+
int reftet_Alfeld_newels[][8] =
4211+
{
4212+
{ 1, 2, 3, 5 },
4213+
{ 1, 4, 2, 5 },
4214+
{ 1, 3, 4, 5 },
4215+
{ 3, 2, 4, 5 }
4216+
};
4217+
HPRef_Struct reftet_Alfeld =
4218+
{
4219+
HP_TET,
4220+
reftet_Alfeld_splitedges,
4221+
reftet_Alfeld_splitfaces,
4222+
reftet_Alfeld_splitelements,
4223+
reftet_Alfeld_newelstypes,
4224+
reftet_Alfeld_newels
4225+
};
4226+
4227+
41874228
/*
41884229
41894230
*/

libsrc/meshing/hprefinement.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,10 @@ namespace netgen
429429
hps = &reftet_2f_1e_0vb; break;
430430
case HP_TET_3F_0E_0V:
431431
hps = &reftet_3f_0e_0v; break;
432+
433+
case HP_TET_ALFELD:
434+
hps = &reftet_Alfeld; break;
435+
432436

433437
case HP_PRISM:
434438
hps = &refprism; break;
@@ -1952,6 +1956,9 @@ namespace netgen
19521956
else
19531957
cout << "type = " << hpel.type << endl;
19541958
*/
1959+
if (split == SPLIT_ALFELD && mesh.GetDimension()==3)
1960+
hpel.type = HP_TET_ALFELD;
1961+
19551962
break;
19561963
}
19571964
case HP_PRISM:
@@ -1982,9 +1989,9 @@ namespace netgen
19821989
if (split == SPLIT_HP)
19831990
hpel.type = ClassifyTrig(hpel, edges, edgepoint_dom, cornerpoint, edgepoint,
19841991
faces, face_edges, surf_edges, facepoint, dim, fd);
1985-
else if (split == SPLIT_ALFELD)
1992+
else if (split == SPLIT_ALFELD && mesh.GetDimension()==2)
19861993
hpel.type = HP_TRIG_ALFELD;
1987-
else if (split == SPLIT_POWELL)
1994+
else if (split == SPLIT_POWELL && mesh.GetDimension()==2)
19881995
hpel.type = HP_TRIG_POWELL;
19891996

19901997
dd = 2;

libsrc/meshing/hprefinement.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,8 @@ enum HPREF_ELEMENT_TYPE {
189189

190190
HP_TET_3F_0E_0V = 700, // 3 singular faces, no additional points or edges NEW done
191191

192+
HP_TET_ALFELD,
193+
192194
HP_PRISM = 1000,
193195
HP_PRISM_SINGEDGE,
194196
HP_PRISM_SINGEDGE_V12,

0 commit comments

Comments
 (0)