77 lines
5.4 KiB
C
77 lines
5.4 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 MatrixLUSGS.h
|
||
|
//! @brief Implicit iterative method for Linearized N-S equations based on exact Jacobian matrix.
|
||
|
//! @author LiuJian, Yang Yufeng.
|
||
|
|
||
|
#include "Geo_StructGrid.h"
|
||
|
#include "FieldProxy.h"
|
||
|
#include "FaceProxy.h"
|
||
|
#include "PHMatrix.h"
|
||
|
|
||
|
namespace PHSPACE
|
||
|
{
|
||
|
|
||
|
//! To execute the forward sweep of the Matrix LU-SGS method.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[out]: dqProxy is an array that store the difference values between the conservative variables at n and n+1 time step.
|
||
|
void SolveMatrixLUSGSForwardSweep(Grid *gridIn, FieldProxy *dqProxy, FieldProxy *LUplusDQ, RDouble &sweepNormal);
|
||
|
|
||
|
//! To execute the backward sweep of the Matrix LU-SGS method.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
//! @param[out]: dqProxy and dqStarProxy are arrays that store the difference values between the conservative variables at n and n+1 time step.
|
||
|
void SolveMatrixLUSGSBackwardSweep(Grid *gridIn, FieldProxy *dq_proxy, FieldProxy *LUplusDQ, RDouble &sweepNormal);
|
||
|
|
||
|
//! Compute and save the diagonal matrix on grids that are used for matrix LU-SGS method.
|
||
|
//! @param[in ]: gridIn denotes the current computational regions of the grids.
|
||
|
void SolveDiagonalMatrix(StructGrid *gridIn);
|
||
|
|
||
|
//! Construct the Jacobian matrix of the inviscid flux item.
|
||
|
//! @param[in ]: primitiveVars is the array that stores the primitive variables of the current cell.
|
||
|
//! @param[in ]: temperature is the array that stores the temperature values of the current cell.
|
||
|
//! @param[in ]: xfn, yfn and zfn are components of the average normal vector located in the center of the current cell.
|
||
|
//! @param[in ]: area denotes the avarage area located in the center of the current cell.
|
||
|
//! @param[in ]: vgn denotes the moment velocity located in the center of the current cell, and it is used for dynamic mesh.
|
||
|
//! @param[in ]: gama denotes the specific heat ratio.
|
||
|
//! @param[out]: tempMatrix is an matrix that stores the Jacobian matrix of the inviscid flux item.
|
||
|
void ComputeInviscidMatrix(RDouble *primitiveVars, RDouble xfn, RDouble yfn, RDouble zfn, RDouble area, RDouble vgn, RDouble gama, RDouble2D *tempMatrix);
|
||
|
|
||
|
//! Construct the roe matrix of the inviscid flux item.
|
||
|
//! @param[in ]: priml is the array that stores the primitive variables of the left cell.
|
||
|
//! @param[in ]: primr is the array that stores the primitive variables of the current cell.
|
||
|
//! @param[in ]: xfn, yfn and zfn are components of the average normal vector located in the center of the current cell.
|
||
|
//! @param[in ]: gama denotes the specific heat ratio.
|
||
|
//! @param[in ]: area denotes the avarage area located in the center of the current cell.
|
||
|
//! @param[in ]: rtemL and rtemR are the parameters of Entropy fix, add by liujian 2019 From JCP ,1995, Lin H-C
|
||
|
//! @param[out]: jacobianMatrix is an matrix that stores the Roe matrix of the inviscid flux item.
|
||
|
void SolveRoeMatrix(RDouble *priml, RDouble *primr, RDouble xfn, RDouble yfn, RDouble zfn, RDouble gama, RDouble area, RDouble rtemL, RDouble rtemR, RDouble2D *jacobianMatrix);
|
||
|
|
||
|
//! Construct the Jacobian matrix of the viscous flux item.
|
||
|
//! @param[in ]: primitiveVars is the array that stores the primitive variables of the current cell.
|
||
|
//! @param[in ]: temperature is the array that stores the temperature values of the current cell.
|
||
|
//! @param[in ]: xfn, yfn and zfn are components of the average normal vector located in the center of the current cell.
|
||
|
//! @param[in ]: area denotes the avarage area located in the center of the current cell.
|
||
|
//! @param[in ]: vol denotes the avarage volume located in the center of the current cell.
|
||
|
//! @param[in ]: vgn denotes the moment velocity located in the center of the current cell, and it is used for dynamic mesh.
|
||
|
//! @param[in ]: gama denotes the specific heat ratio.
|
||
|
//! @param[in ]: laminarViscosity and turbulentViscosity denote the laminar viscosity and turbulent viscosity, respectively.
|
||
|
//! @param[out]: tempMatrix is an matrix that stores the Jacobian matrix of the viscous flux item.
|
||
|
void ComputeViscousMatrix(RDouble *primitiveVars, RDouble *temperature, RDouble xfn, RDouble yfn, RDouble zfn, RDouble area, RDouble vol,
|
||
|
RDouble vgn, RDouble gama, RDouble laminarViscosity, RDouble turbulentViscosity, RDouble2D *tempMatrix);
|
||
|
|
||
|
//! Compute and save the inverse matrix of the diagonal matrix by LU decomposition.
|
||
|
//! @param[in ]: diagonalMatrixD is the diagonal matrix used for the matrix LU-SGS method.
|
||
|
//! @param[in ]: nEquation is the
|
||
|
//! @param[out]: inverseDiaMatrix is the inverse matrix of the diagonal matrix.
|
||
|
void ObtainInverseDiagonalMatrix(RDouble2D *diagonalMatrixD, int nEquation, RDouble2D *inverseDiaMatrix);
|
||
|
|
||
|
}
|