hi Erik,
thanks for your reply. i've tried to set the parameters as you described, but i'm getting a Carpet assertion failure:
cactus_Lean_ET: Cactus/arrangements/Carpet/CarpetLib/src/gh.cc:61: gh::gh(const std::vector<vect<int, 3> >&, centering, int, centering, const std::vector<std::vector<bbox<int, 3> >
&, const i2vect&): Assertion `all(box.shape() / box.stride() >= boundary_width[0] +
boundary_width[1])' failed.
here's how i'm specifying my grid:
CoordBase::xmin = -48.00 CoordBase::ymin = -48.00 CoordBase::zmin = 0.00 CoordBase::xmax = +48.00 CoordBase::ymax = +48.00 CoordBase::zmax = +0.00 CoordBase::dx = 2.00 CoordBase::dy = 2.00 CoordBase::dz = 2.00
driver::ghost_size_x = 3 driver::ghost_size_y = 3 driver::ghost_size_z = 0
CoordBase::boundary_size_x_lower = 3 CoordBase::boundary_size_y_lower = 3 CoordBase::boundary_size_z_lower = 0 CoordBase::boundary_size_x_upper = 0 CoordBase::boundary_size_y_upper = 0 CoordBase::boundary_size_z_upper = 0
CoordBase::boundary_shiftout_x_lower = 0 CoordBase::boundary_shiftout_y_lower = 0 CoordBase::boundary_shiftout_z_lower = 0
am i missing something?
many thanks, Miguel
On 13/02/18 12:54, Erik Schnetter wrote:
Miguel
Yes, this is possible. The trick is to set up a domain that is still 3D, but which is only 1 grid point wide in the z direction.
Clearly, this is not possible with cell-centred refinement, as refinement always splits cells into two. However, as vertex-centred refinement is the default, this might not be relevant here.
I also assume that you have a true 2+1 code that doesn't require any ghost zones in the z direction. You would then explicitly set the number of ghost zones and boundary zones to be 0 in the z direction.
The "usual" problem I encounter when setting up such a domain is that it's slightly inconvenient to specify the coordinates and grid spacings in the z direction. I prefer to define the domain extent via CoordBase, so I assume you're doing the same.
Usually, you would specify zmin, zmax, and ncells_z to define the domain. However, if you specify zmin=0, zmax=0, and then set ncells_z=0 (0 cells correspond to 1 point), then Carpet calculates dz = (zmax - zmin) / ncells_z, which is undefined since you divide zero by zero. So instead of specifying zmin, zmax, ncells_z, you have to specify zmin, zmax, and dz. Carpet then calculates ncells_k = (zmax - zmin) / dz, which is fine. In short, setting CoordBase::spacing = "numcells" will fail, and you have to use CoordBase::spacing = "gridspacing" instead.
That's about it. Of course, it's easy to make off-by-one errors in the parameter file, so looking at 1D ASCII output to see whether the coordinates and domain sizes you specified are correct is important.
Unfortunately I do not have a sample parameter file.
-erik
On Mon, Feb 12, 2018 at 8:14 PM, Miguel Zilhão <miguel.zilhao.nogueira@tecnico.ulisboa.pt mailto:miguel.zilhao.nogueira@tecnico.ulisboa.pt> wrote:
hi all, i have a 2+1 simulation that i would like to run with the ET, and i would like to use Carpet for the mesh refinement in the spatial (x and y) directions. is this possible? is there an example parameter file that i could have a look at? many thanks, Miguel _______________________________________________ Users mailing list Users@einsteintoolkit.org <mailto:Users@einsteintoolkit.org> http://lists.einsteintoolkit.org/mailman/listinfo/users <http://lists.einsteintoolkit.org/mailman/listinfo/users>-- Erik Schnetter <schnetter@cct.lsu.edu mailto:schnetter@cct.lsu.edu> http://www.perimeterinstitute.ca/personal/eschnetter/