29 double *cmax,
Grid *grid)
45 double AL, BL, AR, BR,
a,b,
c;
48 double *vL, *vR, *uL, *uR;
49 static double *SL, *SR;
50 static double **Uhll, **Fhll;
51 static double **fL, **fR;
52 static double *pR, *pL;
53 static double *a2L, *a2R, *hL, *hR;
81 Flux (state->
uL, state->
vL, a2L, fL, pL, beg, end);
82 Flux (state->
uR, state->
vR, a2R, fR, pR, beg, end);
85 for (i = beg; i <= end; i++) {
87 scrh =
MAX(fabs(SL[i]), fabs(SR[i]));
113 for (nv =
NFLX; nv--; ) state->
flux[i][nv] = fL[i][nv];
114 state->
press[i] = pL[i];
116 }
else if (SR[i] <= 0.0){
118 for (nv =
NFLX; nv--; ) state->
flux[i][nv] = fR[i][nv];
119 state->
press[i] = pR[i];
123 vL = state->
vL[
i]; uL = state->
uL[
i];
124 vR = state->
vR[
i]; uR = state->
uR[
i];
126 #if SHOCK_FLATTENING == MULTID
128 scrh = 1.0/(SR[
i] - SL[
i]);
129 for (nv =
NFLX; nv--; ){
130 state->
flux[
i][nv] = SL[
i]*SR[
i]*(uR[nv] - uL[nv])
131 + SR[i]*fL[i][nv] - SL[i]*fR[i][nv];
134 state->
press[
i] = (SR[
i]*pL[
i] - SL[
i]*pR[
i])*scrh;
146 AL = SL[
i]*uL[ENG] - fL[
i][ENG];
147 AR = SR[
i]*uR[ENG] - fR[
i][ENG];
152 a = AR*SL[
i] - AL*SR[
i];
153 b = AL + BL*SR[
i] - AR - BR*SL[
i];
163 scrh = -0.5*(b +
DSIGN(b)*sqrt(b*b - 4.0*a*c));
166 ps = (AL*us - BL)/(1.0 - us*SL[i]);
168 usl[
RHO] = uL[
RHO]*(SL[
i] - vxl)/(SL[i] - us);
169 usr[
RHO] = uR[
RHO]*(SR[
i] - vxr)/(SR[i] - us);
170 EXPAND(usl[
MXn] = (SL[i]*(uL[ENG] + ps) - uL[
MXn])*us/(SL[i] - us);
171 usr[
MXn] = (SR[
i]*(uR[ENG] + ps) - uR[MXn])*us/(SR[
i] - us); ,
172 usl[
MXt] = uL[
MXt]*(SL[
i] - vxl)/(SL[i] - us);
173 usr[
MXt] = uR[
MXt]*(SR[
i] - vxr)/(SR[i] - us); ,
174 usl[
MXb] = uL[
MXb]*(SL[
i] - vxl)/(SL[i] - us);
175 usr[
MXb] = uR[
MXb]*(SR[
i] - vxr)/(SR[i] - us);)
177 usl[ENG] = uL[ENG] + (usl[MXn] - uL[MXn])/SL[
i];
178 usr[ENG] = uR[ENG] + (usr[
MXn] - uR[
MXn])/SR[i];
183 for (nv =
NFLX; nv--; ) {
184 state->
flux[
i][nv] = fL[
i][nv] + SL[
i]*(usl[nv] - uL[nv]);
188 for (nv =
NFLX; nv--; ) {
189 state->
flux[
i][nv] = fR[
i][nv] + SR[
i]*(usr[nv] - uR[nv]);
double ** flux
upwind flux computed with the Riemann solver
void Flux(double **u, double **w, double *a2, double **fx, double *p, int beg, int end)
double ** vR
Primitive variables to the right of the interface, .
void HLLC_Solver(const State_1D *state, int beg, int end, real *cmax, Grid *grid)
void SoundSpeed2(double **v, double *cs2, double *h, int beg, int end, int pos, Grid *grid)
double ** uR
same as vR, in conservative vars
#define ARRAY_1D(nx, type)
long int NMAX_POINT
Maximum number of points among the three directions, boundaries excluded.
void HLL_Speed(double **vL, double **vR, double *a2L, double *a2R, double *SL, double *SR, int beg, int end)
double ** vL
Primitive variables to the left of the interface, .
double * press
Upwind pressure term computed with the Riemann solver.
#define FLAG_HLL
Use HLL Riemann solver.
#define ARRAY_2D(nx, ny, type)
double ** uL
same as vL, in conservative vars