34 const auto& ldom = this->
layout_mp->getLocalNDIndex();
35 const int nghost = this->
A_n.getNghost();
36 const auto aview = this->
A_n.getView();
37 const auto anp1view = this->
A_np1.getView();
38 const auto anm1view = this->
A_nm1.getView();
44 - Kokkos::pow(this->
dt / this->
hr_m[1], 2)
45 - Kokkos::pow(this->
dt / this->
hr_m[2], 2));
46 const scalar a2 = Kokkos::pow(this->
dt / this->
hr_m[0], 2);
47 const scalar a4 = Kokkos::pow(this->
dt / this->
hr_m[1], 2);
48 const scalar a6 = Kokkos::pow(this->
dt / this->
hr_m[2], 2);
49 const scalar a8 = Kokkos::pow(this->
dt, 2);
51 true_nr += (nghost * 2);
52 constexpr uint32_t one_if_absorbing_otherwise_0 =
60 KOKKOS_LAMBDA(
const size_t i,
const size_t j,
const size_t k) {
62 const uint32_t ig = i + ldom.first()[0];
63 const uint32_t jg = j + ldom.first()[1];
64 const uint32_t kg = k + ldom.first()[2];
67 uint32_t(ig == one_if_absorbing_otherwise_0)
68 + (uint32_t(jg == one_if_absorbing_otherwise_0) << 1)
69 + (uint32_t(kg == one_if_absorbing_otherwise_0) << 2)
70 + (uint32_t(ig == true_nr[0] - one_if_absorbing_otherwise_0 - 1) << 3)
71 + (uint32_t(jg == true_nr[1] - one_if_absorbing_otherwise_0 - 1) << 4)
72 + (uint32_t(kg == true_nr[2] - one_if_absorbing_otherwise_0 - 1) << 5);
76 + a2 * (aview(i + 1, j, k) + aview(i - 1, j, k))
77 + a4 * (aview(i, j + 1, k) + aview(i, j - 1, k))
78 + a6 * (aview(i, j, k + 1) + aview(i, j, k - 1))
79 + a8 * source_view(i, j, k);
80 anp1view(i, j, k) = interior;
84 this->
A_np1.fillHalo();