| 139 | } |
| 140 | |
| 141 | void ca_deruminusc(const Box& bx, FArrayBox& derfab, int /*dcomp*/, int /*ncomp*/, |
| 142 | const FArrayBox& datfab, const Geometry& /*geom*/, |
| 143 | Real /*time*/, const int* /*bcrec*/, int /*level*/) |
| 144 | { |
| 145 | |
| 146 | auto const dat = datfab.array(); |
| 147 | auto const der = derfab.array(); |
| 148 | |
| 149 | amrex::ParallelFor(bx, |
| 150 | [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept |
| 151 | { |
| 152 | |
| 153 | |
| 154 | Real rhoInv = 1.0_rt / dat(i,j,k,URHO); |
| 155 | |
| 156 | eos_rep_t eos_state; |
| 157 | eos_state.rho = dat(i,j,k,URHO); |
| 158 | eos_state.T = dat(i,j,k,UTEMP); |
| 159 | eos_state.e = dat(i,j,k,UEINT) * rhoInv; |
| 160 | for (int n = 0; n < NumSpec; n++) { |
| 161 | eos_state.xn[n] = dat(i,j,k,UFS+n) * rhoInv; |
| 162 | } |
| 163 | #if NAUX_NET > 0 |
| 164 | for (int n = 0; n < NumAux; n++) { |
| 165 | eos_state.aux[n] = dat(i,j,k,UFX+n) * rhoInv; |
| 166 | } |
| 167 | #endif |
| 168 | |
| 169 | eos(eos_input_re, eos_state); |
| 170 | |
| 171 | der(i,j,k,0) = dat(i,j,k,UMX) / dat(i,j,k,URHO) - eos_state.cs; |
| 172 | |
| 173 | }); |
| 174 | } |
| 175 | |
| 176 | void ca_dersoundspeed(const Box& bx, FArrayBox& derfab, int /*dcomp*/, int /*ncomp*/, |
| 177 | const FArrayBox& datfab, const Geometry& /*geom*/, |
nothing calls this directly
no outgoing calls
no test coverage detected