fixes for tet10 and trig6 elements (is_curved, clipping-plane vis)

This commit is contained in:
Joachim Schöberl 2019-04-14 07:55:38 +02:00
parent 2e4836f0cf
commit e220a252d1
4 changed files with 21 additions and 5 deletions

View File

@ -2241,6 +2241,20 @@ namespace netgen
switch (el.GetType()) switch (el.GetType())
{ {
case TRIG6:
{
AutoDiff<2,T> lam3 = 1-x-y;
AutoDiff<2,T> lami[6] = { x * (2*x-1), y * (2*y-1), lam3 * (2*lam3-1),
4 * y * lam3, 4 * x * lam3, 4 * x * y };
for (int j = 0; j < 6; j++)
{
Point<3> p = mesh[el[j]];
for (int k = 0; k < DIM_SPACE; k++)
mapped_x[k] += p(k) * lami[j];
}
break;
}
case TRIG: case TRIG:
{ {
// if (info.order >= 2) return false; // not yet supported // if (info.order >= 2) return false; // not yet supported

View File

@ -1140,6 +1140,7 @@ namespace netgen
default: break; default: break;
cerr << "Element::SetType unknown type " << int(typ) << endl; cerr << "Element::SetType unknown type " << int(typ) << endl;
} }
is_curved = (np > 4);
} }

View File

@ -765,11 +765,12 @@ namespace netgen
void DoArchive (Archive & ar) void DoArchive (Archive & ar)
{ {
short _np, _typ; short _np, _typ;
bool _curved;
if (ar.Output()) if (ar.Output())
{ _np = np; _typ = typ; } { _np = np; _typ = typ; _curved = is_curved; }
ar & _np & _typ & index; ar & _np & _typ & index & _curved;
if (ar.Input()) if (ar.Input())
{ np = _np; typ = ELEMENT_TYPE(_typ); } { np = _np; typ = ELEMENT_TYPE(_typ); is_curved = _curved; }
for (size_t i = 0; i < np; i++) for (size_t i = 0; i < np; i++)
ar & pnum[i]; ar & pnum[i];
} }

View File

@ -4005,8 +4005,8 @@ namespace netgen
Array<int> compress(n3); Array<int> compress(n3);
NgProfiler::StartTimer (timer_vals); NgProfiler::StartTimer (timer_vals);
Array<double,PointIndex::BASE> vertval(mesh->GetNV()); Array<double,PointIndex::BASE> vertval(mesh->GetNP());
Array<bool,PointIndex::BASE> posval(mesh->GetNV()); Array<bool,PointIndex::BASE> posval(mesh->GetNP());
for (PointIndex pi = vertval.Begin(); pi < vertval.End(); pi++) for (PointIndex pi = vertval.Begin(); pi < vertval.End(); pi++)
{ {
Point<3> vert = (*mesh)[pi]; Point<3> vert = (*mesh)[pi];