1 #ifndef ERF_SOLVE_TRIDIAG
2 #define ERF_SOLVE_TRIDIAG
7 const amrex::Array4< amrex::Real>& soln_a,
8 const amrex::Array4<const amrex::Real>& coeffA_a,
9 const amrex::Array4< amrex::Real>& coeffB_a,
10 const amrex::Array4< amrex::Real>& inv_coeffB_a,
11 const amrex::Array4<const amrex::Real>& coeffC_a,
12 const amrex::Array4<const amrex::Real>& RHS_a)
18 for (
int k(klo+1); k<=khi; ++k) {
20 bet = coeffB_a(i,j,k) - coeffA_a(i,j,k)*gam;
21 AMREX_ASSERT(bet != 0.0);
22 coeffB_a(i,j,k) = bet;
25 for (
int k(klo); k<=khi; ++k) {
26 inv_coeffB_a(i,j,k) = 1.0 / coeffB_a(i,j,k);
32 soln_a(i,j,klo) = RHS_a(i,j,klo) * inv_coeffB_a(i,j,klo);
34 for (
int k(klo+1); k<=khi; ++k) {
35 soln_a(i,j,k) = (RHS_a(i,j,k)-coeffA_a(i,j,k)*soln_a(i,j,k-1)) * inv_coeffB_a(i,j,k);
38 for (
int k(khi-1); k>=klo; --k) {
39 soln_a(i,j,k) -= ( coeffC_a(i,j,k) * inv_coeffB_a(i,j,k) ) * soln_a(i,j,k+1);
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SolveTridiag(int i, int j, int klo, int khi, const amrex::Array4< amrex::Real > &soln_a, const amrex::Array4< const amrex::Real > &coeffA_a, const amrex::Array4< amrex::Real > &coeffB_a, const amrex::Array4< amrex::Real > &inv_coeffB_a, const amrex::Array4< const amrex::Real > &coeffC_a, const amrex::Array4< const amrex::Real > &RHS_a)
Definition: ERF_SolveTridiag.H:6