forked from p35462178/gks2d-str
106 lines
2.5 KiB
C
106 lines
2.5 KiB
C
|
#pragma once
|
|||
|
#include"function.h"
|
|||
|
|
|||
|
|
|||
|
extern double c1_euler;
|
|||
|
extern double c2_euler;
|
|||
|
extern bool is_Prandtl_fix;
|
|||
|
extern double Pr;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//basic gks function
|
|||
|
// to store the moment
|
|||
|
class MMDF1d
|
|||
|
{
|
|||
|
private:
|
|||
|
double u;
|
|||
|
double lambda;
|
|||
|
|
|||
|
public:
|
|||
|
double uwhole[10];
|
|||
|
double uplus[10];
|
|||
|
double uminus[10];
|
|||
|
double upxi[10][4];
|
|||
|
double unxi[10][4];
|
|||
|
double uxi[10][4];
|
|||
|
double xi2;
|
|||
|
double xi4;
|
|||
|
double xi6;
|
|||
|
MMDF1d();
|
|||
|
MMDF1d(double u_in, double lambda_in);
|
|||
|
void calcualte_MMDF1d();
|
|||
|
};
|
|||
|
|
|||
|
// to calculate the microsolpe moment
|
|||
|
void G(int no_u, int no_xi, double* psi, double a[3], MMDF1d m);
|
|||
|
void GL(int no_u, int no_xi, double* psi, double a[3], MMDF1d m);
|
|||
|
void GR(int no_u, int no_xi, double* psi, double a[3], MMDF1d m);
|
|||
|
|
|||
|
//moments of the maxwellian distribution function
|
|||
|
class MMDF
|
|||
|
{
|
|||
|
private:
|
|||
|
double u;
|
|||
|
double v;
|
|||
|
double lambda;
|
|||
|
|
|||
|
public:
|
|||
|
double uwhole[7];
|
|||
|
double uplus[7];
|
|||
|
double uminus[7];
|
|||
|
double vwhole[7];
|
|||
|
double upvxi[7][7][3];
|
|||
|
double unvxi[7][7][3];
|
|||
|
double uvxi[7][7][3];
|
|||
|
double xi2;
|
|||
|
double xi4;
|
|||
|
MMDF();
|
|||
|
MMDF(double u_in, double v_in, double lambda_in);
|
|||
|
void calcualte_MMDF();
|
|||
|
};
|
|||
|
|
|||
|
class MMDF1st
|
|||
|
{
|
|||
|
private:
|
|||
|
double u;
|
|||
|
double v;
|
|||
|
double lambda;
|
|||
|
|
|||
|
public:
|
|||
|
double uwhole[4];
|
|||
|
double uplus[4];
|
|||
|
double uminus[4];
|
|||
|
double vwhole[3];
|
|||
|
double xi2;
|
|||
|
MMDF1st();
|
|||
|
MMDF1st(double u_in, double v_in, double lambda_in);
|
|||
|
void calcualte_MMDF1st();
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
void Collision(double *w0, double left, double right, MMDF &m2, MMDF &m3);
|
|||
|
void Collision(double *w0, double left, double right, MMDF1st &m2, MMDF1st &m3);
|
|||
|
|
|||
|
void A(double *a, double der[4], double prim[4]);
|
|||
|
|
|||
|
double Get_Tau_NS(double density0, double lambda0); // solve the smooth tau
|
|||
|
double TauNS_Sutherland(double density0, double lambda0); // solve the smooth tau by using sutherland
|
|||
|
double TauNS_power_law(double density0, double lambda0); //solver the smooth tau by using power law
|
|||
|
double Get_Tau(double density_left, double density_right, double density0, double lambda_left, double lambda_right, double lambda0, double dt); // solve not smooth numerical tau
|
|||
|
|
|||
|
|
|||
|
double Lambda(double density, double u, double densityE);
|
|||
|
double Lambda(double density, double u, double v, double densityE);
|
|||
|
void Convar_to_ULambda_1d(double* primvar, double convar[3]);
|
|||
|
|
|||
|
//计算α,α=erfc(±√λ*U)
|
|||
|
double Alpha(double lambda, double u);
|
|||
|
//计算β,β=e^(-λ*U^2)/(√πλ)
|
|||
|
double Beta(double lambda, double u);
|
|||
|
//solution of matrix equation b=Ma
|
|||
|
void Microslope(double *a, double der[3], double prim[3]); //in one dimensional
|
|||
|
|
|||
|
void Convar_to_ULambda_2d(double* primvar, double convar[4]);
|
|||
|
|