Hal
This may mean that level_mask does not have storage at all times. CarpetRegrid2 does not allocate storage for this variable -- maybe it should, when CarpetRegrid2::adaptive_refinement is set to yes?
-erik
On Wed, Dec 14, 2011 at 4:07 PM, Hal Finkel hfinkel@anl.gov wrote:
On Thu, 2011-12-08 at 22:38 +0100, Eloisa Bentivegna wrote:
Hello,
I'd like to revive a discussion that went over the list a few months
ago, regarding Carpet's AMR capability.
I understand that the refinement has to be triggered through the
level_mask grid function. The example that Hal gave is below.
On Aug 30, 2011, at 9:37 PM, Hal Finkel wrote:
lvlmskSet = { Name -> "SFBubble_SetLevelMask", Schedule -> {"AT preregrid"}, Where -> Interior, Shorthands -> { adchix, adchiy, adchiz }, Equations -> { adchix -> fabs[dx PD[chi,1]], adchiy -> fabs[dy PD[chi,2]], adchiz -> fabs[dz PD[chi,3]],
"level_mask" -> ( Max[ adchix, adchiy, adchiz ]/dchimax ) /. Max[a_, b_, c_] -> fmax[a, fmax[b, c]] }};
FWIW, it looks like some time over the last few months this stopped working: setting level_mask in this way does not lead to regridding (even if it is > n in some places), and outputting the result using CarpetIOScalar has an odd result:
carpetregrid2::level_mask.maximum.asc starts with: 0 0 -1.79769313486232e+308 1 1 1.30685299729774 2 2 1.31094960089828 ...
carpetregrid2::level_mask.minimum.asc starts with: 0 0 1.79769313486232e+308 1 1 0 2 2 0 ...
carpetregrid2::level_mask.average.asc has: 0 0 -nan 1 1 -nan 2 2 -nan ...
What is going on here?
It might also be worth noting, that to get level_mask to work with Kranc in the above example, I added the following after the call to CreateKrancThornTT:
Module[{fp = OpenAppend[dirname <> "/schedule.ccl"]}, WriteString[fp, "[NewLine]" <> "STORAGE: CarpetRegrid2::level_mask"]; Close[fp] ];
-Hal
My questions are:
- Is preregrid the right location to set this function?
- Does this suffice? I assume that once regridding is triggered, the
new levels will have to be populated (via interpolation?). Is level_mask treated like all other grid functions?
- In the case above, the loop only goes over interior points, since the
mask is set to be the derivative of a grid function. This implies that a sync is necessary before the mask can be used for regridding. Is the user thorn a good place to request this?
Thanks, Eloisa
-- Hal Finkel Postdoctoral Appointee Leadership Computing Facility Argonne National Laboratory
Users mailing list Users@einsteintoolkit.org http://lists.einsteintoolkit.org/mailman/listinfo/users