Nektar++
|
Inner product WRT deriv base operator using sum-factorisation (Tet) More...
Public Member Functions | |
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 |
Array< OneD, NekDouble > | m_fac3 |
bool | m_sortTopEdge |
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_Tet (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 (Tet)
Definition at line 1390 of file IProductWRTDerivBase.cpp.
|
inlineprivate |
Definition at line 1587 of file IProductWRTDerivBase.cpp.
References Nektar::LibUtilities::eModified_A, m_derivFac, m_fac0, m_fac1, m_fac2, m_fac3, m_jacWStdW, m_nmodes0, m_nmodes1, m_nmodes2, m_nquad0, m_nquad1, m_nquad2, Nektar::Collections::Operator::m_numElmt, m_sortTopEdge, 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 1559 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 4/((1-\eta_1)(1-\eta_2)) \]
\[ d\phi/d\xi_1 = d\phi/d\eta_0 2(1+\eta_0)/((1-\eta_1)(1-\eta_2)) + d\phi/d\eta_1 2/(1-\eta_2) \]
\[ d\phi/d\xi_2 = d\phi/d\eta_0 2(1+\eta_0)/((1-\eta_1)(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, fac0 (tmp0 + fac1(tmp1 + tmp2))) + (d\phi/d\eta_1, fac2 (tmp1 + fac3 tmp2)) + (d\phi/d\eta_2, tmp2) \]
where
\[ \begin{array}{lcl} tmp0 &=& (d\xi_0/dx in[0] + d\xi_0/dy in[1] + d\xi_0/dz in[2]) \\ tmp1 &=& (d\xi_1/dx in[0] + d\xi_1/dy in[1] + d\xi_1/dz in[2]) \\ tmp2 &=& (d\xi_2/dx in[0] + d\xi_2/dy in[1] + d\xi_2/dz in[2]) \end{array} \]
\[ \begin{array}{lcl} fac0 &= & 4/((1-\eta_1)(1-\eta_2)) \\ fac1 &= & (1+\eta_0)/2 \\ fac2 &= & 2/(1-\eta_2) \\ fac3 &= & (1+\eta_1)/2 \end{array} \]
Implements Nektar::Collections::Operator.
Definition at line 1449 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, m_fac3, 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_sortTopEdge, Nektar::Collections::Operator::m_stdExp, Vmath::Smul(), Vmath::Svtvp(), Nektar::Collections::TetIProduct(), Vmath::Vadd(), Vmath::Vmul(), and Vmath::Vvtvp().
|
inlinefinalvirtual |
Implements Nektar::Collections::Operator.
Definition at line 1551 of file IProductWRTDerivBase.cpp.
References Nektar::ErrorUtil::efatal, and NEKERROR.
|
protected |
Definition at line 1573 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1574 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1575 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1576 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1577 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1578 of file IProductWRTDerivBase.cpp.
Referenced by operator()().
|
protected |
Definition at line 1579 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
Definition at line 1580 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
Definition at line 1581 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
Definition at line 1582 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
Definition at line 1583 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
|
protected |
Definition at line 1572 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
|
protected |
Definition at line 1569 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
|
protected |
Definition at line 1570 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
|
protected |
Definition at line 1571 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
|
protected |
Definition at line 1566 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
|
protected |
Definition at line 1567 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
|
protected |
Definition at line 1568 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().
|
protected |
Definition at line 1584 of file IProductWRTDerivBase.cpp.
Referenced by IProductWRTDerivBase_SumFac_Tet(), and operator()().