-
Notifications
You must be signed in to change notification settings - Fork 30
Description
This issue details what is needed in order to conserve
Say we need to regrid L2 and that needs L0 to L2 refinement through L1.
The intermediate refinement L0 to L1 is done by SAMRAI using only "standard" copy, refinement and possible RefinePatchStrategy pre/post process.
Currently on master, copy is done after refinement. This is wrong since new fine faces are obtained at the coarse-fine boundary using refined-only values while they should use some obtained by copy. The copy then overwrites some refined faces on coarse/fine border and makes new fine faces inconsistent, resulting in non-zero divB.
This is currently addressed on master by doing a copy schedule before regridding. But this does not work since this schedule is not part of the "standard" regriding (copy/refinement) operation and thus is not done for the intermediary L1 SAMRAI fills.
To make it work we need:
- to put copy before refinement, by setting
fine_boundary_represents_var=falsein the PatchData Variable. See RefinePatchStrategy post process and copy/refine order llnl/SAMRAI#292 (comment) and fine_boundary_represents_var for copy **before** refinement #1062 - Have TensorFieldData (see WIP TensorFieldData #1061) because we need all components of B set on shared fine faces to fill fine faces this cannot be done in a
RefinePatchStrategyas long as we cannot register different FieldVariable to the same Algorithm (see Breaking equivalent items llnl/SAMRAI#295) - Have default NdArrayVector init to NaN so that the refinement Operator can identify which face has already been set by copy.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status