diff --git a/src/utils/cart_grid.cpp b/src/utils/cart_grid.cpp index cb89cdca..f0e0e1a3 100644 --- a/src/utils/cart_grid.cpp +++ b/src/utils/cart_grid.cpp @@ -22,7 +22,7 @@ // constructor, initializes data structures and parameters CartesianGrid::CartesianGrid(MeshBlockPack *pmy_pack, Real center[3], - Real extend[3], int numpoints[3], bool is_cheb): + Real extent[3], int numpoints[3], bool is_cheb): pmy_pack(pmy_pack), interp_indcs("interp_indcs",1,1,1,1), interp_wghts("interp_wghts",1,1,1,1,1), @@ -37,19 +37,19 @@ CartesianGrid::CartesianGrid(MeshBlockPack *pmy_pack, Real center[3], center_x3 = center[2]; // grid center - extend_x1 = extend[0]; - extend_x2 = extend[1]; - extend_x3 = extend[2]; + extent_x1 = extent[0]; + extent_x2 = extent[1]; + extent_x3 = extent[2]; // lower bound - min_x1 = center_x1 - extend_x1; - min_x2 = center_x2 - extend_x2; - min_x3 = center_x3 - extend_x3; + min_x1 = center_x1 - extent_x1; + min_x2 = center_x2 - extent_x2; + min_x3 = center_x3 - extent_x3; // upper bound - max_x1 = center_x1 + extend_x1; - max_x2 = center_x2 + extend_x2; - max_x3 = center_x3 + extend_x3; + max_x1 = center_x1 + extent_x1; + max_x2 = center_x2 + extent_x2; + max_x3 = center_x3 + extent_x3; // number of points nx1 = numpoints[0]; @@ -83,14 +83,40 @@ void CartesianGrid::ResetCenter(Real center[3]) { center_x3 = center[2]; // lower bound - min_x1 = center_x1 - extend_x1; - min_x2 = center_x2 - extend_x2; - min_x3 = center_x3 - extend_x3; + min_x1 = center_x1 - extent_x1; + min_x2 = center_x2 - extent_x2; + min_x3 = center_x3 - extent_x3; // upper bound - max_x1 = center_x1 + extend_x1; - max_x2 = center_x2 + extend_x2; - max_x3 = center_x3 + extend_x3; + max_x1 = center_x1 + extent_x1; + max_x2 = center_x2 + extent_x2; + max_x3 = center_x3 + extent_x3; + + SetInterpolationIndices(); + SetInterpolationWeights(); +} + +void CartesianGrid::ResetCenterAndExtent(Real center[3], Real extent[3]) { + // grid center + center_x1 = center[0]; + center_x2 = center[1]; + center_x3 = center[2]; + + // grid extent + extent_x1 = extent[0]; + extent_x2 = extent[1]; + extent_x3 = extent[2]; + + // lower bound + min_x1 = center_x1 - extent_x1; + min_x2 = center_x2 - extent_x2; + min_x3 = center_x3 - extent_x3; + + // upper bound + max_x1 = center_x1 + extent_x1; + max_x2 = center_x2 + extent_x2; + max_x3 = center_x3 + extent_x3; + SetInterpolationIndices(); SetInterpolationWeights(); } @@ -108,9 +134,9 @@ void CartesianGrid::SetInterpolationIndices() { Real x2 = min_x2 + ny * d_x2; Real x3 = min_x3 + nz * d_x3; if (is_cheby) { - x1 = center_x1 + extend_x1*std::cos(nx*M_PI/(nx1-1)); - x2 = center_x2 + extend_x2*std::cos(ny*M_PI/(nx2-1)); - x3 = center_x3 + extend_x3*std::cos(nz*M_PI/(nx3-1)); + x1 = center_x1 + extent_x1*std::cos(nx*M_PI/(nx1-1)); + x2 = center_x2 + extent_x2*std::cos(ny*M_PI/(nx2-1)); + x3 = center_x3 + extent_x3*std::cos(nz*M_PI/(nx3-1)); } // indices default to -1 if point does not reside in this MeshBlockPack iindcs.h_view(nx,ny,nz,0) = -1; diff --git a/src/utils/cart_grid.hpp b/src/utils/cart_grid.hpp index 01c53d23..c0642272 100644 --- a/src/utils/cart_grid.hpp +++ b/src/utils/cart_grid.hpp @@ -21,7 +21,7 @@ class CartesianGrid { public: // Creates a geodesic grid with refinement level nlev and radius rad CartesianGrid(MeshBlockPack *pmy_pack, Real center[3], - Real extend[3], int numpoints[3], bool is_cheb = false); + Real extent[3], int numpoints[3], bool is_cheb = false); ~CartesianGrid(); // parameters for the grid @@ -30,7 +30,7 @@ class CartesianGrid { Real max_x1, max_x2, max_x3; // max value for xyz Real d_x1, d_x2, d_x3; // resolution int nx1, nx2, nx3; // number of points - Real extend_x1, extend_x2, extend_x3; + Real extent_x1, extent_x2, extent_x3; // dump on chebyshev or uniform grid, default is uniform bool is_cheby; @@ -39,6 +39,7 @@ class CartesianGrid { DualArray3D interp_vals; // container for data interpolated to sphere void InterpolateToGrid(int nvars, DvceArray5D &val); // interpolate to sphere void ResetCenter(Real center[3]); // set indexing for interpolation + void ResetCenterAndExtent(Real center[3], Real extent[3]); private: MeshBlockPack* pmy_pack; // ptr to MeshBlockPack containing this Hydro