45     namespace LocalRegions
 
   64             StdExpansion  (Ba.GetNumModes()*Bb.GetNumModes()*Bc.GetNumModes(),3,Ba,Bb,Bc),
 
   65             StdExpansion3D(Ba.GetNumModes()*Bb.GetNumModes()*Bc.GetNumModes(),Ba,Bb,Bc),
 
   70                 std::bind(&
HexExp::CreateMatrix, this, std::placeholders::_1),
 
   71                 std::string(
"HexExpMatrix")),
 
   72             m_staticCondMatrixManager(
 
   73                 std::bind(&
HexExp::CreateStaticCondMatrix, this, std::placeholders::_1),
 
   74                 std::string(
"HexExpStaticCondMatrix"))
 
   90             m_matrixManager(T.m_matrixManager),
 
   91             m_staticCondMatrixManager(T.m_staticCondMatrixManager)
 
  120             int    nquad0 = 
m_base[0]->GetNumPoints();
 
  121             int    nquad1 = 
m_base[1]->GetNumPoints();
 
  122             int    nquad2 = 
m_base[2]->GetNumPoints();
 
  141             returnVal = StdHexExp::v_Integral(tmp);
 
  166             int    nquad0 = 
m_base[0]->GetNumPoints();
 
  167             int    nquad1 = 
m_base[1]->GetNumPoints();
 
  168             int    nquad2 = 
m_base[2]->GetNumPoints();
 
  169             int    ntot   = nquad0 * nquad1 * nquad2;
 
  177             StdHexExp::v_PhysDeriv(inarray, Diff0, Diff1, Diff2);
 
  183                     Vmath::Vmul (ntot,&df[0][0],1,&Diff0[0],1, &out_d0[0], 1);
 
  184                     Vmath::Vvtvp(ntot,&df[1][0],1,&Diff1[0],1, &out_d0[0], 1,
 
  186                     Vmath::Vvtvp(ntot,&df[2][0],1,&Diff2[0],1, &out_d0[0], 1,
 
  192                     Vmath::Vmul (ntot,&df[3][0],1,&Diff0[0],1, &out_d1[0], 1);
 
  193                     Vmath::Vvtvp(ntot,&df[4][0],1,&Diff1[0],1, &out_d1[0], 1,
 
  195                     Vmath::Vvtvp(ntot,&df[5][0],1,&Diff2[0],1, &out_d1[0], 1,
 
  201                     Vmath::Vmul (ntot,&df[6][0],1,&Diff0[0],1, &out_d2[0], 1);
 
  202                     Vmath::Vvtvp(ntot,&df[7][0],1,&Diff1[0],1, &out_d2[0], 1,
 
  204                     Vmath::Vvtvp(ntot,&df[8][0],1,&Diff2[0],1, &out_d2[0], 1,
 
  212                     Vmath::Smul (ntot,df[0][0],&Diff0[0],1, &out_d0[0], 1);
 
  213                     Blas::Daxpy (ntot,df[1][0],&Diff1[0],1, &out_d0[0], 1);
 
  214                     Blas::Daxpy (ntot,df[2][0],&Diff2[0],1, &out_d0[0], 1);
 
  219                     Vmath::Smul (ntot,df[3][0],&Diff0[0],1, &out_d1[0], 1);
 
  220                     Blas::Daxpy (ntot,df[4][0],&Diff1[0],1, &out_d1[0], 1);
 
  221                     Blas::Daxpy (ntot,df[5][0],&Diff2[0],1, &out_d1[0], 1);
 
  226                     Vmath::Smul (ntot,df[6][0],&Diff0[0],1, &out_d2[0], 1);
 
  227                     Blas::Daxpy (ntot,df[7][0],&Diff1[0],1, &out_d2[0], 1);
 
  228                     Blas::Daxpy (ntot,df[8][0],&Diff2[0],1, &out_d2[0], 1);
 
  270                     ASSERTL1(
false,
"input dir is out of range");
 
  284             int    nquad0   = 
m_base[0]->GetNumPoints();
 
  285             int    nquad1   = 
m_base[1]->GetNumPoints();
 
  286             int    nquad2   = 
m_base[2]->GetNumPoints();
 
  287             int    ntot     = nquad0 * nquad1 * nquad2;
 
  295             StdHexExp::v_PhysDeriv(inarray, Diff0, Diff1, Diff2);
 
  329             if( 
m_base[0]->Collocation() && 
m_base[1]->Collocation()
 
  330                     && 
m_base[2]->Collocation())
 
  405                 bool multiplybyweights)
 
  407             int    nquad0 = 
m_base[0]->GetNumPoints();
 
  408             int    nquad1 = 
m_base[1]->GetNumPoints();
 
  409             int    nquad2 = 
m_base[2]->GetNumPoints();
 
  410             int    order0 = 
m_base[0]->GetNumModes();
 
  411             int    order1 = 
m_base[1]->GetNumModes();
 
  414                                        order0*order1*nquad2);
 
  416             if(multiplybyweights)
 
  432                                             inarray,outarray,wsp,
 
  472             ASSERTL1((dir==0)||(dir==1)||(dir==2),
"Invalid direction.");
 
  474             const int nq0 = 
m_base[0]->GetNumPoints();
 
  475             const int nq1 = 
m_base[1]->GetNumPoints();
 
  476             const int nq2 = 
m_base[2]->GetNumPoints();
 
  477             const int nq  = nq0*nq1*nq2;
 
  478             const int nm0 = 
m_base[0]->GetNumModes();
 
  479             const int nm1 = 
m_base[1]->GetNumModes();
 
  524             ASSERTL1((dir==0)||(dir==1)||(dir==2),
"Invalid direction.");
 
  526             const int nq0 = 
m_base[0]->GetNumPoints();
 
  527             const int nq1 = 
m_base[1]->GetNumPoints();
 
  528             const int nq2 = 
m_base[2]->GetNumPoints();
 
  529             const int nq  = nq0*nq1*nq2;
 
  544                 Vmath::Vmul(nq,&df[3*dir][0],  1,tmp1.get(),1,tmp2.get(),1);
 
  545                 Vmath::Vmul(nq,&df[3*dir+1][0],1,tmp1.get(),1,tmp3.get(),1);
 
  546                 Vmath::Vmul(nq,&df[3*dir+2][0],1,tmp1.get(),1,tmp4.get(),1);
 
  550                 Vmath::Smul(nq, df[3*dir][0],  tmp1.get(),1,tmp2.get(), 1);
 
  551                 Vmath::Smul(nq, df[3*dir+1][0],tmp1.get(),1,tmp3.get(), 1);
 
  552                 Vmath::Smul(nq, df[3*dir+2][0],tmp1.get(),1,tmp4.get(), 1);
 
  584                     ASSERTL1(
false,
"input dir is out of range");
 
  593                         m_ncoeffs, inarray.get(), 1, 0.0, outarray.get(), 1);
 
  609             const int nq0 = 
m_base[0]->GetNumPoints();
 
  610             const int nq1 = 
m_base[1]->GetNumPoints();
 
  611             const int nq2 = 
m_base[2]->GetNumPoints();
 
  612             const int nq  = nq0*nq1*nq2;
 
  613             const int nm0 = 
m_base[0]->GetNumModes();
 
  614             const int nm1 = 
m_base[1]->GetNumModes();
 
  632             Vmath::Vmul(nq,&dfdir[0][0],1,tmp1.get(),1,tmp2.get(),1);
 
  633             Vmath::Vmul(nq,&dfdir[1][0],1,tmp1.get(),1,tmp3.get(),1);
 
  634             Vmath::Vmul(nq,&dfdir[2][0],1,tmp1.get(),1,tmp4.get(),1);
 
  675             return StdHexExp::v_PhysEvaluate(Lcoord,physvals);
 
  685             m_geom->GetLocCoords(coord,Lcoord);
 
  686             return StdHexExp::v_PhysEvaluate(Lcoord, physvals);
 
  694                                     m_base[2]->GetBasisKey());
 
  701                            2, 
m_base[0]->GetPointsKey());
 
  703                            2, 
m_base[1]->GetPointsKey());
 
  705                            2, 
m_base[2]->GetPointsKey());
 
  724             ASSERTL1(Lcoords[0] >= -1.0 && Lcoords[0] <= 1.0 &&
 
  725                      Lcoords[1] >= -1.0 && Lcoords[1] <= 1.0 &&
 
  726                      Lcoords[2] >= -1.0 && Lcoords[2] <= 1.0,
 
  727                      "Local coordinates are not in region [-1,1]");
 
  731             for(i = 0; i < 
m_geom->GetCoordim(); ++i)
 
  733                 coords[i] = 
m_geom->GetCoord(i,Lcoords);
 
  758                 const std::vector<unsigned int > &nummodes,
 
  759                 const int mode_offset,
 
  761                 std::vector<LibUtilities::BasisType> &fromType)
 
  763             int data_order0 = nummodes[mode_offset];
 
  764             int fillorder0  = min(
m_base[0]->GetNumModes(),data_order0);
 
  765             int data_order1 = nummodes[mode_offset+1];
 
  766             int order1      = 
m_base[1]->GetNumModes();
 
  767             int fillorder1  = min(order1,data_order1);
 
  768             int data_order2 = nummodes[mode_offset+2];
 
  769             int order2      = 
m_base[2]->GetNumModes();
 
  770             int fillorder2  = min(order2,data_order2);
 
  782                         fromType[0], data_order0, 
m_base[0]->GetPointsKey()),
 
  784                         fromType[1], data_order1, 
m_base[1]->GetPointsKey()),
 
  786                         fromType[2], data_order2, 
m_base[2]->GetPointsKey()));
 
  789                                               m_base[2]->GetBasisKey());
 
  812                              "Extraction routine not set up for this basis");
 
  815                              "Extraction routine not set up for this basis");
 
  818                     for(j = 0; j < fillorder0; ++j)
 
  820                         for(i = 0; i < fillorder1; ++i)
 
  829                         for(i = fillorder1; i < data_order1; ++i)
 
  834                         for(i = fillorder1; i < order1; ++i)
 
  862                 ASSERTL0(
false, 
"basis is either not set up or not " 
  880             int nquad0 = 
m_base[0]->GetNumPoints();
 
  881             int nquad1 = 
m_base[1]->GetNumPoints();
 
  882             int nquad2 = 
m_base[2]->GetNumPoints();
 
  894                     if(outarray.size()!=nq0*nq1)
 
  899                     for (
int i = 0; i < nquad0*nquad1; ++i)
 
  909                     if(outarray.size()!=nq0*nq1)
 
  915                     for (
int k = 0; k < nquad2; k++)
 
  917                         for(
int i = 0; i < nquad0; ++i)
 
  919                             outarray[k*nquad0 + i] = nquad0*nquad1*k + i;
 
  928                     if(outarray.size()!=nq0*nq1)
 
  933                     for (
int i = 0; i < nquad1*nquad2; i++)
 
  935                         outarray[i] = nquad0-1 + i*nquad0;
 
  943                     if(outarray.size()!=nq0*nq1)
 
  948                     for (
int k = 0; k < nquad2; k++)
 
  950                         for (
int i = 0; i < nquad0; i++)
 
  952                             outarray[k*nquad0 + i] = (nquad0*(nquad1-1))+(k*nquad0*nquad1) + i;
 
  961                     if(outarray.size()!=nq0*nq1)
 
  966                     for (
int i = 0; i < nquad1*nquad2; i++)
 
  968                         outarray[i] = i*nquad0;
 
  975                     if(outarray.size()!=nq0*nq1)
 
  980                     for (
int i = 0; i < nquad0*nquad1; i++)
 
  982                         outarray[i] = nquad0*nquad1*(nquad2-1) + i;
 
  987                     ASSERTL0(
false,
"face value (> 5) is out of range");
 
 1001             for(i = 0; i < ptsKeys.size(); ++i)
 
 1024             for (i = 0; i < vCoordDim; ++i)
 
 1029             size_t nqb = nq_face;
 
 1042                     for(i = 0; i < vCoordDim; ++i)
 
 1044                         normal[i][0] = -df[3*i+2][0];
 
 1048                     for(i = 0; i < vCoordDim; ++i)
 
 1050                         normal[i][0] = -df[3*i+1][0];
 
 1054                     for(i = 0; i < vCoordDim; ++i)
 
 1056                         normal[i][0] = df[3*i][0];
 
 1060                     for(i = 0; i < vCoordDim; ++i)
 
 1062                         normal[i][0] = df[3*i+1][0];
 
 1066                     for(i = 0; i < vCoordDim; ++i)
 
 1068                         normal[i][0] = -df[3*i][0];
 
 1072                     for(i = 0; i < vCoordDim; ++i)
 
 1074                         normal[i][0] = df[3*i+2][0];
 
 1078                     ASSERTL0(
false,
"face is out of range (edge < 5)");
 
 1083                 for(i =0 ; i < vCoordDim; ++i)
 
 1085                     fac += normal[i][0]*normal[i][0];
 
 1087                 fac = 1.0/
sqrt(fac);
 
 1090                 for (i = 0; i < vCoordDim; ++i)
 
 1092                     Vmath::Fill(nq_face, fac*normal[i][0], normal[i], 1);
 
 1100                 int nqe0 = ptsKeys[0].GetNumPoints();
 
 1101                 int nqe1 = ptsKeys[0].GetNumPoints();
 
 1102                 int nqe2 = ptsKeys[0].GetNumPoints();
 
 1103                 int nqe01 = nqe0*nqe1;
 
 1104                 int nqe02 = nqe0*nqe2;
 
 1105                 int nqe12 = nqe1*nqe2;
 
 1108                 if (face == 0 || face == 5)
 
 1112                 else if (face == 1 || face == 3)
 
 1133                         for(j = 0; j < nqe; ++j)
 
 1135                             normals[j]       = -df[2][j]*jac[j];
 
 1136                             normals[nqe+j]   = -df[5][j]*jac[j];
 
 1137                             normals[2*nqe+j] = -df[8][j]*jac[j];
 
 1138                             faceJac[j]       = jac[j];
 
 1141                         points0 = ptsKeys[0];
 
 1142                         points1 = ptsKeys[1];
 
 1145                         for (j = 0; j < nqe0; ++j)
 
 1147                             for(k = 0; k < nqe2; ++k)
 
 1149                                 int idx = j + nqe01*k;
 
 1150                                 normals[j+k*nqe0]       = -df[1][idx]*jac[idx];
 
 1151                                 normals[nqe+j+k*nqe0]   = -df[4][idx]*jac[idx];
 
 1152                                 normals[2*nqe+j+k*nqe0] = -df[7][idx]*jac[idx];
 
 1153                                 faceJac[j+k*nqe0]       = jac[idx];
 
 1156                         points0 = ptsKeys[0];
 
 1157                         points1 = ptsKeys[2];
 
 1160                         for (j = 0; j < nqe1; ++j)
 
 1162                             for(k = 0; k < nqe2; ++k)
 
 1164                                 int idx = nqe0-1+nqe0*j+nqe01*k;
 
 1165                                 normals[j+k*nqe1]       = df[0][idx]*jac[idx];
 
 1166                                 normals[nqe+j+k*nqe1]   = df[3][idx]*jac[idx];
 
 1167                                 normals[2*nqe+j+k*nqe1] = df[6][idx]*jac[idx];
 
 1168                                 faceJac[j+k*nqe1]       = jac[idx];
 
 1171                         points0 = ptsKeys[1];
 
 1172                         points1 = ptsKeys[2];
 
 1175                         for (j = 0; j < nqe0; ++j)
 
 1177                             for(k = 0; k < nqe2; ++k)
 
 1179                                 int idx = nqe0*(nqe1-1)+j+nqe01*k;
 
 1180                                 normals[j+k*nqe0]       = df[1][idx]*jac[idx];
 
 1181                                 normals[nqe+j+k*nqe0]   = df[4][idx]*jac[idx];
 
 1182                                 normals[2*nqe+j+k*nqe0] = df[7][idx]*jac[idx];
 
 1183                                 faceJac[j+k*nqe0]       = jac[idx];
 
 1186                         points0 = ptsKeys[0];
 
 1187                         points1 = ptsKeys[2];
 
 1190                         for (j = 0; j < nqe1; ++j)
 
 1192                             for(k = 0; k < nqe2; ++k)
 
 1194                                 int idx = j*nqe0+nqe01*k;
 
 1195                                 normals[j+k*nqe1]       = -df[0][idx]*jac[idx];
 
 1196                                 normals[nqe+j+k*nqe1]   = -df[3][idx]*jac[idx];
 
 1197                                 normals[2*nqe+j+k*nqe1] = -df[6][idx]*jac[idx];
 
 1198                                 faceJac[j+k*nqe1]       = jac[idx];
 
 1201                         points0 = ptsKeys[1];
 
 1202                         points1 = ptsKeys[2];
 
 1205                         for (j = 0; j < nqe01; ++j)
 
 1207                             int idx = j+nqe01*(nqe2-1);
 
 1208                             normals[j]       = df[2][idx]*jac[idx];
 
 1209                             normals[nqe+j]   = df[5][idx]*jac[idx];
 
 1210                             normals[2*nqe+j] = df[8][idx]*jac[idx];
 
 1211                             faceJac[j]       = jac[idx];
 
 1213                         points0 = ptsKeys[0];
 
 1214                         points1 = ptsKeys[1];
 
 1217                     ASSERTL0(
false,
"face is out of range (face < 5)");
 
 1237                     Vmath::Vmul(nq_face,work,1,normal[i],1,normal[i],1);
 
 1244                     Vmath::Vvtvp(nq_face,normal[i],1, normal[i],1,work,1,work,1);
 
 1254                     Vmath::Vmul(nq_face,normal[i],1,work,1,normal[i],1);
 
 1267             StdExpansion::MassMatrixOp_MatFree(inarray,outarray,mkey);
 
 1285             StdExpansion::LaplacianMatrixOp_MatFree(k1,k2,inarray,outarray,
 
 1295             StdExpansion::WeakDerivMatrixOp_MatFree(i,inarray,outarray,mkey);
 
 1303             StdExpansion::WeakDirectionalDerivMatrixOp_MatFree(inarray,
 
 1312             StdExpansion::MassLevelCurvatureMatrixOp_MatFree(inarray,
 
 1358             if(inarray.get() == outarray.get())
 
 1364                             m_ncoeffs, tmp.get(), 1, 0.0, outarray.get(), 1);
 
 1369                             m_ncoeffs, inarray.get(), 1, 0.0, outarray.get(), 1);
 
 1389             int n_coeffs = inarray.size();
 
 1390             int nmodes0  = 
m_base[0]->GetNumModes();
 
 1391             int nmodes1  = 
m_base[1]->GetNumModes();
 
 1392             int nmodes2  = 
m_base[2]->GetNumModes();
 
 1393             int numMax   = nmodes0;
 
 1423                 b0,      b1,      b2,      coeff_tmp2,
 
 1424                 bortho0, bortho1, bortho2, coeff);
 
 1428             int cnt = 0, cnt2 = 0;
 
 1430             for (
int u = 0; u < numMin+1; ++u)
 
 1432                 for (
int i = 0; i < numMin; ++i)
 
 1435                                  tmp  = coeff+cnt+cnt2,1,
 
 1436                                  tmp2 = coeff_tmp1+cnt,1);
 
 1442                              tmp3 = coeff_tmp1,1,
 
 1443                              tmp4 = coeff_tmp2+cnt2,1);
 
 1445                 cnt2 = u*nmodes0*nmodes1;
 
 1449                 bortho0, bortho1, bortho2, coeff_tmp2,
 
 1450                 b0,      b1,      b2,      outarray);
 
 1476             StdHexExp::v_SVVLaplacianFilter( array, mkey);
 
 1502                 returnval = StdHexExp::v_GenMatrix(mkey);
 
 1519             return tmp->GetStdMatrix(mkey);
 
 1529                      "Geometric information is not set up");
 
 1622                         int rows = deriv0.GetRows();
 
 1623                         int cols = deriv1.GetColumns();
 
 1628                         (*WeakDeriv) = df[3*dir  ][0]*deriv0
 
 1629                                      + df[3*dir+1][0]*deriv1
 
 1630                                      + df[3*dir+2][0]*deriv2;
 
 1676                         int rows = lap00.GetRows();
 
 1677                         int cols = lap00.GetColumns();
 
 1682                         (*lap)  = gmat[0][0]*lap00
 
 1687                                 + gmat[7][0]*(lap12 + 
Transpose(lap12));
 
 1704                     int rows = LapMat.GetRows();
 
 1705                     int cols = LapMat.GetColumns();
 
 1710                     (*helm) = LapMat + lambda*MassMat;
 
 1830             unsigned int nint = (
unsigned int)(
m_ncoeffs - nbdry);
 
 1831             unsigned int exp_size[] = {nbdry,nint};
 
 1832             unsigned int nblks = 2;
 
 1843                 goto UseLocRegionsMatrix;
 
 1850                     goto UseLocRegionsMatrix;
 
 1855                     factor = mat->Scale();
 
 1856                     goto UseStdRegionsMatrix;
 
 1859             UseStdRegionsMatrix:
 
 1873             UseLocRegionsMatrix:
 
 1889                     for(i = 0; i < nbdry; ++i)
 
 1891                         for(j = 0; j < nbdry; ++j)
 
 1893                             (*A)(i,j) = mat(bmap[i],bmap[j]);
 
 1896                         for(j = 0; j < nint; ++j)
 
 1898                             (*B)(i,j) = mat(bmap[i],imap[j]);
 
 1902                     for(i = 0; i < nint; ++i)
 
 1904                         for(j = 0; j < nbdry; ++j)
 
 1906                             (*C)(i,j) = mat(imap[i],bmap[j]);
 
 1909                         for(j = 0; j < nint; ++j)
 
 1911                             (*D)(i,j) = mat(imap[i],imap[j]);
 
 1920                         (*A) = (*A) - (*B)*(*C);
 
 1965             int       nquad0  = 
m_base[0]->GetNumPoints();
 
 1966             int       nquad1  = 
m_base[1]->GetNumPoints();
 
 1967             int       nquad2  = 
m_base[2]->GetNumPoints();
 
 1968             int       nqtot   = nquad0*nquad1*nquad2;
 
 1971                      "Insufficient workspace size.");
 
 1994             StdExpansion3D::PhysTensorDeriv(inarray,wsp0,wsp1,wsp2);
 
 2000             Vmath::Vvtvvtp(nqtot,&metric00[0],1,&wsp0[0],1,&metric01[0],1,&wsp1[0],1,&wsp3[0],1);
 
 2001             Vmath::Vvtvp  (nqtot,&metric02[0],1,&wsp2[0],1,&wsp3[0],1,&wsp3[0],1);
 
 2002             Vmath::Vvtvvtp(nqtot,&metric01[0],1,&wsp0[0],1,&metric11[0],1,&wsp1[0],1,&wsp4[0],1);
 
 2003             Vmath::Vvtvp  (nqtot,&metric12[0],1,&wsp2[0],1,&wsp4[0],1,&wsp4[0],1);
 
 2004             Vmath::Vvtvvtp(nqtot,&metric02[0],1,&wsp0[0],1,&metric12[0],1,&wsp1[0],1,&wsp5[0],1);
 
 2005             Vmath::Vvtvp  (nqtot,&metric22[0],1,&wsp2[0],1,&wsp5[0],1,&wsp5[0],1);
 
 2026             const unsigned int dim = 3;
 
 2032             for (
unsigned int i = 0; i < dim; ++i)
 
 2034                 for (
unsigned int j = i; j < dim; ++j)
 
#define ASSERTL0(condition, msg)
 
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
 
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed to...
 
Describes the specification for a Basis.
 
int GetNumPoints() const
Return points order at which basis is defined.
 
PointsKey GetPointsKey() const
Return distribution of points.
 
Defines a specification for a set of points.
 
std::map< int, NormalVector > m_faceNormals
 
virtual DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey)
 
SpatialDomains::Geometry3DSharedPtr GetGeom3D() const
 
std::map< int, Array< OneD, NekDouble > > m_elmtBndNormDirElmtLen
the element length in each element boundary(Vertex, edge or face) normal direction calculated based o...
 
SpatialDomains::GeometrySharedPtr GetGeom() const
 
SpatialDomains::GeometrySharedPtr m_geom
 
DNekMatSharedPtr BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
 
void ComputeLaplacianMetric()
 
void ComputeGmatcdotMF(const Array< TwoD, const NekDouble > &df, const Array< OneD, const NekDouble > &direction, Array< OneD, Array< OneD, NekDouble > > &dfdir)
 
void ComputeQuadratureMetric()
 
SpatialDomains::GeomFactorsSharedPtr m_metricinfo
 
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3)
 
DNekScalMatSharedPtr GetLocMatrix(const LocalRegions::MatrixKey &mkey)
 
DNekMatSharedPtr BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
 
void IProductWRTDerivBase_MatOp(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
void IProductWRTDerivBase_SumFac(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Calculates the inner product .
 
virtual NekDouble v_PhysEvaluate(const Array< OneD, const NekDouble > &coords, const Array< OneD, const NekDouble > &physvals)
This function evaluates the expansion at a single (arbitrary) point of the domain.
 
virtual void v_LaplacianMatrixOp_MatFree_Kernel(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp)
 
virtual NekDouble v_StdPhysEvaluate(const Array< OneD, const NekDouble > &Lcoord, const Array< OneD, const NekDouble > &physvals)
 
LibUtilities::NekManager< MatrixKey, DNekScalMat, MatrixKey::opLess > m_matrixManager
 
virtual void v_ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int mode_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)
 
virtual void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey)
 
virtual void v_MassMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey)
 
virtual void v_WeakDirectionalDerivMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey)
 
LibUtilities::NekManager< MatrixKey, DNekScalBlkMat, MatrixKey::opLess > m_staticCondMatrixManager
 
virtual void v_IProductWRTBase_SumFac(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool multiplybyweights=true)
Calculate the inner product of inarray with respect to the given basis B = base0 * base1 * base2.
 
virtual void v_GetTracePhysMap(const int face, Array< OneD, int > &outarray)
 
virtual LibUtilities::ShapeType v_DetShapeType() const
Return the region shape using the enum-list of ShapeType.
 
void v_DropLocStaticCondMatrix(const MatrixKey &mkey)
 
virtual void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
virtual void v_AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
 
void IProductWRTDirectionalDerivBase_SumFac(const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
virtual void v_PhysDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1, Array< OneD, NekDouble > &out_d2)
Calculate the derivative of the physical points.
 
virtual void v_SVVLaplacianFilter(Array< OneD, NekDouble > &array, const StdRegions::StdMatrixKey &mkey)
 
DNekScalBlkMatSharedPtr CreateStaticCondMatrix(const MatrixKey &mkey)
 
virtual void v_FwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Forward transform from physical quadrature space stored in inarray and evaluate the expansion coeffic...
 
virtual DNekScalMatSharedPtr v_GetLocMatrix(const MatrixKey &mkey)
 
virtual void v_WeakDerivMatrixOp(const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey)
 
virtual void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey)
 
void v_ComputeTraceNormal(const int face)
 
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3)
 
virtual StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const
 
virtual void v_ComputeLaplacianMetric()
 
virtual StdRegions::StdExpansionSharedPtr v_GetStdExp(void) const
 
virtual DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const MatrixKey &mkey)
 
void v_GeneralMatrixOp_MatOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey)
 
virtual void v_MassLevelCurvatureMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey)
 
virtual void v_IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Calculate the inner product of inarray with respect to the elements basis.
 
virtual DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey)
 
void v_PhysDirectionalDeriv(const Array< OneD, const NekDouble > &inarray, const Array< OneD, const NekDouble > &direction, Array< OneD, NekDouble > &out)
Physical derivative along a direction vector.
 
virtual DNekMatSharedPtr v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey)
 
virtual void v_ReduceOrderCoeffs(int numMin, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
DNekScalMatSharedPtr CreateMatrix(const MatrixKey &mkey)
 
virtual NekDouble v_Integral(const Array< OneD, const NekDouble > &inarray)
Integrate the physical point list inarray over region.
 
virtual bool v_GetFaceDGForwards(const int i) const
 
virtual void v_GetCoord(const Array< OneD, const NekDouble > &Lcoords, Array< OneD, NekDouble > &coords)
Retrieves the physical coordinates of a given set of reference coordinates.
 
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
 
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
 
virtual void v_LaplacianMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey)
 
void IProductWRTBase_SumFacKernel(const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp, bool doCheckCollDir0, bool doCheckCollDir1, bool doCheckCollDir2)
 
virtual void v_HelmholtzMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey)
 
void GetBoundaryMap(Array< OneD, unsigned int > &outarray)
 
int GetNcoeffs(void) const
This function returns the total number of coefficients used in the expansion.
 
int GetTotPoints() const
This function returns the total number of quadrature points used in the element.
 
LibUtilities::BasisType GetBasisType(const int dir) const
This function returns the type of basis used in the dir direction.
 
int NumBndryCoeffs(void) const
 
DNekMatSharedPtr GetStdMatrix(const StdMatrixKey &mkey)
 
const LibUtilities::PointsKeyVector GetPointsKeys() const
 
DNekBlkMatSharedPtr GetStdStaticCondMatrix(const StdMatrixKey &mkey)
 
DNekScalBlkMatSharedPtr GetLocStaticCondMatrix(const LocalRegions::MatrixKey &mkey)
 
const LibUtilities::BasisKey GetTraceBasisKey(const int i, int k=-1) const
This function returns the basis key belonging to the i-th trace.
 
void IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
this function calculates the inner product of a given function f with the different modes of the expa...
 
LibUtilities::ShapeType DetShapeType() const
This function returns the shape of the expansion domain.
 
void GetInteriorMap(Array< OneD, unsigned int > &outarray)
 
void BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function performs the Backward transformation from coefficient space to physical space.
 
DNekMatSharedPtr GenMatrix(const StdMatrixKey &mkey)
 
LibUtilities::PointsType GetPointsType(const int dir) const
This function returns the type of quadrature points used in the dir direction.
 
void FwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function performs the Forward transformation from physical space to coefficient space.
 
int GetNumPoints(const int dir) const
This function returns the number of quadrature points in the dir direction.
 
void MultiplyByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
void PhysDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1=NullNekDouble1DArray, Array< OneD, NekDouble > &out_d2=NullNekDouble1DArray)
 
Array< OneD, LibUtilities::BasisSharedPtr > m_base
 
Class representing a hexehedral element in reference space.
 
const ConstFactorMap & GetConstFactors() const
 
LibUtilities::ShapeType GetShapeType() const
 
const VarCoeffMap & GetVarCoeffs() const
 
MatrixType GetMatrixType() const
 
NekDouble GetConstFactor(const ConstFactorType &factor) const
 
bool ConstFactorExists(const ConstFactorType &factor) const
 
static void Dgemv(const char &trans, const int &m, const int &n, const double &alpha, const double *a, const int &lda, const double *x, const int &incx, const double &beta, double *y, const int &incy)
BLAS level 2: Matrix vector multiply y = A x where A[m x n].
 
static void Daxpy(const int &n, const double &alpha, const double *x, const int &incx, const double *y, const int &incy)
BLAS level 1: y = alpha x plus y.
 
void Interp3D(const BasisKey &fbasis0, const BasisKey &fbasis1, const BasisKey &fbasis2, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, const BasisKey &tbasis2, Array< OneD, NekDouble > &to)
this function interpolates a 3D function  evaluated at the quadrature points of the 3D basis,...
 
void InterpCoeff3D(const BasisKey &fbasis0, const BasisKey &fbasis1, const BasisKey &fbasis2, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, const BasisKey &tbasis2, Array< OneD, NekDouble > &to)
 
void Interp2D(const BasisKey &fbasis0, const BasisKey &fbasis1, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, Array< OneD, NekDouble > &to)
this function interpolates a 2D function  evaluated at the quadrature points of the 2D basis,...
 
std::vector< PointsKey > PointsKeyVector
 
@ eGaussLobattoLegendre
1D Gauss-Lobatto-Legendre quadrature points
 
@ eOrtho_A
Principle Orthogonal Functions .
 
@ eGLL_Lagrange
Lagrange for SEM basis .
 
@ eModified_A
Principle Modified Functions .
 
std::shared_ptr< GeomFactors > GeomFactorsSharedPtr
Pointer to a GeomFactors object.
 
GeomType
Indicates the type of element geometry.
 
@ eRegular
Geometry is straight-sided with constant geometric factors.
 
@ eNoGeomType
No type defined.
 
@ eMovingRegular
Currently unused.
 
@ eDeformed
Geometry is curved or has non-constant factors.
 
std::shared_ptr< HexGeom > HexGeomSharedPtr
 
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
 
@ eInvLaplacianWithUnityMean
 
std::shared_ptr< StdHexExp > StdHexExpSharedPtr
 
@ eDir1FwdDir1_Dir2FwdDir2
 
@ eDir1BwdDir1_Dir2BwdDir2
 
@ eDir1BwdDir2_Dir2FwdDir1
 
@ eDir1FwdDir2_Dir2BwdDir1
 
The above copyright notice and this permission notice shall be included.
 
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
 
std::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr
 
NekMatrix< InnerMatrixType, BlockMatrixTag > Transpose(NekMatrix< InnerMatrixType, BlockMatrixTag > &rhs)
 
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
 
static Array< OneD, NekDouble > NullNekDouble1DArray
 
std::shared_ptr< DNekMat > DNekMatSharedPtr
 
void Vsqrt(int n, const T *x, const int incx, T *y, const int incy)
sqrt y = sqrt(x)
 
void Vmul(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x*y.
 
void Vvtvp(int n, const T *w, const int incw, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
vvtvp (vector times vector plus vector): z = w*x + y
 
void Vadd(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Add vector z = x+y.
 
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*x.
 
void Sdiv(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha/y.
 
void Vdiv(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x/y.
 
void Zero(int n, T *x, const int incx)
Zero vector.
 
void Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value.
 
void Vvtvvtp(int n, const T *v, int incv, const T *w, int incw, const T *x, int incx, const T *y, int incy, T *z, int incz)
vvtvvtp (vector times vector plus vector times vector):
 
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
 
scalarT< T > sqrt(scalarT< T > in)