Nektar++
Public Member Functions | Protected Attributes | Private Member Functions | List of all members
Nektar::Collections::BwdTrans_SumFac_Seg Class Referencefinal

Backward transform operator using sum-factorisation (Segment) More...

Inheritance diagram for Nektar::Collections::BwdTrans_SumFac_Seg:
[legend]

Public Member Functions

 ~BwdTrans_SumFac_Seg () final=default
 
void operator() (const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output0, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp) override
 Perform operation. More...
 
void operator() (int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp) final
 
void CheckFactors (StdRegions::FactorMap factors, int coll_phys_offset) override
 Check the validity of the supplied factor map. More...
 
- Public Member Functions inherited from Nektar::Collections::Operator
 Operator (std::vector< StdRegions::StdExpansionSharedPtr > pCollExp, std::shared_ptr< CoalescedGeomData > GeomData, StdRegions::FactorMap factors)
 Constructor. More...
 
virtual ~Operator ()=default
 
virtual COLLECTIONS_EXPORT void operator() (const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output0, Array< OneD, NekDouble > &output1, Array< OneD, NekDouble > &output2, Array< OneD, NekDouble > &wsp=NullNekDouble1DArray)=0
 Perform operation. More...
 
virtual COLLECTIONS_EXPORT void operator() (int dir, const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output, Array< OneD, NekDouble > &wsp=NullNekDouble1DArray)=0
 
virtual COLLECTIONS_EXPORT void CheckFactors (StdRegions::FactorMap factors, int coll_phys_offset)=0
 Check the validity of the supplied factor map. More...
 
unsigned int GetWspSize ()
 Get the size of the required workspace. More...
 
unsigned int GetNumElmt ()
 Get number of elements. More...
 
StdRegions::StdExpansionSharedPtr GetExpSharedPtr ()
 Get expansion pointer. More...
 
unsigned int GetInputSize ()
 
unsigned int GetOutputSize ()
 

Protected Attributes

const int m_nquad0
 
const int m_nmodes0
 
const bool m_colldir0
 
Array< OneD, const NekDoublem_base0
 
- Protected Attributes inherited from Nektar::Collections::Operator
bool m_isDeformed
 
StdRegions::StdExpansionSharedPtr m_stdExp
 
unsigned int m_numElmt
 number of elements that the operator is applied on More...
 
unsigned int m_nqe
 
unsigned int m_wspSize
 
unsigned int m_inputSize
 number of modes or quadrature points that are passed as input to an operator More...
 
unsigned int m_outputSize
 number of modes or quadrature points that are taken as output from an operator More...
 

Private Member Functions

 BwdTrans_SumFac_Seg (vector< StdRegions::StdExpansionSharedPtr > pCollExp, CoalescedGeomDataSharedPtr pGeomData, StdRegions::FactorMap factors)
 

Additional Inherited Members

- Protected Member Functions inherited from Nektar::Collections::Operator
virtual int v_GetInputSize ()
 This purely virtual function needs to be set-up for every operator inside Collections. It is responsible for returning the size of input collection, that the operator is applied on either in physical or coefficient space. More...
 
virtual int v_GetOutputSize ()
 This purely virtual function needs to be set-up for every operator inside Collections. It is responsible for returning the output size either in physical or coefficient space of an operator inside Collections. More...
 
- Protected Member Functions inherited from Nektar::Collections::BwdTrans_Helper
 BwdTrans_Helper ()
 

Detailed Description

Backward transform operator using sum-factorisation (Segment)

Definition at line 441 of file BwdTrans.cpp.

Constructor & Destructor Documentation

◆ ~BwdTrans_SumFac_Seg()

Nektar::Collections::BwdTrans_SumFac_Seg::~BwdTrans_SumFac_Seg ( )
finaldefault

◆ BwdTrans_SumFac_Seg()

Nektar::Collections::BwdTrans_SumFac_Seg::BwdTrans_SumFac_Seg ( vector< StdRegions::StdExpansionSharedPtr pCollExp,
CoalescedGeomDataSharedPtr  pGeomData,
StdRegions::FactorMap  factors 
)
inlineprivate

Definition at line 490 of file BwdTrans.cpp.

493 : Operator(pCollExp, pGeomData, factors), BwdTrans_Helper(),
494 m_nquad0(m_stdExp->GetNumPoints(0)),
495 m_nmodes0(m_stdExp->GetBasisNumModes(0)),
496 m_colldir0(m_stdExp->GetBasis(0)->Collocation()),
497 m_base0(m_stdExp->GetBasis(0)->GetBdata())
498 {
499 m_wspSize = 0;
500 }
Array< OneD, const NekDouble > m_base0
Definition: BwdTrans.cpp:487
StdRegions::StdExpansionSharedPtr m_stdExp
Definition: Operator.h:188
Operator(std::vector< StdRegions::StdExpansionSharedPtr > pCollExp, std::shared_ptr< CoalescedGeomData > GeomData, StdRegions::FactorMap factors)
Constructor.
Definition: Operator.cpp:66
StdRegions::ConstFactorMap factors

References Nektar::Collections::Operator::m_wspSize.

Member Function Documentation

◆ CheckFactors()

void Nektar::Collections::BwdTrans_SumFac_Seg::CheckFactors ( StdRegions::FactorMap  factors,
int  coll_phys_offset 
)
inlineoverridevirtual

Check the validity of the supplied factor map.

Implements Nektar::Collections::Operator.

Definition at line 477 of file BwdTrans.cpp.

479 {
480 ASSERTL0(false, "Not valid for this operator.");
481 }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:208

References ASSERTL0.

◆ operator()() [1/2]

void Nektar::Collections::BwdTrans_SumFac_Seg::operator() ( const Array< OneD, const NekDouble > &  input,
Array< OneD, NekDouble > &  output0,
Array< OneD, NekDouble > &  output1,
Array< OneD, NekDouble > &  output2,
Array< OneD, NekDouble > &  wsp 
)
inlineoverridevirtual

Perform operation.

Implements Nektar::Collections::Operator.

Definition at line 449 of file BwdTrans.cpp.

454 {
455 if (m_colldir0)
456 {
457 Vmath::Vcopy(m_numElmt * m_nmodes0, input.get(), 1, output0.get(),
458 1);
459 }
460 else
461 {
462 // out = B0*in;
463 Blas::Dgemm('N', 'N', m_nquad0, m_numElmt, m_nmodes0, 1.0,
464 m_base0.get(), m_nquad0, &input[0], m_nmodes0, 0.0,
465 &output0[0], m_nquad0);
466 }
467 }
unsigned int m_numElmt
number of elements that the operator is applied on
Definition: Operator.h:190
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...
Definition: Blas.hpp:383
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.hpp:825

References Blas::Dgemm(), m_base0, m_colldir0, m_nmodes0, m_nquad0, Nektar::Collections::Operator::m_numElmt, and Vmath::Vcopy().

◆ operator()() [2/2]

void Nektar::Collections::BwdTrans_SumFac_Seg::operator() ( int  dir,
const Array< OneD, const NekDouble > &  input,
Array< OneD, NekDouble > &  output,
Array< OneD, NekDouble > &  wsp 
)
inlinefinalvirtual

Implements Nektar::Collections::Operator.

Definition at line 469 of file BwdTrans.cpp.

473 {
474 ASSERTL0(false, "Not valid for this operator.");
475 }

References ASSERTL0.

Member Data Documentation

◆ m_base0

Array<OneD, const NekDouble> Nektar::Collections::BwdTrans_SumFac_Seg::m_base0
protected

Definition at line 487 of file BwdTrans.cpp.

Referenced by operator()().

◆ m_colldir0

const bool Nektar::Collections::BwdTrans_SumFac_Seg::m_colldir0
protected

Definition at line 486 of file BwdTrans.cpp.

Referenced by operator()().

◆ m_nmodes0

const int Nektar::Collections::BwdTrans_SumFac_Seg::m_nmodes0
protected

Definition at line 485 of file BwdTrans.cpp.

Referenced by operator()().

◆ m_nquad0

const int Nektar::Collections::BwdTrans_SumFac_Seg::m_nquad0
protected

Definition at line 484 of file BwdTrans.cpp.

Referenced by operator()().