26 void PrimToCons (
double **uprim,
double **ucons,
int ibeg,
int iend)
39 double rho,
rhoe,
T, gmm1;
44 for (i = ibeg; i <= iend; i++) {
50 EXPAND (u[
MX1] = rho*v[
VX1]; ,
56 u[ENG] = 0.5*rho*u[ENG] + v[PRS]/gmm1;
66 u[ENG] = EXPAND(v[VX1]*v[VX1], + v[VX2]*v[VX2], + v[VX3]*v[VX3]);
67 u[ENG] = 0.5*rho*u[ENG] +
rhoe;
69 if (u[ENG] != u[ENG]){
70 print(
"! PrimToCons(): E = NaN, rhoe = %8.3e, T = %8.3e\n",rhoe, T);
77 EXPAND(u[MX1_D] = v[RHO_D]*v[VX1_D]; ,
78 u[MX2_D] = v[RHO_D]*v[VX2_D]; ,
79 u[MX3_D] = v[RHO_D]*v[VX3_D];)
89 int ConsToPrim (
double **ucons,
double **uprim,
int ibeg,
int iend,
110 int i, nv, err, ifail;
111 int use_entropy, use_energy=1;
112 double tau, rho, gmm1,
rhoe,
T;
113 double kin, m2, rhog1;
121 for (i = ibeg; i <= iend; i++) {
131 print(
"! ConsToPrim: rho < 0 (%8.2e), ", u[
RHO]);
142 EXPAND(v[
VX1] = u[MX1]*tau; ,
153 print(
"! ConsToPrim: E < 0 (%8.2e), ", u[ENG]);
167 use_energy = !use_entropy;
169 rhog1 = pow(rho, gmm1);
170 v[PRS] = u[ENTR]*rhog1;
173 print(
"! ConsToPrim: p(S) < 0 (%8.2e, %8.2e), ", v[PRS], u[ENTR]);
180 u[ENG] = v[PRS]/gmm1 + kin;
185 v[PRS] = gmm1*(u[ENG] - kin);
188 print(
"! ConsToPrim: p(E) < 0 (%8.2e), ", v[PRS]);
192 u[ENG] = v[PRS]/gmm1 + kin;
197 u[ENTR] = v[PRS]/pow(rho,gmm1);
205 #elif EOS == PVTE_LAW
213 if (u[ENG] != u[ENG]){
214 print(
"! ConsToPrim: NaN found\n");
226 print (
"! ConsToPrim: rhoe < 0 or T < T_CUT_RHOE; ");
Where(i,NULL);
240 u[RHO_D] =
MAX(u[RHO_D], 1.e-20);
242 EXPAND(v[MX1_D] = u[MX1_D]/v[RHO_D]; ,
243 v[MX2_D] = u[MX2_D]/v[RHO_D]; ,
244 v[MX3_D] = u[MX3_D]/v[RHO_D];)
#define T_CUT_RHOE
Sets the lowest cut-off temperature used in the PVTE_LAW equation of state.
double g_smallDensity
Small value for density fix.
double InternalEnergy(double *v, double T)
double g_smallPressure
Small value for pressure fix.
#define FLAG_CONS2PRIM_FAIL
#define FLAG_ENTROPY
Update pressure using entropy equation.
int GetEV_Temperature(double rhoe, double *v, double *T)
int ConsToPrim(double **ucons, double **uprim, int ibeg, int iend, unsigned char *flag)
void print(const char *fmt,...)
void Show(double **, int)
void PrimToCons(double **uprim, double **ucons, int ibeg, int iend)
double Pressure(double *v, double T)
int GetPV_Temperature(double *v, double *T)
#define QUIT_PLUTO(e_code)