49     namespace LibUtilities
 
   55             for( 
int i=0; i<matA.GetRows(); ++i )
 
   64             for( 
int i=0; i<int(matA.GetRows()); ++i )
 
   81             int rows = matA.GetRows(), columns = matA.GetColumns();
 
   88             for( 
int j=0; j<columns; ++j )
 
   98             int rows = matA.GetRows(), columns = matA.GetColumns();
 
  101             for( 
int i=0; i<rows; ++i )
 
  103                 for( 
int j=0; j<columns; ++j )
 
  105                     matX(j,i) = matA(i,j);
 
  113             return x.num_elements();
 
  136             for( 
int i=0; i<size; ++i )
 
  148             for( 
int i=0; i<size; ++i )
 
  150                 z[i] = pow( x[i], p );
 
  160             s << setprecision(precision);
 
  161             int M = int(A.GetRows()), N = 
int(A.GetColumns());
 
  163             for(
int i=0; i<M; ++i )
 
  165                 for(
int j=0; j<N; ++j)
 
  168                     s << setw(7) << right << a;
 
  186             s << setprecision(precision) << 
"[ ";
 
  188             for(
int j=0; j<N; ++j )
 
  191                 s << setw(7) << right << x;
 
  204             return (degree+1) * (degree+2) / 2;
 
  209             int degree = int(
MakeRound((-3.0 + sqrt(1.0 + 8.0*nBasisFunctions))/2.0));
 
  212             ASSERTL1( 
GetTriNumPoints(degree) == nBasisFunctions, 
"The number of points defines an expansion of fractional degree, which is not supported." );
 
  218             return (degree+1) * (degree+2) * (degree+3) / 6;
 
  224             NekDouble eq = pow( 81.0 * nBasisFunc + 3.0 * sqrt(-3.0 + 729.0 * nBasisFunc * nBasisFunc), 1.0/3.0);
 
  225             int degree = int(
MakeRound(eq/3.0 + 1.0/eq - 1.0)) - 1;
 
  227             ASSERTL1( 
GetTetNumPoints(degree) == nBasisFunc, 
"The number of points defines an expansion of fractional degree, which is not supported." );
 
  233             return floor(x + 0.5);
 
  264             else if (degree == 1)
 
  266                 for(
int el=0; el<size; ++el)
 
  268                     y[el] = 0.5*(alpha - beta + (alpha + beta + 2.0) * x[el]);
 
  275                 NekDouble tmp = 2.0 * degm1 + alpha + beta;
 
  276                 NekDouble a1 = 2.0 * (degm1 + 1.0) * (degm1 + alpha + beta + 1.0) * tmp;
 
  277                 NekDouble a2 = (tmp + 1.0) * (alpha * alpha - beta * beta);
 
  278                 NekDouble a3 = tmp * (tmp + 1.0) * (tmp + 2.0);
 
  279                 NekDouble a4 = 2.0 * (degm1 + alpha) * (degm1 + beta) * (tmp + 2.0);
 
  286                 for (
int el=0; el<size; ++el)
 
  288                     y[el] = ((a2 + a3 * x[el]) * z1[el] - a4 * z2[el])/a1;
 
  294                 cerr << 
"Bad degree" << endl;
 
  309             else if (degree == 1)
 
  311                 y = 0.5*(alpha - beta + (alpha + beta + 2.0) * x);
 
  317                 NekDouble tmp = 2.0 * degm1 + alpha + beta;
 
  318                 NekDouble a1 = 2.0 * (degm1 + 1.0) * (degm1 + alpha + beta + 1.0) * tmp;
 
  319                 NekDouble a2 = (tmp + 1.0) * (alpha * alpha - beta * beta);
 
  320                 NekDouble a3 = tmp * (tmp + 1.0) * (tmp + 2.0);
 
  321                 NekDouble a4 = 2.0 * (degm1 + alpha) * (degm1 + beta) * (tmp + 2.0);
 
  328                 y = ((a2 + a3 * x) * z1 - a4 * z2)/a1;
 
  333                 cerr << 
"Bad degree" << endl;
 
  351                 for(
int i=2; i<=degree; ++i)
 
  363             else if( degree == 1 )
 
  382             for(
int el=0; el<size; ++el)
 
  384                 if( y[el] < 1.0 - 1e-16 )
 
  386                     eta_1[el] = 2.0*(1.0 + x[el]) / (1.0 - y[el]) - 1.0;
 
  398             int alpha = 2*p + 1; 
int beta = 0;
 
  402             NekDouble w = sqrt((2.0 * p + 1.0) * (p + q + 1.0) / 2.0); 
 
  404             for(
int el=0; el<size; ++el)
 
  406                 NekDouble zeta   = pow((1.0 - eta_2[el])/2.0, p);
 
  408                 phi[el]          = w * psi_a[el] * psi_b;
 
  423             for(
int el=0; el<size; ++el)
 
  425                 if( z[el] < -y[el] - numeric_limits<NekDouble>::epsilon() )
 
  427                     eta_1[el] = 2.0*(1.0 + x[el])/(-y[el]-z[el]) - 1.0;
 
  436             for(
int el=0; el<size; ++el)
 
  438                 if( z[el] < 1.0 - numeric_limits<NekDouble>::epsilon())
 
  440                     eta_2[el] = 2.0*(1.0 + y[el]) / (1.0 - z[el]) - 1.0;
 
  453             int alpha = 2*p + 1; 
int beta = 0;
 
  454             int alpha_r = 2*p + 2*q + 2; 
int beta_r = 0;
 
  461             for(
int el=0; el<size; ++el)
 
  463                 NekDouble zeta_1 = pow((1.0 - eta_2[el])/2.0, p);                
 
  464                 NekDouble zeta_2 = pow((1.0 - eta_3[el])/2.0, p+q);
 
  469                 phi[el]         = w * psi_a[el] * psi_b * psi_c;
 
  481             int cols = (degree + 1) * (degree + 2) * (degree + 3)/6;
 
  485             for(
int d=0, n=0; d<=degree; ++d)
 
  487                 for(
int p=0; p <= d; ++p)
 
  489                     for(
int q=0; q <= d - p; ++q, ++n)
 
  496                         for(
int i=0; i<rows; ++i)
 
  498                             matV(i,n) = columnVector[i];
 
  518             int cols = (degree + 1) * (degree + 2) / 2;
 
  522             for(
int d=0, n=0; d<=degree; ++d)
 
  524                 for(
int p=0; p<=d; ++p, ++n)
 
  530                     for(
int i=0; i<rows; ++i)
 
  532                             matV(i,n) = columnVector[i];
 
  606             return matT*invertMatrix;
 
  621             return matT*invertMatrix;
 
  634                 for(
int n=3; n<=degree; ++n)
 
  636                     a2 = ((2.0*n - 3.0)/(n - 1.0)) * 
Hadamard(x, a1) - (n - 2.0)/(n - 1.0) * a0;
 
  640                     b3 = (2.0*n - 1.0)/n * (
Hadamard(b2, x) + a2) - (n - 1.0)/n * b1;
 
  673                 for(
int el=0; el<size; ++el)
 
  675                     if(y[el] < 1.0 - 1e-16)
 
  677                         eta_1[el] = 2.0*(1.0 + x[el]) / (1.0 - y[el]) - 1.0;
 
  688                 int alpha = 2*p + 1; 
int beta = 0;
 
  691                 NekDouble w = sqrt((2.0*p + 1.0) * (p + q + 1.0) / 2.0); 
 
  693                 for(
int i=0; i<size; ++i)
 
  695                     NekDouble zeta = pow((1.0 -  eta_2[i])/2.0, (p-1.0));
 
  697                     psi_x[i] = w * psi_a_x[i] * psi_b;
 
  702                 for(
int i=0; i<int(x.
GetRows()); ++i)
 
  720                 for(
int el=0; el<size; ++el)
 
  722                     if( y[el] < -z[el] - numeric_limits<NekDouble>::epsilon())
 
  724                         eta_1[el] = 2.0*(1.0 + x[el])/(-y[el]-z[el]) - 1.0;
 
  732                 for(
int el=0; el<size; ++el)
 
  734                     if( z[el] < 1.0 - numeric_limits<NekDouble>::epsilon())
 
  736                         eta_2[el] = 2.0*(1.0 + y[el]) / (1.0 - z[el]) - 1.0;
 
  747                 int alpha = 2*p + 1; 
int beta = 0;
 
  748                 int alpha_r = 2*p + 2*q + 2; 
int beta_r = 0;
 
  753                 for(
int el=0; el<size; ++el)
 
  755                     NekDouble jacobi_b =  pow((1.0-eta_2[el])/2.0, p-1.0);
 
  756                     NekDouble jacobi_c =  pow((1.0-eta_3[el])/2.0,p+q-1.0);
 
  757                     NekDouble psi_b = jacobi_b * psi_bpq[el];
 
  758                     NekDouble psi_c = jacobi_c * psi_cpqr[el];
 
  759                     psi_x[el] = psi_a_x[el] * psi_b * psi_c;
 
  764                 for(
int el=0; el<int(x.
GetRows()); ++el)
 
  776             int cols = (degree + 1) * (degree + 2) * (degree + 3)/6;
 
  779             for(
int d=0, n=0; d<=degree; ++d)
 
  781                 for(
int p=0; p <= d; ++p)
 
  783                     for(
int q=0; q <= d - p; ++q, ++n)
 
  789                         for(
int i=0; i<rows; ++i)
 
  791                             matVx(i,n) = columnVector[i];
 
  824             int cols = (degree + 1) * (degree + 2)/2;
 
  826             for(
int d=0, n=0; d<=degree; ++d)
 
  828                 for(
int p=0; p<=d; ++p, ++n)
 
  834                     for(
int i=0; i<rows; ++i)
 
  836                         matVx(i, n) = columnVector[i];
 
  879                 y = 0.5 * (alpha + beta + degree + 1) * 
JacobiPoly(degree - 1, x, alpha + 1, beta + 1);
 
  895             for(
int el=0; el<size; ++el)
 
  897                 if( y[el] < -z[el] - numeric_limits<NekDouble>::epsilon())
 
  899                     eta_1[el]       = 2.0*(1.0 + x[el])/(-y[el]-z[el]) - 1.0;
 
  900                     eta_1_dy[el]    = 2.0*(1.0 + x[el])/((y[el]+z[el])*(y[el]+z[el]));
 
  910             for(
int el=0; el<size; ++el)
 
  912                 if( z[el] < 1.0 - numeric_limits<NekDouble>::epsilon())
 
  914                     eta_2[el]       = 2.0*(1.0 + y[el]) / (1.0 - z[el]) - 1.0;
 
  915                     eta_2_dy[el]    = 2.0/(1.0 - z[el]);
 
  929             int alpha_b = 2*p + 1; 
int beta_b = 0;
 
  930             int alpha_c = 2*p + 2*q + 2; 
int beta_c = 0;
 
  950                 for(
int i=0; i<size; ++i)
 
  952                     NekDouble jacobi_b_dy = -p / 2.0 * pow( (1.0 - eta_2[i])/2.0, p-1.0 );
 
  953                     secondComponentOfPsi_b_dy[i] = J_q[i] * jacobi_b_dy;
 
  958                 for(
int i=0; i<size; ++i)
 
  960                     secondComponentOfPsi_b_dy[i] = 0.0;
 
  966                                               + secondComponentOfPsi_b_dy, eta_2_dy );
 
  969             for(
int k=0; k<size; ++k)
 
  971                 psi_dy[k] = (psi_a_dy[k]*psi_b[k]*psi_c[k])  +  (psi_a[k]*psi_b_dy[k]*psi_c[k]);
 
  975             for(
int k=0; k<size; ++k)
 
  977                 if( z[k] >= 1.0 - numeric_limits<NekDouble>::epsilon() )
 
  981                         psi_dy[k] = ((2.0*p+q+2.0)*
JacobiPoly(q, eta_2[k], alpha_b, 1) - (p+q+2.0)*J_q[k]) *
 
  982                         psi_a[k] * pow( (1.0-eta_3[k])/2.0, p+q-1 ) / 2.0 * ((p+q+r+3.0)*J_r[k] - (2.0*p+2.0*q+r+3.0)*
JacobiPoly(r, eta_3[k], alpha_c, 1));
 
 1016             int cols = (degree + 1) * (degree + 2) * (degree + 3)/6;
 
 1019             for(
int d=0, n=0; d<=degree; ++d)
 
 1021                 for(
int p=0; p <= d; ++p)
 
 1023                     for(
int q=0; q <= d - p; ++q, ++n)
 
 1029                         for(
int i=0; i<rows; ++i)
 
 1031                             matVy(i,n) = columnVector[i];
 
 1072             for(
int el=0; el<size; ++el)
 
 1074                 if( y[el] < -z[el] - numeric_limits<NekDouble>::epsilon())
 
 1076                     eta_1[el]       = 2.0*(1.0 + x[el]) / (-y[el]-z[el]) - 1.0;
 
 1077                     eta_1_dz[el]    = 2.0*(1.0 + x[el]) / ((y[el]+z[el])*(y[el]+z[el]));
 
 1087             for(
int el=0; el<size; ++el)
 
 1089                 if( z[el] < 1.0 - numeric_limits<NekDouble>::epsilon())
 
 1091                     eta_2[el]       = 2.0*(1.0 + y[el]) / (1.0 - z[el])  -  1.0;
 
 1092                     eta_2_dz[el]    = 2.0*(1.0 + y[el]) / ((1.0 - z[el])*(1.0 - z[el]));
 
 1109             int alpha_b = 2*p + 1; 
int beta_b = 0;
 
 1110             int alpha_c = 2*p + 2*q + 2; 
int beta_c = 0;
 
 1129                 for(
int i=0; i<size; ++i)
 
 1131                     NekDouble jacobi_b_dz = -p / 2.0 * pow( (1.0 - eta_2[i])/2.0, p-1.0 );
 
 1132                     secondComponentOfPsi_b_dz[i] = J_q[i] * jacobi_b_dz;
 
 1138                 for(
int i=0; i<size; ++i)
 
 1140                     NekDouble jacobi_c_dz = -(p+q)/2.0*pow( (1.0 - eta_3[i])/2.0, p+q-1.0);
 
 1141                     secondComponentOfPsi_c_dz[i] = J_r[i] * jacobi_c_dz;
 
 1147                                               + secondComponentOfPsi_b_dz, eta_2_dz );
 
 1149                                               + secondComponentOfPsi_c_dz, eta_3_dz );
 
 1153             for(
int k=0; k<size; ++k)
 
 1155                psi_dz[k] = psi_a_dz[k] * psi_b[k] * psi_c[k]  +  psi_a[k] * psi_b_dz[k] * psi_c[k]  +  psi_a[k] * psi_b[k] * psi_c_dz[k];
 
 1164             int cols = (degree + 1) * (degree + 2) * (degree + 3)/6;
 
 1167             for(
int d=0, n=0; d<=degree; ++d)
 
 1169                 for(
int p=0; p <= d; ++p)
 
 1171                     for(
int q=0; q <= d - p; ++q, ++n)
 
 1177                         for(
int i=0; i<rows; ++i)
 
 1179                             matVz(i,n) = columnVector[i];
 
 1224             for(
int el=0; el<size; ++el)
 
 1226                 if(y[el] < 1.0 - 1e-16)
 
 1228                     eta_1[el] = 2.0*(1.0 + x[el]) / (1.0 - y[el]) - 1.0;
 
 1239             int alpha = 2*p + 1; 
int beta = 0;
 
 1252                 for(
int i=0; i<size; ++i)
 
 1255                      first_part_derivative[i] = (1.0 + eta_1[i])/2.0 * psi_a_y[i] * pow((1.0 - eta_2[i])/2.0, p-1.0) * psi_b[i];
 
 1256                      secondComponentOf_psi_b[i] = -p/2.0 * pow(((1.0 - eta_2[i]) / 2.0), p - 1.0) * psi_b[i];
 
 1262                 for(
int i=0; i<size; ++i)
 
 1264                     secondComponentOf_psi_b[i] = 0.0;
 
 1265                     first_part_derivative[i] = 0.0;
 
 1268             for(
int k=0; k<size; ++k)
 
 1270                      psi_y[k] = first_part_derivative[k] + psi_a[k] * ( pow((1.0 -  eta_2[k])/2.0, p) * psi_b_y[k] + secondComponentOf_psi_b[k] );
 
 1273             NekDouble w = sqrt((2.0*p + 1.0)*(p + q + 1.0)/2.0); 
 
 1283             int cols = (degree + 1) * (degree + 2)/2;
 
 1286             for(
int d=0, n=0; d<=degree; ++d)
 
 1288                 for(
int p=0; p<=d; ++p, ++n)
 
 1293                     for(
int i=0; i<rows; ++i)
 
 1295                         matVy(i, n) = columnVector[i];
 
 1330             int cols = (degree + 1)*(degree + 2)/2;
 
 1333             for(
int d=0, n=0; d <= degree; ++d)
 
 1335                 for(
int p=0; p <= d; ++p, ++n)
 
 1339                     for(
int i=0; i<rows; ++i)
 
 1341                             matV(i, n) = pow(x[i], p) * pow(y[i], q);
 
 1352             int cols = (degree + 1) * (degree + 2) * (degree + 3)/6;
 
 1356             for(
int d=0, n=0; d<=degree; ++d)
 
 1358                 for(
int p=0; p <= d; ++p)
 
 1360                     for(
int q=0; q <= d - p; ++q, ++n)
 
 1365                         for(
int i=0; i<rows; ++i)
 
 1367                             matV(i,n) = pow(x[i],p) * pow(y[i],q) * pow(z[i],r);
 
 1392             int cols = (degree + 1) * (degree + 2) / 2;
 
 1395             for(
int d=0, n=0; d <= degree; ++d)
 
 1397                 for(
int p=0; p <= d; ++p, ++n)
 
 1403                         for(
int i=0; i<rows; ++i)
 
 1405                             matVx(i, n) = p * pow(x[i], p-1.0) * pow(y[i],q);
 
 1410                         for(
int j=0; j<rows; ++j)
 
 1431             int cols = (degree + 1) * (degree + 2) * (degree + 3) / 6;
 
 1433             for(
int d=0, n=0; d<=degree; ++d)
 
 1435                 for(
int p=0; p <= d; ++p)
 
 1437                     for(
int q=0; q <= d - p; ++q, ++n)
 
 1443                             for(
int i=0; i<rows; ++i)
 
 1445                                 matVx(i,n) = p * pow(x[i],p-1.0) * pow(y[i],q) * pow(z[i],r);
 
 1449                             for(
int j=0; j<rows; ++j)
 
 1472             int cols = (degree + 1) * (degree + 2) * (degree + 3) / 6;
 
 1474             for(
int d=0, n=0; d<=degree; ++d)
 
 1476                 for(
int p=0; p <= d; ++p)
 
 1478                     for(
int q=0; q <= d - p; ++q, ++n)
 
 1484                             for(
int i=0; i<rows; ++i)
 
 1486                                 matVy(i,n) = q * pow(x[i],p) * pow(y[i],q-1.0) * pow(z[i],r);
 
 1491                             for(
int j=0; j<rows; ++j)
 
 1514             int cols = (degree + 1) * (degree + 2) * (degree + 3) / 6;
 
 1516              for(
int d=0, n=0; d<=degree; ++d)
 
 1518                 for(
int p=0; p <= d; ++p)
 
 1520                     for(
int q=0; q <= d - p; ++q, ++n)
 
 1526                             for(
int i=0; i<rows; ++i)
 
 1528                                 matVz(i,n) = r * pow(x[i],p) * pow(y[i],q) * pow(z[i],r-1.0);
 
 1532                             for(
int j=0; j<rows; ++j)
 
 1554             int cols = (degree + 1) * (degree + 2) / 2;
 
 1557             for(
int d=0, n=0; d <= degree; ++d)
 
 1559                 for(
int p=0; p <= d; ++p, ++n)
 
 1564                         for(
int i=0; i<rows; ++i)
 
 1566                             matVy(i, n) = q * pow(x[i], p) * pow(y[i], q-1.0);
 
 1571                         for(
int j=0; j<rows; ++j)
 
 1590             int cols = (degree + 1) * (degree + 2) / 2;
 
 1593             for(
int d=0, n=0; d <= degree; ++d)
 
 1595                 for(
int p=0; p <= d; ++p, ++n)
 
 1598                     int sp = 1 - 2 * (p % 2);
 
 1599                     int sq = 1 - 2 * (q % 2);
 
 1601                     integralMVandermonde(n) = 
NekDouble(sp * (p+1) + sq * (q+1) + sp * sq * (p+q+2)) / ((p+1) * (q+1) * (p+q+2));
 
 1604             return integralMVandermonde;
 
NekMatrix< NekDouble > GetVandermondeForYDerivative(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, int degree)
 
std::string MatrixToString(const NekMatrix< NekDouble > &A, int precision, NekDouble expSigFigs)
 
int GetTetNumPoints(int degree)
 
int GetDegree(int nBasisFunctions)
 
NekVector< NekDouble > TetYDerivative(int p, int q, int r, const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z)
 
NekVector< NekDouble > MakeTetQuadratureSystem(int nBasisFunctions)
 
NekMatrix< NekDouble > GetVandermondeForTetXDerivative(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z, int degree)
 
SharedNekMatrixPtr MakeVmatrixOfTet(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z)
 
NekMatrix< NekDouble > GetTetInterpolationMatrix(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z, const NekVector< NekDouble > &xi, const NekVector< NekDouble > &yi, const NekVector< NekDouble > &zi)
 
NekMatrix< NekDouble > GetTetVandermonde(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z, int degree)
 
int GetTetDegree(int nBasisFunc)
 
NekVector< NekDouble > Hadamard(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y)
 
NekMatrix< NekDouble > GetTetXDerivativeOfMonomialVandermonde(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z, int degree)
 
NekVector< NekDouble > DubinerPolyXDerivative(int p, int q, const NekVector< NekDouble > &x, const NekVector< NekDouble > &y)
 
NekVector< NekDouble > TetZDerivative(int p, int q, int r, const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z)
 
NekVector< NekDouble > MakeTetWeights(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z)
 
NekVector< NekDouble > MakeDubinerQuadratureSystem(int nBasisFunctions)
 
NekMatrix< NekDouble > GetVandermondeForXDerivative(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, int degree)
 
NekVector< NekDouble > LegendrePolyDerivative(int degree, const NekVector< NekDouble > &x)
 
NekMatrix< NekDouble > GetVandermonde(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, int degree)
 
NekVector< NekDouble > MakeQuadratureWeights(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y)
 
NekVector< T > GetColumn(const NekMatrix< T > &matA, int n)
 
NekMatrix< NekDouble > GetYDerivativeOfMonomialVandermonde(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, int degree)
 
NekVector< NekDouble > ToVector(const Array< OneD, const NekDouble > &x)
 
boost::shared_ptr< NekMatrix< DataType > > MatrixSharedPtrType
 
RawType< VectorType >::type Solve(const VectorType &b)
 
NekMatrix< NekDouble > GetTetZDerivativeOfMonomialVandermonde(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z, int degree)
 
NekVector< NekDouble > JacobiPoly(int degree, const NekVector< NekDouble > &x, NekDouble alpha, NekDouble beta)
 
NekMatrix< NekDouble > GetMonomialVandermonde(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, int degree)
 
NekVector< NekDouble > TetrahedralBasis(int p, int q, int r, const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z)
 
NekVector< NekDouble > DubinerPolyYDerivative(int p, int q, const NekVector< NekDouble > &x, const NekVector< NekDouble > &y)
 
NekMatrix< NekDouble > GetTranspose(const NekMatrix< NekDouble > &matA)
 
NekDouble MakeRound(NekDouble x)
 
NekVector< NekDouble > LegendrePoly(int degree, const NekVector< NekDouble > &x)
 
NekMatrix< NekDouble > GetVandermondeForTetYDerivative(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z, int degree)
 
int GetTriNumPoints(int degree)
 
std::string VectorToString(const NekVector< NekDouble > &v, int precision, NekDouble expSigFigs)
 
int GetSize(const Array< OneD, const NekDouble > &x)
 
NekVector< NekDouble > VectorPower(const NekVector< NekDouble > &x, NekDouble p)
 
NekMatrix< NekDouble > Invert(const NekMatrix< NekDouble > &matA)
 
Points< NekDouble >::MatrixSharedPtrType GetXDerivativeMatrix(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &xi, const NekVector< NekDouble > &yi)
 
NekVector< NekDouble > GetE(int rows, int n)
 
Points< NekDouble >::MatrixSharedPtrType GetTetZDerivativeMatrix(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z, const NekVector< NekDouble > &xi, const NekVector< NekDouble > &yi, const NekVector< NekDouble > &zi)
 
NekMatrix< NekDouble > GetXDerivativeOfMonomialVandermonde(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, int degree)
 
Array< OneD, NekDouble > ToArray(const NekVector< NekDouble > &x)
 
NekVector< NekDouble > DubinerPoly(int p, int q, const NekVector< NekDouble > &x, const NekVector< NekDouble > &y)
 
NekMatrix< NekDouble > & SetColumn(NekMatrix< NekDouble > &matA, int n, const NekVector< NekDouble > &x)
 
Points< NekDouble >::MatrixSharedPtrType GetTetXDerivativeMatrix(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z, const NekVector< NekDouble > &xi, const NekVector< NekDouble > &yi, const NekVector< NekDouble > &zi)
 
unsigned int GetRows() const 
 
NekMatrix< NekDouble > GetVandermondeForTetZDerivative(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z, int degree)
 
SharedNekMatrixPtr MakeVmatrixOfDubinerPolynomial(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y)
 
NekMatrix< NekDouble > GetInterpolationMatrix(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &xi, const NekVector< NekDouble > &yi)
 
NekVector< NekDouble > GetIntegralOfMonomialVandermonde(int degree)
 
NekMatrix< NekDouble > GetTetYDerivativeOfMonomialVandermonde(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z, int degree)
 
boost::shared_ptr< NekMatrix< NekDouble, StandardMatrixTag > > SharedNekMatrixPtr
 
RawType< VectorType >::type SolveTranspose(const VectorType &b)
 
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
 
Points< NekDouble >::MatrixSharedPtrType GetYDerivativeMatrix(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &xi, const NekVector< NekDouble > &yi)
 
Array< OneD, DataType > & GetPtr()
 
NekVector< NekDouble > TetXDerivative(int p, int q, int r, const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z)
 
NekVector< NekDouble > JacobiPolyDerivative(int degree, const NekVector< NekDouble > &x, int alpha, int beta)
 
Stores a set of points of datatype DataT, defined by a PointKey. 
 
Points< NekDouble >::MatrixSharedPtrType GetTetYDerivativeMatrix(const NekVector< NekDouble > &x, const NekVector< NekDouble > &y, const NekVector< NekDouble > &z, const NekVector< NekDouble > &xi, const NekVector< NekDouble > &yi, const NekVector< NekDouble > &zi)