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

#include <MatrixFreeBase.h>

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

Public Member Functions

 MatrixFreeOneInMultiOut (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, NekDoublem_input
 padded input/output vectors More...
 
Array< OneD, Array< OneD, NekDouble > > m_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 137 of file MatrixFreeBase.h.

Constructor & Destructor Documentation

◆ MatrixFreeOneInMultiOut()

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

Constructor.

Definition at line 141 of file MatrixFreeBase.h.

144 : MatrixFreeBase(nIn, nOut, nCollSize)
145 {
146 m_coordim = coordim;
147
148 // Padding if needed
150 const auto nElmtNoPad = nCollSize;
151 m_nElmtPad = nElmtNoPad;
152
153 if (nElmtNoPad % vec_t::width != 0)
154 {
155 m_isPadded = true;
156 m_nElmtPad =
157 nElmtNoPad + vec_t::width - (nElmtNoPad % vec_t::width);
158
159 m_input = Array<OneD, NekDouble>{nIn * m_nElmtPad, 0.0};
160
161 m_output = Array<OneD, Array<OneD, NekDouble>>(m_coordim);
162 m_output[0] = Array<OneD, NekDouble>{nOut * m_nElmtPad, 0.0};
163 if (m_coordim == 2)
164 {
165 m_output[1] = Array<OneD, NekDouble>{nOut * m_nElmtPad, 0.0};
166 }
167 else if (m_coordim == 3)
168 {
169 m_output[1] = Array<OneD, NekDouble>{nOut * m_nElmtPad, 0.0};
170 m_output[2] = Array<OneD, NekDouble>{nOut * m_nElmtPad, 0.0};
171 }
172 }
173 }
unsigned int m_nElmtPad
size after padding
Array< OneD, NekDouble > m_input
padded input/output vectors
unsigned short m_coordim
coordinates dimension
Array< OneD, Array< OneD, NekDouble > > m_output
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::MatrixFreeOneInMultiOut::m_coordim
protected

◆ m_input

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

padded input/output vectors

Definition at line 179 of file MatrixFreeBase.h.

Referenced by MatrixFreeOneInMultiOut(), and Nektar::Collections::PhysDeriv_MatrixFree::operator()().

◆ m_output

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