Nektar++
Loading...
Searching...
No Matches
solvers
IncNavierStokesSolver
EquationSystems
SubSteppingExtrapolate.h
Go to the documentation of this file.
1
///////////////////////////////////////////////////////////////////////////////
2
//
3
// File: SubSteppingExtrapolate.h
4
//
5
// For more information, please see: http://www.nektar.info
6
//
7
// The MIT License
8
//
9
// Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10
// Department of Aeronautics, Imperial College London (UK), and Scientific
11
// Computing and Imaging Institute, University of Utah (USA).
12
//
13
// Permission is hereby granted, free of charge, to any person obtaining a
14
// copy of this software and associated documentation files (the "Software"),
15
// to deal in the Software without restriction, including without limitation
16
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
17
// and/or sell copies of the Software, and to permit persons to whom the
18
// Software is furnished to do so, subject to the following conditions:
19
//
20
// The above copyright notice and this permission notice shall be included
21
// in all copies or substantial portions of the Software.
22
//
23
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29
// DEALINGS IN THE SOFTWARE.
30
//
31
// Description: Abstract base class for SubSteppingExtrapolate.
32
//
33
///////////////////////////////////////////////////////////////////////////////
34
35
#ifndef NEKTAR_SOLVERS_SUBSTEPPINGEXTRAPOLATE_H
36
#define NEKTAR_SOLVERS_SUBSTEPPINGEXTRAPOLATE_H
37
38
#include <
IncNavierStokesSolver/EquationSystems/Extrapolate.h
>
39
#include <
LibUtilities/BasicUtils/NekFactory.hpp
>
40
#include <
LibUtilities/BasicUtils/SessionReader.h
>
41
#include <
LibUtilities/BasicUtils/SharedArray.hpp
>
42
#include <
LibUtilities/Memory/NekMemoryManager.hpp
>
43
#include <
LibUtilities/TimeIntegration/TimeIntegrationTypes.hpp
>
44
#include <
MultiRegions/ExpList.h
>
45
#include <
SolverUtils/AdvectionSystem.h
>
46
47
namespace
Nektar
48
{
49
//--------
50
// Substepping
51
// --------
52
53
class
SubSteppingExtrapolate;
54
55
typedef
std::shared_ptr<SubSteppingExtrapolate>
SubSteppingExtrapolateSharedPtr
;
56
57
class
SubSteppingExtrapolate
:
public
Extrapolate
58
{
59
public
:
60
friend
class
MemoryManager
<
SubSteppingExtrapolate
>;
61
62
/// Creates an instance of this class
63
static
ExtrapolateSharedPtr
create
(
64
const
LibUtilities::SessionReaderSharedPtr
&pSession,
65
Array<OneD, MultiRegions::ExpListSharedPtr>
&pFields,
66
MultiRegions::ExpListSharedPtr
&pPressure,
const
Array<OneD, int>
&pVel,
67
const
SolverUtils::AdvectionSharedPtr
&advObject)
68
{
69
ExtrapolateSharedPtr
p =
70
MemoryManager<SubSteppingExtrapolate>::AllocateSharedPtr
(
71
pSession, pFields, pPressure, pVel, advObject);
72
return
p;
73
}
74
75
/// Name of class
76
static
std::string
className
;
77
78
protected
:
79
LibUtilities::TimeIntegrationSchemeSharedPtr
m_intScheme
;
80
LibUtilities::TimeIntegrationSchemeSharedPtr
m_subStepIntegrationScheme
;
81
LibUtilities::TimeIntegrationSchemeOperators
m_subStepIntegrationOps
;
82
83
Array<OneD, Array<OneD, NekDouble>
>
m_previousVelFields
;
84
Array<OneD, Array<OneD, NekDouble>
>
m_previousVnFields
;
85
86
NekDouble
m_cflSafetyFactor
;
87
int
m_infosteps
;
88
int
m_minsubsteps
;
89
int
m_maxsubsteps
;
90
91
SubSteppingExtrapolate
(
const
LibUtilities::SessionReaderSharedPtr
pSession,
92
Array<OneD, MultiRegions::ExpListSharedPtr>
pFields,
93
MultiRegions::ExpListSharedPtr
pPressure,
94
const
Array<OneD, int>
pVel,
95
const
SolverUtils::AdvectionSharedPtr
advObject);
96
97
~SubSteppingExtrapolate
()
override
=
default
;
98
99
void
v_EvaluatePressureBCs
(
100
const
Array
<
OneD
,
const
Array<OneD, NekDouble>
> &fields,
101
const
Array
<
OneD
,
const
Array<OneD, NekDouble>
> &N,
102
NekDouble
kinvis)
override
;
103
104
void
v_SubSteppingTimeIntegration
(
105
const
LibUtilities::TimeIntegrationSchemeSharedPtr
&IntegrationScheme)
106
override
;
107
108
void
v_SubStepSaveFields
(
int
nstep)
override
;
109
110
void
v_SubStepSetPressureBCs
(
111
const
Array
<
OneD
,
const
Array<OneD, NekDouble>
> &inarray,
112
NekDouble
Aii_Dt,
NekDouble
kinvis)
override
;
113
114
void
v_AccelerationBDF
(
Array
<
OneD
,
Array<OneD, NekDouble>
> &array)
override
;
115
116
void
v_SubStepAdvance
(
int
nstep,
NekDouble
time)
override
;
117
118
void
v_MountHOPBCs
(
int
HBCdata,
NekDouble
kinvis,
Array<OneD, NekDouble>
&Q,
119
Array<OneD, const NekDouble>
&
Advection
)
override
;
120
121
std::string
v_GetSubStepName
(
void
)
override
;
122
123
void
SubStepAdvection
(
124
const
Array
<
OneD
,
const
Array<OneD, NekDouble>
> &inarray,
125
Array
<
OneD
,
Array<OneD, NekDouble>
> &outarray,
const
NekDouble
time);
126
127
void
SubStepProjection
(
128
const
Array
<
OneD
,
const
Array<OneD, NekDouble>
> &inarray,
129
Array
<
OneD
,
Array<OneD, NekDouble>
> &outarray,
const
NekDouble
time);
130
131
void
SubStepExtrapolateField
(
NekDouble
toff,
132
Array
<
OneD
,
Array<OneD, NekDouble>
> &ExtVel,
133
Array<OneD, NekDouble>
&ExtVn);
134
135
void
AddAdvectionPenaltyFlux
(
136
const
Array<OneD, NekDouble>
&Vn,
137
const
Array
<
OneD
,
const
Array<OneD, NekDouble>
> &physfield,
138
Array
<
OneD
,
Array<OneD, NekDouble>
> &outarray);
139
140
NekDouble
GetSubstepTimeStep
();
141
};
142
}
// namespace Nektar
143
144
#endif
AdvectionSystem.h
NekFactory.hpp
SharedArray.hpp
ExpList.h
Extrapolate.h
NekMemoryManager.hpp
SessionReader.h
TimeIntegrationTypes.hpp
Nektar::Array
Definition
BasicUtils/SharedArray.hpp:57
Nektar::Extrapolate
Definition
Extrapolate.h:74
Nektar::LibUtilities::TimeIntegrationSchemeOperators
Binds a set of functions for use by time integration schemes.
Definition
TimeIntegrationSchemeOperators.h:62
Nektar::MemoryManager
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
Definition
NekMemoryManager.hpp:81
Nektar::MemoryManager::AllocateSharedPtr
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
Definition
NekMemoryManager.hpp:166
Nektar::SolverUtils::Advection
An abstract base class encapsulating the concept of advection of a vector field.
Definition
Advection.h:81
Nektar::SubSteppingExtrapolate
Definition
SubSteppingExtrapolate.h:58
Nektar::SubSteppingExtrapolate::~SubSteppingExtrapolate
~SubSteppingExtrapolate() override=default
Nektar::SubSteppingExtrapolate::m_minsubsteps
int m_minsubsteps
Definition
SubSteppingExtrapolate.h:88
Nektar::SubSteppingExtrapolate::m_subStepIntegrationOps
LibUtilities::TimeIntegrationSchemeOperators m_subStepIntegrationOps
Definition
SubSteppingExtrapolate.h:81
Nektar::SubSteppingExtrapolate::v_MountHOPBCs
void v_MountHOPBCs(int HBCdata, NekDouble kinvis, Array< OneD, NekDouble > &Q, Array< OneD, const NekDouble > &Advection) override
Definition
SubSteppingExtrapolate.cpp:632
Nektar::SubSteppingExtrapolate::m_maxsubsteps
int m_maxsubsteps
Definition
SubSteppingExtrapolate.h:89
Nektar::SubSteppingExtrapolate::m_subStepIntegrationScheme
LibUtilities::TimeIntegrationSchemeSharedPtr m_subStepIntegrationScheme
Definition
SubSteppingExtrapolate.h:80
Nektar::SubSteppingExtrapolate::m_infosteps
int m_infosteps
Definition
SubSteppingExtrapolate.h:87
Nektar::SubSteppingExtrapolate::className
static std::string className
Name of class.
Definition
SubSteppingExtrapolate.h:76
Nektar::SubSteppingExtrapolate::v_SubStepSaveFields
void v_SubStepSaveFields(int nstep) override
Definition
SubSteppingExtrapolate.cpp:331
Nektar::SubSteppingExtrapolate::create
static ExtrapolateSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, MultiRegions::ExpListSharedPtr &pPressure, const Array< OneD, int > &pVel, const SolverUtils::AdvectionSharedPtr &advObject)
Creates an instance of this class.
Definition
SubSteppingExtrapolate.h:63
Nektar::SubSteppingExtrapolate::SubStepAdvection
void SubStepAdvection(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time)
Definition
SubSteppingExtrapolate.cpp:158
Nektar::SubSteppingExtrapolate::SubStepProjection
void SubStepProjection(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time)
Definition
SubSteppingExtrapolate.cpp:235
Nektar::SubSteppingExtrapolate::m_intScheme
LibUtilities::TimeIntegrationSchemeSharedPtr m_intScheme
Definition
SubSteppingExtrapolate.h:79
Nektar::SubSteppingExtrapolate::v_SubSteppingTimeIntegration
void v_SubSteppingTimeIntegration(const LibUtilities::TimeIntegrationSchemeSharedPtr &IntegrationScheme) override
Definition
SubSteppingExtrapolate.cpp:82
Nektar::SubSteppingExtrapolate::v_SubStepAdvance
void v_SubStepAdvance(int nstep, NekDouble time) override
Definition
SubSteppingExtrapolate.cpp:412
Nektar::SubSteppingExtrapolate::v_GetSubStepName
std::string v_GetSubStepName(void) override
Definition
SubSteppingExtrapolate.cpp:639
Nektar::SubSteppingExtrapolate::m_previousVnFields
Array< OneD, Array< OneD, NekDouble > > m_previousVnFields
Definition
SubSteppingExtrapolate.h:84
Nektar::SubSteppingExtrapolate::v_AccelerationBDF
void v_AccelerationBDF(Array< OneD, Array< OneD, NekDouble > > &array) override
Definition
SubSteppingExtrapolate.cpp:292
Nektar::SubSteppingExtrapolate::v_SubStepSetPressureBCs
void v_SubStepSetPressureBCs(const Array< OneD, const Array< OneD, NekDouble > > &inarray, NekDouble Aii_Dt, NekDouble kinvis) override
Definition
SubSteppingExtrapolate.cpp:256
Nektar::SubSteppingExtrapolate::AddAdvectionPenaltyFlux
void AddAdvectionPenaltyFlux(const Array< OneD, NekDouble > &Vn, const Array< OneD, const Array< OneD, NekDouble > > &physfield, Array< OneD, Array< OneD, NekDouble > > &outarray)
Definition
SubSteppingExtrapolate.cpp:519
Nektar::SubSteppingExtrapolate::SubStepExtrapolateField
void SubStepExtrapolateField(NekDouble toff, Array< OneD, Array< OneD, NekDouble > > &ExtVel, Array< OneD, NekDouble > &ExtVn)
Definition
SubSteppingExtrapolate.cpp:579
Nektar::SubSteppingExtrapolate::m_previousVelFields
Array< OneD, Array< OneD, NekDouble > > m_previousVelFields
Definition
SubSteppingExtrapolate.h:83
Nektar::SubSteppingExtrapolate::m_cflSafetyFactor
NekDouble m_cflSafetyFactor
Definition
SubSteppingExtrapolate.h:86
Nektar::SubSteppingExtrapolate::v_EvaluatePressureBCs
void v_EvaluatePressureBCs(const Array< OneD, const Array< OneD, NekDouble > > &fields, const Array< OneD, const Array< OneD, NekDouble > > &N, NekDouble kinvis) override
Definition
SubSteppingExtrapolate.cpp:74
Nektar::SubSteppingExtrapolate::GetSubstepTimeStep
NekDouble GetSubstepTimeStep()
Definition
SubSteppingExtrapolate.cpp:478
Nektar::LibUtilities::SessionReaderSharedPtr
std::shared_ptr< SessionReader > SessionReaderSharedPtr
Definition
SessionReader.h:119
Nektar::LibUtilities::TimeIntegrationSchemeSharedPtr
std::shared_ptr< TimeIntegrationScheme > TimeIntegrationSchemeSharedPtr
Definition
TimeIntegrationTypes.hpp:65
Nektar::MultiRegions::ExpListSharedPtr
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
Definition
LocTraceToTraceMap.h:56
Nektar::SolverUtils::AdvectionSharedPtr
std::shared_ptr< Advection > AdvectionSharedPtr
A shared pointer to an Advection object.
Definition
Advection.h:54
Nektar
Definition
CoupledSolver.h:2
Nektar::SubSteppingExtrapolateSharedPtr
std::shared_ptr< SubSteppingExtrapolate > SubSteppingExtrapolateSharedPtr
Definition
SubSteppingExtrapolate.h:55
Nektar::ExtrapolateSharedPtr
std::shared_ptr< Extrapolate > ExtrapolateSharedPtr
Definition
Extrapolate.h:60
Nektar::NekDouble
double NekDouble
Definition
NektarUnivTypeDefs.hpp:43
Nektar::OneD
Definition
NektarUnivTypeDefs.hpp:54
Generated on Sun Nov 9 2025 20:17:01 for Nektar++ by
1.9.8