51 amrex::Box domain =
geom[lev].Domain();
61 amrex::IndexType type = a_field[lev]->ixType();
67 for (amrex::MFIter mfi(*a_field[lev],amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi)
70 if (type == amrex::IndexType::TheNodeType()) bx = mfi.grownnodaltilebox();
71 if (type == amrex::IndexType::TheCellType()) bx = mfi.growntilebox();
75 amrex::Array4<Set::Scalar>
const& field = a_field[lev]->array(mfi);
76 amrex::ParallelFor (bx,[=] AMREX_GPU_DEVICE(
int i,
int j,
int k)
80 if (type == amrex::IndexType::TheNodeType())
82 x(0) = domlo(0) + ((amrex::Real)(i)) *
geom[lev].CellSize()[0];
83 x(1) = domlo(1) + ((amrex::Real)(j)) *
geom[lev].CellSize()[1];
85 else if (type == amrex::IndexType::TheCellType())
87 x(0) = domlo(0) + ((amrex::Real)(i) + 0.5) *
geom[lev].CellSize()[0];
88 x(1) = domlo(1) + ((amrex::Real)(j) + 0.5) *
geom[lev].CellSize()[1];
96 ximg(0) = (x(0) - domlo(0)) / (domhi(0) - domlo(0));
97 ximg(1) = (x(1) - domlo(1)) / (domhi(1) - domlo(1));
102 ximg(0) = (x(0) - domlo(0)) / (domhi(0) - domlo(0));
103 ximg(1) = (x(1) - domlo(1)) / (domhi(1) - domlo(1));
104 ximg(1) -= 0.5 - 0.5 / aspect_ratio;
105 ximg(1) *= aspect_ratio;
110 ximg(0) = (x(0) - domlo(0)) / (domhi(0) - domlo(0));
111 ximg(1) = (x(1) - domlo(1)) / (domhi(1) - domlo(1));
112 ximg(0) -= 0.5 - 0.5 / aspect_ratio;
113 ximg(0) *= aspect_ratio;
121 ximg(0) = std::min(ximg(0),1.0); ximg(1) = std::min(ximg(1),1.0);
122 ximg(0) = std::max(ximg(0),0.0); ximg(1) = std::max(ximg(1),0.0);
124 ximg(0) *= img_width;
125 ximg(1) *= img_height;
127 int I = (int)(ximg(0));
128 int J = (int)(ximg(1));
141 (fQ11*(x2-ximg(0))*(y2-ximg(1)) + fQ21*(ximg(0)-x1)*(y2-ximg(1)) + fQ12*(x2-ximg(0))*(ximg(1)-y1) + fQ22*(ximg(0)-x1)*(ximg(1)-y1)) / (img_dx * img_dy);
147 field(i,j,k) = fQ11 + (fQ12-fQ11) * (ximg(1) - y1);
153 field(i,j,k) = fQ11 + (fQ21-fQ11) * (ximg(0) - x1);
165 if (field.nComp() > 1) field(i,j,k,1) = 1.0 - field(i,j,k,0);
168 if (field.nComp() > 1)
173 a_field[lev]->FillBoundary();