46 namespace LibUtilities
54 const Array<OneD, const NekDouble>& from,
56 Array<OneD, NekDouble> &to)
62 const Array<OneD, const NekDouble>& from,
64 Array<OneD, NekDouble> &to)
66 if(fpoints0 == tpoints0)
74 GP0 =
PointsManager()[tpoints0]->GetGalerkinProjection(fpoints0);
97 if(fpoints0 == tpoints0)
107 ->GetGalerkinProjection(fpoints0);
111 from, 1, 0.0, to, 1);
118 const Array<OneD, const NekDouble>& from,
121 Array<OneD, NekDouble> &to)
129 const Array<OneD, const NekDouble>& from,
132 Array<OneD, NekDouble> &to)
152 if(fpoints1 == tpoints1)
158 GP1 =
PointsManager()[tpoints1]->GetGalerkinProjection(fpoints1);
159 Blas::Dgemm(
'N',
'T', fnp0, tnp1, fnp1, 1.0, from, fnp0,
160 GP1->GetPtr().get(), tnp1, 0.0, wsp.get(), fnp0);
163 if(fpoints0 == tpoints0)
169 GP0 =
PointsManager()[tpoints0]->GetGalerkinProjection(fpoints0);
170 Blas::Dgemm(
'N',
'N', tnp0, tnp1, fnp0, 1.0,
172 tnp0, wsp.get(), fnp0, 0.0, to, tnp0);
181 const Array<OneD, const NekDouble>& from,
185 Array<OneD, NekDouble> &to)
200 const Array<OneD, const NekDouble>& from,
204 Array<OneD, NekDouble> &to)
207 tpoints0,tpoints1,tpoints2,to.data());
228 Array<OneD, NekDouble> wsp1(fnp0*tnp1*tnp2);
229 Array<OneD, NekDouble> wsp2(fnp0*fnp1*tnp2);
231 GP2 =
PointsManager()[tpoints2]->GetGalerkinProjection(fpoints2);
232 Blas::Dgemm(
'N',
'T', fnp0*fnp1, tnp2, fnp2, 1.0, from, fnp0*fnp1,
233 GP2->GetPtr().get(), tnp2, 0.0, wsp2.get(), fnp0*fnp1);
235 GP1 =
PointsManager()[tpoints1]->GetGalerkinProjection(fpoints1);
236 for(
int i = 0; i < tnp2; i++)
238 Blas::Dgemm(
'N',
'T', fnp0, tnp1, fnp1, 1.0,
239 wsp2.get()+i*fnp0*fnp1,
240 fnp0, GP1->GetPtr().get(),tnp1, 0.0,
241 wsp1.get()+i*fnp0*tnp1,
245 GP0 =
PointsManager()[tpoints0]->GetGalerkinProjection(fpoints0);
246 Blas::Dgemm(
'N',
'N', tnp0, tnp1*tnp2, fnp0, 1.0,
247 GP0->GetPtr().get(), tnp0, wsp1.get(), fnp0, 0.0,