mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-24 04:50:34 +05:00
mesh.SecondOrder : fix Segment mapping
This commit is contained in:
parent
04a31eeed3
commit
95301e11ba
@ -43,7 +43,7 @@ namespace netgen
|
||||
Point (const Point<D,T2> & p2)
|
||||
{ for (int i = 0; i < D; i++) x[i] = p2(i); }
|
||||
|
||||
explicit Point (const Vec<D> & v)
|
||||
explicit Point (const Vec<D,T> & v)
|
||||
{ for (int i = 0; i < D; i++) x[i] = v(i); }
|
||||
|
||||
|
||||
|
@ -78,6 +78,15 @@ namespace netgen
|
||||
return res;
|
||||
}
|
||||
|
||||
template <int D, int SW>
|
||||
inline Vec<D, SIMD<double,SW>> operator* (SIMD<double,SW> s, Vec<D,double> b)
|
||||
{
|
||||
Vec<D,SIMD<double,SW>> res;
|
||||
for (int i = 0; i < D; i++)
|
||||
res(i) = s * b(i);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
template <int D>
|
||||
inline double operator* (Vec<D> a, Vec<D> b)
|
||||
|
@ -1429,6 +1429,31 @@ namespace netgen
|
||||
info.order = order;
|
||||
info.ndof = info.nv = 2;
|
||||
|
||||
if (order == 1)
|
||||
{
|
||||
auto & seg = mesh.LineSegment(elnr);
|
||||
if (seg.GetNP() == 2)
|
||||
{
|
||||
if (x)
|
||||
*x = Point<3,T>((1-xi) * Vec<3>(mesh[seg.PNums()[0]]) + xi * Vec<3>(mesh[seg.PNums()[1]]));
|
||||
if (dxdxi)
|
||||
*dxdxi = Vec<3>(mesh[seg.PNums()[1]])-Vec<3>(mesh[seg.PNums()[0]]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (x)
|
||||
{
|
||||
*x = Point<3,T>(2*(xi-1)*(xi-0.5) * Vec<3>(mesh[seg.PNums()[1]])
|
||||
+ 4*xi*(1-xi) * Vec<3>(mesh[seg.PNums()[2]])
|
||||
+ 2*xi*(xi-0.5) * Vec<3>(mesh[seg.PNums()[0]]));
|
||||
}
|
||||
if (dxdxi)
|
||||
*dxdxi = T(1.0) * (Vec<3>(mesh[seg.PNums()[1]])-Vec<3>(mesh[seg.PNums()[0]]))
|
||||
+ (4-8*xi)*Vec<3>(mesh[seg.PNums()[2]]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (info.order > 1)
|
||||
{
|
||||
const MeshTopology & top = mesh.GetTopology();
|
||||
|
@ -110,6 +110,7 @@ namespace netgen
|
||||
EDGEPOINT);
|
||||
between.Set (i2, el[2]);
|
||||
}
|
||||
el.SetCurved(true);
|
||||
}
|
||||
|
||||
// refine surface elements
|
||||
|
Loading…
Reference in New Issue
Block a user