MCPcopy Create free account
hub / github.com/AMReX-Astro/Castro / PrimToCons

Method PrimToCons

Source/mhd/mhd_util.cpp:54–106  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

52
53
54void
55Castro::PrimToCons(const Box& bx,
56 Array4<Real const> const& q_arr,
57 Array4<Real> const& u_arr) {
58
59 // calculate the conserved variables from the primitive
60
61 amrex::ParallelFor(bx,
62 [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
63 {
64
65 u_arr(i,j,k,URHO) = q_arr(i,j,k,QRHO);
66 u_arr(i,j,k,UMX) = q_arr(i,j,k,QRHO)*q_arr(i,j,k,QU);
67 u_arr(i,j,k,UMY) = q_arr(i,j,k,QRHO)*q_arr(i,j,k,QV);
68 u_arr(i,j,k,UMZ) = q_arr(i,j,k,QRHO)*q_arr(i,j,k,QW);
69
70 eos_t eos_state;
71 eos_state.rho = q_arr(i,j,k,QRHO);
72 eos_state.p = q_arr(i,j,k,QPRES);
73 eos_state.T = 100.0_rt; // dummy initial T.
74 for (int n = 0; n < NumSpec; n++) {
75 eos_state.xn[n] = q_arr(i,j,k,QFS+n);
76 }
77#if NAUX_NET > 0
78 for (int n = 0; n < NumAux; n++) {
79 eos_state.aux[n] = q_arr(i,j,k,QFX+n);
80 }
81#endif
82
83 eos(eos_input_rp, eos_state);
84
85 u_arr(i,j,k,UEDEN) = eos_state.rho * eos_state.e +
86 + 0.5_rt * q_arr(i,j,k,QRHO) * (q_arr(i,j,k,QU) * q_arr(i,j,k,QU) +
87 q_arr(i,j,k,QV) * q_arr(i,j,k,QV) +
88 q_arr(i,j,k,QW) * q_arr(i,j,k,QW)) +
89 + 0.5_rt * (q_arr(i,j,k,QMAGX) * q_arr(i,j,k,QMAGX) +
90 q_arr(i,j,k,QMAGY) * q_arr(i,j,k,QMAGY) +
91 q_arr(i,j,k,QMAGZ) * q_arr(i,j,k,QMAGZ));
92
93 u_arr(i,j,k,UEINT) = eos_state.rho * eos_state.e;
94 u_arr(i,j,k,UTEMP) = eos_state.T;
95
96 u_arr(i,j,k,UMAGX) = q_arr(i,j,k,QMAGX);
97 u_arr(i,j,k,UMAGY) = q_arr(i,j,k,QMAGY);
98 u_arr(i,j,k,UMAGZ) = q_arr(i,j,k,QMAGZ);
99
100 // species
101 for (int n = 0; n < NumSpec; n++) {
102 u_arr(i,j,k,UFS+n) = q_arr(i,j,k,QRHO) * q_arr(i,j,k,QFS+n);
103 }
104
105 });
106}
107
108
109void

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected