Rename ArrayMem to NgArrayMem

This commit is contained in:
Matthias Hochsteger 2019-07-09 18:00:12 +02:00
parent e1d4cc0410
commit c5acbacadb
21 changed files with 92 additions and 92 deletions

View File

@ -1148,7 +1148,7 @@ namespace netgen
//return;
int pinds[6];
ArrayMem<int,500> surfused(GetNSurf());
NgArrayMem<int,500> surfused(GetNSurf());
ReducePrimitiveIterator rpi(box);
UnReducePrimitiveIterator urpi;

View File

@ -211,7 +211,7 @@ namespace netgen
bool surecrossp = 0, sureexp = 0; // sure ...
// static NgArray<int> locsurf; // attention: array is static
ArrayMem<int,100> locsurf;
NgArrayMem<int,100> locsurf;
// static int cntbox = 0;
// cntbox++;

View File

@ -458,7 +458,7 @@ namespace netgen
template <class T, int S>
class ArrayMem : public NgArray<T>
class NgArrayMem : public NgArray<T>
{
using NgArray<T>::size;
using NgArray<T>::data;
@ -469,7 +469,7 @@ namespace netgen
// double mem[(S*sizeof(T)+7) / 8];
public:
/// Generate array of logical and physical size asize
explicit ArrayMem(size_t asize = 0)
explicit NgArrayMem(size_t asize = 0)
: NgArray<T> (S, static_cast<T*> (static_cast<void*>(&mem[0])))
{
size = asize;
@ -481,14 +481,14 @@ namespace netgen
// SetSize (asize);
}
ArrayMem & operator= (const T & val)
NgArrayMem & operator= (const T & val)
{
NgArray<T>::operator= (val);
return *this;
}
/// array copy
ArrayMem & operator= (const NgFlatArray<T> & a2)
NgArrayMem & operator= (const NgFlatArray<T> & a2)
{
this->SetSize (a2.Size());
for (size_t i = 0; i < size; i++)

View File

@ -1704,7 +1704,7 @@ namespace netgen
{
// static NgArray<inttn6> stack(10000);
// stack.SetSize (10000);
ArrayMem<inttn6,10000> stack(10000);
NgArrayMem<inttn6,10000> stack(10000);
pis.SetSize(0);
stack[0].node = root;
@ -1924,7 +1924,7 @@ namespace netgen
{
// static NgArray<inttn6> stack(10000);
// stack.SetSize (10000);
ArrayMem<inttn<dim,T>,10000> stack(10000);
NgArrayMem<inttn<dim,T>,10000> stack(10000);
pis.SetSize(0);
stack[0].node = root;

View File

@ -1581,7 +1581,7 @@ int Ng_GetSurfaceElement_Face (int selnr, int * orient)
int Ng_GetFace_Vertices (int fnr, int * vert)
{
const MeshTopology & topology = mesh->GetTopology();
ArrayMem<int,4> ia;
NgArrayMem<int,4> ia;
topology.GetFaceVertices (fnr, ia);
for (int i = 0; i < ia.Size(); i++)
vert[i] = ia[i];
@ -1593,7 +1593,7 @@ int Ng_GetFace_Vertices (int fnr, int * vert)
int Ng_GetFace_Edges (int fnr, int * edge)
{
const MeshTopology & topology = mesh->GetTopology();
ArrayMem<int,4> ia;
NgArrayMem<int,4> ia;
topology.GetFaceEdges (fnr, ia);
for (int i = 0; i < ia.Size(); i++)
edge[i] = ia[i];
@ -1928,7 +1928,7 @@ int Ng_IsRunning()
int Ng_GetVertex_Elements( int vnr, int* elems )
{
const MeshTopology& topology = mesh->GetTopology();
ArrayMem<ElementIndex,4> indexArray;
NgArrayMem<ElementIndex,4> indexArray;
topology.GetVertexElements( vnr, indexArray );
for( int i=0; i<indexArray.Size(); i++ )
@ -1945,7 +1945,7 @@ int Ng_GetVertex_SurfaceElements( int vnr, int* elems )
case 3:
{
const MeshTopology& topology = mesh->GetTopology();
ArrayMem<SurfaceElementIndex,4> indexArray;
NgArrayMem<SurfaceElementIndex,4> indexArray;
topology.GetVertexSurfaceElements( vnr, indexArray );
for( int i=0; i<indexArray.Size(); i++ )
@ -1977,7 +1977,7 @@ int Ng_GetVertex_SurfaceElements( int vnr, int* elems )
int Ng_GetVertex_NElements( int vnr )
{
const MeshTopology& topology = mesh->GetTopology();
ArrayMem<ElementIndex,4> indexArray;
NgArrayMem<ElementIndex,4> indexArray;
topology.GetVertexElements( vnr, indexArray );
return indexArray.Size();
@ -1991,7 +1991,7 @@ int Ng_GetVertex_NSurfaceElements( int vnr )
case 3:
{
const MeshTopology& topology = mesh->GetTopology();
ArrayMem<SurfaceElementIndex,4> indexArray;
NgArrayMem<SurfaceElementIndex,4> indexArray;
topology.GetVertexSurfaceElements( vnr, indexArray );
return indexArray.Size();
}

View File

@ -756,7 +756,7 @@ namespace netgen
Ng_BufferMS<int,4> Ngx_Mesh::GetFaceEdges (int fnr) const
{
const MeshTopology & topology = mesh->GetTopology();
ArrayMem<int,4> ia;
NgArrayMem<int,4> ia;
topology.GetFaceEdges (fnr+1, ia);
Ng_BufferMS<int,4> res(ia.Size());
for (size_t i = 0; i < ia.Size(); i++)

View File

@ -290,8 +290,8 @@ namespace netgen
loclines.Append(lines[baselineindex].L());
lindex.Append(baselineindex);
ArrayMem<int, 1000> nearlines(0);
ArrayMem<int, 1000> nearpoints(0);
NgArrayMem<int, 1000> nearlines(0);
NgArrayMem<int, 1000> nearpoints(0);
// dominating costs !!
linesearchtree.GetIntersecting (p0 - Vec3d(xh, xh, xh),

View File

@ -845,7 +845,7 @@ int AdFront3 :: SameSide (const Point<3> & lp1, const Point<3> & lp2,
pmin.SetToMin (lp2);
pmax.SetToMax (lp2);
ArrayMem<int, 100> aprif;
NgArrayMem<int, 100> aprif;
aprif.SetSize(0);
if (!testfaces)

View File

@ -141,7 +141,7 @@ namespace netgen
(tm, nse,
[&] (size_t begin, size_t end)
{
ArrayMem<int,9> nnums, ednums;
NgArrayMem<int,9> nnums, ednums;
for (int i = begin+1; i <= end; i++)
{
const Element2d & el = mesh.SurfaceElement(i);

View File

@ -1216,7 +1216,7 @@ namespace netgen
// if (el.GetType() == TRIG && order >= 3)
if (top.GetFaceType(facenr+1) == TRIG && order >= 3)
{
ArrayMem<int, 3> verts(3);
NgArrayMem<int, 3> verts(3);
top.GetFaceVertices (facenr+1, verts);
int fnums[] = { 0, 1, 2 };
@ -1467,10 +1467,10 @@ namespace netgen
info.ndof += edgeorder[info.edgenr]-1;
}
ArrayMem<Vec<3>,100> coefs(info.ndof);
ArrayMem<T, 100> shapes_mem(info.ndof);
NgArrayMem<Vec<3>,100> coefs(info.ndof);
NgArrayMem<T, 100> shapes_mem(info.ndof);
TFlatVector<T> shapes(info.ndof, &shapes_mem[0]);
ArrayMem<T, 200> dshapes_mem(info.ndof);
NgArrayMem<T, 200> dshapes_mem(info.ndof);
TFlatVector<T> dshapes(info.ndof, &dshapes_mem[0]);
@ -1778,10 +1778,10 @@ namespace netgen
}
ArrayMem<Vec<3>,100> coefs(info.ndof);
ArrayMem<double, 100> shapes_mem(info.ndof);
NgArrayMem<Vec<3>,100> coefs(info.ndof);
NgArrayMem<double, 100> shapes_mem(info.ndof);
TFlatVector<double> shapes(info.ndof, &shapes_mem[0]);
ArrayMem<double, 200> dshapes_mem(2*info.ndof);
NgArrayMem<double, 200> dshapes_mem(2*info.ndof);
MatrixFixWidth<2> dshapes(info.ndof, &dshapes_mem[0]);
@ -2175,7 +2175,7 @@ namespace netgen
{ -1, 1 } };
// double hshapes[20], hdshapes[20];
ArrayMem<T, 20> hshapes(order+1), hdshapes(order+1);
NgArrayMem<T, 20> hshapes(order+1), hdshapes(order+1);
int ii = 4;
const ELEMENT_EDGE * edges = MeshTopology::GetEdges1 (QUAD);
@ -2588,9 +2588,9 @@ namespace netgen
}
}
ArrayMem<double,100> mem(info.ndof);
NgArrayMem<double,100> mem(info.ndof);
TFlatVector<double> shapes(info.ndof, &mem[0]);
ArrayMem<double,100> dshapes_mem(info.ndof*3);
NgArrayMem<double,100> dshapes_mem(info.ndof*3);
MatrixFixWidth<3> dshapes(info.ndof, &dshapes_mem[0]);
CalcElementShapes (info, xi, shapes);
@ -3248,7 +3248,7 @@ namespace netgen
vi1 = vi1 % 3;
vi2 = vi2 % 3;
ArrayMem<T,20> shapei_mem(order+1);
NgArrayMem<T,20> shapei_mem(order+1);
TFlatVector<T> shapei(order+1, &shapei_mem[0]);
CalcScaledEdgeShapeDxDt<3> (order, lami[vi1]-lami[vi2], lami[vi1]+lami[vi2], &dshapes(ii,0) );
CalcScaledEdgeShape(order, lami[vi1]-lami[vi2], lami[vi1]+lami[vi2], &shapei(0) );
@ -3331,8 +3331,8 @@ namespace netgen
if(el[fav[1]] > el[fav[2]]) swap(fav[1],fav[2]);
if(el[fav[0]] > el[fav[1]]) swap(fav[0],fav[1]);
ArrayMem<T,2*20> dshapei_mem(ndf);
ArrayMem<T,20> shapei_mem(ndf);
NgArrayMem<T,2*20> dshapei_mem(ndf);
NgArrayMem<T,20> shapei_mem(ndf);
MatrixFixWidth<2,T> dshapei(ndf, &dshapei_mem[0]);
TFlatVector<T> shapei(ndf, &shapei_mem[0]);
@ -3472,7 +3472,7 @@ namespace netgen
int vi1 = (edges[i][0]-1), vi2 = (edges[i][1]-1);
if (el[vi1] > el[vi2]) swap (vi1, vi2);
ArrayMem<T,20> shapei_mem(eorder+1);
NgArrayMem<T,20> shapei_mem(eorder+1);
TFlatVector<T> shapei(eorder+1,&shapei_mem[0]);
CalcScaledEdgeShapeDxDt<3> (eorder, sigma[vi1]-sigma[vi2], 1-z, &dshapes(ii,0) );
CalcScaledEdgeShape(eorder, sigma[vi1]-sigma[vi2], 1-z, &shapei(0) );
@ -3633,7 +3633,7 @@ namespace netgen
{ -1, 1, 1 }
};
ArrayMem<T, 20> hshapes(order+1), hdshapes(order+1);
NgArrayMem<T, 20> hshapes(order+1), hdshapes(order+1);
int ii = 8;
const ELEMENT_EDGE * edges = MeshTopology::GetEdges1 (HEX);
@ -4062,7 +4062,7 @@ namespace netgen
T lami[4];
TFlatVector<T> vlami(4, lami);
ArrayMem<Point<2,T>, 50> coarse_xi (npts);
NgArrayMem<Point<2,T>, 50> coarse_xi (npts);
for (int pi = 0; pi < npts; pi++)
{
@ -4216,13 +4216,13 @@ namespace netgen
// THESE LAST LINES ARE COPIED FROM CurvedElements::CalcSurfaceTransformation
ArrayMem<Vec<DIM_SPACE>,100> coefs(info.ndof);
NgArrayMem<Vec<DIM_SPACE>,100> coefs(info.ndof);
GetCoefficients (info, coefs);
ArrayMem<T, 100> shapes_mem(info.ndof);
NgArrayMem<T, 100> shapes_mem(info.ndof);
TFlatVector<T> shapes(info.ndof, &shapes_mem[0]);
ArrayMem<T, 100> dshapes_mem(info.ndof*2);
NgArrayMem<T, 100> dshapes_mem(info.ndof*2);
MatrixFixWidth<2,T> dshapes(info.ndof,&shapes_mem[0]);
@ -4368,7 +4368,7 @@ namespace netgen
FlatVector vlami(8, lami);
ArrayMem<Point<3>, 50> coarse_xi (xi->Size());
NgArrayMem<Point<3>, 50> coarse_xi (xi->Size());
for (int pi = 0; pi < xi->Size(); pi++)
{
@ -4527,7 +4527,7 @@ namespace netgen
TFlatVector<T> vlami(8, &lami[0]);
ArrayMem<T, 100> coarse_xi (3*n);
NgArrayMem<T, 100> coarse_xi (3*n);
for (int pi = 0; pi < n; pi++)
{
@ -4645,12 +4645,12 @@ namespace netgen
}
if (ok) return;
ArrayMem<Vec<3>,100> coefs(info.ndof);
ArrayMem<T,500> shapes_mem(info.ndof);
NgArrayMem<Vec<3>,100> coefs(info.ndof);
NgArrayMem<T,500> shapes_mem(info.ndof);
TFlatVector<T> shapes(info.ndof, &shapes_mem[0]);
ArrayMem<T,1500> dshapes_mem(3*info.ndof);
NgArrayMem<T,1500> dshapes_mem(3*info.ndof);
MatrixFixWidth<3,T> dshapes(info.ndof, &dshapes_mem[0]);
// NgProfiler::StopTimer (timer3);

View File

@ -224,7 +224,7 @@ private:
int order;
int nv;
int ndof;
ArrayMem<int,4> edgenrs;
NgArrayMem<int,4> edgenrs;
int facenr;
};

View File

@ -1182,8 +1182,8 @@ void MeshOptimize3d :: SwapImprove (Mesh & mesh, OPTIMIZEGOAL goal,
{
Element hel(TET);
ArrayMem<PointIndex, 50> suroundpts(nsuround);
ArrayMem<bool, 50> tetused(nsuround);
NgArrayMem<PointIndex, 50> suroundpts(nsuround);
NgArrayMem<bool, 50> tetused(nsuround);
Element & elem = mesh[hasbothpoints[0]];

View File

@ -449,9 +449,9 @@ namespace netgen
Box3d boxcfc(c,fc);
ArrayMem<int, 100> faceused;
ArrayMem<int, 100> faceused2;
ArrayMem<int, 100> facenotused;
NgArrayMem<int, 100> faceused;
NgArrayMem<int, 100> faceused2;
NgArrayMem<int, 100> facenotused;
/*
faceused.SetSize(0);
@ -606,9 +606,9 @@ namespace netgen
Box3d fboxc(fc-fv, fc+fv);
Box3d boxcfc(c,fc);
ArrayMem<int, 100> faceused;
ArrayMem<int, 100> faceused2;
ArrayMem<int, 100> facenotused;
NgArrayMem<int, 100> faceused;
NgArrayMem<int, 100> faceused2;
NgArrayMem<int, 100> facenotused;
for (int j = 0; j < nfinbox; j++)
{

View File

@ -2146,7 +2146,7 @@ namespace netgen
{
int np = GetNP();
double eps = 1e-6;
ArrayMem<T,100> mem(2*np);
NgArrayMem<T,100> mem(2*np);
TFlatVector<T> shaper(np, &mem[0]);
TFlatVector<T> shapel(np, &mem[np]);
// Vector shaper(np), shapel(np);

View File

@ -201,7 +201,7 @@ int vnetrule :: IsTriangleInFreeZone (const Point3d & p1,
int infreeset, cannot = 0;
ArrayMem<int,3> pfi(3), pfi2(3);
NgArrayMem<int,3> pfi(3), pfi2(3);
// convert from local index to freeset index
int i, j;
@ -868,7 +868,7 @@ int vnetrule :: IsQuadInFreeZone (const Point3d & p1,
int infreeset, cannot = 0;
ArrayMem<int,4> pfi(4), pfi2(4);
NgArrayMem<int,4> pfi(4), pfi2(4);
// convert from local index to freeset index
int i, j;
@ -931,7 +931,7 @@ int vnetrule :: IsQuadInFreeSet (const Point3d & p1, const Point3d & p2,
return 1;
}
ArrayMem<int,3> pi3(3);
NgArrayMem<int,3> pi3(3);
int res;
pi3.Elem(1) = pi.Get(1);

View File

@ -192,8 +192,8 @@ namespace netgen
case TRIG:
case TRIG6:
{
ArrayMem<PointIndex,6> pnums(6);
ArrayMem<PointGeomInfo,6> pgis(6);
NgArrayMem<PointIndex,6> pnums(6);
NgArrayMem<PointGeomInfo,6> pgis(6);
static int betw[3][3] =
{ { 2, 3, 4 },
@ -275,8 +275,8 @@ namespace netgen
case QUAD6:
case QUAD8:
{
ArrayMem<PointIndex,9> pnums(9);
ArrayMem<PointGeomInfo,9> pgis(9);
NgArrayMem<PointIndex,9> pnums(9);
NgArrayMem<PointGeomInfo,9> pgis(9);
static int betw[5][3] =
{ { 1, 2, 5 },
@ -367,7 +367,7 @@ namespace netgen
case TET:
case TET10:
{
ArrayMem<PointIndex,10> pnums(10);
NgArrayMem<PointIndex,10> pnums(10);
static int betw[6][3] =
{ { 1, 2, 5 },
{ 1, 3, 6 },
@ -458,7 +458,7 @@ namespace netgen
}
case HEX:
{
ArrayMem<PointIndex,27> pnums(27);
NgArrayMem<PointIndex,27> pnums(27);
static int betw[13][3] =
{ { 1, 2, 9 },
{ 3, 4, 10 },
@ -584,7 +584,7 @@ namespace netgen
}
case PRISM:
{
ArrayMem<PointIndex,18> pnums(18);
NgArrayMem<PointIndex,18> pnums(18);
static int betw[9][3] =
{ { 3, 1, 7 },
{ 1, 2, 8 },

View File

@ -66,15 +66,15 @@ namespace netgen
int noldll = llines1.Size();
ArrayMem<int,100> pused(maxlegalpoint), lused(maxlegalline);
ArrayMem<int,100> pnearness(noldlp), lnearness(llines1.Size());
NgArrayMem<int,100> pused(maxlegalpoint), lused(maxlegalline);
NgArrayMem<int,100> pnearness(noldlp), lnearness(llines1.Size());
ArrayMem<int, 20> pmap, pfixed, lmap;
NgArrayMem<int, 20> pmap, pfixed, lmap;
ArrayMem<Point2d,100> tempnewpoints;
ArrayMem<INDEX_2,100> tempnewlines;
ArrayMem<int,100> tempdellines;
ArrayMem<Element2d,100> tempelements;
NgArrayMem<Point2d,100> tempnewpoints;
NgArrayMem<INDEX_2,100> tempnewlines;
NgArrayMem<int,100> tempdellines;
NgArrayMem<Element2d,100> tempelements;
elements.SetSize (0);

View File

@ -79,19 +79,19 @@ int Meshing3 :: ApplyRules
NgArray<int, PointIndex::BASE> pused; // point is already mapped, number of uses
ArrayMem<char,100> fused; // face is already mapped
ArrayMem<PointIndex,100> pmap; // map of reference point to local point
ArrayMem<bool,100> pfixed; // point mapped by face-map
ArrayMem<int,100> fmapi; // face in reference is mapped to face nr ...
ArrayMem<int,100> fmapr; // face in reference is rotated to map
ArrayMem<Point3d,100> transfreezone; // transformed free-zone
NgArrayMem<char,100> fused; // face is already mapped
NgArrayMem<PointIndex,100> pmap; // map of reference point to local point
NgArrayMem<bool,100> pfixed; // point mapped by face-map
NgArrayMem<int,100> fmapi; // face in reference is mapped to face nr ...
NgArrayMem<int,100> fmapr; // face in reference is rotated to map
NgArrayMem<Point3d,100> transfreezone; // transformed free-zone
INDEX_2_CLOSED_HASHTABLE<int> ledges(100); // edges in local environment
ArrayMem<Point3d,100> tempnewpoints;
NgArrayMem<Point3d,100> tempnewpoints;
NgArray<MiniElement2d> tempnewfaces;
ArrayMem<int,100> tempdelfaces;
NgArrayMem<int,100> tempdelfaces;
NgArray<Element> tempelements;
ArrayMem<Box3d,100> triboxes; // bounding boxes of local faces
NgArrayMem<Box3d,100> triboxes; // bounding boxes of local faces
NgArray<int, PointIndex::BASE> pnearness;
NgArray<int> fnearness;

View File

@ -1800,8 +1800,8 @@ namespace netgen
void MeshTopology :: GetFaceEdges (int fnr, NgArray<int> & fedges, bool withorientation) const
{
ArrayMem<int,4> pi(4);
ArrayMem<int,12> eledges;
NgArrayMem<int,4> pi(4);
NgArrayMem<int,12> eledges;
fedges.SetSize (0);
GetFaceVertices(fnr, pi);
@ -1812,7 +1812,7 @@ namespace netgen
// e3 = op e1(f2,f3)
// e4 = op e2(f1,f3)
/* ArrayMem<int,4> fp;
/* NgArrayMem<int,4> fp;
fp[0] = pi[0];
for(int k=1;k<pi.Size();k++)
if(fp[k]>fp[0]) swap(fp[k],fp[0]);

View File

@ -1308,7 +1308,7 @@ int STLBoundary :: TestSegChartNV(const Point3d & p1, const Point3d& p2,
{
// NgProfiler::RegionTimer reg(timerquick);
ArrayMem<INDEX_2,100> pis;
NgArrayMem<INDEX_2,100> pis;
searchtree -> GetIntersecting (box2d.PMin(), box2d.PMax(), pis);
for (auto i2 : pis)

View File

@ -1852,8 +1852,8 @@ namespace netgen
CurvedElements & curv = mesh->GetCurvedElements();
int n = 1 << subdivisions;
ArrayMem<Point<2>, 65> ptsloc(n+1);
ArrayMem<Point<3>, 65> ptsglob(n+1);
NgArrayMem<Point<2>, 65> ptsloc(n+1);
NgArrayMem<Point<3>, 65> ptsglob(n+1);
double trigpts[3][2] = { { 0, 0 }, { 0, 1 }, { 1, 0} };
double trigvecs[3][2] = { { 1, 0 }, { 0, -1 }, { -1, 1} };
@ -2829,7 +2829,7 @@ namespace netgen
if (comp == 0)
{
ArrayMem<double,20> values(data->components);
NgArrayMem<double,20> values(data->components);
ok = GetValues (data, elnr, xref, x, dxdxref, &values[0]);
val = ExtractValue (data, 0, &values[0]);
@ -3000,7 +3000,7 @@ namespace netgen
if (comp == 0)
{
ArrayMem<double,20> values(data->components);
NgArrayMem<double,20> values(data->components);
ok = GetValues (data, elnr, lam1, lam2, lam3, &values[0]);
val = ExtractValue (data, 0, &values[0]);
return ok;
@ -3383,7 +3383,7 @@ namespace netgen
{
case SOL_VIRTUALFUNCTION:
{
ArrayMem<double,20> values(data->components);
NgArrayMem<double,20> values(data->components);
bool ok;
ok = data->solclass->GetSurfValue (selnr, facetnr, lam1, lam2, &values[0]);
@ -3413,7 +3413,7 @@ namespace netgen
if (comp == 0)
{
val = 0;
ArrayMem<double,20> values(data->components);
NgArrayMem<double,20> values(data->components);
ok = GetSurfValues (data, selnr, facetnr, lam1, lam2, &values[0]);
val = ExtractValue (data, 0, &values[0]);
return ok;
@ -3425,7 +3425,7 @@ namespace netgen
case SOL_VIRTUALFUNCTION:
{
ArrayMem<double,20> values(data->components);
NgArrayMem<double,20> values(data->components);
bool ok;
ok = data->solclass->GetSurfValue (selnr, facetnr, lam1, lam2, &values[0]);
@ -3655,7 +3655,7 @@ namespace netgen
if (comp == 0)
{
val = 0;
ArrayMem<double,20> values(data->components);
NgArrayMem<double,20> values(data->components);
ok = GetSurfValues (data, selnr, facetnr, xref, x, dxdxref, &values[0]);
val = ExtractValue (data, 0, &values[0]);
return ok;
@ -3666,7 +3666,7 @@ namespace netgen
{
case SOL_VIRTUALFUNCTION:
{
ArrayMem<double,20> values(data->components);
NgArrayMem<double,20> values(data->components);
bool ok;
// ok = data->solclass->GetSurfValue (selnr, lam1, lam2, &values[0]);