MAIA bb96820c
Multiphysics at AIA
Loading...
Searching...
No Matches
FvZonalRTV< nDim, SysEqn > Class Template Reference

#include <fvzonalrtv.h>

Inheritance diagram for FvZonalRTV< nDim, SysEqn >:
[legend]
Collaboration diagram for FvZonalRTV< nDim, SysEqn >:
[legend]

Classes

struct  LESVarAverageData
 

Public Types

using RANS = FvCartesianSolverXD< nDim, SysEqn >
 
using LES = FvCartesianSolverXD< nDim, FvSysEqnNS< nDim > >
 
using Base = FvZonal< nDim, SysEqn >
 
- Public Types inherited from FvZonal< nDim, SysEqn >
using RANS = FvCartesianSolverXD< nDim, SysEqn >
 
using LES = FvCartesianSolverXD< nDim, FvSysEqnNS< nDim > >
 
- Public Types inherited from CouplingFv< nDim, SysEqn >
using solverType = FvCartesianSolverXD< nDim, SysEqn >
 
- Public Types inherited from CouplingFv< nDim, FvSysEqnNS< nDim > >
using solverType = FvCartesianSolverXD< nDim, FvSysEqnNS< nDim > >
 

Public Member Functions

 FvZonalRTV (const MInt couplingId, RANS *R, LES *L)
 
void init ()
 
void finalizeCouplerInit ()
 
void preCouple (MInt)
 
void postAdaptation ()
 
MInt a_noFvCellsLES () const
 
MInt a_noFvCellsRANS () const
 
MInt a_noFvGridCellsLES () const
 
MInt a_noFvGridCellsRANS () const
 
MFloat getAveragingFactor ()
 
void initLESValues ()
 Initialize LESValues for RANS Solver. More...
 
void initRANSValues ()
 Initialize RANSValues for LES Solver. More...
 
LESLESSolver () const
 
MInt noExchangeVariables ()
 
MInt noLESVariables ()
 
MInt noRANSVariables ()
 
RANSRANSSolver () const
 
- Public Member Functions inherited from FvZonal< nDim, SysEqn >
 FvZonal (const MInt couplingId, RANS *R, LES *L)
 
virtual ~FvZonal ()=default
 
void init () override
 
void finalizeSubCoupleInit (MInt)
 
void postCouple (MInt) override
 
void cleanUp ()
 
void checkProperties () override
 
- Public Member Functions inherited from CouplingFv< nDim, SysEqn >
 CouplingFv (const MInt couplingId, std::vector< FvCartesianSolverXD< nDim, SysEqn > * > fvSolvers, const MInt noSolvers)
 
 CouplingFv (const MInt couplingId, Solver *solvers)
 
 ~CouplingFv () override=default
 
 CouplingFv (const CouplingFv &)=delete
 
CouplingFvoperator= (const CouplingFv &)=delete
 
- Public Member Functions inherited from Coupling
 Coupling (const MInt couplingId)
 
virtual ~Coupling ()=default
 
 Coupling (const Coupling &)=delete
 
Couplingoperator= (const Coupling &)=delete
 
MInt couplerId () const
 
virtual void init ()=0
 
virtual void finalizeSubCoupleInit (MInt solverId)=0
 
virtual void finalizeCouplerInit ()=0
 
virtual void preCouple (MInt recipeStep)=0
 
virtual void subCouple (MInt recipeStep, MInt solverId, std::vector< MBool > &solverCompleted)=0
 
virtual void postCouple (MInt recipeStep)=0
 
virtual void cleanUp ()=0
 
virtual void balancePre ()
 Load balancing. More...
 
virtual void balancePost ()
 
virtual void reinitAfterBalance ()
 
virtual void prepareAdaptation ()
 
virtual void postAdaptation ()
 
virtual void finalizeAdaptation (const MInt)
 
virtual void writeRestartFile (const MInt)
 
virtual MInt noCellDataDlb () const
 Methods to inquire coupler data during balancing. More...
 
virtual MInt cellDataTypeDlb (const MInt NotUsed(dataId)) const
 
virtual MInt cellDataSizeDlb (const MInt NotUsed(dataId), const MInt NotUsed(cellId))
 
virtual void getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MInt *const NotUsed(data))
 
virtual void getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MLong *const NotUsed(data))
 
virtual void getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MFloat *const NotUsed(data))
 
virtual void setCellDataDlb (const MInt NotUsed(dataId), const MInt *const NotUsed(data))
 
virtual void setCellDataDlb (const MInt NotUsed(dataId), const MLong *const NotUsed(data))
 
virtual void setCellDataDlb (const MInt NotUsed(dataId), const MFloat *const NotUsed(data))
 
virtual void finalizeBalance (const MInt)
 
virtual MInt noCouplingTimers (const MBool NotUsed(allTimings)) const
 Number of coupling timers. More...
 
virtual void getCouplingTimings (std::vector< std::pair< MString, MFloat > > &NotUsed(timings), const MBool NotUsed(allTimings))
 Return coupling timings. More...
 
virtual void getDomainDecompositionInformation (std::vector< std::pair< MString, MInt > > &NotUsed(domainInfo))
 Return information on current domain decomposition (e.g. number of coupled cells/elements/...) More...
 
void setDlbTimer (const MInt timerId)
 
void startLoadTimer (const MString &name) const
 Start the load timer of the coupler. More...
 
void stopLoadTimer (const MString &name) const
 Stop the load timer of the coupler. More...
 
- Public Member Functions inherited from CouplingFv< nDim, FvSysEqnNS< nDim > >
 CouplingFv (const MInt couplingId, std::vector< FvCartesianSolverXD< nDim, FvSysEqnNS< nDim > > * > fvSolvers, const MInt noSolvers)
 
 CouplingFv (const MInt couplingId, Solver *solvers)
 
 CouplingFv (const CouplingFv &)=delete
 
 ~CouplingFv () override=default
 
CouplingFvoperator= (const CouplingFv &)=delete
 

Public Attributes

MInt m_LESNoVarAverage
 
MInt m_LESSolverId
 
const MInt m_noReconstructNutVars
 
MInt m_RANSSolverId
 
MBool m_restartLESAverage
 
MInt m_zonalAveragingTimeStep
 
MInt m_zonalTransferInterval
 

Private Member Functions

void postCouple (MInt)
 
void finalizeSubCoupleInit (MInt)
 
void finalizeAdaptation (const MInt)
 
void prepareAdaptation ()
 
void subCouple (MInt, MInt, std::vector< MBool > &)
 
void cleanUp ()
 
void initData ()
 
void checkProperties ()
 
void readProperties ()
 
void determineNutReconstructionCells ()
 
void determineZonalPositions ()
 
void reconstructNutilde ()
 
void transferSolverData ()
 
void finalizeRANSSolverAfterReset ()
 
void reconstructAverageFromNut ()
 

Private Attributes

MInt m_rntStartTimeStep
 
MBool m_reconstructNut = false
 
MBool m_reconstructAverageFromNut = false
 
MFloat m_nuTildeInfinity
 
MInt m_averageTimeSteps
 
MFloat m_turbulentIntensity
 
MFloat m_tuLengthScaleCorrection
 
std::vector< MIntm_rntBcCells
 
MInt m_noRntBcCells
 
MInt m_bcId7902
 
MFloat m_7902Position
 
MInt m_7902faceNormalDir
 
MInt m_7902wallDir
 
MInt m_7902periodicDir
 
MFloat m_averagePos
 
MInt m_averageDir
 
MInt m_averageFaceDir
 
const MFloat eps = 1e-16
 
const MFloat epss = 1e-8
 

Friends

class FvZonal< nDim, SysEqn >
 

Additional Inherited Members

- Protected Member Functions inherited from FvZonal< nDim, SysEqn >
RANSRANSSolver () const
 
LESLESSolver () const
 
MInt noExchangeVariables ()
 
MInt noLESVariables ()
 
MInt noRANSVariables ()
 
MFloat getAveragingFactor ()
 
MInt a_noFvCellsLES () const
 
MInt a_noFvGridCellsLES () const
 
MInt a_noFvCellsRANS () const
 
MInt a_noFvGridCellsRANS () const
 
void initRANSValues ()
 Initialize RANSValues for LES Solver. More...
 
void initLESValues ()
 Initialize LESValues for RANS Solver. More...
 
- Protected Member Functions inherited from CouplingFv< nDim, SysEqn >
MInt noSolvers () const
 
solverTypefvSolver (const MInt solverId=0) const
 
MInt a_noFvCells () const
 
MInt a_noFvGridCells () const
 
- Protected Member Functions inherited from Coupling
MFloat returnLoadRecord () const
 
MFloat returnIdleRecord () const
 
- Protected Member Functions inherited from CouplingFv< nDim, FvSysEqnNS< nDim > >
MInt noSolvers () const
 
solverTypefvSolver (const MInt solverId=0) const
 
MInt a_noFvCells () const
 
MInt a_noFvGridCells () const
 
- Protected Attributes inherited from FvZonal< nDim, SysEqn >
MInt m_RANSSolverId
 
MInt m_LESSolverId
 
const MInt m_noReconstructNutVars = 6
 
MInt m_zonalAveragingTimeStep
 
MInt m_zonalTransferInterval
 
MInt m_averageTimeSteps
 
MBool m_restartLESAverage
 
MInt m_LESNoVarAverage
 
MBool m_cylindricCommunication
 
MFloat m_azimuthalAngle
 
MBool m_STGSponge = false
 
- Protected Attributes inherited from CouplingFv< nDim, SysEqn >
std::vector< solverType * > m_fvSolvers {}
 
- Protected Attributes inherited from CouplingFv< nDim, FvSysEqnNS< nDim > >
std::vector< solverType * > m_fvSolvers
 

Detailed Description

template<MInt nDim, class SysEqn>
class FvZonalRTV< nDim, SysEqn >

Definition at line 27 of file fvzonalrtv.h.

Member Typedef Documentation

◆ Base

template<MInt nDim, class SysEqn >
using FvZonalRTV< nDim, SysEqn >::Base = FvZonal<nDim, SysEqn>

Definition at line 38 of file fvzonalrtv.h.

◆ LES

template<MInt nDim, class SysEqn >
using FvZonalRTV< nDim, SysEqn >::LES = FvCartesianSolverXD<nDim, FvSysEqnNS<nDim> >

Definition at line 33 of file fvzonalrtv.h.

◆ RANS

template<MInt nDim, class SysEqn >
using FvZonalRTV< nDim, SysEqn >::RANS = FvCartesianSolverXD<nDim, SysEqn>

Definition at line 32 of file fvzonalrtv.h.

Constructor & Destructor Documentation

◆ FvZonalRTV()

template<MInt nDim, class SysEqn >
FvZonalRTV< nDim, SysEqn >::FvZonalRTV ( const MInt  couplingId,
RANS R,
LES L 
)

Member Function Documentation

◆ a_noFvCellsLES()

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::a_noFvCellsLES ( ) const
inline

Definition at line 54 of file fvzonal.h.

54{ return LESSolver().a_noCells(); }
MInt a_noCells() const
Returns the number of cells.
LES & LESSolver() const
Definition: fvzonal.h:45

◆ a_noFvCellsRANS()

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::a_noFvCellsRANS ( ) const
inline

Definition at line 56 of file fvzonal.h.

56{ return RANSSolver().a_noCells(); }
RANS & RANSSolver() const
Definition: fvzonal.h:44

◆ a_noFvGridCellsLES()

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::a_noFvGridCellsLES ( ) const
inline

Definition at line 55 of file fvzonal.h.

55{ return LESSolver().c_noCells(); }

◆ a_noFvGridCellsRANS()

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::a_noFvGridCellsRANS ( ) const
inline

Definition at line 57 of file fvzonal.h.

57{ return RANSSolver().c_noCells(); }

◆ checkProperties()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::checkProperties ( )
inlineprivatevirtual

Reimplemented from FvZonal< nDim, SysEqn >.

Definition at line 73 of file fvzonalrtv.h.

73{};

◆ cleanUp()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::cleanUp ( )
inlineprivatevirtual

Reimplemented from FvZonal< nDim, SysEqn >.

Definition at line 71 of file fvzonalrtv.h.

71{};

◆ determineNutReconstructionCells()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::determineNutReconstructionCells
private

Definition at line 213 of file fvzonalrtv.cpp.

213 {
214 TRACE();
215
216 if(LESSolver().grid().isActive()) {
217 m_noRntBcCells = 0;
218 for(MInt LESId = 0; LESId < a_noFvGridCellsLES(); LESId++) {
219 if(LESSolver().a_isHalo(LESId)) continue;
220
221 MFloat halfCellLength = LESSolver().grid().halfCellLength(LESId);
223
224 if(approx(m_averagePos, pos, halfCellLength)) {
225 m_rntBcCells.push_back(LESId);
227 }
228 }
229 }
230}
MBool a_isHalo(const MInt cellId) const
Returns IsHalo of the cell cellId.
MFloat & a_coordinate(const MInt cellId, const MInt dir)
Returns the coordinate of the cell from the fvcellcollector cellId for dimension dir.
std::vector< MInt > m_rntBcCells
Definition: fvzonalrtv.h:93
MInt m_averageDir
Definition: fvzonalrtv.h:104
MInt m_noRntBcCells
Definition: fvzonalrtv.h:95
MFloat m_averagePos
Definition: fvzonalrtv.h:103
MInt a_noFvGridCellsLES() const
Definition: fvzonal.h:55
constexpr GridProxy & grid() const
MBool approx(const T &, const U &, const T)
Definition: functions.h:272
int32_t MInt
Definition: maiatypes.h:62
double MFloat
Definition: maiatypes.h:52

◆ determineZonalPositions()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::determineZonalPositions
private

Definition at line 109 of file fvzonalrtv.cpp.

109 {
110 TRACE();
111
113 m_7902Position = std::numeric_limits<MFloat>::infinity();
114
115 // read cutoff positions to determine average and sponge cells
116 if(Context::propertyExists("cutOffBndryIds")) {
117 MInt propertyLength = Context::propertyLength("cutOffBndryIds", m_RANSSolverId);
118 for(MInt i = 0; i < propertyLength; i++) {
119 MInt bcId = Context::getSolverProperty<MFloat>("cutOffBndryIds", m_RANSSolverId, AT_, i);
120 if(bcId == 7902 || bcId == 7905) {
121 m_7902faceNormalDir = Context::getSolverProperty<MFloat>("cutOffDirections", m_RANSSolverId, AT_, i);
122 }
123 }
124 }
125 if(m_7902faceNormalDir != -1) {
127 }
128
129 m_bcId7902 = -1;
130 m_7902wallDir = 1;
132
133 if(Context::propertyExists("bc7902wallDir")) {
134 m_7902wallDir = Context::getSolverProperty<MInt>("bc7902wallDir", m_RANSSolverId, AT_);
135 }
136 if(Context::propertyExists("bc7902periodicDir")) {
137 m_7902periodicDir = Context::getSolverProperty<MInt>("bc7902periodicDir", m_RANSSolverId, AT_);
138 }
139
140 for(MInt bcId = 0; bcId < RANSSolver().m_fvBndryCnd->m_noCutOffBndryCndIds; bcId++) {
141 if(RANSSolver().m_fvBndryCnd->m_cutOffBndryCndIds[bcId] == 7902) {
142 m_bcId7902 = bcId;
143 }
144 }
145
146
147 // determine real m_7909Position based on cell centers
148 MFloat tmpPos7902 = ((m_7902faceNormalDir + 1) % 2 > 0) ? -std::numeric_limits<MFloat>::infinity()
149 : std::numeric_limits<MFloat>::infinity();
150 MFloat compFactor7902 = ((m_7902faceNormalDir + 1) % 2 > 0) ? F1 : -F1;
151
152 if(LESSolver().grid().isActive()) {
153 for(MInt cellId = 0; cellId < a_noFvGridCellsLES(); cellId++) {
154 MInt RANSId = convertIdParent(LESSolver(), RANSSolver(), cellId);
155 if(RANSId != -1) {
156 MFloat pos = LESSolver().a_coordinate(cellId, 0);
157 if(compFactor7902 * pos > compFactor7902 * tmpPos7902) {
158 tmpPos7902 = pos;
159 }
160 }
161 }
162
163 if(compFactor7902 > 0) {
164 MPI_Allreduce(MPI_IN_PLACE, &tmpPos7902, 1, MPI_DOUBLE, MPI_MAX, LESSolver().mpiComm(), AT_, "MPI_IN_PLACE",
165 "tmpPos7902");
166 } else {
167 MPI_Allreduce(MPI_IN_PLACE, &tmpPos7902, 1, MPI_DOUBLE, MPI_MIN, LESSolver().mpiComm(), AT_, "MPI_IN_PLACE",
168 "tmpPos7902");
169 }
170 m_7902Position = tmpPos7902;
171 }
172
173 if(RANSSolver().grid().isActive()) {
174 if(compFactor7902 > 0) {
175 MPI_Allreduce(MPI_IN_PLACE, &tmpPos7902, 1, MPI_DOUBLE, MPI_MAX, RANSSolver().mpiComm(), AT_, "MPI_IN_PLACE",
176 "tmpPos7902");
177 } else {
178 MPI_Allreduce(MPI_IN_PLACE, &tmpPos7902, 1, MPI_DOUBLE, MPI_MIN, RANSSolver().mpiComm(), AT_, "MPI_IN_PLACE",
179 "tmpPos7902");
180 }
181
182 if(m_7902faceNormalDir != -1) {
183 m_7902Position = tmpPos7902;
184 }
185 }
186
190
194}
static MInt propertyLength(const MString &name, MInt solverId=m_noSolvers)
Returns the number of elements of a property.
Definition: context.cpp:538
static MBool propertyExists(const MString &name, MInt solver=m_noSolvers)
This function checks if a property exists in general.
Definition: context.cpp:494
FvBndryCndXD< nDim_, SysEqn > * m_fvBndryCnd
std::vector< MInt > m_averageDir
std::vector< MFloat > m_averagePos
std::vector< MBool > m_averageReconstructNut
MInt m_7902faceNormalDir
Definition: fvzonalrtv.h:99
MInt m_averageFaceDir
Definition: fvzonalrtv.h:105
MFloat m_7902Position
Definition: fvzonalrtv.h:98
MInt m_bcId7902
Definition: fvzonalrtv.h:97
MInt m_RANSSolverId
Definition: fvzonal.h:62
MInt m_7902periodicDir
Definition: fvzonalrtv.h:101
MInt m_7902wallDir
Definition: fvzonalrtv.h:100
MBool m_reconstructNut
Definition: fvzonalrtv.h:84
MInt convertIdParent(SolverA &solverA, SolverB &solverB, const MInt solverAId)
Conversion from solverA id to the solverB id If no cell on the same level is found,...
Definition: couplingutils.h:46
int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Allreduce
void const MInt cellId
Definition: collector.h:239

◆ finalizeAdaptation()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::finalizeAdaptation ( const  MInt)
inlineprivatevirtual

Reimplemented from Coupling.

Definition at line 68 of file fvzonalrtv.h.

68{};

◆ finalizeCouplerInit()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::finalizeCouplerInit
virtual

Implements Coupling.

Definition at line 198 of file fvzonalrtv.cpp.

198 {
199 TRACE();
200
201 // finalizeLESAverage();
203
206 }
207
209}
void transferSolverData()
Definition: fvzonalrtv.cpp:291
MInt m_rntStartTimeStep
Definition: fvzonalrtv.h:83
void determineNutReconstructionCells()
Definition: fvzonalrtv.cpp:213
void reconstructNutilde()
Definition: fvzonalrtv.cpp:341
MInt globalTimeStep

◆ finalizeRANSSolverAfterReset()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::finalizeRANSSolverAfterReset ( )
private

◆ finalizeSubCoupleInit()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::finalizeSubCoupleInit ( MInt  )
inlineprivatevirtual

Reimplemented from FvZonal< nDim, SysEqn >.

Definition at line 67 of file fvzonalrtv.h.

67{};

◆ getAveragingFactor()

template<MInt nDim, class SysEqn >
MFloat FvZonal< nDim, SysEqn >::getAveragingFactor ( )
inline

Definition at line 50 of file fvzonal.h.

50 {
51 return F1B8 * LESSolver().m_Ma * sqrt(LESSolver().m_TInfinity) * LESSolver().timeStep();
52 };
MFloat timeStep(MBool canSolver=false) noexcept
MFloat m_Ma
the Mach number
Definition: solver.h:71

◆ init()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::init
virtual

Reimplemented from FvZonal< nDim, SysEqn >.

Definition at line 93 of file fvzonalrtv.cpp.

93 {
94 TRACE();
95
98
100
103
105}
void initRANSValues()
Initialize RANSValues for LES Solver.
Definition: fvzonal.cpp:96
void initLESValues()
Initialize LESValues for RANS Solver.
Definition: fvzonal.cpp:135
MInt m_LESSolverId
Definition: fvzonal.h:63
void determineZonalPositions()
Definition: fvzonalrtv.cpp:109
const MInt m_solverId
a unique solver identifier
Definition: solver.h:90
static constexpr const MInt noAvgVars
Definition: fvzonalrtv.h:112

◆ initData()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::initData ( )
inlineprivate

Definition at line 72 of file fvzonalrtv.h.

72{};

◆ initLESValues()

template<MInt nDim, class SysEqn >
void FvZonal< nDim, SysEqn >::initLESValues
Author
Jannik Borgelt

Definition at line 60 of file fvzonal.cpp.

135 {
136 TRACE();
137
138 // write RANS data to LES Solver
139 if(RANSSolver().grid().isActive()) {
140 for(MInt var = 0; var < noRANSVariables(); var++) {
141 for(MInt cellId = 0; cellId < a_noFvGridCellsRANS(); cellId++) {
142 MInt LESId = convertIdParent(RANSSolver(), LESSolver(), cellId);
143
144 ASSERT(cellId < (MInt)RANSSolver().m_LESValues[var].size(),
145 "Trying to access data [" + to_string(var) + "][" + to_string(cellId) + "] in m_RANSValues with length "
146 + to_string(RANSSolver().m_LESValues[var].size())
147 + ", domainId: " + to_string(RANSSolver().domainId()));
148
149 if(LESId != -1) {
150 RANSSolver().m_LESValues[var][cellId] = LESSolver().a_pvariable(LESId, var);
151 // init nu_t
152 if(var == RANSSolver().sysEqn().PV->N) {
153 RANSSolver().m_LESValues[var][cellId] = RANSSolver().a_pvariable(cellId, var);
154 }
155 }
156 }
157 }
158 }
159}
std::vector< MFloat > * m_LESValues
MFloat & a_pvariable(const MInt cellId, const MInt varId)
Returns primitive variable v of the cell cellId for variables varId.
MInt noRANSVariables()
Definition: fvzonal.h:49
MInt a_noFvGridCellsRANS() const
Definition: fvzonal.h:57

◆ initRANSValues()

template<MInt nDim, class SysEqn >
void FvZonal< nDim, SysEqn >::initRANSValues
Author
Jannik Borgelt

Definition at line 59 of file fvzonal.cpp.

96 {
97 TRACE();
98
99 // write RANS data to LES Solver
100 if(LESSolver().grid().isActive()) {
101 for(MInt cellId = 0; cellId < a_noFvGridCellsLES(); cellId++) {
102 MInt RANSId = convertIdParent(LESSolver(), RANSSolver(), cellId);
103 if(RANSId > -1) {
104 for(MInt var = 0; var < noRANSVariables(); var++) {
105 ASSERT(cellId < (MInt)LESSolver().m_RANSValues[var].size(),
106 "Trying to access data [" + to_string(var) + "][" + to_string(cellId)
107 + "] in m_RANSValues with length " + to_string(LESSolver().m_RANSValues[var].size())
108 + ", domainId: " + to_string(LESSolver().domainId()));
109
110 LESSolver().m_RANSValues[var][cellId] = RANSSolver().a_pvariable(RANSId, var);
111 }
112 } else {
113 for(MInt var = 0; var < noRANSVariables(); var++) {
115 if(var < noLESVariables()) {
116 LESSolver().m_RANSValues[var][cellId] = LESSolver().a_pvariable(cellId, var);
117 } else {
118 LESSolver().m_RANSValues[var][cellId] = F0;
119 }
120 }
121 }
122 }
123 if(m_STGSponge) {
125 }
126 }
127 }
128}
std::vector< MFloat > * m_RANSValues
MBool m_STGSponge
Definition: fvzonal.h:77
MBool m_cylindricCommunication
Definition: fvzonal.h:74
MInt noLESVariables()
Definition: fvzonal.h:48

◆ LESSolver()

template<MInt nDim, class SysEqn >
LES & FvZonal< nDim, SysEqn >::LESSolver ( ) const
inline

Definition at line 45 of file fvzonal.h.

std::vector< solverType * > m_fvSolvers
Definition: coupling.h:395

◆ noExchangeVariables()

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::noExchangeVariables ( )
inline

Definition at line 47 of file fvzonal.h.

47{ return nDim + 2; };

◆ noLESVariables()

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::noLESVariables ( )
inline

Definition at line 48 of file fvzonal.h.

48{ return LESSolver().noVariables(); };
MInt noVariables() const override
Return the number of primitive variables.

◆ noRANSVariables()

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::noRANSVariables ( )
inline

Definition at line 49 of file fvzonal.h.

49{ return RANSSolver().noVariables(); };

◆ postAdaptation()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::postAdaptation
virtual

Reimplemented from Coupling.

Definition at line 234 of file fvzonalrtv.cpp.

234 {
235 TRACE();
236
237 if(LESSolver().grid().isActive()) {
238 // copy local vectors
239 std::vector<MFloat> LESAverageCells_OLD_L;
240 std::vector<std::vector<MFloat>> LESVarAverage_OLD;
241 std::vector<MInt> rntBcCells_OLD;
242 std::vector<MInt> LESAverageCells_OLD;
243
244 for(MInt c = 0; c < (MInt)LESSolver().m_LESAverageCells.size(); c++) {
245 LESAverageCells_OLD_L.push_back(LESSolver().m_LESAverageCells[c]);
246 }
247
248 for(MInt cc = 0; cc < m_noRntBcCells; cc++) {
249 rntBcCells_OLD.push_back(m_rntBcCells[cc]);
250 }
251 }
252
255 }
256
258}
std::vector< MInt > m_LESAverageCells

◆ postCouple()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::postCouple ( MInt  )
inlineprivatevirtual

Reimplemented from FvZonal< nDim, SysEqn >.

Definition at line 66 of file fvzonalrtv.h.

66{};

◆ preCouple()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::preCouple ( MInt  )
virtual

Implements Coupling.

Definition at line 262 of file fvzonalrtv.cpp.

262 {
263 TRACE();
264
265 if(LESSolver().grid().isActive()) {
266 if(LESSolver().noNeighborDomains() > 0) {
267 LESSolver().exchangeData(&LESSolver().a_variable(0, 0), noLESVariables());
268 LESSolver().exchangeData(&LESSolver().a_oldVariable(0, 0), noLESVariables());
269 LESSolver().exchangeData(&LESSolver().a_pvariable(0, 0), noLESVariables());
270 }
271 }
272
273 if(RANSSolver().grid().isActive()) {
274 if(RANSSolver().noNeighborDomains() > 0) {
275 RANSSolver().exchangeData(&RANSSolver().a_variable(0, 0), noRANSVariables());
276 RANSSolver().exchangeData(&RANSSolver().a_oldVariable(0, 0), noRANSVariables());
277 RANSSolver().exchangeData(&RANSSolver().a_pvariable(0, 0), noRANSVariables());
278 }
279 }
280
284 }
286 }
287}
MInt m_zonalTransferInterval
Definition: fvzonal.h:68
void exchangeData(T *data, const MInt dataBlockSize=1)
Exchange memory in 'data' assuming a solver size of 'dataBlockSize' per cell.

◆ prepareAdaptation()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::prepareAdaptation ( )
inlineprivatevirtual

Reimplemented from Coupling.

Definition at line 69 of file fvzonalrtv.h.

69{};

◆ RANSSolver()

template<MInt nDim, class SysEqn >
RANS & FvZonal< nDim, SysEqn >::RANSSolver ( ) const
inline

Definition at line 44 of file fvzonal.h.

◆ readProperties()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::readProperties ( )
inlineprivatevirtual

Implements Coupling.

Definition at line 74 of file fvzonalrtv.h.

74{};

◆ reconstructAverageFromNut()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::reconstructAverageFromNut
private

Definition at line 552 of file fvzonalrtv.cpp.

552 {
553 TRACE();
554
555 if(LESSolver().grid().isActive()) {
556 for(MInt c = 0; c < (MInt)LESSolver().m_LESAverageCells.size(); c++) {
558
559 MInt RANSId = convertIdParent(LESSolver(), RANSSolver(), cellId);
560 if(RANSId > -1) {
561 MFloat nuTilde = RANSSolver().a_pvariable(RANSId, RANSSolver().m_sysEqn.PV->N);
562 MFloat add = F0;
563 for(MInt i = 0; i < nDim; i++) {
564 add += F2B3 * RANSSolver().a_slope(RANSId, i, i);
565 }
566
567 MInt count = 0;
568 MInt index = 0;
569 for(MInt i = 0; i < nDim; i++) {
570 for(MInt j = count; j < nDim; j++) {
571 MInt indexAvg = index + noRANSVariables();
572
573 ASSERT(c < (MInt)LESSolver().m_LESVarAverage[indexAvg].size(),
574 "Trying to access data [" + to_string(indexAvg) + "][" + to_string(c)
575 + "] in LESSolver().m_LESVarAverage with length "
576 + to_string(LESSolver().m_LESVarAverage[indexAvg].size()));
577
578 if(i == j) {
579 LESSolver().m_LESVarAverage[indexAvg][c] =
581 - nuTilde * (RANSSolver().a_slope(RANSId, i, j) + RANSSolver().a_slope(RANSId, j, i) - add);
582 } else {
583 LESSolver().m_LESVarAverage[indexAvg][c] =
585 - nuTilde * (RANSSolver().a_slope(RANSId, i, j) + RANSSolver().a_slope(RANSId, j, i));
586 }
587
588 index++;
589 }
590 count++;
591 }
592 }
593 }
594 }
595}
MFloat & a_slope(const MInt cellId, MInt const varId, const MInt dir) override
Returns the slope of the cell cellId for the variable varId in direction dir.
SysEqn::PrimitiveVariables * PV
std::vector< MFloat > * m_LESVarAverage
IdType index(const FloatType *const x, const IdType level)
Return Hilbert index for given location and level in 2D or 3D.
Definition: hilbert.h:165

◆ reconstructNutilde()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::reconstructNutilde
private

Definition at line 341 of file fvzonalrtv.cpp.

341 {
342 TRACE();
343
344 const MInt N = RANSSolver().m_sysEqn.PV->N;
345
346 if(LESSolver().grid().isActive()) {
347 // reconstruct nuTilde
348 //---------------------------------------------
349 const MFloat rRe = F1 / LESSolver().m_sysEqn.m_Re0;
350
351 // Turbulent intensity is calculated and used as a limiter for the turbulent kinetic energy
352 /*data taken from:
353 Brandt, Luca & Schlatter, Philipp. (2004). Transition in boundary layers subject to free-stream turbulence.
354 Journal of Fluid Mechanics. 517. 167 - 198. 10.1017/S0022112004000941.
355 ------------
356 used to determine the expected freestream turbulence intensity
357 */
358
359 MFloat tuFreeStream = 0.05;
360
361 if(abs(m_turbulentIntensity + 1) < 1e-16) {
362 std::vector<std::pair<MFloat, MFloat>> tuFreeStreamData = {
363 std::make_pair(31171.1711712, 0.0451546391753), std::make_pair(34774.7747748, 0.0428865979381),
364 std::make_pair(38378.3783784, 0.0407216494845), std::make_pair(42702.7027027, 0.0385567010309),
365 std::make_pair(51711.7117117, 0.0349484536082), std::make_pair(58558.5585586, 0.0327835051546),
366 std::make_pair(66846.8468468, 0.0305154639175), std::make_pair(78738.7387387, 0.0278350515464),
367 std::make_pair(93513.5135135, 0.0250515463918), std::make_pair(111891.891892, 0.0223711340206),
368 std::make_pair(132432.432432, 0.0198969072165), std::make_pair(158738.738739, 0.0175257731959),
369 std::make_pair(186126.126126, 0.0154639175258), std::make_pair(215675.675676, 0.0137113402062),
370 std::make_pair(243783.783784, 0.0124742268041), std::make_pair(273693.693694, 0.0113402061856),
371 std::make_pair(301801.801802, 0.0105154639175)};
372
373 // interpolant freestream turbulence intensity from data
374 MInt length = (MInt)tuFreeStreamData.size();
375 for(MInt i = 0; i < length; i++) {
376 if(tuFreeStreamData[i].first > LESSolver().m_Re * m_tuLengthScaleCorrection) {
377 tuFreeStream = tuFreeStreamData[i - 1].second
378 + (tuFreeStreamData[i].second - tuFreeStreamData[i - 1].second)
379 / (tuFreeStreamData[i].first - tuFreeStreamData[i - 1].first)
380 * (LESSolver().m_Re * m_tuLengthScaleCorrection - tuFreeStreamData[i - 1].first);
381 break;
382 }
383 }
384 // extrapolat freestream turbulence intensity from data
385 if(LESSolver().m_Re * m_tuLengthScaleCorrection < tuFreeStreamData[0].first) {
386 tuFreeStream = tuFreeStreamData[0].second
387 + (tuFreeStreamData[1].second - tuFreeStreamData[0].second)
388 / (tuFreeStreamData[1].first - tuFreeStreamData[0].first)
389 * (LESSolver().m_Re * m_tuLengthScaleCorrection - tuFreeStreamData[0].first);
390 }
391 if(LESSolver().m_Re * m_tuLengthScaleCorrection > tuFreeStreamData[length - 1].first) {
392 tuFreeStream = tuFreeStreamData[length - 2].second
393 + (tuFreeStreamData[length - 1].second - tuFreeStreamData[length - 2].second)
394 / (tuFreeStreamData[length - 1].first - tuFreeStreamData[length - 2].first)
395 * (LESSolver().m_Re * m_tuLengthScaleCorrection - tuFreeStreamData[length - 2].first);
396 }
397
398 tuFreeStream *= 0.95;
399
400 m_log << "interpolation of freestream turbulence intensity: " << tuFreeStream << endl;
401
402 } else {
403 tuFreeStream = m_turbulentIntensity;
404 }
405
406 for(MInt c = 0; c < m_noRntBcCells; c++) {
408 vector<MInt>::iterator findLESId =
409 find(LESSolver().m_LESAverageCells.begin(), LESSolver().m_LESAverageCells.end(), cellId);
410 if(findLESId == LESSolver().m_LESAverageCells.end()) TERMM(1, "Something went wrong " + to_string(cellId));
411 MInt LESAvgId = distance(LESSolver().m_LESAverageCells.begin(), findLESId);
412
413 // calculating turbulent kinetic energy k = 0.5(ui'ui')
414 MFloat tuarg = 0.0;
415 MFloat k = F0;
416 MInt count_ = 0;
417 MInt index_ = 0;
418 MInt index1 = 0;
419 MInt index2 = 0;
420 for(MInt i = 0; i < nDim; i++) {
421 for(MInt j = count_; j < nDim; j++) {
422 index1 = index_ + noRANSVariables();
423 if(i == j) {
424 ASSERT(c < (MInt)LESSolver().m_LESVarAverage[index1].size(),
425 "Trying to access data [" + to_string(index1) + "][" + to_string(LESAvgId)
426 + "] in LESSolver().m_LESVarAverage with length "
427 + to_string(LESSolver().m_LESVarAverage[index1].size()));
428
429 k += 0.5
430 * (LESSolver().m_LESVarAverage[index1][LESAvgId]
431 - pow(LESSolver().m_LESVarAverage[index2][LESAvgId], F2));
432 tuarg += (LESSolver().m_LESVarAverage[index1][LESAvgId]
433 - pow(LESSolver().m_LESVarAverage[index2][LESAvgId], F2));
434 index2++;
435 }
436 index_++;
437 }
438 count_++;
439 }
440
441 tuarg = max(tuarg, epss);
442
443 MFloat tu = sqrt(tuarg / 3.0) / LESSolver().m_Ma;
444 MFloat tufac = tanh((tu - tuFreeStream) / tuFreeStream);
445 MFloat tulim = max(tu, tuFreeStream);
446 tulim = tu / tulim;
447
448 k = k * tufac * tulim;
449
450 // calculating strain rate tensor Sij = 0.5(dui/dxj + duj/dxi)
451 MFloat du[3][3]{{F0, F0, F0}, {F0, F0, F0}, {F0, F0, F0}};
452 const MInt recData = LESSolver().a_reconstructionData(cellId);
453
454 const MFloat u[3] = {LESSolver().m_LESVarAverage[0][LESAvgId], LESSolver().m_LESVarAverage[1][LESAvgId],
455 LESSolver().m_LESVarAverage[2][LESAvgId]};
456
457 for(MInt nghbr = 0; nghbr < LESSolver().a_noReconstructionNeighbors(cellId); nghbr++) {
458 const MInt recNghbrId = LESSolver().a_reconstructionNeighborId(cellId, nghbr);
459 const MFloat recConst_x = LESSolver().m_reconstructionConstants[nDim * (recData + nghbr) + 0];
460 const MFloat recConst_y = LESSolver().m_reconstructionConstants[nDim * (recData + nghbr) + 1];
461 const MFloat recConst_z = LESSolver().m_reconstructionConstants[nDim * (recData + nghbr) + 2];
462
463 vector<MInt>::iterator findRecNghbrId =
464 find(LESSolver().m_LESAverageCells.begin(), LESSolver().m_LESAverageCells.end(), recNghbrId);
465
466 if(findRecNghbrId == LESSolver().m_LESAverageCells.end())
467 TERMM(1, "Something went wrong in nghbr " + to_string(recNghbrId));
468
469 MInt LESRecNghbrId = distance(LESSolver().m_LESAverageCells.begin(), findRecNghbrId);
470
471 for(MInt dim = 0; dim < nDim; dim++) {
472 ASSERT(c < (MInt)LESSolver().m_LESVarAverage[dim].size(),
473 "Trying to access data [" + to_string(dim) + "][" + to_string(LESRecNghbrId)
474 + "] in LESSolver().m_LESVarAverage with length "
475 + to_string(LESSolver().m_LESVarAverage[dim].size()));
476
477 const MFloat delta_u = LESSolver().m_LESVarAverage[dim][LESRecNghbrId] - u[dim];
478 if(abs(LESSolver().m_LESVarAverage[dim][LESRecNghbrId]) > epss
479 || abs(u[dim] / LESSolver().m_LESVarAverage[dim][LESRecNghbrId]) > 100) {
480 du[dim][0] += recConst_x * delta_u;
481 du[dim][1] += recConst_y * delta_u;
482 du[dim][2] += recConst_z * delta_u;
483 }
484 }
485 }
486
487 MFloat SijSij = F0;
488 for(MInt d1 = 0; d1 < nDim; d1++) {
489 for(MInt d2 = 0; d2 < nDim; d2++) {
490 MFloat sij = 0.5 * (du[d1][d2] + du[d2][d1]);
491 SijSij += sij * sij;
492 }
493 }
494
495 const MFloat SijSijLim = (4.0 * pow(LESSolver().m_Ma, F2)) * 0.0001;
496 SijSij = max(SijSij, SijSijLim);
497 const MFloat c_mu = 0.09;
498 MFloat omega = 1 / sqrt(c_mu) * sqrt(2 * SijSij);
499 omega = max(omega, epss);
500
501 // calculating nut
502 MFloat nuTurb = max(k / (omega * rRe), LESSolver().m_nuTildeInfinity);
504 if(std::isnan(omega) || tulim < 1) {
505 nuTurb = LESSolver().m_nuTildeInfinity;
506 }
507
508 if(approx(tulim, F1, eps)) {
509 const MFloat rho = LESSolver().a_pvariable(cellId, LESSolver().m_sysEqn.PV->RHO);
510 const MFloat p = LESSolver().a_pvariable(cellId, LESSolver().m_sysEqn.PV->P);
511 const MFloat T = LESSolver().m_gamma * p / rho;
512 const MFloat mue = (T * sqrt(T) * LESSolver().m_sutherlandPlusOne) / (T + LESSolver().m_sutherlandConstant);
513 const MFloat nuLaminar = mue / rho;
514
515 // Iteration of nuTilde (using Newton, nu_(n+1) = nu_n - f(nu_n)/f'(nu_n))
516 MInt NewtonIter = 50;
517 MFloat nut = nuTurb;
518 MFloat nu_new = nut;
519 MFloat nu_old = 0;
520 MFloat func_n = 0.0;
521 MFloat derv_n = 0.0;
522 MInt icount = 0;
523
524 while(abs(nu_new - nu_old) > eps && icount < NewtonIter) {
525 nu_old = nu_new;
526
527 MFloat chi = nu_old / nuLaminar;
528 MFloat chi3 = pow(chi, 3.0);
530 MFloat fv1 = chi3 / (chi3 + cv13);
531
532 // current function value
533 func_n = nu_old * fv1 - nut;
534 // derivative of function
535 derv_n = fv1 + 3.0 * fv1 - 3.0 * fv1 * fv1;
536 // newton iteration formula
537 nu_new = nu_old - func_n / derv_n;
538
539 icount++;
540 }
541
542 nuTilde = nu_new;
543 }
544
545 LESSolver().m_LESVarAverage[N][LESAvgId] = nuTilde;
546 }
547 }
548}
MInt & a_reconstructionData(const MInt cellId)
Returns reconstruction data offset i of the cell cellId.
MInt & a_reconstructionNeighborId(const MInt cellId, const MInt nghbrNo)
Returns reconstruction neighbor n of the cell cellId.
std::vector< MFloat > m_reconstructionConstants
MInt & a_noReconstructionNeighbors(const MInt cellId)
Returns the noRcnstrctnNghbrIds of the cell cellId.
const MFloat eps
Definition: fvzonalrtv.h:107
MFloat m_turbulentIntensity
Definition: fvzonalrtv.h:90
const MFloat epss
Definition: fvzonalrtv.h:108
MFloat m_nuTildeInfinity
Definition: fvzonalrtv.h:87
MFloat m_tuLengthScaleCorrection
Definition: fvzonalrtv.h:91
MFloat m_Re
the Reynolds number
Definition: solver.h:68
InfoOutFile m_log
constexpr std::underlying_type< FcCell >::type p(const FcCell property)
Converts property name to underlying integer value.
MFloat distance(const MFloat *a, const MFloat *b)
Definition: maiamath.h:249

◆ subCouple()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::subCouple ( MInt  ,
MInt  ,
std::vector< MBool > &   
)
inlineprivatevirtual

Implements Coupling.

Definition at line 70 of file fvzonalrtv.h.

70{};

◆ transferSolverData()

template<MInt nDim, class SysEqn >
void FvZonalRTV< nDim, SysEqn >::transferSolverData
private

Definition at line 291 of file fvzonalrtv.cpp.

291 {
292 TRACE();
293
294 // write LES data to RANS Solver and RANS data to LES Solver
295 if(RANSSolver().grid().isActive()) {
296 for(MInt var = 0; var < noRANSVariables(); var++) {
297 for(MInt cellId = 0; cellId < a_noFvGridCellsRANS(); cellId++) {
298 MInt LESId = convertIdParent(RANSSolver(), LESSolver(), cellId);
299
300 ASSERT(cellId < (MInt)RANSSolver().m_LESValues[var].size(),
301 "Trying to access data [" + to_string(var) + "][" + to_string(cellId)
302 + "] in LESSolver().m_LESVarAverage(RANS) with length "
303 + to_string(RANSSolver().m_LESValues[var].size())
304 + ", domainId: " + to_string(RANSSolver().domainId()));
305
306 if(LESId != -1) {
307 vector<MInt>::iterator findAvgId =
308 find(LESSolver().m_LESAverageCells.begin(), LESSolver().m_LESAverageCells.end(), LESId);
309 if(findAvgId != LESSolver().m_LESAverageCells.end()) {
310 MInt avgId = distance(LESSolver().m_LESAverageCells.begin(), findAvgId);
311 MInt var_ = var;
312 // if(var == nDim + 2) var_ = nDim + 2 + 1;
313 RANSSolver().m_LESValues[var][cellId] = LESSolver().m_LESVarAverage[var_][avgId];
314 }
315 }
316 }
317 }
318 }
319
320 // write RANS data to LES Solver
321 if(LESSolver().grid().isActive()) {
322 for(MInt cellId = 0; cellId < a_noFvGridCellsLES(); cellId++) {
323 MInt RANSId = convertIdParent(LESSolver(), RANSSolver(), cellId);
324
325 if(RANSId != -1) {
326 for(MInt var = 0; var < noRANSVariables(); var++) {
327 ASSERT(cellId < (MInt)LESSolver().m_RANSValues[var].size(),
328 "Trying to access data [" + to_string(var) + "][" + to_string(cellId)
329 + "] in m_RANSValues with length " + to_string(LESSolver().m_RANSValues[var].size())
330 + ", domainId: " + to_string(LESSolver().domainId()));
331
332 LESSolver().m_RANSValues[var][cellId] = RANSSolver().a_pvariable(RANSId, var);
333 }
334 }
335 }
336 }
337}

Friends And Related Function Documentation

◆ FvZonal< nDim, SysEqn >

template<MInt nDim, class SysEqn >
friend class FvZonal< nDim, SysEqn >
friend

Definition at line 1 of file fvzonalrtv.h.

Member Data Documentation

◆ eps

template<MInt nDim, class SysEqn >
const MFloat FvZonalRTV< nDim, SysEqn >::eps = 1e-16
private

Definition at line 107 of file fvzonalrtv.h.

◆ epss

template<MInt nDim, class SysEqn >
const MFloat FvZonalRTV< nDim, SysEqn >::epss = 1e-8
private

Definition at line 108 of file fvzonalrtv.h.

◆ m_7902faceNormalDir

template<MInt nDim, class SysEqn >
MInt FvZonalRTV< nDim, SysEqn >::m_7902faceNormalDir
private

Definition at line 99 of file fvzonalrtv.h.

◆ m_7902periodicDir

template<MInt nDim, class SysEqn >
MInt FvZonalRTV< nDim, SysEqn >::m_7902periodicDir
private

Definition at line 101 of file fvzonalrtv.h.

◆ m_7902Position

template<MInt nDim, class SysEqn >
MFloat FvZonalRTV< nDim, SysEqn >::m_7902Position
private

Definition at line 98 of file fvzonalrtv.h.

◆ m_7902wallDir

template<MInt nDim, class SysEqn >
MInt FvZonalRTV< nDim, SysEqn >::m_7902wallDir
private

Definition at line 100 of file fvzonalrtv.h.

◆ m_averageDir

template<MInt nDim, class SysEqn >
MInt FvZonalRTV< nDim, SysEqn >::m_averageDir
private

Definition at line 104 of file fvzonalrtv.h.

◆ m_averageFaceDir

template<MInt nDim, class SysEqn >
MInt FvZonalRTV< nDim, SysEqn >::m_averageFaceDir
private

Definition at line 105 of file fvzonalrtv.h.

◆ m_averagePos

template<MInt nDim, class SysEqn >
MFloat FvZonalRTV< nDim, SysEqn >::m_averagePos
private

Definition at line 103 of file fvzonalrtv.h.

◆ m_averageTimeSteps

template<MInt nDim, class SysEqn >
MInt FvZonalRTV< nDim, SysEqn >::m_averageTimeSteps
private

Definition at line 88 of file fvzonalrtv.h.

◆ m_bcId7902

template<MInt nDim, class SysEqn >
MInt FvZonalRTV< nDim, SysEqn >::m_bcId7902
private

Definition at line 97 of file fvzonalrtv.h.

◆ m_LESNoVarAverage

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::m_LESNoVarAverage

Definition at line 72 of file fvzonal.h.

◆ m_LESSolverId

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::m_LESSolverId

Definition at line 63 of file fvzonal.h.

◆ m_noReconstructNutVars

template<MInt nDim, class SysEqn >
const MInt FvZonal< nDim, SysEqn >::m_noReconstructNutVars

Definition at line 65 of file fvzonal.h.

◆ m_noRntBcCells

template<MInt nDim, class SysEqn >
MInt FvZonalRTV< nDim, SysEqn >::m_noRntBcCells
private

Definition at line 95 of file fvzonalrtv.h.

◆ m_nuTildeInfinity

template<MInt nDim, class SysEqn >
MFloat FvZonalRTV< nDim, SysEqn >::m_nuTildeInfinity
private

Definition at line 87 of file fvzonalrtv.h.

◆ m_RANSSolverId

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::m_RANSSolverId

Definition at line 62 of file fvzonal.h.

◆ m_reconstructAverageFromNut

template<MInt nDim, class SysEqn >
MBool FvZonalRTV< nDim, SysEqn >::m_reconstructAverageFromNut = false
private

Definition at line 85 of file fvzonalrtv.h.

◆ m_reconstructNut

template<MInt nDim, class SysEqn >
MBool FvZonalRTV< nDim, SysEqn >::m_reconstructNut = false
private

Definition at line 84 of file fvzonalrtv.h.

◆ m_restartLESAverage

template<MInt nDim, class SysEqn >
MBool FvZonal< nDim, SysEqn >::m_restartLESAverage

Definition at line 70 of file fvzonal.h.

◆ m_rntBcCells

template<MInt nDim, class SysEqn >
std::vector<MInt> FvZonalRTV< nDim, SysEqn >::m_rntBcCells
private

Definition at line 93 of file fvzonalrtv.h.

◆ m_rntStartTimeStep

template<MInt nDim, class SysEqn >
MInt FvZonalRTV< nDim, SysEqn >::m_rntStartTimeStep
private

Definition at line 83 of file fvzonalrtv.h.

◆ m_tuLengthScaleCorrection

template<MInt nDim, class SysEqn >
MFloat FvZonalRTV< nDim, SysEqn >::m_tuLengthScaleCorrection
private

Definition at line 91 of file fvzonalrtv.h.

◆ m_turbulentIntensity

template<MInt nDim, class SysEqn >
MFloat FvZonalRTV< nDim, SysEqn >::m_turbulentIntensity
private

Definition at line 90 of file fvzonalrtv.h.

◆ m_zonalAveragingTimeStep

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::m_zonalAveragingTimeStep

Definition at line 67 of file fvzonal.h.

◆ m_zonalTransferInterval

template<MInt nDim, class SysEqn >
MInt FvZonal< nDim, SysEqn >::m_zonalTransferInterval

Definition at line 68 of file fvzonal.h.


The documentation for this class was generated from the following files: