Nektar++
|
Inner product WRT deriv base operator using sum-factorisation (Tri) More...
Public Member Functions | |
~IProductWRTDerivBase_SumFac_Tri () 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_nmodes0 |
const int | m_nmodes1 |
const bool | m_colldir0 |
const bool | m_colldir1 |
int | m_coordim |
Array< TwoD, const NekDouble > | m_derivFac |
Array< OneD, const NekDouble > | m_jacWStdW |
Array< OneD, const NekDouble > | m_base0 |
Array< OneD, const NekDouble > | m_base1 |
Array< OneD, const NekDouble > | m_derbase0 |
Array< OneD, const NekDouble > | m_derbase1 |
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_Tri (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 (Tri)
Definition at line 1011 of file IProductWRTDerivBase.cpp.
|
finaldefault |
|
inlineprivate |
Definition at line 1165 of file IProductWRTDerivBase.cpp.
References Nektar::LibUtilities::eModified_A, m_coordim, m_derivFac, m_fac0, m_fac1, m_jacWStdW, m_nmodes0, m_nmodes1, m_nquad0, m_nquad1, 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 1140 of file IProductWRTDerivBase.cpp.
References ASSERTL0.
|
inlinefinalvirtual |
This method calculates:
\[ (d\phi/dx,in[0]) + (d\phi/dy,in[1]) \]
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),in[0]) + \]
\[ ((d\phi/d\xi_0\, d\xi_0/dy + d\phi/d\xi_1\, d\xi_1/dy),in[1]) + \]
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_1) \]
\[ d\phi/d\xi_1 = d\phi/d\eta_1\, d\eta_1/d\xi_1 + d\phi/d\eta_1\, d\eta_1/d\xi_1 = d\phi/d\eta_0 (1+\eta_0)/(1-\eta_1) + d\phi/d\eta_1 \]
and so the full inner products are
\[ (d\phi/dx,in[0]) + (dphi/dy,in[1]) = (d\phi/d\eta_0, ((2/(1-\eta_1) (d\xi_0/dx in[0] + d\xi_0/dy in[1]) + (1-\eta_0)/(1-\eta_1) (d\xi_1/dx in[0]+d\xi_1/dy in[1])) + (d\phi/d\eta_1, (d\xi_1/dx in[0] + d\xi_1/dy in[1])) \]
Implements Nektar::Collections::Operator.
Definition at line 1050 of file IProductWRTDerivBase.cpp.
References m_base0, m_base1, m_coordim, m_derbase0, m_derbase1, m_derivFac, m_fac0, m_fac1, Nektar::Collections::Operator::m_isDeformed, m_jacWStdW, m_nmodes0, m_nmodes1, Nektar::Collections::Operator::m_nqe, m_nquad0, m_nquad1, Nektar::Collections::Operator::m_numElmt, m_sortTopVertex, Nektar::Collections::Operator::m_stdExp, Vmath::Smul(), Vmath::Svtvp(), Nektar::Collections::TriIProduct(), Vmath::Vadd(), Vmath::Vmul(), and Vmath::Vvtvp().
|
inlinefinalvirtual |
Implements Nektar::Collections::Operator.
Definition at line 1132 of file IProductWRTDerivBase.cpp.
References Nektar::ErrorUtil::efatal, and NEKERROR.
|
protected |
Definition at line 1156 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1157 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1151 of file IProductWRTDerivBase.cpp.
|
protected |
Definition at line 1152 of file IProductWRTDerivBase.cpp.
|
protected |
Definition at line 1153 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tri(), and operator()().
|
protected |
Definition at line 1158 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1159 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1154 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tri(), and operator()().
Definition at line 1160 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tri(), and operator()().
Definition at line 1161 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tri(), and operator()().
|
protected |
Definition at line 1155 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tri(), and operator()().
|
protected |
Definition at line 1149 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tri(), and operator()().
|
protected |
Definition at line 1150 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tri(), and operator()().
|
protected |
Definition at line 1147 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tri(), and operator()().
|
protected |
Definition at line 1148 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tri(), and operator()().
|
protected |
Definition at line 1162 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tri(), and operator()().