Nektar++
|
Inner product WRT deriv base operator using sum-factorisation (Prism) More...
Public Member Functions | |
~IProductWRTDerivBase_SumFac_Prism () final=default | |
void | operator() (const Array< OneD, const NekDouble > &entry0, Array< OneD, NekDouble > &entry1, Array< OneD, NekDouble > &entry2, Array< OneD, NekDouble > &entry3, Array< OneD, NekDouble > &wsp) final |
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_nquad1 |
const int | m_nquad2 |
const int | m_nmodes0 |
const int | m_nmodes1 |
const int | m_nmodes2 |
Array< OneD, const NekDouble > | m_jacWStdW |
Array< OneD, const NekDouble > | m_base0 |
Array< OneD, const NekDouble > | m_base1 |
Array< OneD, const NekDouble > | m_base2 |
Array< OneD, const NekDouble > | m_derbase0 |
Array< OneD, const NekDouble > | m_derbase1 |
Array< OneD, const NekDouble > | m_derbase2 |
Array< TwoD, const NekDouble > | m_derivFac |
Array< OneD, NekDouble > | m_fac0 |
Array< OneD, NekDouble > | m_fac1 |
bool | m_sortTopVertex |
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 | |
IProductWRTDerivBase_SumFac_Prism (vector< StdRegions::StdExpansionSharedPtr > pCollExp, CoalescedGeomDataSharedPtr pGeomData, StdRegions::FactorMap factors) | |
Private Member Functions inherited from Nektar::Collections::IProductWRTDerivBase_Helper | |
IProductWRTDerivBase_Helper () | |
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... | |
Inner product WRT deriv base operator using sum-factorisation (Prism)
Definition at line 1659 of file IProductWRTDerivBase.cpp.
|
finaldefault |
|
inlineprivate |
Definition at line 1836 of file IProductWRTDerivBase.cpp.
References Nektar::LibUtilities::eModified_A, m_derivFac, m_fac0, m_fac1, m_jacWStdW, m_nmodes0, m_nmodes1, m_nmodes2, m_nquad0, m_nquad1, m_nquad2, Nektar::Collections::Operator::m_numElmt, m_sortTopVertex, Nektar::Collections::Operator::m_stdExp, and Nektar::Collections::Operator::m_wspSize.
|
inlineoverridevirtual |
Check the validity of the supplied factor map.
Implements Nektar::Collections::Operator.
Definition at line 1810 of file IProductWRTDerivBase.cpp.
References ASSERTL0.
|
inlinefinalvirtual |
This method calculates:
\[ (d\phi/dx,in[0]) + (d\phi/dy,in[1]) + (d\phi/dz,in[2]) \]
which can be represented in terms of local cartesian derivaties as:
\[ ((d\phi/d\xi_0\, d\xi_0/dx + d\phi/d\xi_1\, d\xi_1/dx + d\phi/d\xi_2\, d\xi_2/dx),in[0]) + \]
\[ ((d\phi/d\xi_0\, d\xi_0/dy + d\phi/d\xi_1\, d\xi_1/dy + d\phi/d\xi_2\, d\xi_2/dy),in[1]) + \]
\[ ((d\phi/d\xi_0\, d\xi_0/dz + d\phi/d\xi_1\, d\xi_1/dz + d\phi/d\xi_2\, d\xi_2/dz),in[2]) \, \]
where we note that
\[ d\phi/d\xi_0 = d\phi/d\eta_0 d\eta_0/d\xi_0 = d\phi/d\eta_0 2/(1-\eta_2) \]
\[ d\phi/d\xi_2 = d\phi/d\eta_0 d\eta_0/d\xi_2 + d\phi/d\eta_2 d\eta_2/d\xi_2 = d\phi/d\eta_0 (1+\eta_0)/(1-\eta_2) + d\phi/d\eta_2 \]
and so the full inner products are
\[ (d\phi/dx,in[0]) + (d\phi/dy,in[1]) + (d\phi/dz,in[2]) = \]
\[ (d\phi/d\eta_0, ((2/(1-\eta_2) (d\xi_0/dx in[0] + d\xi_0/dy in[1] + d\xi_0/dz in[2]) + (1-\eta_0)/(1-\eta_2) (d\xi_2/dx in[0] + d\xi_2/dy in[1] + d\xi_2/dz in[2] )) + \]
\[ (d\phi/d\eta_1, (d\xi_1/dx in[0] + d\xi_1/dy in[1] + d\xi_1/dz in[2])) + \]
\[ (d\phi/d\eta_2, (d\xi_2/dx in[0] + d\xi_2/dy in[1] + d\xi_2/dz in[2])) \]
Implements Nektar::Collections::Operator.
Definition at line 1713 of file IProductWRTDerivBase.cpp.
References m_base0, m_base1, m_base2, m_derbase0, m_derbase1, m_derbase2, m_derivFac, m_fac0, m_fac1, Nektar::Collections::Operator::m_isDeformed, m_jacWStdW, m_nmodes0, m_nmodes1, m_nmodes2, Nektar::Collections::Operator::m_nqe, m_nquad0, m_nquad1, m_nquad2, Nektar::Collections::Operator::m_numElmt, m_sortTopVertex, Nektar::Collections::Operator::m_stdExp, Nektar::Collections::PrismIProduct(), Vmath::Smul(), Vmath::Svtvp(), Vmath::Vadd(), Vmath::Vmul(), and Vmath::Vvtvp().
|
inlinefinalvirtual |
Implements Nektar::Collections::Operator.
Definition at line 1802 of file IProductWRTDerivBase.cpp.
References Nektar::ErrorUtil::efatal, and NEKERROR.
|
protected |
Definition at line 1824 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1825 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1826 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1827 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1828 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1829 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1830 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Prism(), and operator()().
Definition at line 1831 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Prism(), and operator()().
Definition at line 1832 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Prism(), and operator()().
|
protected |
Definition at line 1823 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Prism(), and operator()().
|
protected |
Definition at line 1820 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Prism(), and operator()().
|
protected |
Definition at line 1821 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Prism(), and operator()().
|
protected |
Definition at line 1822 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Prism(), and operator()().
|
protected |
Definition at line 1817 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Prism(), and operator()().
|
protected |
Definition at line 1818 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Prism(), and operator()().
|
protected |
Definition at line 1819 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Prism(), and operator()().
|
protected |
Definition at line 1833 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Prism(), and operator()().