18 #ifndef IC_PERTURBEDINTERFACE_H_
19 #define IC_PERTURBEDINTERFACE_H_
42 L2 =
geom[lev].ProbHi()[1] -
geom[lev].ProbLo()[1],
43 L3 =
geom[lev].ProbHi()[2] -
geom[lev].ProbLo()[2]);
45 for (amrex::MFIter mfi(*a_field[lev],
true); mfi.isValid(); ++mfi)
47 amrex::Box bx = mfi.tilebox();
48 bx.grow(a_field[lev]->nGrow());
49 amrex::Array4<Set::Scalar>
const& field = a_field[lev]->array(mfi);
50 amrex::IndexType type = a_field[lev]->ixType();
52 amrex::ParallelFor (bx,[=] AMREX_GPU_DEVICE(
int i,
int j,
int k) {
57 if (type == amrex::IndexType::TheNodeType())
59 AMREX_D_TERM(x(0) =
geom[lev].ProbLo()[0] + ((amrex::Real)(i)) *
geom[lev].CellSize()[0];,
60 x(1) =
geom[lev].ProbLo()[1] + ((amrex::Real)(j)) *
geom[lev].CellSize()[1];,
61 x(2) =
geom[lev].ProbLo()[2] + ((amrex::Real)(k)) *
geom[lev].CellSize()[2];);
63 else if (type == amrex::IndexType::TheCellType())
65 AMREX_D_TERM(x(0) =
geom[lev].ProbLo()[0] + ((amrex::Real)(i) + 0.5) *
geom[lev].CellSize()[0];,
66 x(1) =
geom[lev].ProbLo()[1] + ((amrex::Real)(j) + 0.5) *
geom[lev].CellSize()[1];,
67 x(2) =
geom[lev].ProbLo()[2] + ((amrex::Real)(k) + 0.5) *
geom[lev].CellSize()[2];);
71 #if AMREX_SPACEDIM == 2
74 if (
normal==Direction::Y) {s1 = x(0); l1 = L1;}
79 #elif AMREX_SPACEDIM == 3
82 if (
normal==Direction::Y) {s1 = x(2); s2 = x(0); l1 = L3; l2 = L1;}
83 if (
normal==Direction::Z) {s1 = x(0); s2 = x(0); l1 = L1; l2 = L2;}
92 if (
mol == Mollifier::Dirac)
118 field(i,j,k,1-
reverse) = 1. - value;
120 if (field(i,j,k,0) < 0.0) field(i,j,k,
reverse) = 0.0;
121 if (field(i,j,k,0) > 1.0) field(i,j,k,
reverse) = 1.0;
122 if (field(i,j,k,1) < 0.0) field(i,j,k,1-
reverse) = 0.0;
123 if (field(i,j,k,1) > 1.0) field(i,j,k,1-
reverse) = 1.0;
144 std::vector<std::string> wave_numbers_str;
146 for (
unsigned int i = 0; i<wave_numbers_str.size(); ++i)
153 std::string normal_str;
156 if (normal_str ==
"y") value.
normal = Direction::Y;
157 if (normal_str ==
"z") value.
normal = Direction::Z;
158 std::string offset_str;
167 std::string mollifier =
"dirac";
170 if(mollifier ==
"dirac")
172 value.
mol = Mollifier::Dirac;