@@ -779,21 +779,23 @@ SetDirichletBoundaries (Array2<amrex::Real> RHS, const amrex::Box& solver_size,
779779 [=] AMREX_GPU_DEVICE (int i, int j) noexcept
780780 {
781781 const bool i_is_changing = (i < box_len0);
782- const bool i_lo_edge = (!i_is_changing) && (!j);
783- const bool i_hi_edge = (!i_is_changing) && j;
784- const bool j_lo_edge = i_is_changing && (!j);
785- const bool j_hi_edge = i_is_changing && j;
782+ const int i_is_changing_i = static_cast <int >(i_is_changing);
783+ const int i_not_changing_i = static_cast <int >(!i_is_changing);
784+ const int i_lo_edge = static_cast <int >(!i_is_changing && (j == 0 ));
785+ const int i_hi_edge = static_cast <int >(!i_is_changing && (j != 0 ));
786+ const int j_lo_edge = static_cast <int >(i_is_changing && (j == 0 ));
787+ const int j_hi_edge = static_cast <int >(i_is_changing && (j != 0 ));
786788
787- const int i_idx = box_lo0 + i_hi_edge*(box_len0-1 ) + i_is_changing *i;
788- const int j_idx = box_lo1 + j_hi_edge*(box_len1-1 ) + (!i_is_changing) *(i-box_len0);
789+ const int i_idx = box_lo0 + i_hi_edge*(box_len0-1 ) + i_is_changing_i *i;
790+ const int j_idx = box_lo1 + j_hi_edge*(box_len1-1 ) + i_not_changing_i *(i-box_len0);
789791
790792 const amrex::Real i_idx_offset = i_idx + (- i_lo_edge + i_hi_edge) * offset;
791793 const amrex::Real j_idx_offset = j_idx + (- j_lo_edge + j_hi_edge) * offset;
792794
793795 const amrex::Real x = i_idx_offset * dx + offset0;
794796 const amrex::Real y = j_idx_offset * dy + offset1;
795797
796- const amrex::Real dxdx = dx*dx*(! i_is_changing) + dy*dy*i_is_changing ;
798+ const amrex::Real dxdx = i_is_changing ? dy*dy : dx*dx ;
797799
798800 // atomic add because the corners of RHS get two values
799801 amrex::Gpu::Atomic::AddNoRet (&(RHS (i_idx, j_idx)),
0 commit comments