Nektar++
|
Inner product WRT deriv base operator using sum-factorisation (Pyr) More...
Public Member Functions | |
~IProductWRTDerivBase_SumFac_Pyr () 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 |
Array< OneD, NekDouble > | m_fac2 |
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_Pyr (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 (Pyr)
Definition at line 1903 of file IProductWRTDerivBase.cpp.
|
finaldefault |
|
inlineprivate |
Definition at line 2097 of file IProductWRTDerivBase.cpp.
References Nektar::LibUtilities::eModified_A, m_derivFac, m_fac0, m_fac1, m_fac2, 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 2070 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_1 = d\phi/d\eta_1\, d\eta_1/d\xi_1 = d\phi/d\eta_1\, 2/(1-\eta_2) \]
\[ d\phi/d\xi_2 = d\phi/d\eta_0\, d\eta_0/d\xi_2 + d\phi/d\eta_1\, d\eta_1/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_1 (1+\eta_1)/(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] + (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, ((2/(1-\eta_2) (d\xi_1/dx in[0] + d\xi_0/dy in[1] + d\xi_0/dz in[2]) + (1-\eta_1)/(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_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 1964 of file IProductWRTDerivBase.cpp.
References m_base0, m_base1, m_base2, m_derbase0, m_derbase1, m_derbase2, m_derivFac, m_fac0, m_fac1, m_fac2, 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::PyrIProduct(), Vmath::Smul(), Vmath::Svtvp(), Vmath::Vadd(), Vmath::Vmul(), and Vmath::Vvtvp().
|
inlinefinalvirtual |
Implements Nektar::Collections::Operator.
Definition at line 2062 of file IProductWRTDerivBase.cpp.
References Nektar::ErrorUtil::efatal, and NEKERROR.
|
protected |
Definition at line 2084 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 2085 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 2086 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 2087 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 2088 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 2089 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 2090 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().
Definition at line 2091 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().
Definition at line 2092 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().
Definition at line 2093 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().
|
protected |
Definition at line 2083 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().
|
protected |
Definition at line 2080 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().
|
protected |
Definition at line 2081 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().
|
protected |
Definition at line 2082 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().
|
protected |
Definition at line 2077 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().
|
protected |
Definition at line 2078 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().
|
protected |
Definition at line 2079 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().
|
protected |
Definition at line 2094 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Pyr(), and operator()().