Nektar++
|
#include <Extrapolate.h>
Protected Member Functions | |
virtual void | v_SubSteppingTimeIntegration (int intMethod, const LibUtilities::TimeIntegrationWrapperSharedPtr &IntegrationScheme)=0 |
virtual void | v_SubStepSaveFields (int nstep)=0 |
virtual void | v_SubStepSetPressureBCs (const Array< OneD, const Array< OneD, NekDouble > > &inarray, NekDouble Aii_DT, NekDouble kinvis)=0 |
virtual void | v_SubStepAdvance (const LibUtilities::TimeIntegrationSolutionSharedPtr &integrationSoln, int nstep, NekDouble time)=0 |
virtual void | v_MountHOPBCs (int HBCdata, NekDouble kinvis, Array< OneD, NekDouble > &Q, Array< OneD, const NekDouble > &Advection)=0 |
void | CalcNeumannPressureBCs (const Array< OneD, const Array< OneD, NekDouble > > &fields, const Array< OneD, const Array< OneD, NekDouble > > &N, NekDouble kinvis) |
void | CalcOutflowBCs (const Array< OneD, const Array< OneD, NekDouble > > &fields, const Array< OneD, const Array< OneD, NekDouble > > &N, NekDouble kinvis) |
void | RollOver (Array< OneD, Array< OneD, NekDouble > > &input) |
void | CurlCurl (Array< OneD, Array< OneD, const NekDouble > > &Vel, Array< OneD, Array< OneD, NekDouble > > &Q, const int j) |
Protected Attributes | |
LibUtilities::SessionReaderSharedPtr | m_session |
LibUtilities::CommSharedPtr | m_comm |
Array< OneD, MultiRegions::ExpListSharedPtr > | m_fields |
MultiRegions::ExpListSharedPtr | m_pressure |
Pointer to field holding pressure field. | |
Array< OneD, int > | m_velocity |
int which identifies which components of m_fields contains the velocity (u,v,w); | |
SolverUtils::AdvectionSharedPtr | m_advObject |
Array< OneD, Array< OneD, NekDouble > > | m_previousVelFields |
int | m_curl_dim |
Curl-curl dimensionality. | |
int | m_bnd_dim |
bounday dimensionality | |
Array< OneD, const SpatialDomains::BoundaryConditionShPtr > | m_PBndConds |
pressure boundary conditions container | |
Array< OneD, MultiRegions::ExpListSharedPtr > | m_PBndExp |
pressure boundary conditions expansion container | |
int | m_pressureCalls |
number of times the high-order pressure BCs have been called | |
int | m_pressureBCsMaxPts |
Maximum points used in pressure BC evaluation. | |
int | m_pressureBCsElmtMaxPts |
Maximum points used in Element adjacent to pressure BC evaluation. | |
int | m_intSteps |
Maximum points used in pressure BC evaluation. | |
NekDouble | m_timestep |
bool | m_SingleMode |
Flag to determine if single homogeneous mode is used. | |
bool | m_HalfMode |
Flag to determine if half homogeneous mode is used. | |
bool | m_MultipleModes |
Flag to determine if use multiple homogenenous modes are used. | |
NekDouble | m_LhomZ |
physical length in Z direction (if homogeneous) | |
int | m_npointsX |
number of points in X direction (if homogeneous) | |
int | m_npointsY |
number of points in Y direction (if homogeneous) | |
int | m_npointsZ |
number of points in Z direction (if homogeneous) | |
Array< OneD, int > | m_pressureBCtoElmtID |
Id of element to which pressure boundary condition belongs. | |
Array< OneD, int > | m_pressureBCtoTraceID |
Id of edge (2D) or face (3D) to which pressure boundary condition belongs. | |
Array< OneD, Array< OneD, NekDouble > > | m_pressureHBCs |
Storage for current and previous levels of high order pressure boundary conditions. | |
Array< OneD, Array< OneD, NekDouble > > | m_acceleration |
Storage for current and previous levels of the acceleration term. | |
Array< OneD, HBCInfo > | m_HBCdata |
data structure to old all the information regarding High order pressure BCs | |
Array< OneD, NekDouble > | m_wavenumber |
wave number 2 pi k /Lz | |
Array< OneD, NekDouble > | m_negWavenumberSq |
minus Square of wavenumber | |
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > | m_outflowVel |
Storage for current and previous velocity fields at the otuflow for high order outflow BCs. |
Static Private Attributes | |
static std::string | def |
static NekDouble | StifflyStable_Betaq_Coeffs [3][3] |
static NekDouble | StifflyStable_Alpha_Coeffs [3][3] |
static NekDouble | StifflyStable_Gamma0_Coeffs [3] |
Definition at line 83 of file Extrapolate.h.
Nektar::Extrapolate::Extrapolate | ( | const LibUtilities::SessionReaderSharedPtr | pSession, |
Array< OneD, MultiRegions::ExpListSharedPtr > | pFields, | ||
MultiRegions::ExpListSharedPtr | pPressure, | ||
const Array< OneD, int > | pVel, | ||
const SolverUtils::AdvectionSharedPtr | advObject | ||
) |
Definition at line 56 of file Extrapolate.cpp.
References m_comm, m_session, and m_timestep.
|
virtual |
Definition at line 72 of file Extrapolate.cpp.
|
protected |
Unified routine for calculation high-oder terms
Casting the boundary expansion to the specific case
Picking up the element where the HOPBc is located
Assigning
Calculating the curl-curl and storing it in Q
Definition at line 189 of file Extrapolate.cpp.
References ASSERTL0, CurlCurl(), Nektar::MultiRegions::e2D, Nektar::MultiRegions::e3D, Nektar::MultiRegions::e3DH1D, Nektar::MultiRegions::e3DH2D, m_acceleration, m_bnd_dim, m_curl_dim, m_HBCdata, m_PBndExp, m_pressure, m_pressureBCsElmtMaxPts, m_pressureBCsMaxPts, and MountHOPBCs().
Referenced by EvaluatePressureBCs().
|
protected |
Definition at line 327 of file Extrapolate.cpp.
References Nektar::MultiRegions::DirCartesianMap, Nektar::SpatialDomains::eHighOutflow, m_bnd_dim, m_curl_dim, m_fields, m_intSteps, m_outflowVel, m_PBndConds, m_PBndExp, m_pressureBCsElmtMaxPts, m_pressureBCsMaxPts, m_pressureBCtoElmtID, m_pressureBCtoTraceID, m_pressureCalls, m_session, m_velocity, RollOver(), Vmath::Smul(), Vmath::Svtvp(), Vmath::Vadd(), Vmath::Vcopy(), Vmath::Vvtvp(), and Vmath::Zero().
Referenced by EvaluatePressureBCs().
|
protected |
Curl Curl routine - dimension dependent
Definition at line 627 of file Extrapolate.cpp.
References ASSERTL0, Nektar::MultiRegions::DirCartesianMap, Nektar::MultiRegions::e2D, Nektar::MultiRegions::e3D, Nektar::MultiRegions::e3DH1D, Nektar::MultiRegions::e3DH2D, m_fields, m_HBCdata, m_negWavenumberSq, m_pressureBCsElmtMaxPts, m_wavenumber, Vmath::Smul(), Vmath::Vadd(), and Vmath::Vsub().
Referenced by CalcNeumannPressureBCs().
void Nektar::Extrapolate::EvaluatePressureBCs | ( | const Array< OneD, const Array< OneD, NekDouble > > & | fields, |
const Array< OneD, const Array< OneD, NekDouble > > & | N, | ||
NekDouble | kinvis | ||
) |
Function to extrapolate the new pressure boundary condition. Based on the velocity field and on the advection term. Acceleration term is also computed. This routine is a general one for 2d and 3D application and it can be called directly from velocity correction scheme. Specialisation on dimensionality is redirected to the CalcPressureBCs method.
Definition at line 89 of file Extrapolate.cpp.
References CalcNeumannPressureBCs(), CalcOutflowBCs(), Nektar::SpatialDomains::eHigh, m_acceleration, m_HBCdata, m_intSteps, m_PBndConds, m_PBndExp, m_pressureCalls, m_pressureHBCs, m_timestep, RollOver(), Vmath::Smul(), StifflyStable_Alpha_Coeffs, StifflyStable_Betaq_Coeffs, StifflyStable_Gamma0_Coeffs, Vmath::Svtvp(), and Vmath::Vcopy().
Referenced by Nektar::SubSteppingExtrapolate::v_SubStepSetPressureBCs().
void Nektar::Extrapolate::GenerateHOPBCMap | ( | ) |
Map to directly locate HOPBCs position and offsets in all scenarios
Definition at line 784 of file Extrapolate.cpp.
References ASSERTL0, Nektar::MultiRegions::e2D, Nektar::MultiRegions::e3D, Nektar::MultiRegions::e3DH1D, Nektar::MultiRegions::e3DH2D, Nektar::SpatialDomains::eHigh, m_acceleration, m_bnd_dim, m_comm, m_curl_dim, m_HalfMode, m_HBCdata, m_intSteps, m_LhomZ, m_MultipleModes, m_negWavenumberSq, m_npointsY, m_npointsZ, m_PBndConds, m_PBndExp, m_pressure, m_pressureBCsElmtMaxPts, m_pressureBCsMaxPts, m_pressureBCtoElmtID, m_pressureBCtoTraceID, m_pressureCalls, m_pressureHBCs, m_session, m_SingleMode, m_wavenumber, Nektar::LibUtilities::ReduceSum, and sign.
Array< OneD, NekDouble > Nektar::Extrapolate::GetMaxStdVelocity | ( | const Array< OneD, Array< OneD, NekDouble > > | inarray | ) |
Definition at line 1090 of file Extrapolate.cpp.
References ASSERTL0, Nektar::SpatialDomains::eDeformed, m_curl_dim, and m_fields.
Referenced by Nektar::SubSteppingExtrapolate::GetSubstepTimeStep().
|
inline |
Definition at line 306 of file Extrapolate.h.
References v_MountHOPBCs().
Referenced by CalcNeumannPressureBCs().
Function to roll time-level storages to the next step layout. The stored data associated with the oldest time-level (not required anymore) are moved to the top, where they will be overwritten as the solution process progresses.
Definition at line 764 of file Extrapolate.cpp.
Referenced by CalcOutflowBCs(), and EvaluatePressureBCs().
|
inline |
Definition at line 295 of file Extrapolate.h.
References v_SubStepAdvance().
|
inline |
Definition at line 265 of file Extrapolate.h.
References v_SubSteppingTimeIntegration().
|
inline |
Definition at line 275 of file Extrapolate.h.
References v_SubStepSaveFields().
|
inline |
Definition at line 284 of file Extrapolate.h.
References v_SubStepSetPressureBCs().
|
protectedpure virtual |
Implemented in Nektar::SubSteppingExtrapolate, and Nektar::StandardExtrapolate.
Referenced by MountHOPBCs().
|
protectedpure virtual |
Implemented in Nektar::SubSteppingExtrapolate, and Nektar::StandardExtrapolate.
Referenced by SubStepAdvance().
|
protectedpure virtual |
Implemented in Nektar::SubSteppingExtrapolate, and Nektar::StandardExtrapolate.
Referenced by SubSteppingTimeIntegration().
|
protectedpure virtual |
Implemented in Nektar::SubSteppingExtrapolate, and Nektar::StandardExtrapolate.
Referenced by SubStepSaveFields().
|
protectedpure virtual |
Implemented in Nektar::SubSteppingExtrapolate, and Nektar::StandardExtrapolate.
Referenced by SubStepSetPressureBCs().
|
staticprivate |
Definition at line 254 of file Extrapolate.h.
Storage for current and previous levels of the acceleration term.
Definition at line 238 of file Extrapolate.h.
Referenced by CalcNeumannPressureBCs(), EvaluatePressureBCs(), and GenerateHOPBCMap().
|
protected |
Definition at line 183 of file Extrapolate.h.
Referenced by Nektar::SubSteppingExtrapolate::SubStepAdvection().
|
protected |
bounday dimensionality
Definition at line 191 of file Extrapolate.h.
Referenced by CalcNeumannPressureBCs(), CalcOutflowBCs(), and GenerateHOPBCMap().
|
protected |
Definition at line 172 of file Extrapolate.h.
Referenced by Extrapolate(), GenerateHOPBCMap(), Nektar::SubSteppingExtrapolate::GetSubstepTimeStep(), and Nektar::SubSteppingExtrapolate::v_SubStepAdvance().
|
protected |
Curl-curl dimensionality.
Definition at line 188 of file Extrapolate.h.
Referenced by Nektar::SubSteppingExtrapolate::AddAdvectionPenaltyFlux(), CalcNeumannPressureBCs(), CalcOutflowBCs(), GenerateHOPBCMap(), and GetMaxStdVelocity().
|
protected |
Definition at line 174 of file Extrapolate.h.
Referenced by Nektar::SubSteppingExtrapolate::AddAdvectionPenaltyFlux(), Nektar::SubSteppingExtrapolate::AddDuDt2D(), Nektar::SubSteppingExtrapolate::AddDuDt3D(), CalcOutflowBCs(), CurlCurl(), GetMaxStdVelocity(), Nektar::SubSteppingExtrapolate::GetSubstepTimeStep(), Nektar::SubSteppingExtrapolate::SubStepAdvection(), Nektar::SubSteppingExtrapolate::SubStepExtrapolateField(), Nektar::SubSteppingExtrapolate::v_SubStepAdvance(), Nektar::SubSteppingExtrapolate::v_SubSteppingTimeIntegration(), Nektar::SubSteppingExtrapolate::v_SubStepSaveFields(), and Nektar::SubSteppingExtrapolate::v_SubStepSetPressureBCs().
|
protected |
Flag to determine if half homogeneous mode is used.
Definition at line 216 of file Extrapolate.h.
Referenced by GenerateHOPBCMap().
data structure to old all the information regarding High order pressure BCs
Definition at line 241 of file Extrapolate.h.
Referenced by CalcNeumannPressureBCs(), CurlCurl(), EvaluatePressureBCs(), and GenerateHOPBCMap().
|
protected |
Maximum points used in pressure BC evaluation.
Definition at line 209 of file Extrapolate.h.
Referenced by CalcOutflowBCs(), EvaluatePressureBCs(), GenerateHOPBCMap(), Nektar::SubSteppingExtrapolate::SubStepExtrapolateField(), Nektar::SubSteppingExtrapolate::v_SubStepAdvance(), Nektar::StandardExtrapolate::v_SubSteppingTimeIntegration(), and Nektar::SubSteppingExtrapolate::v_SubSteppingTimeIntegration().
|
protected |
physical length in Z direction (if homogeneous)
Definition at line 220 of file Extrapolate.h.
Referenced by GenerateHOPBCMap().
|
protected |
Flag to determine if use multiple homogenenous modes are used.
Definition at line 218 of file Extrapolate.h.
Referenced by GenerateHOPBCMap().
minus Square of wavenumber
Definition at line 247 of file Extrapolate.h.
Referenced by CurlCurl(), and GenerateHOPBCMap().
|
protected |
number of points in X direction (if homogeneous)
Definition at line 222 of file Extrapolate.h.
|
protected |
number of points in Y direction (if homogeneous)
Definition at line 223 of file Extrapolate.h.
Referenced by GenerateHOPBCMap().
|
protected |
number of points in Z direction (if homogeneous)
Definition at line 224 of file Extrapolate.h.
Referenced by GenerateHOPBCMap().
Storage for current and previous velocity fields at the otuflow for high order outflow BCs.
Definition at line 250 of file Extrapolate.h.
Referenced by CalcOutflowBCs().
|
protected |
pressure boundary conditions container
Definition at line 194 of file Extrapolate.h.
Referenced by CalcOutflowBCs(), EvaluatePressureBCs(), and GenerateHOPBCMap().
|
protected |
pressure boundary conditions expansion container
Definition at line 197 of file Extrapolate.h.
Referenced by CalcNeumannPressureBCs(), CalcOutflowBCs(), EvaluatePressureBCs(), and GenerateHOPBCMap().
|
protected |
Pointer to field holding pressure field.
Definition at line 177 of file Extrapolate.h.
Referenced by CalcNeumannPressureBCs(), and GenerateHOPBCMap().
|
protected |
Maximum points used in Element adjacent to pressure BC evaluation.
Definition at line 206 of file Extrapolate.h.
Referenced by CalcNeumannPressureBCs(), CalcOutflowBCs(), CurlCurl(), and GenerateHOPBCMap().
|
protected |
Maximum points used in pressure BC evaluation.
Definition at line 203 of file Extrapolate.h.
Referenced by Nektar::SubSteppingExtrapolate::AddDuDt2D(), Nektar::SubSteppingExtrapolate::AddDuDt3D(), CalcNeumannPressureBCs(), CalcOutflowBCs(), and GenerateHOPBCMap().
|
protected |
Id of element to which pressure boundary condition belongs.
Definition at line 229 of file Extrapolate.h.
Referenced by Nektar::SubSteppingExtrapolate::AddDuDt2D(), Nektar::SubSteppingExtrapolate::AddDuDt3D(), CalcOutflowBCs(), and GenerateHOPBCMap().
|
protected |
Id of edge (2D) or face (3D) to which pressure boundary condition belongs.
Definition at line 232 of file Extrapolate.h.
Referenced by Nektar::SubSteppingExtrapolate::AddDuDt2D(), Nektar::SubSteppingExtrapolate::AddDuDt3D(), CalcOutflowBCs(), and GenerateHOPBCMap().
|
protected |
number of times the high-order pressure BCs have been called
Definition at line 200 of file Extrapolate.h.
Referenced by CalcOutflowBCs(), EvaluatePressureBCs(), and GenerateHOPBCMap().
Storage for current and previous levels of high order pressure boundary conditions.
Definition at line 235 of file Extrapolate.h.
Referenced by EvaluatePressureBCs(), and GenerateHOPBCMap().
Definition at line 185 of file Extrapolate.h.
|
protected |
Definition at line 170 of file Extrapolate.h.
Referenced by CalcOutflowBCs(), Extrapolate(), GenerateHOPBCMap(), and Nektar::SubSteppingExtrapolate::SubSteppingExtrapolate().
|
protected |
Flag to determine if single homogeneous mode is used.
Definition at line 214 of file Extrapolate.h.
Referenced by GenerateHOPBCMap().
|
protected |
Definition at line 211 of file Extrapolate.h.
Referenced by EvaluatePressureBCs(), Extrapolate(), Nektar::SubSteppingExtrapolate::SubStepAdvection(), Nektar::SubSteppingExtrapolate::SubStepExtrapolateField(), and Nektar::SubSteppingExtrapolate::v_SubStepAdvance().
|
protected |
int which identifies which components of m_fields contains the velocity (u,v,w);
Definition at line 181 of file Extrapolate.h.
Referenced by Nektar::SubSteppingExtrapolate::AddAdvectionPenaltyFlux(), Nektar::SubSteppingExtrapolate::AddDuDt(), Nektar::SubSteppingExtrapolate::AddDuDt2D(), Nektar::SubSteppingExtrapolate::AddDuDt3D(), CalcOutflowBCs(), Nektar::SubSteppingExtrapolate::GetSubstepTimeStep(), Nektar::SubSteppingExtrapolate::SubStepAdvection(), Nektar::SubSteppingExtrapolate::SubStepExtrapolateField(), Nektar::SubSteppingExtrapolate::v_SubSteppingTimeIntegration(), Nektar::SubSteppingExtrapolate::v_SubStepSaveFields(), and Nektar::SubSteppingExtrapolate::v_SubStepSetPressureBCs().
wave number 2 pi k /Lz
Definition at line 244 of file Extrapolate.h.
Referenced by CurlCurl(), and GenerateHOPBCMap().
|
staticprivate |
Definition at line 258 of file Extrapolate.h.
Referenced by EvaluatePressureBCs().
|
staticprivate |
Definition at line 257 of file Extrapolate.h.
Referenced by EvaluatePressureBCs().
|
staticprivate |
Definition at line 259 of file Extrapolate.h.
Referenced by EvaluatePressureBCs().