51    : StdExpansion(), 
Expansion(pGeom), StdExpansion2D()
 
   61             "Geometric information is not set up");
 
   96                     "Need to specify eFactorGJP to construct " 
   97                     "a HelmholtzGJP matrix");
 
  101            factor /= MassMat.Scale();
 
  103            int ntot = MassMat.GetRows() * MassMat.GetColumns();
 
  106                         MassMat.GetRawPtr(), 1, &NDTraceMat->GetPtr()[0], 1);
 
  109                MassMat.Scale(), NDTraceMat);
 
  181                int rows = deriv0.GetRows();
 
  182                int cols = deriv1.GetColumns();
 
  187                    df[2 * dir][0] * deriv0 + df[2 * dir + 1][0] * deriv1;
 
  253                int rows = derivxi.GetRows();
 
  254                int cols = deriveta.GetColumns();
 
  259                (*WeakDirDeriv) = derivxi + deriveta;
 
  271                (*WeakDirDeriv) = (*WeakDirDeriv) + (*DiveMassmat);
 
  316                int rows = lap00.GetRows();
 
  317                int cols = lap00.GetColumns();
 
  322                (*lap) = gmat[0][0] * lap00 +
 
  323                         gmat[1][0] * (lap01 + 
Transpose(lap01)) +
 
  348            int rows = LapMat.GetRows();
 
  349            int cols = LapMat.GetColumns();
 
  355            (*helm)       = LapMat + factor * MassMat;
 
  371                     "Need to specify eFactorGJP to construct " 
  372                     "a HelmholtzGJP matrix");
 
  376            factor /= HelmMat.Scale();
 
  378            int ntot = HelmMat.GetRows() * HelmMat.GetColumns();
 
  381                         HelmMat.GetRawPtr(), 1, &NDTraceMat->GetPtr()[0], 1);
 
  384                HelmMat.Scale(), NDTraceMat);
 
  432            int rows = LapMat.GetRows();
 
  433            int cols = LapMat.GetColumns();
 
  439            (*adr)        = LapMat - lambda * MassMat + AdvMat;
 
  445            if (!massVarcoeffs.empty())
 
  449            if (!lapVarcoeffs.empty())
 
  504                     "Need to specify eFactorGJP to construct " 
  505                     "a LinearAdvectionDiffusionReactionGJP matrix");
 
  507            int rows = LapMat.GetRows();
 
  508            int cols = LapMat.GetColumns();
 
  515                LapMat - lambda * MassMat + AdvMat + gjpfactor * NDTraceMat;
 
  593                int rows = stdiprod0.GetRows();
 
  594                int cols = stdiprod1.GetColumns();
 
  599                    df[2 * dir][0] * stdiprod0 + df[2 * dir + 1][0] * stdiprod1;
 
  624                     "Matrix only setup for quad elements currently");
 
  630            coords[0] = (edge == 0 || edge == 3) ? -1.0 : 1.0;
 
  632            m_Ix = 
m_base[(edge + 1) % 2]->GetI(coords);
 
  680        for (
int i = 0; i < nedges; ++i)
 
  686            if (edgeExp->GetRightAdjacentElementExp())
 
  688                if (edgeExp->GetRightAdjacentElementExp()
 
  690                        ->GetGlobalID() == 
GetGeom()->GetGlobalID())
 
  702    int nquad_e = min(EdgeExp->GetNumPoints(0), 
int(normals[0].size()));
 
  704    int nEdgePts = EdgeExp->GetTotPoints();
 
  706    Vmath::Vmul(nquad_e, normals[0], 1, Fx, 1, edgePhys, 1);
 
  707    Vmath::Vvtvp(nquad_e, normals[1], 1, Fy, 1, edgePhys, 1, edgePhys, 1);
 
  713        if (locExp->GetRightAdjacentElementExp()->GetGeom()->GetGlobalID() ==
 
  734        for (i = 0; i < nedges; ++i)
 
  740            if (edgeExp->GetRightAdjacentElementExp())
 
  742                if (edgeExp->GetRightAdjacentElementExp()
 
  744                        ->GetGlobalID() == 
GetGeom()->GetGlobalID())
 
  758    int order_e = map->size();
 
  760    int n_coeffs = EdgeExp->GetNcoeffs();
 
  763    if (n_coeffs != order_e) 
 
  765        EdgeExp->FwdTrans(Fn, edgeCoeffs);
 
  777                                          EdgeExp->GetBasis(0)->GetNumModes(),
 
  778                                          EdgeExp->GetBasis(0)->GetPointsKey());
 
  780                                    EdgeExp->GetBasis(0)->GetNumModes(),
 
  781                                    EdgeExp->GetBasis(0)->GetPointsKey());
 
  785        for (i = order_e; i < n_coeffs; i++)
 
  794        EdgeExp->MassMatrixOp(edgeCoeffs, edgeCoeffs, masskey);
 
  798        EdgeExp->IProductWRTBase(Fn, edgeCoeffs);
 
  812        for (i = 0; i < order_e; ++i)
 
  814            outarray[(*map)[i].index] += (*map)[i].sign * edgeCoeffs[i];
 
  819        int nCoeffs0, nCoeffs1;
 
  833                nCoeffs1 = 
m_base[1]->GetNumModes();
 
  835                for (i = 0; i < order_e; ++i)
 
  837                    for (j = 0; j < nCoeffs1; j++)
 
  839                        outarray[(*map)[i].index + j * order_e] +=
 
  840                            mat_gauss->GetPtr()[j] * (*map)[i].sign *
 
  848                nCoeffs0 = 
m_base[0]->GetNumModes();
 
  850                for (i = 0; i < order_e; ++i)
 
  852                    for (j = 0; j < nCoeffs0; j++)
 
  854                        outarray[(*map)[i].index - j] +=
 
  855                            mat_gauss->GetPtr()[order_e - 1 - j] *
 
  856                            (*map)[i].sign * edgeCoeffs[i];
 
  863                nCoeffs1 = 
m_base[1]->GetNumModes();
 
  865                for (i = 0; i < order_e; ++i)
 
  867                    for (j = 0; j < nCoeffs1; j++)
 
  869                        outarray[(*map)[i].index - j * order_e] +=
 
  870                            mat_gauss->GetPtr()[order_e - 1 - j] *
 
  871                            (*map)[i].sign * edgeCoeffs[i];
 
  878                nCoeffs0 = 
m_base[0]->GetNumModes();
 
  880                for (i = 0; i < order_e; ++i)
 
  882                    for (j = 0; j < nCoeffs0; j++)
 
  884                        outarray[(*map)[i].index + j] +=
 
  885                            mat_gauss->GetPtr()[j] * (*map)[i].sign *
 
  892                ASSERTL0(
false, 
"edge value (< 3) is out of range");
 
  905    for (i = 0; i < nedges; ++i)
 
  907        EdgeExp[i]->SetCoeffsToOrientation(
 
  924    int order_e, nquad_e;
 
  928    for (e = 0; e < nedges; ++e)
 
  930        order_e = EdgeExp[e]->GetNcoeffs();
 
  931        nquad_e = EdgeExp[e]->GetNumPoints(0);
 
  938        for (i = 0; i < order_e; ++i)
 
  940            edgeCoeffs[i] = inarray[i + cnt];
 
  944        EdgeExp[e]->BwdTrans(edgeCoeffs, edgePhys);
 
  966            Vmath::Vmul(nquad_e, ncdotMF_e, 1, edgePhys, 1, edgePhys, 1);
 
  970            Vmath::Vmul(nquad_e, normals[dir], 1, edgePhys, 1, edgePhys, 1);
 
  986    for (e = 0; e < nedges; ++e)
 
  988        nquad_e = EdgeExp[e]->GetNumPoints(0);
 
  994        EdgeExp[e]->BwdTrans(edgeCoeffs[e], edgePhys);
 
  996        Vmath::Vmul(nquad_e, normals[dir], 1, edgePhys, 1, edgePhys, 1);
 
 1012    int order_e = EdgeExp->GetNcoeffs();
 
 1013    int nquad_e = EdgeExp->GetNumPoints(0);
 
 1023    StdRegions::VarCoeffMap::const_iterator x;
 
 1026    if ((x = varcoeffs.find(VarCoeff[0])) != varcoeffs.end())
 
 1031        Vmath::Vmul(nquad_e, work, 1, edgePhys, 1, edgePhys, 1);
 
 1034    EdgeExp->IProductWRTBase(edgePhys, coeff);
 
 1037    for (i = 0; i < order_e; ++i)
 
 1039        outarray[map[i]] += 
sign[i] * coeff[i];
 
 1051    ASSERTL0(&inarray[0] != &outarray[0],
 
 1052             "Input and output arrays use the same memory");
 
 1059    for (e = 0; e < nedges; ++e)
 
 1061        order_e = EdgeExp[e]->GetNcoeffs();
 
 1065        Vmath::Vcopy(order_e, tmp = inarray + cnt, 1, edgeCoeffs, 1);
 
 1066        EdgeExp[e]->BwdTrans(edgeCoeffs, edgePhys);
 
 1083    int nquad_e = EdgeExp[edge]->GetNumPoints(0);
 
 1084    int order_e = EdgeExp[edge]->GetNcoeffs();
 
 1113    StdRegions::VarCoeffMap::const_iterator x;
 
 1115    if ((x = varcoeffs.find(VarCoeff[0])) != varcoeffs.end())
 
 1119                                        x->second.GetValue(), work);
 
 1120        Vmath::Vmul(nquad_e, work, 1, edgePhys, 1, edgePhys, 1);
 
 1126    EdgeExp[edge]->IProductWRTBase(edgePhys, outcoeff);
 
 1128    for (i = 0; i < order_e; ++i)
 
 1130        outarray[emap[i]] += 
sign[i] * tau * outcoeff[i];
 
 1140    for (n = 0; n < coordim; ++n)
 
 1155            Vmath::Vmul(nquad_e, ncdotMF_e, 1, edgePhys, 1, inval, 1);
 
 1159            Vmath::Vmul(nquad_e, normals[n], 1, edgePhys, 1, inval, 1);
 
 1173        EdgeExp[edge]->IProductWRTBase(inval, outcoeff);
 
 1176        for (i = 0; i < ncoeffs; ++i)
 
 1179            for (j = 0; j < order_e; ++j)
 
 1181                tmpcoeff[i] += (*invMass)(i, emap[j]) * 
sign[j] * outcoeff[j];
 
 1189                GetMF(n, coordim, varcoeffs);
 
 1199            Coeffs = Coeffs + Dmat * Tmpcoeff;
 
 1203            if (varcoeffs.find(VarCoeff[n]) != varcoeffs.end())
 
 1209                Coeffs            = Coeffs + Dmat * Tmpcoeff;
 
 1214                Coeffs            = Coeffs + Dmat * Tmpcoeff;
 
 1240    for (
unsigned int i = 0; i < EdgeExp->GetNcoeffs(); ++i)
 
 1242        edgetmp[i] = tmp[emap[i]];
 
 1246    EdgeExp->BwdTrans(edgetmp, outarray);
 
 1266                     "HybridDGHelmholtz matrix not set up " 
 1267                     "for non boundary-interior expansions");
 
 1290            DNekMat LocMat(ncoeffs, ncoeffs);
 
 1301            StdRegions::VarCoeffMap::const_iterator x;
 
 1303            for (i = 0; i < coordim; ++i)
 
 1311                            GetMF(i, shapedim, varcoeffs);
 
 1332                        Mat = Mat + Dmat * invMass * 
Transpose(Dmat);
 
 1345                    Mat = Mat + DmatL * invMass * 
Transpose(DmatR);
 
 1350                    Mat               = Mat + Dmat * invMass * 
Transpose(Dmat);
 
 1356            Mat               = Mat + lambdaval * Mass;
 
 1359            for (i = 0; i < nedges; ++i)
 
 1362                order_e = EdgeExp->GetNcoeffs();
 
 1364                int nq = EdgeExp->GetNumPoints(0);
 
 1383                for (j = 0; j < order_e; ++j)
 
 1385                    for (k = 0; k < order_e; ++k)
 
 1387                        Mat(emap[j], emap[k]) =
 
 1388                            Mat(emap[j], emap[k]) +
 
 1426            for (i = 0; i < nedges; ++i)
 
 1434            for (j = 0; j < nbndry; ++j)
 
 1451                for (k = 0; k < ncoeffs; ++k)
 
 1453                    Umat(k, j) = Ulam[k];
 
 1499            for (i = 0; i < nedges; ++i)
 
 1521                    ASSERTL0(
false, 
"Direction not known");
 
 1530                    GetMF(dir, shapedim, varcoeffs);
 
 1566            for (j = 0; j < nbndry; ++j)
 
 1572                for (k = 0; k < ncoeffs; ++k)
 
 1574                    Ulam[k] = lamToU(k, j);
 
 1592                             &(Qmat.GetPtr())[0] + j * ncoeffs, 1);
 
 1600            int order_e, nquad_e;
 
 1605            StdRegions::VarCoeffMap::const_iterator x;
 
 1654            for (i = 0; i < nedges; ++i)
 
 1660            for (i = 0; i < nbndry; ++i)
 
 1668                for (e = 0; e < nedges; ++e)
 
 1670                    order_e = EdgeExp[e]->GetNcoeffs();
 
 1671                    nquad_e = EdgeExp[e]->GetNumPoints(0);
 
 1688                    for (j = 0; j < order_e; ++j)
 
 1690                        edgeCoeffs[j] = 
sign[j] * (*LamToQ[0])(emap[j], i);
 
 1693                    EdgeExp[e]->BwdTrans(edgeCoeffs, edgePhys);
 
 1706                            0, e, EdgeExp[e], normals, varcoeffs);
 
 1707                        Vmath::Vmul(nquad_e, ncdotMF, 1, edgePhys, 1, work, 1);
 
 1711                        Vmath::Vmul(nquad_e, normals[0], 1, edgePhys, 1, work,
 
 1716                    for (j = 0; j < order_e; ++j)
 
 1718                        edgeCoeffs[j] = 
sign[j] * (*LamToQ[1])(emap[j], i);
 
 1721                    EdgeExp[e]->BwdTrans(edgeCoeffs, edgePhys);
 
 1736                            1, e, EdgeExp[e], normals, varcoeffs);
 
 1737                        Vmath::Vvtvp(nquad_e, ncdotMF, 1, edgePhys, 1, work, 1,
 
 1742                        Vmath::Vvtvp(nquad_e, normals[1], 1, edgePhys, 1, work,
 
 1749                        for (j = 0; j < order_e; ++j)
 
 1751                            edgeCoeffs[j] = 
sign[j] * (*LamToQ[2])(emap[j], i);
 
 1754                        EdgeExp[e]->BwdTrans(edgeCoeffs, edgePhys);
 
 1765                        Vmath::Vvtvp(nquad_e, normals[2], 1, edgePhys, 1, work,
 
 1771                    for (j = 0; j < order_e; ++j)
 
 1774                            sign[j] * LamToU(emap[j], i) - lam[cnt + j];
 
 1777                    EdgeExp[e]->BwdTrans(edgeCoeffs, edgePhys);
 
 1780                    if ((x = varcoeffs.find(VarCoeff[0])) != varcoeffs.end())
 
 1783                            e, EdgeExp[e], x->second.GetValue(), varcoeff_work);
 
 1784                        Vmath::Vmul(nquad_e, varcoeff_work, 1, edgePhys, 1,
 
 1788                    Vmath::Svtvp(nquad_e, -tau, edgePhys, 1, work, 1, work, 1);
 
 1790                    EdgeExp[e]->IProductWRTBase(work, edgeCoeffs);
 
 1792                    EdgeExp[e]->SetCoeffsToOrientation(edgedir, edgeCoeffs,
 
 1795                    for (j = 0; j < order_e; ++j)
 
 1797                        BndMat(cnt + j, i) = edgeCoeffs[j];
 
 1813                LapMat.GetRows(), LapMat.GetColumns());
 
 1843            for (
int d = 0; 
d < ncoords; ++
d)
 
 1851            for (
int t = 0; t < ntraces; ++t)
 
 1854                tracepts[t] = traceExp[t]->GetTotPoints();
 
 1855                maxtpts     = (maxtpts > tracepts[t]) ? maxtpts : tracepts[t];
 
 1861            for (
int t = 0; t < ntraces; ++t)
 
 1870                PhysDeriv(phys, Deriv[0], Deriv[1], Deriv[2]);
 
 1872                for (
int t = 0; t < ntraces; ++t)
 
 1878                        traceExp[t]->GetBasis(0)->GetBasisKey();
 
 1879                    bool DoInterp = (fromkey != tokey);
 
 1883                    for (
int d = 0; 
d < ncoords; ++
d)
 
 1899                                     tmp  = dphidn[t] + i * tracepts[t], 1,
 
 1900                                     tmp1 = dphidn[t] + i * tracepts[t], 1);
 
 1905            for (
int t = 0; t < ntraces; ++t)
 
 1907                int nt = tracepts[t];
 
 1913                    (
p == 1) ? 0.02 * h * h : 0.8 * pow(
p + 1, -4.0) * h * h;
 
 1920                                    dphidn[t] + j * nt, 1, val, 1);
 
 1922                            Mat(i, j) + scale * traceExp[t]->Integral(val);
 
 1930                for (
int j = 0; j < i; ++j)
 
 1932                    Mat(i, j) = Mat(j, i);
 
 1939                     "This matrix type cannot be generated from this class");
 
 1976    Out_d = InvMass * Coeffs;
 
 1991             "Not set up for non boundary-interior expansions");
 
 1992    ASSERTL1(inoutmat->GetRows() == inoutmat->GetColumns(),
 
 1993             "Assuming that input matrix was square");
 
 1997    int order_e                = edgeExp->GetNcoeffs();
 
 2008    DNekScalMat &edgemat = *edgeExp->GetLocMatrix(mkey);
 
 2022    int rows = inoutmat->GetRows();
 
 2037        for (i = 0; i < order_e; ++i)
 
 2039            for (j = 0; j < nbndry; ++j)
 
 2041                if (map[i] == bmap[j])
 
 2047            ASSERTL1(j != nbndry, 
"Did not find number in map");
 
 2057        for (i = 0; i < edge; ++i)
 
 2062        for (i = 0; i < order_e; ++i)
 
 2069            switch (edgeExp->GetBasis(0)->GetBasisType())
 
 2072                    reverse(map.data(), map.data() + order_e);
 
 2075                    reverse(map.data(), map.data() + order_e);
 
 2079                    swap(map[0], map[1]);
 
 2080                    for (i = 3; i < order_e; i += 2)
 
 2088                             "Edge boundary type not valid for this method");
 
 2094        ASSERTL0(
false, 
"Could not identify matrix type from dimension");
 
 2097    for (i = 0; i < order_e; ++i)
 
 2100        for (j = 0; j < order_e; ++j)
 
 2103            (*inoutmat)(id1, id2) += edgemat(i, j) * 
sign[i] * 
sign[j];
 
 2121             "Not set up for non boundary-interior expansions");
 
 2124    int order_e                = edgeExp->GetNcoeffs();
 
 2135    DNekScalMat &edgemat = *edgeExp->GetLocMatrix(mkey);
 
 2141    for (i = 0; i < order_e; ++i)
 
 2143        vEdgeCoeffs[i] = incoeffs[map[i]] * 
sign[i];
 
 2146    vEdgeCoeffs = edgemat * vEdgeCoeffs;
 
 2148    for (i = 0; i < order_e; ++i)
 
 2150        coeffs[map[i]] += vEdgeCoeffs[i] * 
sign[i];
 
 2160    int nVerts, vid1, vid2, vMap1, vMap2;
 
 2167    DNekMat &VertexMat = (*m_vertexmatrix);
 
 2169    for (vid1 = 0; vid1 < nVerts; ++vid1)
 
 2173        for (vid2 = 0; vid2 < nVerts; ++vid2)
 
 2176            VertexValue = (*r_bnd)(vMap1, vMap2);
 
 2177            VertexMat.SetValue(vid1, vid2, VertexValue);
 
 2181    return m_vertexmatrix;
 
 2201    map<int, int> invmap;
 
 2202    for (j = 0; j < nBndCoeffs; ++j)
 
 2204        invmap[bmap[j]] = j;
 
 2220    for (n = 0; n < nEdgeCoeffs; ++n)
 
 2222        edgemaparray[n] = invmap[maparray[n]];
 
 2225    return edgemaparray;
 
 2235                                         [[maybe_unused]] 
const int nq1)
 
 2237    if (idmap.size() != nq0)
 
 2245            for (
int i = 0; i < nq0; ++i)
 
 2253            for (
int i = 0; i < nq0; ++i)
 
 2255                idmap[i] = nq0 - 1 - i;
 
 2260            ASSERTL0(
false, 
"Unknown orientation");
 
 2271    int nquad_e = EdgeExp_e->GetNumPoints(0);
 
 2273    int nquad0  = 
m_base[0]->GetNumPoints();
 
 2274    int nquad1  = 
m_base[1]->GetNumPoints();
 
 2275    int nqtot   = nquad0 * nquad1;
 
 2287    StdRegions::VarCoeffMap::const_iterator MFdir;
 
 2292    for (
int k = 0; k < coordim; k++)
 
 2294        MFdir = varcoeffs.find(MMFCoeffs[dir * 5 + k]);
 
 2295        tmp   = MFdir->second.GetValue();
 
 2299        Vmath::Vvtvp(nquad_e, &tmp_e[0], 1, &normals[k][0], 1, &ncdotMF[0], 1,
 
 2314    Vmath::Vmul(nq, &vec[0][0], 1, &normals[0][0], 1, &Fn[0], 1);
 
 2315    Vmath::Vvtvp(nq, &vec[1][0], 1, &normals[1][0], 1, &Fn[0], 1, &Fn[0], 1);
 
 2316    Vmath::Vvtvp(nq, &vec[2][0], 1, &normals[2][0], 1, &Fn[0], 1, &Fn[0], 1);
 
 2318    return StdExpansion::Integral(Fn);
 
 2325    int nverts = geom->GetNumVerts();
 
 2333        *geom->
GetVertex((traceid + (nverts - 1)) % nverts);
 
 2345    h               = 
sqrt(h1 * h1 - d1 * d1 / lenDx);
 
 2350    h1 = ev1.
dist(vadj1);
 
 2351    Dx1.
Sub(vadj1, ev1);
 
 2354    h = (h + 
sqrt(h1 * h1 - d1 * d1 / lenDx)) * 0.5;
 
 2356    int dirn = (geom->GetDir(traceid) == 0) ? 1 : 0;
 
#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...
 
#define sign(a, b)
return the sign(b)*a
 
Describes the specification for a Basis.
 
void v_AddEdgeNormBoundaryInt(const int edge, const ExpansionSharedPtr &EdgeExp, const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray) override
 
DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override
 
std::vector< bool > m_requireNeg
 
void v_AddRobinTraceContribution(const int traceid, const Array< OneD, const NekDouble > &primCoeffs, const Array< OneD, NekDouble > &incoeffs, Array< OneD, NekDouble > &coeffs) override
 
void v_SetUpPhysNormals(const int edge) override
 
void v_AddRobinMassMatrix(const int edgeid, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat) override
 
Array< OneD, NekDouble > GetnEdgecdotMF(const int dir, const int edge, ExpansionSharedPtr &EdgeExp_e, const Array< OneD, const Array< OneD, NekDouble > > &normals, const StdRegions::VarCoeffMap &varcoeffs)
 
void SetTraceToGeomOrientation(Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, NekDouble > &inout)
 
DNekMatSharedPtr v_BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd) override
 
NekDouble v_VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &vec) override
 
DNekScalMatSharedPtr CreateMatrix(const MatrixKey &mkey)
 
Array< OneD, unsigned int > GetTraceInverseBoundaryMap(int eid)
 
void v_ReOrientTracePhysMap(const StdRegions::Orientation orient, Array< OneD, int > &idmap, const int nq0, const int nq1) override
 
Expansion2D(SpatialDomains::Geometry2DSharedPtr pGeom)
 
void AddNormTraceInt(const int dir, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, Array< OneD, NekDouble > > &edgeCoeffs, Array< OneD, NekDouble > &outarray)
 
SpatialDomains::Geometry2DSharedPtr GetGeom2D() const
 
void AddHDGHelmholtzEdgeTerms(const NekDouble tau, const int edge, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, NekDouble > &edgePhys, const StdRegions::VarCoeffMap &dirForcing, Array< OneD, NekDouble > &outarray)
 
void v_DGDeriv(const int dir, const Array< OneD, const NekDouble > &incoeffs, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, Array< OneD, NekDouble > > &edgeCoeffs, Array< OneD, NekDouble > &out_d) override
 
void v_TraceNormLen(const int traceid, NekDouble &h, NekDouble &p) override
 
void GetPhysEdgeVarCoeffsFromElement(const int edge, ExpansionSharedPtr &EdgeExp, const Array< OneD, const NekDouble > &varcoeff, Array< OneD, NekDouble > &outarray)
 
void AddEdgeBoundaryInt(const int edge, ExpansionSharedPtr &EdgeExp, Array< OneD, NekDouble > &edgePhys, Array< OneD, NekDouble > &outarray, const StdRegions::VarCoeffMap &varcoeffs=StdRegions::NullVarCoeffMap)
 
void AddHDGHelmholtzTraceTerms(const NekDouble tau, const Array< OneD, const NekDouble > &inarray, Array< OneD, ExpansionSharedPtr > &EdgeExp, const StdRegions::VarCoeffMap &dirForcing, Array< OneD, NekDouble > &outarray)
 
void v_GenTraceExp(const int traceid, ExpansionSharedPtr &exp) override
 
SpatialDomains::GeometrySharedPtr GetGeom() const
 
SpatialDomains::GeometrySharedPtr m_geom
 
void DropLocMatrix(const LocalRegions::MatrixKey &mkey)
 
ExpansionSharedPtr GetLeftAdjacentElementExp() const
 
DNekMatSharedPtr BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
 
void ComputeGmatcdotMF(const Array< TwoD, const NekDouble > &df, const Array< OneD, const NekDouble > &direction, Array< OneD, Array< OneD, NekDouble > > &dfdir)
 
virtual void v_ComputeTraceNormal(const int id)
 
Array< OneD, NekDouble > GetMFMag(const int dir, const StdRegions::VarCoeffMap &varcoeffs)
 
int GetLeftAdjacentElementTrace() const
 
void GetTracePhysVals(const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient=StdRegions::eNoOrientation)
 
std::map< int, ExpansionWeakPtr > m_traceExp
 
void AddEdgeNormBoundaryInt(const int edge, const std::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
 
SpatialDomains::GeomFactorsSharedPtr m_metricinfo
 
virtual StdRegions::Orientation v_GetTraceOrient(int trace)
 
ExpansionSharedPtr GetTraceExp(const int traceid)
 
StdRegions::Orientation GetTraceOrient(int trace)
 
IndexMapValuesSharedPtr GetIndexMap(const IndexMapKey &ikey)
 
DNekScalMatSharedPtr GetLocMatrix(const LocalRegions::MatrixKey &mkey)
 
Array< OneD, NekDouble > GetMFDiv(const int dir, const StdRegions::VarCoeffMap &varcoeffs)
 
void TraceNormLen(const int traceid, NekDouble &h, NekDouble &p)
 
const NormalVector & GetTraceNormal(const int id)
 
Array< OneD, NekDouble > GetMF(const int dir, const int shapedim, const StdRegions::VarCoeffMap &varcoeffs)
 
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
 
PointGeomSharedPtr GetVertex(int i) const
Returns vertex i of this object.
 
void Sub(PointGeom &a, PointGeom &b)
 
NekDouble dot(PointGeom &a)
retun the dot product between this and input a
 
NekDouble dist(PointGeom &a)
return distance between this and input a
 
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.
 
void FillMode(const int mode, Array< OneD, NekDouble > &outarray)
This function fills the array outarray with the mode-th mode of the expansion.
 
int NumBndryCoeffs(void) const
 
DNekMatSharedPtr GetStdMatrix(const StdMatrixKey &mkey)
 
const LibUtilities::PointsKeyVector GetPointsKeys() const
 
int NumDGBndryCoeffs(void) const
 
DNekScalBlkMatSharedPtr GetLocStaticCondMatrix(const LocalRegions::MatrixKey &mkey)
 
int GetVertexMap(const int localVertexId, bool useCoeffPacking=false)
 
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...
 
int GetNtraces() const
Returns the number of trace elements connected to this element.
 
int GetNverts() const
This function returns the number of vertices of the expansion domain.
 
void GetTraceToElementMap(const int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation traceOrient=eForwards, int P=-1, int Q=-1)
 
LibUtilities::ShapeType DetShapeType() const
This function returns the shape of the expansion domain.
 
void GetTraceInteriorToElementMap(const int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, const Orientation traceOrient=eForwards)
 
int GetTraceNcoeffs(const int i) const
This function returns the number of expansion coefficients belonging to the i-th trace.
 
DNekMatSharedPtr GenMatrix(const StdMatrixKey &mkey)
 
void FwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function performs the Forward transformation from physical space to coefficient space.
 
const LibUtilities::BasisKey GetTraceBasisKey(const int i, int k=-1, bool UseGLL=false) const
This function returns the basis key belonging to the i-th trace.
 
LibUtilities::NekManager< StdMatrixKey, DNekMat, StdMatrixKey::opLess > m_stdMatrixManager
 
int GetBasisNumModes(const int dir) const
This function returns the number of expansion modes in the dir direction.
 
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
 
bool IsBoundaryInteriorExpansion() const
 
LibUtilities::ShapeType GetShapeType() const
 
const VarCoeffMap & GetVarCoeffs() const
 
MatrixType GetMatrixType() const
 
bool HasVarCoeff(const StdRegions::VarCoeffType &coeff) const
 
const ConstFactorMap & GetConstFactors() const
 
const Array< OneD, const NekDouble > & GetVarCoeff(const StdRegions::VarCoeffType &coeff) const
 
NekDouble GetConstFactor(const ConstFactorType &factor) const
 
bool ConstFactorExists(const ConstFactorType &factor) const
 
const VarCoeffMap GetVarCoeffAsMap(const VarCoeffType &coeff) const
 
void Interp1D(const BasisKey &fbasis0, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, Array< OneD, NekDouble > &to)
this function interpolates a 1D function  evaluated at the quadrature points of the basis fbasis0 to ...
 
void InterpCoeff1D(const BasisKey &fbasis0, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, Array< OneD, NekDouble > &to)
 
std::vector< PointsKey > PointsKeyVector
 
@ eGauss_Lagrange
Lagrange Polynomials using the Gauss points.
 
@ eGLL_Lagrange
Lagrange for SEM basis .
 
@ eModified_A
Principle Modified Functions .
 
std::shared_ptr< Expansion > ExpansionSharedPtr
 
std::shared_ptr< IndexMapValues > IndexMapValuesSharedPtr
 
std::shared_ptr< Expansion1D > Expansion1DSharedPtr
 
@ eNoGeomType
No type defined.
 
@ eDeformed
Geometry is curved or has non-constant factors.
 
std::shared_ptr< Geometry2D > Geometry2DSharedPtr
 
std::shared_ptr< Geometry > GeometrySharedPtr
 
@ eLinearAdvectionDiffusionReaction
 
@ eLinearAdvectionDiffusionReactionGJP
 
@ eInvLaplacianWithUnityMean
 
std::map< ConstFactorType, NekDouble > ConstFactorMap
 
static ConstFactorMap NullConstFactorMap
 
static VarCoeffMap NullVarCoeffMap
 
std::map< StdRegions::VarCoeffType, VarCoeffEntry > VarCoeffMap
 
std::vector< double > d(NPUPPER *NPUPPER)
 
StdRegions::ConstFactorMap factors
 
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
 
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
 
static Array< OneD, NekDouble > NullNekDouble1DArray
 
NekMatrix< InnerMatrixType, BlockMatrixTag > Transpose(NekMatrix< InnerMatrixType, BlockMatrixTag > &rhs)
 
std::shared_ptr< DNekMat > DNekMatSharedPtr
 
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 Svtvp(int n, const T alpha, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Svtvp (scalar times vector plus vector): z = alpha*x + y.
 
void Neg(int n, T *x, const int incx)
Negate x = -x.
 
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 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 Vcopy(int n, const T *x, const int incx, T *y, const int incy)
 
scalarT< T > sqrt(scalarT< T > in)