MCPcopy Create free account
hub / github.com/NGSolve/ngsolve / GetSort

Method GetSort

comp/meshaccess.cpp:67–112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

65 virtual const void * GetMesh () const override { return mesh; }
66
67 virtual void GetSort (FlatArray<int> sort) const override
68 {
69 int vnums[12];
70
71 Ngs_Element nel = mesh -> GetElement<DIMS, (DIMS==DIMR)?VOL:BND> (elnr);
72 for (int j = 0; j < nel.vertices.Size(); j++)
73 vnums[j] = nel.vertices[j];
74
75 switch (eltype)
76 {
77 case ET_TRIG:
78 for (int i = 0; i < 3; i++) sort[i] = i;
79 if (vnums[sort[0]] > vnums[sort[1]]) Swap (sort[0], sort[1]);
80 if (vnums[sort[1]] > vnums[sort[2]]) Swap (sort[1], sort[2]);
81 if (vnums[sort[0]] > vnums[sort[1]]) Swap (sort[0], sort[1]);
82 // vnums[sort[0]] < vnums[sort[1]] < vnums[sort[2]]
83 break;
84
85 case ET_TET:
86 for (int i = 0; i < 4; i++) sort[i] = i;
87 if (vnums[sort[0]] > vnums[sort[1]]) Swap (sort[0], sort[1]);
88 if (vnums[sort[2]] > vnums[sort[3]]) Swap (sort[2], sort[3]);
89 if (vnums[sort[0]] > vnums[sort[2]]) Swap (sort[0], sort[2]);
90 if (vnums[sort[1]] > vnums[sort[3]]) Swap (sort[1], sort[3]);
91 if (vnums[sort[1]] > vnums[sort[2]]) Swap (sort[1], sort[2]);
92
93 // vnums[sort[0]] < vnums[sort[1]] < vnums[sort[2]] < vnums[sort[3]]
94 break;
95
96 case ET_PRISM:
97 for (int i = 0; i < 6; i++) sort[i] = i;
98
99 if (vnums[sort[0]] > vnums[sort[1]]) Swap (sort[0], sort[1]);
100 if (vnums[sort[1]] > vnums[sort[2]]) Swap (sort[1], sort[2]);
101 if (vnums[sort[0]] > vnums[sort[1]]) Swap (sort[0], sort[1]);
102
103 if (vnums[sort[3]] > vnums[sort[4]]) Swap (sort[3], sort[4]);
104 if (vnums[sort[4]] > vnums[sort[5]]) Swap (sort[4], sort[5]);
105 if (vnums[sort[3]] > vnums[sort[4]]) Swap (sort[3], sort[4]);
106 break;
107
108 default:
109 throw Exception ("undefined eltype in ElementTransformation::GetSort()\n");
110 }
111
112 }
113
114
115 virtual void CalcJacobian (const IntegrationPoint & ip,

Callers 5

EvaluateMethod · 0.80
EvaluateMethod · 0.80
ApplyElementMatrixMethod · 0.80
CalcFluxMethod · 0.80
IntegrationRuleTPMethod · 0.80

Calls 2

SwapFunction · 0.85
SizeMethod · 0.45

Tested by

no test coverage detected