Nektar++
|
#include <DiffusionIP.h>
Static Public Member Functions | |
static DiffusionSharedPtr | create (std::string diffType) |
Static Public Attributes | |
static std::string | type |
Private Member Functions | |
template<class T , typename = typename std::enable_if< std::is_floating_point<T>::value || tinysimd::is_vector_floating_point<T>::value>::type> | |
void | ConsVarAve (const size_t nConvectiveFields, const T &Bweight, const std::vector< T > &vFwd, const std::vector< T > &vBwd, std::vector< T > &aver) |
Calculate the average of conservative variables on traces. More... | |
void | GetPenaltyFactor (const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, Array< OneD, NekDouble > &factor) |
Get IP penalty factor based on order. More... | |
void | ConsVarAveJump (const std::size_t nConvectiveFields, const size_t npnts, const Array< OneD, const Array< OneD, NekDouble > > &vFwd, const Array< OneD, const Array< OneD, NekDouble > > &vBwd, Array< OneD, Array< OneD, NekDouble > > &aver, Array< OneD, Array< OneD, NekDouble > > &jump) |
void | AddSymmFluxIntegralToCoeff (const std::size_t nConvectiveFields, const size_t nDim, const size_t nPts, const size_t nTracePts, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const int > &nonZeroIndex, TensorOfArray3D< NekDouble > &tracflux, Array< OneD, Array< OneD, NekDouble > > &outarray) |
Add symmetric flux integration to field (in coefficient space) More... | |
void | AddSymmFluxIntegralToPhys (const std::size_t nConvectiveFields, const size_t nDim, const size_t nPts, const size_t nTracePts, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const int > &nonZeroIndex, TensorOfArray3D< NekDouble > &tracflux, Array< OneD, Array< OneD, NekDouble > > &outarray) |
Add symmetric flux integration to field (in physical space) More... | |
void | CalcTraceSymFlux (const std::size_t nConvectiveFields, const size_t nDim, const Array< OneD, Array< OneD, NekDouble > > &solution_Aver, Array< OneD, Array< OneD, NekDouble > > &solution_jump, Array< OneD, int > &nonZeroIndexsymm, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &traceSymflux) |
Calculate symmetric flux on traces. More... | |
void | AddDiffusionSymmFluxToCoeff (const std::size_t nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, TensorOfArray3D< NekDouble > &qfield, TensorOfArray3D< NekDouble > &VolumeFlux, Array< OneD, Array< OneD, NekDouble > > &outarray, const Array< OneD, Array< OneD, NekDouble > > &pFwd, const Array< OneD, Array< OneD, NekDouble > > &pBwd) |
void | AddDiffusionSymmFluxToPhys (const std::size_t nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, TensorOfArray3D< NekDouble > &qfield, TensorOfArray3D< NekDouble > &VolumeFlux, Array< OneD, Array< OneD, NekDouble > > &outarray, const Array< OneD, Array< OneD, NekDouble > > &pFwd, const Array< OneD, Array< OneD, NekDouble > > &pBwd) |
void | DiffuseTraceSymmFlux (const std::size_t nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, TensorOfArray3D< NekDouble > &qfield, TensorOfArray3D< NekDouble > &VolumeFlux, TensorOfArray3D< NekDouble > &SymmFlux, const Array< OneD, Array< OneD, NekDouble > > &pFwd, const Array< OneD, Array< OneD, NekDouble > > &pBwd, Array< OneD, int > &nonZeroIndex) |
Calculate symmetric flux on traces interface. More... | |
void | CalcTraceNumFlux (const NekDouble PenaltyFactor2, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, const TensorOfArray3D< NekDouble > &qfield, const Array< OneD, Array< OneD, NekDouble > > &vFwd, const Array< OneD, Array< OneD, NekDouble > > &vBwd, Array< OneD, int > &nonZeroIndexflux, TensorOfArray3D< NekDouble > &traceflux, Array< OneD, Array< OneD, NekDouble > > &solution_Aver, Array< OneD, Array< OneD, NekDouble > > &solution_jump) |
Calculate numerical flux on traces. More... | |
void | AddSecondDerivToTrace (const std::size_t nConvectiveFields, const size_t nDim, const size_t nPts, const size_t nTracePts, const NekDouble PenaltyFactor2, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const TensorOfArray3D< NekDouble > &qfield, TensorOfArray3D< NekDouble > &numDerivFwd, TensorOfArray3D< NekDouble > &numDerivBwd) |
Add second derivative term to trace jump (for DDG scheme) More... | |
void | ApplyFluxBndConds (const int nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, Array< OneD, Array< OneD, NekDouble > > &flux) |
aplly Neuman boundary conditions on flux Currently only consider WallAdiabatic More... | |
Private Attributes | |
NekDouble | m_IPSymmFluxCoeff |
NekDouble | m_IP2ndDervCoeff |
NekDouble | m_IPPenaltyCoeff |
Array< OneD, Array< OneD, NekDouble > > | m_traceNormals |
Array< OneD, Array< OneD, NekDouble > > | m_traceAver |
Array< OneD, Array< OneD, NekDouble > > | m_traceJump |
Array< OneD, Array< OneD, NekDouble > > | m_wspDiff |
Workspace for v_Diffusion. More... | |
TensorOfArray3D< NekDouble > | m_wspNumDerivBwd |
Workspace for CallTraceNumFlux. More... | |
TensorOfArray3D< NekDouble > | m_wspNumDerivFwd |
Array< OneD, NekDouble > | m_tracBwdWeightAver |
Array< OneD, NekDouble > | m_tracBwdWeightJump |
Array< OneD, NekDouble > | m_traceNormDirctnElmtLength |
Array< OneD, NekDouble > | m_traceNormDirctnElmtLengthRecip |
LibUtilities::SessionReaderSharedPtr | m_session |
Definition at line 43 of file DiffusionIP.h.
|
protected |
|
private |
Definition at line 402 of file DiffusionIP.cpp.
References AddSymmFluxIntegralToCoeff(), DiffuseTraceSymmFlux(), and m_IPSymmFluxCoeff.
Referenced by v_DiffuseCoeffs().
|
private |
Definition at line 437 of file DiffusionIP.cpp.
References AddSymmFluxIntegralToPhys(), DiffuseTraceSymmFlux(), and m_IPSymmFluxCoeff.
|
private |
Add second derivative term to trace jump (for DDG scheme)
Definition at line 804 of file DiffusionIP.cpp.
References m_traceNormals, m_traceNormDirctnElmtLength, Nektar::NullNekDouble1DArray, CellMLToNektar.cellml_metadata::p, and Vmath::Zero().
Referenced by CalcTraceNumFlux().
|
private |
Add symmetric flux integration to field (in coefficient space)
Definition at line 511 of file DiffusionIP.cpp.
References Vmath::Vadd(), and Vmath::Zero().
Referenced by AddDiffusionSymmFluxToCoeff().
|
private |
Add symmetric flux integration to field (in physical space)
Definition at line 547 of file DiffusionIP.cpp.
References Vmath::Vadd(), and Vmath::Zero().
Referenced by AddDiffusionSymmFluxToPhys().
|
private |
aplly Neuman boundary conditions on flux Currently only consider WallAdiabatic
Definition at line 877 of file DiffusionIP.cpp.
References Nektar::SpatialDomains::ePeriodic, and Vmath::Zero().
Referenced by v_DiffuseTraceFlux().
|
private |
Calculate numerical flux on traces.
Definition at line 687 of file DiffusionIP.cpp.
References Nektar::LibUtilities::Timer::AccumulateRegion(), AddSecondDerivToTrace(), ConsVarAveJump(), Nektar::UnitTests::d(), GetPenaltyFactor(), Nektar::SolverUtils::Diffusion::m_FunctorDiffusionfluxConsTrace, m_traceNormals, m_traceNormDirctnElmtLengthRecip, m_wspNumDerivBwd, m_wspNumDerivFwd, CellMLToNektar.cellml_metadata::p, Nektar::LibUtilities::Timer::Start(), Nektar::LibUtilities::Timer::Stop(), Vmath::Vadd(), and Vmath::Zero().
Referenced by v_DiffuseTraceFlux().
|
private |
Calculate symmetric flux on traces.
Definition at line 488 of file DiffusionIP.cpp.
References Nektar::SolverUtils::Diffusion::m_FunctorSymmetricfluxCons, m_IPSymmFluxCoeff, m_traceNormals, and Vmath::Smul().
Referenced by DiffuseTraceSymmFlux().
|
inlineprivate |
Calculate the average of conservative variables on traces.
Definition at line 128 of file DiffusionIP.h.
Referenced by ConsVarAveJump().
|
private |
Definition at line 638 of file DiffusionIP.cpp.
References ConsVarAve(), Nektar::SolverUtils::Diffusion::m_SpecialBndTreat, m_tracBwdWeightAver, m_tracBwdWeightJump, and CellMLToNektar.cellml_metadata::p.
Referenced by CalcTraceNumFlux().
|
inlinestatic |
Definition at line 46 of file DiffusionIP.h.
References DiffusionIP().
|
private |
Calculate symmetric flux on traces interface.
Definition at line 471 of file DiffusionIP.cpp.
References CalcTraceSymFlux(), m_traceAver, and m_traceJump.
Referenced by AddDiffusionSymmFluxToCoeff(), and AddDiffusionSymmFluxToPhys().
|
private |
Get IP penalty factor based on order.
Definition at line 580 of file DiffusionIP.cpp.
Referenced by CalcTraceNumFlux().
|
overrideprotectedvirtual |
Implements Nektar::SolverUtils::Diffusion.
Definition at line 173 of file DiffusionIP.cpp.
References Nektar::LibUtilities::Timer::AccumulateRegion(), m_wspDiff, Nektar::LibUtilities::Timer::Start(), Nektar::LibUtilities::Timer::Stop(), and v_DiffuseCoeffs().
|
overrideprotectedvirtual |
Diffusion Flux, calculate the physical derivatives.
Reimplemented from Nektar::SolverUtils::Diffusion.
Definition at line 335 of file DiffusionIP.cpp.
References Nektar::NullNekDouble1DArray.
|
overrideprotectedvirtual |
Reimplemented from Nektar::SolverUtils::Diffusion.
Definition at line 194 of file DiffusionIP.cpp.
References Nektar::LibUtilities::Timer::AccumulateRegion(), AddDiffusionSymmFluxToCoeff(), Nektar::SolverUtils::Diffusion::DiffuseCalcDerivative(), Nektar::SolverUtils::Diffusion::DiffuseTraceFlux(), Nektar::SolverUtils::Diffusion::DiffuseVolumeFlux(), m_traceNormals, Vmath::Neg(), Nektar::NullNekDoubleArrayOfArray, Nektar::LibUtilities::Timer::Start(), and Nektar::LibUtilities::Timer::Stop().
Referenced by v_Diffuse().
|
overrideprotectedvirtual |
Diffusion term Trace Flux.
Reimplemented from Nektar::SolverUtils::Diffusion.
Definition at line 378 of file DiffusionIP.cpp.
References Nektar::LibUtilities::Timer::AccumulateRegion(), ApplyFluxBndConds(), CalcTraceNumFlux(), m_IP2ndDervCoeff, m_traceAver, m_traceJump, Nektar::LibUtilities::Timer::Start(), and Nektar::LibUtilities::Timer::Stop().
|
overrideprotectedvirtual |
Diffusion Volume Flux.
Reimplemented from Nektar::SolverUtils::Diffusion.
Definition at line 360 of file DiffusionIP.cpp.
References Nektar::LibUtilities::Timer::AccumulateRegion(), Nektar::SolverUtils::Diffusion::m_FunctorDiffusionfluxCons, Nektar::NullNekDoubleArrayOfArray, Nektar::LibUtilities::Timer::Start(), and Nektar::LibUtilities::Timer::Stop().
|
inlineoverrideprotectedvirtual |
Reimplemented from Nektar::SolverUtils::Diffusion.
Definition at line 99 of file DiffusionIP.h.
References m_traceNormals.
|
overrideprotectedvirtual |
Implements Nektar::SolverUtils::Diffusion.
Definition at line 52 of file DiffusionIP.cpp.
References tinysimd::abs(), ASSERTL0, Nektar::NekConstants::kNekMachineEpsilon, m_IP2ndDervCoeff, m_IPPenaltyCoeff, m_IPSymmFluxCoeff, m_session, m_tracBwdWeightAver, m_tracBwdWeightJump, m_traceAver, m_traceJump, m_traceNormals, m_traceNormDirctnElmtLength, m_traceNormDirctnElmtLengthRecip, m_wspDiff, m_wspNumDerivBwd, m_wspNumDerivFwd, Vmath::Smul(), Vmath::Vabs(), Vmath::Vadd(), Vmath::Vdiv(), Vmath::Vmul(), and Vmath::Vsub().
|
private |
Definition at line 106 of file DiffusionIP.h.
Referenced by v_DiffuseTraceFlux(), and v_InitObject().
|
private |
Definition at line 107 of file DiffusionIP.h.
Referenced by v_InitObject().
|
private |
Definition at line 105 of file DiffusionIP.h.
Referenced by AddDiffusionSymmFluxToCoeff(), AddDiffusionSymmFluxToPhys(), CalcTraceSymFlux(), and v_InitObject().
|
private |
Definition at line 122 of file DiffusionIP.h.
Referenced by v_InitObject().
Definition at line 118 of file DiffusionIP.h.
Referenced by ConsVarAveJump(), and v_InitObject().
Definition at line 119 of file DiffusionIP.h.
Referenced by ConsVarAveJump(), and v_InitObject().
Definition at line 110 of file DiffusionIP.h.
Referenced by DiffuseTraceSymmFlux(), v_DiffuseTraceFlux(), and v_InitObject().
Definition at line 111 of file DiffusionIP.h.
Referenced by DiffuseTraceSymmFlux(), v_DiffuseTraceFlux(), and v_InitObject().
Definition at line 109 of file DiffusionIP.h.
Referenced by AddSecondDerivToTrace(), CalcTraceNumFlux(), CalcTraceSymFlux(), v_DiffuseCoeffs(), v_GetTraceNormal(), and v_InitObject().
Definition at line 120 of file DiffusionIP.h.
Referenced by AddSecondDerivToTrace(), and v_InitObject().
Definition at line 121 of file DiffusionIP.h.
Referenced by CalcTraceNumFlux(), and v_InitObject().
Workspace for v_Diffusion.
Definition at line 113 of file DiffusionIP.h.
Referenced by v_Diffuse(), and v_InitObject().
|
private |
Workspace for CallTraceNumFlux.
Definition at line 115 of file DiffusionIP.h.
Referenced by CalcTraceNumFlux(), and v_InitObject().
|
private |
Definition at line 116 of file DiffusionIP.h.
Referenced by CalcTraceNumFlux(), and v_InitObject().
|
static |
Definition at line 51 of file DiffusionIP.h.