9#include "../include/Riemann_solver.h"
10#include "../include/var_struc.h"
26 const double eps =
config[4];
27 const double n_x = ifv->
n_x, n_y = ifv->
n_y;
28 double gamma_mid =
config[6];
32 double u, u_R, d_u, d_u_R, t_u, t_u_R;
33 u = ifv->
U *n_x + ifv->
V *n_y;
34 u_R = ifv_R->
U *n_x + ifv_R->
V *n_y;
35 d_u = ifv->
d_u *n_x + ifv->
d_v *n_y;
36 d_u_R = ifv_R->
d_u*n_x + ifv_R->
d_v*n_y;
37 t_u = ifv->
t_u *n_x + ifv->
t_v *n_y;
38 t_u_R = ifv_R->
t_u*n_x + ifv_R->
t_v*n_y;
39 ifv->
V = -ifv->
U *n_y + ifv->
V *n_x;
40 ifv_R->
V = -ifv_R->
U *n_y + ifv_R->
V *n_x;
41 ifv->
d_v = -ifv->
d_u *n_y + ifv->
d_v *n_x;
42 ifv_R->
d_v = -ifv_R->
d_u*n_y + ifv_R->
d_v*n_x;
43 ifv->
t_v = -ifv->
t_u *n_y + ifv->
t_v *n_x;
44 ifv_R->
t_v = -ifv_R->
t_u*n_y + ifv_R->
t_v*n_x;
52 double wave_speed[2], dire[6], mid[6], star[6];
53 double rho_mid, p_mid, u_mid, v_mid;
55#ifdef MULTIFLUID_BASICS
56 double phi_mid, z_a_mid;
67 if(mid[3] < eps || mid[0] < eps)
69 if(!isfinite(mid[1])|| !isfinite(mid[2])|| !isfinite(mid[0])|| !isfinite(mid[3]))
71 if(!isfinite(dire[1])|| !isfinite(dire[2])|| !isfinite(dire[0])|| !isfinite(dire[3]))
74 rho_mid = mid[0] + 0.5*tau*dire[0];
75 u_mid = (mid[1] + 0.5*tau*dire[1])*n_x - (mid[2] + 0.5*tau*dire[2])*n_y;
76 v_mid = (mid[1] + 0.5*tau*dire[1])*n_y + (mid[2] + 0.5*tau*dire[2])*n_x;
77 p_mid = mid[3] + 0.5*tau*dire[3];
79 ifv->
F_rho = rho_mid*(u_mid*n_x + v_mid*n_y);
80 ifv->
F_u = ifv->
F_rho*u_mid + p_mid*n_x;
81 ifv->
F_v = ifv->
F_rho*v_mid + p_mid*n_y;
82 ifv->
F_e = (gamma_mid/(gamma_mid-1.0))*p_mid/rho_mid + 0.5*(u_mid*u_mid + v_mid*v_mid);
85 ifv->
U_int = (mid[1] + tau*dire[1])*n_x - (mid[2] + tau*dire[2])*n_y;
86 ifv->
V_int = (mid[1] + tau*dire[1])*n_y + (mid[2] + tau*dire[2])*n_x;
87 ifv->
RHO_int = mid[0] + tau*dire[0];
88 ifv->
P_int = mid[3] + tau*dire[3];
90#ifdef MULTIFLUID_BASICS
91 phi_mid = mid[5] + 0.5*tau*dire[5];
92 z_a_mid = mid[4] + 0.5*tau*dire[4];
93 gamma_mid = 1.0/(z_a_mid/(
config[6]-1.0)+(1.0-z_a_mid)/(
config[106]-1.0))+1.0;
94 ifv->F_phi = ifv->
F_rho*phi_mid;
95 ifv->F_e_a = z_a_mid/(
config[6]-1.0)*p_mid/rho_mid + 0.5*phi_mid*(u_mid*u_mid + v_mid*v_mid);
96 ifv->F_e_a = ifv->
F_rho*ifv->F_e_a;
97 ifv->
PHI = mid[5] + tau*dire[5];
98 ifv->
Z_a = mid[4] + tau*dire[4];
101#ifdef MULTIFLUID_BASICS
102 ifv->U_qt_add_c = ifv->
F_rho*u_mid*phi_mid;
103 ifv->V_qt_add_c = ifv->
F_rho*v_mid*phi_mid;
104 ifv->U_qt_star = p_mid*n_x;
105 ifv->V_qt_star = p_mid*n_y;
106 ifv->P_star = p_mid/rho_mid*ifv->
F_rho;
void linear_GRP_solver_Edir_Q1D(double *wave_speed, double *D, double *U, double *U_star, const struct i_f_var ifv_L, const struct i_f_var ifv_R, const double eps, const double atc)
A Quasi-1D direct Eulerian GRP solver for unsteady compressible inviscid two-component flow in two sp...
int GRP_2D_flux(struct i_f_var *ifv, struct i_f_var *ifv_R, const double tau)
This function calculate Eulerian fluxes of 2-D Euler equations by 2-D GRP solver.
Interfacial Fluid VARiables.
double V
variable values at t_{n}.
double V_int
interfacial variables at t_{n+1}.
double lambda_v
grid moving velocity components in direction x and y
double t_v
tangential spatial derivatives OR spatial derivatives in Lagrangian coordinate ξ
double gamma
specific heat ratio
double F_v
interfacial fluxes at t_{n+1/2}.
double d_v
normal spatial derivatives.
double config[]
Initial configuration data array.