instantiation and fixes of SIMD - function

This commit is contained in:
Joachim Schöberl 2016-07-07 17:58:13 +02:00
parent ffb5a8c8da
commit 416addf076

View File

@ -1973,7 +1973,7 @@ namespace netgen
{ {
case TET: case TET:
{ {
dshape = 0; dshape = T(0.0);
dshape(0,0) = 1; dshape(0,0) = 1;
dshape(1,1) = 1; dshape(1,1) = 1;
dshape(2,2) = 1; dshape(2,2) = 1;
@ -1984,7 +1984,7 @@ namespace netgen
} }
case PRISM: case PRISM:
{ {
dshape = 0; dshape = T(0.0);
dshape(0,0) = 1-p(2); dshape(0,0) = 1-p(2);
dshape(0,2) = -p(0); dshape(0,2) = -p(0);
dshape(1,1) = 1-p(2); dshape(1,1) = 1-p(2);
@ -2007,23 +2007,30 @@ namespace netgen
{ {
int np = GetNP(); int np = GetNP();
double eps = 1e-6; double eps = 1e-6;
Vector shaper(np), shapel(np); ArrayMem<T,100> mem(2*np);
TFlatVector<T> shaper(np, &mem[0]);
TFlatVector<T> shapel(np, &mem[np]);
// Vector shaper(np), shapel(np);
for (int i = 1; i <= 3; i++) for (int i = 0; i < 3; i++)
{ {
Point3d pr(p), pl(p); Point<3,T> pr(p), pl(p);
pr.X(i) += eps; pr(i) += eps;
pl.X(i) -= eps; pl(i) -= eps;
GetShapeNew (pr, shaper); GetShapeNew (pr, shaper);
GetShapeNew (pl, shapel); GetShapeNew (pl, shapel);
for (int j = 0; j < np; j++) for (int j = 0; j < np; j++)
dshape(j, i-1) = (shaper(j) - shapel(j)) / (2 * eps); dshape(j, i) = (shaper(j) - shapel(j)) / (2 * eps);
} }
} }
} }
} }
template void Element::GetDShapeNew<double> (const Point<3> &, MatrixFixWidth<3> &) const;
template void Element::GetDShapeNew<SIMD<double>> (const Point<3,SIMD<double>> &, MatrixFixWidth<3,SIMD<double>> &) const;
void Element :: void Element ::
GetPointMatrix (const T_POINTS & points, GetPointMatrix (const T_POINTS & points,
DenseMatrix & pmat) const DenseMatrix & pmat) const