Nektar++
Public Member Functions | Protected Attributes | List of all members
Nektar::Collections::MatrixFreeMultiInOneOut Class Reference

#include <MatrixFreeBase.h>

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

Public Member Functions

 MatrixFreeMultiInOneOut (const unsigned int coordim, const unsigned int nIn, const unsigned int nOut, const unsigned int nCollSize)
 Constructor. More...
 

Protected Attributes

unsigned short m_coordim
 coordinates dimension More...
 
Array< OneD, Array< OneD, NekDouble > > m_input
 padded input/output vectors More...
 
Array< OneD, NekDoublem_output
 
- Protected Attributes inherited from Nektar::Collections::MatrixFreeBase
bool m_isPadded {false}
 flag for padding More...
 
unsigned int m_nElmtPad
 size after padding More...
 
unsigned int m_nIn
 
unsigned int m_nOut
 

Additional Inherited Members

- Protected Member Functions inherited from Nektar::Collections::MatrixFreeBase
 MatrixFreeBase ()=default
 
 MatrixFreeBase (const unsigned int nIn, const unsigned int nOut, const unsigned int nCollSize)
 

Detailed Description

Definition at line 92 of file MatrixFreeBase.h.

Constructor & Destructor Documentation

◆ MatrixFreeMultiInOneOut()

Nektar::Collections::MatrixFreeMultiInOneOut::MatrixFreeMultiInOneOut ( const unsigned int  coordim,
const unsigned int  nIn,
const unsigned int  nOut,
const unsigned int  nCollSize 
)
inline

Constructor.

Definition at line 96 of file MatrixFreeBase.h.

99 : MatrixFreeBase(nIn, nOut, nCollSize)
100 {
101 m_coordim = coordim;
102
103 // Padding if needed
105 const auto nElmtNoPad = nCollSize;
106 m_nElmtPad = nElmtNoPad;
107
108 if (nElmtNoPad % vec_t::width != 0)
109 {
110 m_isPadded = true;
111 m_nElmtPad =
112 nElmtNoPad + vec_t::width - (nElmtNoPad % vec_t::width);
113
114 m_input = Array<OneD, Array<OneD, NekDouble>>(m_coordim);
115 m_input[0] = Array<OneD, NekDouble>{nIn * m_nElmtPad, 0.0};
116 if (m_coordim == 2)
117 {
118 m_input[1] = Array<OneD, NekDouble>{nIn * m_nElmtPad, 0.0};
119 }
120 else if (m_coordim == 3)
121 {
122 m_input[1] = Array<OneD, NekDouble>{nIn * m_nElmtPad, 0.0};
123 m_input[2] = Array<OneD, NekDouble>{nIn * m_nElmtPad, 0.0};
124 }
125 m_output = Array<OneD, NekDouble>{nOut * m_nElmtPad, 0.0};
126 }
127 }
unsigned int m_nElmtPad
size after padding
unsigned short m_coordim
coordinates dimension
Array< OneD, Array< OneD, NekDouble > > m_input
padded input/output vectors
simd< NekDouble > vec_t
typename abi< ScalarType, width >::type simd
Definition: tinysimd.hpp:80

References m_coordim, m_input, Nektar::Collections::MatrixFreeBase::m_isPadded, Nektar::Collections::MatrixFreeBase::m_nElmtPad, and m_output.

Member Data Documentation

◆ m_coordim

unsigned short Nektar::Collections::MatrixFreeMultiInOneOut::m_coordim
protected

coordinates dimension

Definition at line 131 of file MatrixFreeBase.h.

Referenced by MatrixFreeMultiInOneOut(), and Nektar::Collections::IProductWRTDerivBase_MatrixFree::operator()().

◆ m_input

Array<OneD, Array<OneD, NekDouble> > Nektar::Collections::MatrixFreeMultiInOneOut::m_input
protected

padded input/output vectors

Definition at line 133 of file MatrixFreeBase.h.

Referenced by MatrixFreeMultiInOneOut(), and Nektar::Collections::IProductWRTDerivBase_MatrixFree::operator()().

◆ m_output

Array<OneD, NekDouble> Nektar::Collections::MatrixFreeMultiInOneOut::m_output
protected