| 52 | |
| 53 | |
| 54 | void |
| 55 | Castro::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 | |
| 109 | void |
nothing calls this directly
no outgoing calls
no test coverage detected