381 lines
23 KiB
C
381 lines
23 KiB
C
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
// PPPPP H H EEEEE N N GGGGG L EEEEE III +
|
||
|
// P P H H E NN N G L E I +
|
||
|
// PPPPP HHHHH EEEEE N N N G GG L EEEEE I +
|
||
|
// P H H E N N N G G L E I +
|
||
|
// P H H EEEEE N N GGGGG LLLLL EEEEE III +
|
||
|
//------------------------------------------------------------------------+
|
||
|
// Platform for Hybrid Engineering Simulation of Flows +
|
||
|
// China Aerodynamics Research and Development Center +
|
||
|
// (C) Copyright, Since 2010 +
|
||
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
//! @file TurbSolverStruct.h
|
||
|
//! @brief turbulence solver for struct grid.
|
||
|
//! @author He Xin, He Kun, He Xianyao, Liu Jian, Zhang Zipei, Li peng, Ma Yankai.
|
||
|
|
||
|
#pragma once
|
||
|
#include "TransitionSolver.h"
|
||
|
|
||
|
namespace PHSPACE
|
||
|
{
|
||
|
class StructBC;
|
||
|
class Param_TransitionSolver;
|
||
|
|
||
|
class TransitionSolverStr : public TransitionSolver
|
||
|
{
|
||
|
public:
|
||
|
TransitionSolverStr();
|
||
|
~TransitionSolverStr();
|
||
|
|
||
|
//! To obtain the turbulent residual according to the flux between the cell face.
|
||
|
//! @param[in out ]: gridIn denotes the current computational regions of the grids, in which turbulent residual are stored.
|
||
|
//! @param[in ]: fluxProxy denotes the flux proxy of the cell face.
|
||
|
//! @param[in ]: iSurface denotes the direction index of the grid faces, where 1 indicates the I-direction, 2 for J-direction, and 3 is K-direction.
|
||
|
void LoadFlux(Grid *gridIn, FieldProxy *fluxProxy, int iSurface);
|
||
|
|
||
|
//! To obtain the turbulent viscous flux of the cell face.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[out ]: fluxProxy denotes the flux proxy of the cell face.
|
||
|
//! @param[in ]: iSurface denotes the direction index of the grid faces, where 1 indicates the I-direction, 2 for J-direction, and 3 is K-direction.
|
||
|
void CompVisFlux(Grid *gridIn, FieldProxy *fluxProxy, int iSurface);
|
||
|
|
||
|
//! To obtain the two equation turbulent viscid flux of the cell face.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[out ]: fluxProxy denotes the flux proxy of the cell face.
|
||
|
//! @param[in ]: iSurface denotes the direction index of the grid faces, where 1 indicates the I-direction, 2 for J-direction, and 3 is K-direction.
|
||
|
void CompVisFluxTwoEquation(Grid *gridIn, FieldProxy *fluxProxy, int iSurface);
|
||
|
|
||
|
//! To set the turbulent residual to zero of the Special cell, which is inherited from class NSSolver.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids, in which turbulent residual are stored.
|
||
|
void ZeroResidualOfSpecialCells(Grid * gridIn);
|
||
|
|
||
|
//! To set the transition variables from primitive form to conservative form in two equation model.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids, in which turbulent variables are stored.
|
||
|
void ChangeTransitionQ (Grid *gridIn);
|
||
|
|
||
|
//! To set the transition variables from conservative form to primitive form in two equation model.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids, in which turbulent variables are stored.
|
||
|
void RecoverTransitionQ(Grid *gridIn);
|
||
|
|
||
|
//! To obtain the two equation turbulent inviscid flux of the cell face.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: qLeftProxy denotes the turbulent q proxy to the left of the cell face.
|
||
|
//! @param[in ]: qRightProxy denotes the turbulent q proxy to the right of the cell face.
|
||
|
//! @param[in ]: qpmvl_proxy denotes the laminar q proxy to the left of the cell face.
|
||
|
//! @param[in ]: qpmvr_proxy denotes the laminar q proxy to the right of the cell face.
|
||
|
//! @param[out ]: fluxProxy denotes the flux proxy of the cell face.
|
||
|
//! @param[in ]: iSurface denotes the direction index of the grid faces, where 1 indicates the I-direction, 2 for J-direction, and 3 is K-direction.
|
||
|
void ComputeInviscidFlux(Grid *gridIn, FieldProxy *qLeftProxy, FieldProxy *qRightProxy, FieldProxy *qpmvl_proxy, FieldProxy *qpmvr_proxy, FieldProxy *fluxProxy, int iSurface);
|
||
|
|
||
|
//! To obtain the two equation turbulent inviscid flux of the cell face by NND method, called by function ComputeInviscidFlux.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: qLeftProxy denotes the turbulent q proxy to the left of the cell face.
|
||
|
//! @param[in ]: qRightProxy denotes the turbulent q proxy to the right of the cell face.
|
||
|
//! @param[in ]: qLaminarLeftProxy denotes the laminar q proxy to the left of the cell face.
|
||
|
//! @param[in ]: qpmvr_proxy denotes the laminar q proxy to the right of the cell face.
|
||
|
//! @param[out ]: fluxProxy denotes the flux proxy of the cell face.
|
||
|
//! @param[in ]: iSurface denotes the direction index of the grid faces, where 1 indicates the I-direction, 2 for J-direction, and 3 is K-direction.
|
||
|
void NNDFlux(Grid *gridIn, FieldProxy *qLeftProxy, FieldProxy *qRightProxy, FieldProxy *qLaminarLeftProxy, FieldProxy *qLaminarRightProxy, FieldProxy *fluxProxy, int iSurface);
|
||
|
|
||
|
//! To obtain the turbulent MUSCL interpolate value of the cell face in iSurface direction.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[out ]: qLeftProxy denotes the turbulent q proxy to the left of the cell face.
|
||
|
//! @param[out ]: qRightProxy denotes the turbulent q proxy to the right of the cell face.
|
||
|
//! @param[in ]: iSurface denotes the direction index of the grid faces, where 1 indicates the I-direction, 2 for J-direction, and 3 is K-direction.
|
||
|
void GetInviscidFaceValue(Grid *gridIn, FieldProxy *qLeftProxy, FieldProxy *qRightProxy, int iSurface);
|
||
|
|
||
|
//! To obtain the laminar velocity of the cell face for turbulent equation in iSurface direction.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[out ]: qLaminarLeftProxy denotes the velocity proxy to the left of the cell face.
|
||
|
//! @param[out ]: qLaminarRightProxy denotes the velocity proxy to the right of the cell face.
|
||
|
//! @param[in ]: iSurface denotes the direction index of the grid faces, where 1 indicates the I-direction, 2 for J-direction, and 3 is K-direction.
|
||
|
void GetInvFaceQValueforTransition(Grid *gridIn, FieldProxy *qLaminarLeftProxy, FieldProxy *qLaminarRightProxy, int iSurface);
|
||
|
|
||
|
//! To modify the interpolate turbulent vaule on the boundary, especially on the SOLID SURFACE.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in out ]: qLeftProxy denotes the turbulent q proxy to the left of the cell face.
|
||
|
//! @param[in out ]: qRightProxy denotes the turbulent q proxy to the right of the cell face.
|
||
|
//! @param[in out ]: qLaminarLeftProxy denotes the velocity proxy to the left of the cell face.
|
||
|
//! @param[in out ]: qLaminarRightProxy denotes the velocity proxy to the right of the cell face.
|
||
|
//! @param[in ]: iSurface denotes the direction index of the grid faces, where 1 indicates the I-direction, 2 for J-direction, and 3 is K-direction.
|
||
|
void CorrectFaceVar(Grid *gridIn, FieldProxy *qLeftProxy, FieldProxy *qRightProxy, FieldProxy *qLaminarLeftProxy, FieldProxy *qLaminarRightProxy, int iSurface);
|
||
|
|
||
|
//! To get the gradient of turbulent variables at the cell center.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids, on which dependent variables are stored.
|
||
|
void ComputeGradientCellCenter(Grid *gridIn);
|
||
|
|
||
|
//! To get the gradient of turbulent variables at the cell center.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids, on which dependent variables are stored.
|
||
|
//void ReconGrad(Grid *gridIn, int iSurface);
|
||
|
|
||
|
//! To modified the boundary value of the turbulent variables's gradient at the cell center.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids, on which dependent variables are stored.
|
||
|
void SetCellCenterGradientBoundary(Grid *gridIn);
|
||
|
|
||
|
//! To get the gradient of turbulent variables at the cell face from the cell center gradient.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids, on which dependent variables are stored.
|
||
|
//! @param[in ]: iSurface denotes the direction index of the grid faces, where 1 indicates the I-direction, 2 for J-direction, and 3 is K-direction.
|
||
|
void ReconGradVolWeightedwithCorrection(Grid *gridIn, int iSurface);
|
||
|
|
||
|
//! To correct the gradient of turbulent variables at the special physical boundaries, such as viscous wall, symmetry.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids, on which dependent variables are stored.
|
||
|
//! @param[in ]: iSurface denotes the direction index of the grid faces, where 1 indicates the I-direction, 2 for J-direction, and 3 is K-direction.
|
||
|
void GetGradientAtFace_CorrectionAtPhysicalBoundary(Grid *gridIn, int iSurface);
|
||
|
|
||
|
void RotateVectorFromInterface(Grid *gridIn, const int &neighborZoneIndex, const int &nEquation);//zhangyong
|
||
|
|
||
|
void AverageMixingPlane(Grid *grid) {};
|
||
|
void MixingPlaneDataTransfer(Grid *grid, Grid *NeighborGrid) {};
|
||
|
void NonReflective(Grid *grid, Grid *NeighborGrid) {};
|
||
|
void SetMixingPlaneData(Grid *grid) {};
|
||
|
|
||
|
//! Interface: to put the boundary data to DataContainer for parallel communication.
|
||
|
//! @param[in ]: actkey contains the control information for parallel communication.
|
||
|
void UploadInterfaceData(ActionKey *actkey);
|
||
|
|
||
|
//! implement: to put the boundary data to DataContainer for parallel communication, called by function UploadInterfaceData.
|
||
|
//! @param[in ]: actkey contains the control information for parallel communication.
|
||
|
void UploadInterfaceValue(ActionKey *actkey){};
|
||
|
|
||
|
//! Interface: to get the boundary data from DataContainer for parallel communication.
|
||
|
//! @param[in ]: actkey contains the control information for parallel communication.
|
||
|
void DownloadInterfaceData(ActionKey *actkey);
|
||
|
|
||
|
//! implement: to get the boundary data from DataContainer for parallel communication, called by function DownloadInterfaceData.
|
||
|
//! @param[in ]: actkey contains the control information for parallel communication.
|
||
|
void DownloadInterfaceValue(ActionKey *actkey){};
|
||
|
|
||
|
//! Implement: to compress turbulent dq data from grid to date dataContainer.
|
||
|
void CompressDQ(DataContainer *&dataContainer, FieldProxy *fieldProxy, Grid *grid, const int &zoneIndex, const int &neighborZoneIndex, const int &neqn);
|
||
|
void DecompressDQ(DataContainer *&dataContainer, FieldProxy *fieldProxy, Grid *grid, const int &zoneIndex, const int &neighborZoneIndex, const int &neqn);
|
||
|
|
||
|
//! Todo: overset information communication hasn't carried out yet.
|
||
|
//! @param[in ]: actkey contains the control information for parallel communication.
|
||
|
void UploadOversetData(ActionKey *actkey);
|
||
|
|
||
|
void DownloadOversetData(ActionKey *actkey);
|
||
|
|
||
|
//! To set all of the value of the turbulent field proxy equal to the input value
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[out]: fieldProxy denotes the target turbulent field proxy which will be covered by input value .
|
||
|
//! @param[in ]: value denotes the source value.
|
||
|
void FillField(Grid *gridIn, FieldProxy *fieldProxy, RDouble value);
|
||
|
|
||
|
//! To set all of the value of the fieldProxy equal to the input value
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[out]: targetFieldProxy denotes the target turbulent field proxy which will be covered by the source field proxy.
|
||
|
//! @param[in ]: sourceFieldProxy denotes the source turbulent field proxy.
|
||
|
void FillField(Grid *gridIn, FieldProxy *targetFieldProxy, FieldProxy *sourceFieldProxy);
|
||
|
|
||
|
//! To creat a turbulent fieldProxy and get data by field name.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in]: fieldName denotes the field name to be set into fieldProxy.
|
||
|
//! @return: the turbulent field proxy created.
|
||
|
FieldProxy *GetFieldProxy(Grid *gridIn, const string &fieldName);
|
||
|
|
||
|
//! To creat a turbulent fieldProxy without initionalization.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @return: the turbulent field proxy created.
|
||
|
FieldProxy *CreateFieldProxy(Grid *gridIn);
|
||
|
|
||
|
//! To creat a laminar fieldProxy without initionalization.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @return: the laminar field proxy created.
|
||
|
FieldProxy *CreateFlowFieldProxy(Grid *gridIn);
|
||
|
|
||
|
//! To creat a turbulent residual proxy and set by "res_turb" data in gridIn.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @return: the turbulent residual proxy created.
|
||
|
FieldProxy *GetResidualProxy(Grid *gridIn);
|
||
|
|
||
|
//! To set the turbulent right hand side proxy by "res_turb" in gridIn.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[out]: rightHandSideProxy: the turbulent right hand side proxy.
|
||
|
void StoreRhsByResidual(Grid *gridIn, FieldProxy *rightHandSideProxy);
|
||
|
|
||
|
//! To initionalization the "res_turb" data in gridIn by turbulent right hand side proxy.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: rightHandSideProxy: the turbulent right hand side proxy.
|
||
|
void InitResidual(Grid *gridIn, FieldProxy *rightHandSideProxy);
|
||
|
|
||
|
//! To set the "res_turb" data in gridIn by turbulent right hand side proxy.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: rightHandSideProxy: the turbulent right hand side proxy.
|
||
|
void RecoverResidual(Grid *gridIn, FieldProxy *rightHandSideProxy);
|
||
|
|
||
|
//! Create and initialize control parameters.
|
||
|
LIB_EXPORT void InitControlParameters();
|
||
|
|
||
|
//! Get control parameters.
|
||
|
LIB_EXPORT Param_TransitionSolver *GetControlParameters();
|
||
|
|
||
|
//! Judge if the flow field variables file already exists in Turb solver.
|
||
|
bool JudgeIfRestart();
|
||
|
bool JudgeIfReadAverage();
|
||
|
|
||
|
bool JudgeIfProtectedRestart();
|
||
|
|
||
|
void InitFlowAsReadingProtectedRestart(ActionKey *actkey);
|
||
|
|
||
|
//! To write the flow data to restart file by HDF5 "fts" form for continue to simulation.
|
||
|
//! @param[in ]: actkey contains the control information.
|
||
|
void DumpRestartH5(ActionKey *actkey);
|
||
|
|
||
|
//! To read the flow data from restart file by HDF5 "fts" form for continue to simulation.
|
||
|
//! @param[in ]: actkey contains the control information.
|
||
|
void ReadRestartH5(ActionKey *actkey);
|
||
|
|
||
|
private:
|
||
|
|
||
|
//! To allocate the internal storage of field variables/residual/spectum array and other global data array.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void AllocateGlobalVar(Grid *gridIn);
|
||
|
|
||
|
//! To deallocate the internal storage of array.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void DeAllocateGlobalVar(Grid *gridIn);
|
||
|
|
||
|
//! To initionalize the flow flield according to the inflow condition
|
||
|
void InitFlowAsRestart();
|
||
|
|
||
|
//! To set the flow field value of the external boundary condition of the computational region. \n
|
||
|
//! It looped all the internal boundary and was realized by call the specific boundary functions.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void Boundary(Grid *gridIn);
|
||
|
|
||
|
//! To set the inflow boundary condition by setting the flow field value equal to the far field value.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: structBC denotes the current boundary condition region which need to be set.
|
||
|
void InFlowBC (Grid *gridIn, StructBC *structBC);
|
||
|
|
||
|
//! To set the outflow boundary condition by 2nd order interpolation.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: structBC denotes the current boundary condition region which need to be set.
|
||
|
void OutFlowBC (Grid *gridIn, StructBC *structBC);
|
||
|
|
||
|
//! To set the symmetry boundary condition by 1st order interpolation.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: structBC denotes the current boundary condition region which need to be set.
|
||
|
void SymmetryBC(Grid *gridIn, StructBC *structBC);
|
||
|
|
||
|
//! To set the viscid wall boundary condition by setting the turbulent variables equal to zero or other specific value.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: structBC denotes the current boundary condition region which need to be set.
|
||
|
void VisWall(Grid *gridIn, StructBC *structBC);
|
||
|
|
||
|
void VisWallWithWallFunctionStandard(Grid* gridIn, StructBC *structBC);
|
||
|
void VisWallWithWallFunctionPAB3D(Grid* gridIn, StructBC *structBC);
|
||
|
|
||
|
//! To set the farfield boundary condition according to riemann method.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: structBC denotes the current boundary condition region which need to be set.
|
||
|
void FarFieldBC(Grid *gridIn, StructBC *structBC);
|
||
|
|
||
|
//! To implement the standard wall function while y+ isn't meet the need.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: structBC denotes the current boundary condition region which need to be set.
|
||
|
void WallFunctionStandard(Grid *gridIn, StructBC *structBC, int is, int js, int ks, int it, int jt, int kt, int i, int j, int k);
|
||
|
|
||
|
//! To implement the Pab3D wall function while y+ isn't meet the need.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: structBC denotes the current boundary condition region which need to be set.
|
||
|
void WallFunctionPab3D(Grid *gridIn, StructBC *structBC, int is, int js, int ks, int it, int jt, int kt, int i, int j, int k);
|
||
|
|
||
|
//! To obtain the turbulent residual according to the right hand side.
|
||
|
//! @param[in out ]: gridIn denotes the current computational regions of the grids, in which turbulent residual are stored.
|
||
|
//! @param[in ]: rightHandSideProxy denotes the right hand side proxy of the cell face.
|
||
|
void LoadResiduals(Grid *gridIn, FieldProxy *rightHandSideProxy);
|
||
|
|
||
|
//! To set the turbulent residual zero.
|
||
|
//! @param[in out ]: gridIn denotes the current computational regions of the grids, in which turbulent residual are stored.
|
||
|
void ZeroResiduals(Grid *gridIn);
|
||
|
|
||
|
//! To set the turbulent spectum zero.
|
||
|
//! @param[in out ]: gridIn denotes the current computational regions of the grids, in which turbulent spectum are stored.
|
||
|
void InitSpectrum(Grid *gridIn);
|
||
|
|
||
|
//! Interface: to get the turbulent source flux of one equation model.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void SourceFluxOneEquation(Grid *gridIn);
|
||
|
|
||
|
//! Implement: to get the turbulent source flux of one equation model by original method.
|
||
|
//! Don't use yet.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void SourceFluxOneEquationOriginal(Grid *gridIn);
|
||
|
|
||
|
//! Implement: to get the turbulent source flux of one equation model by new method.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void SourceFluxOneEquationNew(Grid *gridIn);
|
||
|
|
||
|
//! To get the turbulent source flux of two one equation model.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void SourceFluxTwoEquation(Grid *gridIn);
|
||
|
|
||
|
//! To get the turbulent inviscid flux.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void InviscidFlux(Grid *gridIn);
|
||
|
|
||
|
//! To get the turbulent viscid flux.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void ViscousFlux(Grid *gridIn);
|
||
|
|
||
|
//! To get the turbulent dual time source residual.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void DualTimeSource(Grid *gridIn);
|
||
|
|
||
|
//! To update the unsteady turbulent flow field variables such as qTurbulence, residual, volume.
|
||
|
//! q(n+1) = q(n); q(n) = q(n-1)..
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void UpdateUnsteadyFlow(Grid *gridIn);
|
||
|
|
||
|
RDouble UnsteadyConvergence(Grid *gridIn);
|
||
|
|
||
|
//! Interface: to get the turbulent spectum.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void Diagonal(Grid *gridIn);
|
||
|
|
||
|
//! Implement: to get the turbulent spectum of one equation model, called by function Spectrum.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void SpectrumRadiusOfOneEquation(Grid *gridIn);
|
||
|
|
||
|
//! Implement: to get the turbulent spectum of two equation model, called by function Spectrum.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void SpectrumRadiusOfTwoEquation(Grid *gridIn);
|
||
|
|
||
|
//! To load flow variables stored in grid to qProxy.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: qProxy denotes the turbulent field proxy.
|
||
|
void LoadQ(Grid *gridIn, FieldProxy *qProxy);
|
||
|
|
||
|
//! To get the turbulent residual for Runge-Kutta method.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void RungeKuttaResidual(Grid *gridIn, FieldProxy *dqProxy, RDouble coef);
|
||
|
|
||
|
//! Implicit LU-SGS time integration method.
|
||
|
void SolveLUSGSForward(Grid *gridIn, FieldProxy *dqProxy, FieldProxy *LUplusDQ, RDouble &sweepNormal, bool iAdvanceStep = false);
|
||
|
void SolveLUSGSBackward(Grid *gridIn, FieldProxy *dqProxy, FieldProxy *LUplusDQ, RDouble &sweepNormal, bool iAdvanceStep = false);
|
||
|
|
||
|
//! To update the turbulent flow field variables for steady flow.
|
||
|
//! q(n+1) = q(n)+dq.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: qProxy denotes the turbulent field proxy.
|
||
|
//! @param[in ]: dqProxy denotes the of turbulent field proxy increment of one iteration step.
|
||
|
void UpdateFlowField(Grid *gridIn, FieldProxy *qProxy, FieldProxy *dqProxy);
|
||
|
|
||
|
//! To set turbulent flow field variables's value at the corner point.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void CornerPoint(Grid *gridIn);
|
||
|
|
||
|
//! To get the distance between the two point(i, j, k) and (i+1, j+1, k+1).
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[in ]: i, j, k denotes grid point index.
|
||
|
//! @return: the distance between the two point(i, j, k) and (i+1, j+1, k+1).
|
||
|
RDouble GetDistance(Grid *gridIn, int i, int j, int k);
|
||
|
|
||
|
//! To get maximum residual for output.
|
||
|
//! @param[in ]: actkey contains the control parameter.
|
||
|
void GetResidual(ActionKey *actkey);
|
||
|
};
|
||
|
|
||
|
}
|