PHengLEI-NCCR/CFD/IncomSolver/include/IncomScalarEqCalculator.h

134 lines
5.5 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 IncomScalarEqCalculator.h
//! @brief scalar solver.
//! @author WanYunbo, Bell, XuGang.
#pragma once
#include "IO_FileName.h"
#include "IncomCalculator.h"
#include "TK_Exit.h"
namespace PHSPACE
{
class IncomScalarEqCalculator : public IncomCalculator
{
public:
public:
IncomScalarEqCalculator();
~IncomScalarEqCalculator();
public:
virtual void GetResidual(Grid *grid, vector<RDouble>& res);
virtual void InitFlowAsRestart(Grid* gridIn);
virtual void AllocateGlobalVar(Grid *gridIn);
virtual void InitialUnsteadyVar(Grid* grid) {};
virtual void IncompressibleInitial(Grid* grid);
virtual void UpdateUnsteadyVariable(Grid *grid);
public:
virtual void solveScalarEquation(Grid* grid, int iEquation);
virtual void constructMatrixACoeff(Grid* grid, int iEquation);
virtual void constructBCoeff(Grid* grid, int iEquation);
virtual void UpdateBCValue(Grid* grid);
virtual void UpdateProperties(Grid* grid) {};
virtual void UpdateAfterIterloop(Grid* grid) {};
virtual void UpdateUnsteadyProperties(Grid* grid) {};
virtual void UpdateUnsteadyFlux(Grid* grid) {};
void Post() {};
public:
virtual void AllocateUnsteadyVar(Grid* grid);
virtual void CalcGrad(Grid* grid);
virtual void SetDiffusionCoeff(Grid* grid);
virtual void CalcOtherMatrixACoeff(Grid* grid) {};
virtual void CalcOtherbCoeff(Grid* grid, int iEquation) {};
public:
void treatBC(Grid* grid, int iVariable, RDouble matrixCoeff);
virtual void calWallBC(Grid* grid, vector<int>* faceIndex, Data_Param* bcData, RDouble* diagMatrixCoeff, RDouble* bCoeff, RDouble* q,
RDouble* dqdx, RDouble* dqdy, RDouble* dqdz, RDouble* mu, RDouble matrixCoeff);
virtual void calSymmetryBC(Grid* grid, vector<int>* faceIndex, Data_Param* bcData, RDouble* diagMatrixCoeff, RDouble* bCoeff, RDouble* q,
RDouble* dqdx, RDouble* dqdy, RDouble* dqdz, RDouble* mu, RDouble matrixCoeff);
virtual void calVelocityInletBC(Grid* grid, vector<int>* faceIndex, Data_Param* bcData, RDouble* diagMatrixCoeff, RDouble* bCoeff, RDouble* q,
RDouble* dqdx, RDouble* dqdy, RDouble* dqdz, RDouble* mu, RDouble matrixCoeff);
virtual void calPressureOutletBC(Grid* grid, vector<int>* faceIndex, Data_Param* bcData, RDouble* diagMatrixCoeff, RDouble* bCoeff, RDouble* q,
RDouble* dqdx, RDouble* dqdy, RDouble* dqdz, RDouble* mu, RDouble matrixCoeff);
virtual void calInterfaceBC(Grid* grid, vector<int>* faceIndex, Data_Param* bcData, RDouble* diagMatrixCoeff, RDouble* bCoeff, RDouble* q,
RDouble* dqdx, RDouble* dqdy, RDouble* dqdz, RDouble* mu, RDouble matrixCoeff);
virtual void calPressureInletBC(Grid* grid, vector<int>* faceIndex, Data_Param* bcData, RDouble* diagMatrixCoeff, RDouble* bCoeff, RDouble* q,
RDouble* dqdx, RDouble* dqdy, RDouble* dqdz, RDouble* mu, RDouble matrixCoeff);
virtual void calFarfieldBC(Grid* grid, vector<int>* faceIndex, Data_Param* bcData, RDouble* diagMatrixCoeff, RDouble* bCoeff, RDouble* q,
RDouble* dqdx, RDouble* dqdy, RDouble* dqdz, RDouble* mu, RDouble matrixCoeff);
void calcInvisSourceTerm(Grid* grid, int solverIndex);
void FirstUpwindInvisTerm(Grid* grid);
void SecondUpWindSourceTerm(Grid* grid, int solverIndex);
void QUICKSourceTerm(Grid* grid, int solverIndex);
void SecondCentralSourceTerm(Grid* grid, int solverIndex);
void VisMatrixTerm(Grid* grid, int solverIndex);
void VisSourceTerm(Grid* grid, int solverIndex);
void calcTransMatrixTerm(Grid* grid);
void TransMatrixTerm_1st(Grid* grid);
void TransMatrixTerm_2nd(Grid* grid);
void calcTransSourceTerm(Grid* grid, int iVariable);
void TransSourceTerm_1st(Grid* grid, int iVariable);
void TransSourceTerm_2nd(Grid* grid, int iVariable);
void relaxMatrixTerm(Grid* grid, int iVariable);
void relaxSourceTerm(Grid* grid, int iVariable);
void ImplicitEuler_AllocateMemory(Grid *grid, vector<string> &phiName);
void ImplicitEuler_ReInitTimeVar(Grid* grid, vector<string>& phiName);
void ImplicitEuler_SaveOldTimeValue(Grid *grid, vector<string> &phiName);
void ImplicitEuler_InitRestartTimeVar(Grid* grid, vector<string>& nameLists);
void ImplicitEuler_ReadRestartFile(Grid* grid, vector<string>& nameLists, hid_t grploc);
void Implicit2ndOrder_AllocateMemory(Grid *grid, vector<string> &phiName);
void Implicit2ndOrder_ReInitTimeVar(Grid* grid, vector<string>& phiName);
void Implicit2ndOrder_SaveOldTimeValue(Grid *grid, vector<string> &phiName);
void Implicit2ndOrder_InitRestartTimeVar(Grid* grid, vector<string>& nameLists);
void Implicit2ndOrder_ReadRestartFile(Grid* grid, vector<string>& nameLists, hid_t grploc);
};
}