62 if (fpoints0 == tpoints0)
70 GP0 =
PointsManager()[tpoints0]->GetGalerkinProjection(fpoints0);
90 if (fpoints0 == tpoints0)
99 GP0 =
PointsManager()[tpoints0]->GetGalerkinProjection(fpoints0);
102 GP0->GetPtr().get(), tpoints0.
GetNumPoints(), from, 1, 0.0,
140 if (fpoints1 == tpoints1)
146 GP1 =
PointsManager()[tpoints1]->GetGalerkinProjection(fpoints1);
147 Blas::Dgemm(
'N',
'T', fnp0, tnp1, fnp1, 1.0, from, fnp0,
148 GP1->GetPtr().get(), tnp1, 0.0, wsp.get(), fnp0);
151 if (fpoints0 == tpoints0)
157 GP0 =
PointsManager()[tpoints0]->GetGalerkinProjection(fpoints0);
158 Blas::Dgemm(
'N',
'N', tnp0, tnp1, fnp0, 1.0, GP0->GetPtr().get(), tnp0,
159 wsp.get(), fnp0, 0.0, to, tnp0);
184 tpoints1, tpoints2, to.data());
204 GP2 =
PointsManager()[tpoints2]->GetGalerkinProjection(fpoints2);
205 Blas::Dgemm(
'N',
'T', fnp0 * fnp1, tnp2, fnp2, 1.0, from, fnp0 * fnp1,
206 GP2->GetPtr().get(), tnp2, 0.0, wsp2.get(), fnp0 * fnp1);
208 GP1 =
PointsManager()[tpoints1]->GetGalerkinProjection(fpoints1);
209 for (
size_t i = 0; i < tnp2; i++)
212 wsp2.get() + i * fnp0 * fnp1, fnp0, GP1->GetPtr().get(),
213 tnp1, 0.0, wsp1.get() + i * fnp0 * tnp1, fnp0);
216 GP0 =
PointsManager()[tpoints0]->GetGalerkinProjection(fpoints0);
217 Blas::Dgemm(
'N',
'N', tnp0, tnp1 * tnp2, fnp0, 1.0, GP0->GetPtr().get(),
218 tnp0, wsp1.get(), fnp0, 0.0, to, tnp0);
Describes the specification for a Basis.
PointsKey GetPointsKey() const
Return distribution of points.
Defines a specification for a set of points.
size_t GetNumPoints() 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 = alpha A x plus beta y where A[m x n].
static void Dgemm(const char &transa, const char &transb, const int &m, const int &n, const int &k, const double &alpha, const double *a, const int &lda, const double *b, const int &ldb, const double &beta, double *c, const int &ldc)
BLAS level 3: Matrix-matrix multiply C = A x B where op(A)[m x k], op(B)[k x n], C[m x n] DGEMM perfo...
void PhysGalerkinProject3D(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 PhysGalerkinProject1D(const BasisKey &fbasis0, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, Array< OneD, NekDouble > &to)
PointsManagerT & PointsManager(void)
void PhysGalerkinProject2D(const BasisKey &fbasis0, const BasisKey &fbasis1, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, Array< OneD, NekDouble > &to)
std::shared_ptr< DNekMat > DNekMatSharedPtr
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)