36 #include <loki/Singleton.h>
43 namespace Collections {
72 Blas::Dgemm(
'N',
'N', m_mat->GetRows(), m_numElmt,
73 m_mat->GetColumns(), 1.0, m_mat->GetRawPtr(),
74 m_mat->GetRows(), input.get(), m_stdExp->GetNcoeffs(),
75 0.0, output.get(), m_stdExp->GetTotPoints());
84 ASSERTL0(
false,
"Not valid for this operator.");
92 vector<StdRegions::StdExpansionSharedPtr> pCollExp,
97 m_stdExp->DetShapeType(), *m_stdExp);
98 m_mat = m_stdExp->GetStdMatrix(key);
106 BwdTrans_StdMat::create,
"BwdTrans_StdMat_Seg"),
109 BwdTrans_StdMat::create,
"BwdTrans_StdMat_Tri"),
112 BwdTrans_StdMat::create,
"BwdTrans_StdMat_NodalTri"),
115 BwdTrans_StdMat::create,
"BwdTrans_StdMat_Quad"),
118 BwdTrans_StdMat::create,
"BwdTrans_StdMat_Tet"),
121 BwdTrans_StdMat::create,
"BwdTrans_StdMat_NodalTet"),
124 BwdTrans_StdMat::create,
"BwdTrans_StdMat_Pyr"),
127 BwdTrans_StdMat::create,
"BwdTrans_StdMat_Prism"),
130 BwdTrans_StdMat::create,
"BwdTrans_StdMat_NodalPrism"),
133 BwdTrans_StdMat::create,
"BwdTrans_StdMat_Hex"),
157 const int nCoeffs = m_stdExp->GetNcoeffs();
158 const int nPhys = m_stdExp->GetTotPoints();
161 for (
int i = 0; i < m_numElmt; ++i)
163 m_stdExp->BwdTrans(input + i*nCoeffs, tmp = output + i*nPhys);
173 ASSERTL0(
false,
"Not valid for this operator.");
178 vector<StdRegions::StdExpansionSharedPtr> pCollExp,
189 BwdTrans_IterPerExp::create,
"BwdTrans_IterPerExp_Seg"),
192 BwdTrans_IterPerExp::create,
"BwdTrans_IterPerExp_Tri"),
195 BwdTrans_IterPerExp::create,
"BwdTrans_IterPerExp_NodalTri"),
198 BwdTrans_IterPerExp::create,
"BwdTrans_IterPerExp_Quad"),
201 BwdTrans_IterPerExp::create,
"BwdTrans_IterPerExp_Tet"),
204 BwdTrans_IterPerExp::create,
"BwdTrans_IterPerExp_NodalTet"),
207 BwdTrans_IterPerExp::create,
"BwdTrans_IterPerExp_Pyr"),
210 BwdTrans_IterPerExp::create,
"BwdTrans_IterPerExp_Prism"),
213 BwdTrans_IterPerExp::create,
"BwdTrans_IterPerExp_NodalPrism"),
216 BwdTrans_IterPerExp::create,
"BwdTrans_IterPerExp_Hex"),
239 const int nCoeffs = m_expList[0]->GetNcoeffs();
240 const int nPhys = m_expList[0]->GetTotPoints();
243 for (
int i = 0; i < m_numElmt; ++i)
245 m_expList[i]->BwdTrans(input + i*nCoeffs,
246 tmp = output + i*nPhys);
256 ASSERTL0(
false,
"Not valid for this operator.");
264 vector<StdRegions::StdExpansionSharedPtr> pCollExp,
268 m_expList = pCollExp;
276 BwdTrans_NoCollection::create,
"BwdTrans_NoCollection_Seg"),
279 BwdTrans_NoCollection::create,
"BwdTrans_NoCollection_Tri"),
282 BwdTrans_NoCollection::create,
"BwdTrans_NoCollection_NodalTri"),
285 BwdTrans_NoCollection::create,
"BwdTrans_NoCollection_Quad"),
288 BwdTrans_NoCollection::create,
"BwdTrans_NoCollection_Tet"),
291 BwdTrans_NoCollection::create,
"BwdTrans_NoCollection_NodalTet"),
294 BwdTrans_NoCollection::create,
"BwdTrans_NoCollection_Pyr"),
297 BwdTrans_NoCollection::create,
"BwdTrans_NoCollection_Prism"),
300 BwdTrans_NoCollection::create,
"BwdTrans_NoCollection_NodalPrism"),
303 BwdTrans_NoCollection::create,
"BwdTrans_NoCollection_Hex"),
328 Vmath::Vcopy(m_numElmt*m_nmodes0,input.get(),1,output.get(),1);
333 Blas::Dgemm(
'N',
'N', m_nquad0, m_numElmt, m_nmodes0,
334 1.0, m_base0.get(), m_nquad0,
335 &input[0], m_nmodes0, 0.0,
336 &output[0], m_nquad0);
346 ASSERTL0(
false,
"Not valid for this operator.");
358 vector<StdRegions::StdExpansionSharedPtr> pCollExp,
361 m_nquad0 (m_stdExp->GetNumPoints(0)),
362 m_nmodes0 (m_stdExp->GetBasisNumModes(0)),
363 m_colldir0(m_stdExp->GetBasis(0)->Collocation()),
364 m_base0 (m_stdExp->GetBasis(0)->GetBdata())
372 RegisterCreatorFunction(
374 BwdTrans_SumFac_Seg::create,
"BwdTrans_SumFac_Seg");
398 if(m_colldir0 && m_colldir1)
401 input.get(), 1, output.get(), 1);
406 = m_stdExp->GetBasis(1)->GetBdata();
408 for(i = 0; i < m_numElmt; ++i)
410 Blas::Dgemm(
'N',
'T', m_nquad0, m_nquad1, m_nmodes1,
411 1.0, &input[i*m_nquad0*m_nmodes1], m_nquad0,
412 base1.get(), m_nquad1, 0.0,
413 &output[i*m_nquad0*m_nquad1], m_nquad0);
418 Blas::Dgemm(
'N',
'N', m_nquad0, m_nmodes1*m_numElmt, m_nmodes0,
419 1.0, m_base0.get(), m_nquad0,
420 &input[0], m_nmodes0, 0.0,
421 &output[0], m_nquad0);
425 ASSERTL1(wsp.num_elements() == m_wspSize,
426 "Incorrect workspace size");
430 Blas::Dgemm(
'N',
'N', m_nquad0, m_nmodes1*m_numElmt, m_nmodes0,
431 1.0, m_base0.get(), m_nquad0,
432 &input[0], m_nmodes0, 0.0,
435 for(i = 0; i < m_numElmt; ++i)
437 Blas::Dgemm(
'N',
'T', m_nquad0, m_nquad1, m_nmodes1,
438 1.0, &wsp[i*m_nquad0*m_nmodes1], m_nquad0,
439 m_base1.get(), m_nquad1, 0.0,
440 &output[i*m_nquad0*m_nquad1], m_nquad0);
451 ASSERTL0(
false,
"Not valid for this operator.");
466 vector<StdRegions::StdExpansionSharedPtr> pCollExp,
469 m_nquad0 (m_stdExp->GetNumPoints(0)),
470 m_nquad1 (m_stdExp->GetNumPoints(1)),
471 m_nmodes0 (m_stdExp->GetBasisNumModes(0)),
472 m_nmodes1 (m_stdExp->GetBasisNumModes(1)),
473 m_colldir0(m_stdExp->GetBasis(0)->Collocation()),
474 m_colldir1(m_stdExp->GetBasis(1)->Collocation()),
475 m_base0 (m_stdExp->GetBasis(0)->GetBdata()),
476 m_base1 (m_stdExp->GetBasis(1)->GetBdata())
478 m_wspSize = m_nquad0*m_nmodes1*m_numElmt;
484 RegisterCreatorFunction(
486 BwdTrans_SumFac_Quad::create,
"BwdTrans_SumFac_Quad");
509 ASSERTL1(wsp.num_elements() == m_wspSize,
510 "Incorrect workspace size");
512 int ncoeffs = m_stdExp->GetNcoeffs();
516 for (i = mode = 0; i < m_nmodes0; ++i)
518 Blas::Dgemm(
'N',
'N', m_nquad1, m_numElmt, m_nmodes1-i,
519 1.0, m_base1.get()+mode*m_nquad1, m_nquad1,
520 &input[0]+mode, ncoeffs, 0.0,
521 &wsp[i*m_nquad1*m_numElmt], m_nquad1);
528 for(i = 0; i < m_numElmt; ++i)
530 Blas::Daxpy(m_nquad1, input[1+i*ncoeffs],
531 m_base1.get() + m_nquad1, 1,
532 &wsp[m_nquad1*m_numElmt] + i*m_nquad1, 1);
537 Blas::Dgemm(
'N',
'T', m_nquad0, m_nquad1*m_numElmt, m_nmodes0,
538 1.0, m_base0.get(), m_nquad0,
539 &wsp[0], m_nquad1*m_numElmt, 0.0,
540 &output[0], m_nquad0);
549 ASSERTL0(
false,
"Not valid for this operator.");
564 vector<StdRegions::StdExpansionSharedPtr> pCollExp,
567 m_nquad0 (m_stdExp->GetNumPoints(0)),
568 m_nquad1 (m_stdExp->GetNumPoints(1)),
569 m_nmodes0 (m_stdExp->GetBasisNumModes(0)),
570 m_nmodes1 (m_stdExp->GetBasisNumModes(1)),
571 m_base0 (m_stdExp->GetBasis(0)->GetBdata()),
572 m_base1 (m_stdExp->GetBasis(1)->GetBdata())
574 m_wspSize = m_nquad0 * m_nmodes1 * m_numElmt;
575 if(m_stdExp->GetBasis(0)->GetBasisType()
578 m_sortTopVertex =
true;
582 m_sortTopVertex =
false;
590 RegisterCreatorFunction(
592 BwdTrans_SumFac_Tri::create,
"BwdTrans_SumFac_Tri");
613 if(m_colldir0 && m_colldir1 && m_colldir2)
615 Vmath::Vcopy(m_numElmt * m_nmodes0 * m_nmodes1 * m_nmodes2,
621 ASSERTL1(wsp.num_elements() == m_wspSize,
622 "Incorrect workspace size");
625 int totmodes = m_nmodes0*m_nmodes1*m_nmodes2;
628 = wsp + m_nmodes0*m_nmodes1*m_nquad2*m_numElmt;
631 for(
int n = 0; n < m_numElmt; ++n)
633 Blas::Dgemm(
'N',
'T', m_nquad2, m_nmodes0*m_nmodes1,
634 m_nmodes2, 1.0, m_base2.get(), m_nquad2,
635 &input[n*totmodes], m_nmodes0*m_nmodes1, 0.0,
636 &wsp[n*m_nquad2], m_nquad2*m_numElmt);
640 Blas::Dgemm(
'N',
'T', m_nquad1, m_nquad2*m_numElmt*m_nmodes0,
641 m_nmodes1, 1.0, m_base1.get(), m_nquad1,
642 wsp.get(), m_nquad2*m_numElmt*m_nmodes0, 0.0,
643 wsp2.get(), m_nquad1);
646 Blas::Dgemm(
'N',
'T', m_nquad0, m_nquad1*m_nquad2*m_numElmt,
647 m_nmodes0, 1.0, m_base0.get(), m_nquad0,
648 wsp2.get(), m_nquad1*m_nquad2*m_numElmt, 0.0,
649 output.get(), m_nquad0);
659 ASSERTL0(
false,
"Not valid for this operator.");
678 vector<StdRegions::StdExpansionSharedPtr> pCollExp,
681 m_nquad0 (pCollExp[0]->GetNumPoints(0)),
682 m_nquad1 (pCollExp[0]->GetNumPoints(1)),
683 m_nquad2 (pCollExp[0]->GetNumPoints(2)),
684 m_nmodes0 (pCollExp[0]->GetBasisNumModes(0)),
685 m_nmodes1 (pCollExp[0]->GetBasisNumModes(1)),
686 m_nmodes2 (pCollExp[0]->GetBasisNumModes(2)),
687 m_base0 (pCollExp[0]->GetBasis(0)->GetBdata()),
688 m_base1 (pCollExp[0]->GetBasis(1)->GetBdata()),
689 m_base2 (pCollExp[0]->GetBasis(2)->GetBdata()),
690 m_colldir0(pCollExp[0]->GetBasis(0)->Collocation()),
691 m_colldir1(pCollExp[0]->GetBasis(1)->Collocation()),
692 m_colldir2(pCollExp[0]->GetBasis(2)->Collocation())
694 m_wspSize = m_numElmt*m_nmodes0*(m_nmodes1*m_nquad2 +
701 RegisterCreatorFunction(
703 BwdTrans_SumFac_Hex::create,
"BwdTrans_SumFac_Hex");
725 ASSERTL1(wsp.num_elements() == m_wspSize,
726 "Incorrect workspace size");
730 + m_numElmt*m_nquad2*m_nmodes0*(2*m_nmodes1-m_nmodes0+1)/2;
737 int ncoeffs = m_stdExp->GetNcoeffs();
740 for(i = 0; i < m_nmodes0; ++i)
742 for(j = 0; j < m_nmodes1-i; ++j, ++cnt)
744 Blas::Dgemm(
'N',
'N', m_nquad2, m_numElmt, m_nmodes2-i-j,
745 1.0, m_base2.get()+mode*m_nquad2, m_nquad2,
746 input.get()+ mode1, ncoeffs, 0.0,
747 tmp.get() + cnt*m_nquad2*m_numElmt, m_nquad2);
748 mode += m_nmodes2-i-j;
749 mode1 += m_nmodes2-i-j;
753 mode += (m_nmodes2-m_nmodes1)*(m_nmodes2-m_nmodes1+1)/2;
760 for(i = 0; i < m_numElmt; ++i)
764 Blas::Daxpy(m_nquad2, input[1+i*ncoeffs],
765 m_base2.get() + m_nquad2, 1,
766 &tmp[m_nquad2*m_numElmt] + i*m_nquad2, 1);
770 Blas::Daxpy(m_nquad2, input[1+i*ncoeffs],
771 m_base2.get() + m_nquad2, 1,
772 &tmp[m_nmodes1*m_nquad2*m_numElmt]
779 for(i = 0; i < m_nmodes0; ++i)
781 Blas::Dgemm(
'N',
'T', m_nquad1, m_nquad2*m_numElmt, m_nmodes1-i,
782 1.0, m_base1.get()+mode*m_nquad1, m_nquad1,
783 tmp.get() + mode*m_nquad2*m_numElmt,
785 0.0, tmp1.get() + i*m_nquad1*m_nquad2*m_numElmt,
798 for(i = 0; i < m_numElmt; ++i)
802 for(
int j = 0; j < m_nquad2; ++j)
804 Blas::Daxpy(m_nquad1,
805 tmp[m_nquad2*m_numElmt + i*m_nquad2 + j],
806 m_base1.get() + m_nquad1,1,
807 &tmp1[m_nquad1*m_nquad2*m_numElmt]
808 + i*m_nquad1*m_nquad2 + j*m_nquad1, 1);
814 Blas::Dgemm(
'N',
'T', m_nquad0, m_nquad1*m_nquad2*m_numElmt,
815 m_nmodes0, 1.0, m_base0.get(), m_nquad0,
816 tmp1.get(), m_nquad1*m_nquad2*m_numElmt, 0.0,
817 output.get(), m_nquad0);
827 ASSERTL0(
false,
"Not valid for this operator.");
844 vector<StdRegions::StdExpansionSharedPtr> pCollExp,
847 m_nquad0 (m_stdExp->GetNumPoints(0)),
848 m_nquad1 (m_stdExp->GetNumPoints(1)),
849 m_nquad2 (m_stdExp->GetNumPoints(2)),
850 m_nmodes0 (m_stdExp->GetBasisNumModes(0)),
851 m_nmodes1 (m_stdExp->GetBasisNumModes(1)),
852 m_nmodes2 (m_stdExp->GetBasisNumModes(2)),
853 m_base0 (m_stdExp->GetBasis(0)->GetBdata()),
854 m_base1 (m_stdExp->GetBasis(1)->GetBdata()),
855 m_base2 (m_stdExp->GetBasis(2)->GetBdata())
857 m_wspSize = m_numElmt
858 * (m_nquad2*m_nmodes0*(2*m_nmodes1-m_nmodes0+1)/2
859 + m_nquad2*m_nquad1*m_nmodes0);
861 if(m_stdExp->GetBasis(0)->GetBasisType()
864 m_sortTopEdge =
true;
868 m_sortTopEdge =
false;
875 RegisterCreatorFunction(
877 BwdTrans_SumFac_Tet::create,
"BwdTrans_SumFac_Tet");
899 ASSERTL1(wsp.num_elements() == m_wspSize,
900 "Incorrect workspace size");
903 int totmodes = m_stdExp->GetNcoeffs();
906 = wsp + m_nmodes0*m_nmodes1*m_nquad2*m_numElmt;
908 Vmath::Zero(m_nmodes0*m_nmodes1*m_nquad2*m_numElmt, wsp, 1);
914 for (i = mode = mode1 = 0; i < m_nmodes0; ++i)
916 cnt = i * m_nquad2 * m_numElmt;
917 for (j = 0; j < m_nmodes1; ++j)
919 Blas::Dgemm(
'N',
'N', m_nquad2, m_numElmt, m_nmodes2-i,
920 1.0, m_base2.get()+mode*m_nquad2, m_nquad2,
921 &input[0]+mode1, totmodes, 0.0,
922 &wsp[j*m_nquad2*m_numElmt*m_nmodes0+ cnt],
924 mode1 += m_nmodes2-i;
932 for(j = 0; j < m_nmodes1; ++j)
934 for(i = 0; i < m_numElmt; ++i)
936 Blas::Daxpy(m_nquad2,input[1+i*totmodes+j*m_nmodes2],
937 m_base2.get()+m_nquad2,1,
938 &wsp[j*m_nquad2*m_numElmt*m_nmodes0 +
939 m_nquad2*m_numElmt]+i*m_nquad2,1);
949 Blas::Dgemm(
'N',
'T', m_nquad1, m_nquad2*m_numElmt*m_nmodes0,
950 m_nmodes1,1.0, m_base1.get(), m_nquad1,
951 wsp.get(), m_nquad2*m_numElmt*m_nmodes0,
952 0.0, wsp2.get(), m_nquad1);
956 Blas::Dgemm(
'N',
'T', m_nquad0, m_nquad1*m_nquad2*m_numElmt,
957 m_nmodes0, 1.0, m_base0.get(), m_nquad0,
958 wsp2.get(), m_nquad1*m_nquad2*m_numElmt,
959 0.0, output.get(), m_nquad0);
968 ASSERTL0(
false,
"Not valid for this operator.");
986 vector<StdRegions::StdExpansionSharedPtr> pCollExp,
989 m_nquad0 (m_stdExp->GetNumPoints(0)),
990 m_nquad1 (m_stdExp->GetNumPoints(1)),
991 m_nquad2 (m_stdExp->GetNumPoints(2)),
992 m_nmodes0 (m_stdExp->GetBasisNumModes(0)),
993 m_nmodes1 (m_stdExp->GetBasisNumModes(1)),
994 m_nmodes2 (m_stdExp->GetBasisNumModes(2)),
995 m_base0 (m_stdExp->GetBasis(0)->GetBdata()),
996 m_base1 (m_stdExp->GetBasis(1)->GetBdata()),
997 m_base2 (m_stdExp->GetBasis(2)->GetBdata())
999 m_wspSize = m_numElmt*m_nmodes0*(m_nmodes1*m_nquad2
1000 + m_nquad1*m_nquad2);
1002 if(m_stdExp->GetBasis(0)->GetBasisType()
1005 m_sortTopVertex =
true;
1009 m_sortTopVertex =
false;
1017 RegisterCreatorFunction(
1019 BwdTrans_SumFac_Prism::create,
"BwdTrans_SumFac_Prism");
virtual void operator()(const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp)
Perform operation.
virtual void operator()(const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp)
Perform operation.
#define ASSERTL0(condition, msg)
Array< OneD, const NekDouble > m_base1
virtual void operator()(const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp)
Perform operation.
virtual void operator()(int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
boost::tuple< LibUtilities::ShapeType, OperatorType, ImplementationType, ExpansionIsNodal > OperatorKey
Key for describing an Operator.
Array< OneD, const NekDouble > m_base0
Backward transform operator using sum-factorisation (Tet)
virtual void operator()(int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
Backward transform operator using sum-factorisation (Hex)
Principle Modified Functions .
virtual void operator()(int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
Array< OneD, const NekDouble > m_base1
Backward transform operator using sum-factorisation (Tri)
Base class for operators on a collection of elements.
BwdTrans_SumFac_Tri(vector< StdRegions::StdExpansionSharedPtr > pCollExp, CoalescedGeomDataSharedPtr pGeomData)
boost::shared_ptr< DNekMat > DNekMatSharedPtr
Backward transform operator using sum-factorisation (Prism)
Backward transform operator using sum-factorisation (Segment)
BwdTrans_SumFac_Seg(vector< StdRegions::StdExpansionSharedPtr > pCollExp, CoalescedGeomDataSharedPtr pGeomData)
virtual void operator()(const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp)
Perform operation.
Backward transform operator using LocalRegions implementation.
Array< OneD, const NekDouble > m_base2
BwdTrans_NoCollection(vector< StdRegions::StdExpansionSharedPtr > pCollExp, CoalescedGeomDataSharedPtr pGeomData)
vector< StdRegions::StdExpansionSharedPtr > m_expList
virtual void operator()(int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
Array< OneD, const NekDouble > m_base0
BwdTrans_SumFac_Quad(vector< StdRegions::StdExpansionSharedPtr > pCollExp, CoalescedGeomDataSharedPtr pGeomData)
Array< OneD, const NekDouble > m_base0
BwdTrans_SumFac_Hex(vector< StdRegions::StdExpansionSharedPtr > pCollExp, CoalescedGeomDataSharedPtr pGeomData)
OperatorFactory & GetOperatorFactory()
Returns the singleton Operator factory object.
Array< OneD, const NekDouble > m_base1
virtual void operator()(int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
Array< OneD, const NekDouble > m_base0
Backward transform operator using default StdRegions operator.
Array< OneD, const NekDouble > m_base2
#define OPERATOR_CREATE(cname)
Array< OneD, const NekDouble > m_base0
virtual void operator()(const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp)
Perform operation.
Backward transform operator using sum-factorisation (Quad)
virtual void operator()(int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
Array< OneD, const NekDouble > m_base1
BwdTrans_SumFac_Tet(vector< StdRegions::StdExpansionSharedPtr > pCollExp, CoalescedGeomDataSharedPtr pGeomData)
virtual void operator()(int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
Array< OneD, const NekDouble > m_base2
virtual void operator()(const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp)
Perform operation.
Array< OneD, const NekDouble > m_base1
boost::shared_ptr< CoalescedGeomData > CoalescedGeomDataSharedPtr
virtual void operator()(const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp)
Perform operation.
virtual void operator()(const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp)
Perform operation.
void Zero(int n, T *x, const int incx)
Zero vector.
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
BwdTrans_SumFac_Prism(vector< StdRegions::StdExpansionSharedPtr > pCollExp, CoalescedGeomDataSharedPtr pGeomData)
virtual void operator()(int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
virtual void operator()(int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp)
Array< OneD, const NekDouble > m_base0
virtual void operator()(const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp)
Perform operation.
Backward transform operator using standard matrix approach.
BwdTrans_IterPerExp(vector< StdRegions::StdExpansionSharedPtr > pCollExp, CoalescedGeomDataSharedPtr pGeomData)
BwdTrans_StdMat(vector< StdRegions::StdExpansionSharedPtr > pCollExp, CoalescedGeomDataSharedPtr pGeomData)
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, tDescription pDesc="")
Register a class with the factory.