|
| | SkeletonGridGeometry (const std::string &object_name, tbox::Pointer< tbox::Database > input_db, bool register_for_restart=true) |
| |
| | SkeletonGridGeometry (const std::string &object_name, const hier::BoxArray< DIM > &level_domain, bool register_for_restart=true) |
| |
| virtual | ~SkeletonGridGeometry () |
| |
| tbox::Pointer< hier::GridGeometry< DIM > > | makeRefinedGridGeometry (const std::string &fine_geom_name, const hier::IntVector< DIM > &refine_ratio, bool register_for_restart) const |
| |
| tbox::Pointer< hier::GridGeometry< DIM > > | makeCoarsenedGridGeometry (const std::string &coarse_geom_name, const hier::IntVector< DIM > &coarsen_ratio, bool register_for_restart) const |
| |
| void | setGeometryDataOnPatch (hier::Patch< DIM > &patch, const hier::IntVector< DIM > &ratio_to_level_zero, const tbox::Array< tbox::Array< bool > > &touches_regular_bdry, const tbox::Array< tbox::Array< bool > > &touches_periodic_bdry) const |
| |
| virtual void | printClassData (std::ostream &os) const |
| |
| virtual void | putToDatabase (tbox::Pointer< tbox::Database > db) |
| |
| virtual void | addSpatialCoarsenOperator (tbox::Pointer< CoarsenOperator< DIM > > coarsen_op) |
| |
| virtual void | addSpatialRefineOperator (tbox::Pointer< RefineOperator< DIM > > refine_op) |
| |
| virtual void | addTimeInterpolateOperator (tbox::Pointer< TimeInterpolateOperator< DIM > > time_op) |
| |
| virtual tbox::Pointer< CoarsenOperator< DIM > > | lookupCoarsenOperator (const tbox::Pointer< hier::Variable< DIM > > &var, const std::string &op_name) const |
| |
| virtual tbox::Pointer< RefineOperator< DIM > > | lookupRefineOperator (const tbox::Pointer< hier::Variable< DIM > > &var, const std::string &op_name) const |
| |
| virtual tbox::Pointer< TimeInterpolateOperator< DIM > > | lookupTimeInterpolateOperator (const tbox::Pointer< hier::Variable< DIM > > &var, const std::string &op_name="STD_LINEAR_TIME_INTERPOLATE") const |
| |
|
| BoxArray< DIM > | d_physical_domain |
| |
| bool | d_domain_is_single_box |
| |
| IntVector< DIM > | d_periodic_shift |
| |
| IntVector< DIM > | d_max_data_ghost_width |
| |
| void | findPatchesTouchingBoundaries (tbox::Array< tbox::Array< tbox::Array< bool > > > &touches_regular_bdry, tbox::Array< tbox::Array< tbox::Array< bool > > > &touches_periodic_bdry, const PatchLevel< DIM > &level, const IntVector< DIM > &periodic_shift, const BoxArray< DIM > &domain) const |
| | Determine for every patch on a level if it touches a regular physical boundary or a periodic boundary. More...
|
| |
| virtual void | setGeometryOnPatches (hier::PatchLevel< DIM > &level, const hier::IntVector< DIM > &ratio_to_level_zero, tbox::Array< tbox::Array< tbox::Array< bool > > > &touches_regular_bdry, tbox::Array< tbox::Array< tbox::Array< bool > > > &touches_periodic_bdry, bool defer_boundary_box_creation) |
| | Pass the arrays holding the boundary information to be stored in the concrete geometry classes, and construct boundary boxes if required. More...
|
| |
| void | setBoundaryBoxes (hier::PatchLevel< DIM > &level) |
| | Construct the boundary boxes for each patch and set them on the patch geometries. More...
|
| |
| void | computeShiftsForLevel (tbox::Array< tbox::List< IntVector< DIM > > > &shifts, const PatchLevel< DIM > &level, const BoxArray< DIM > &physical_domain) const |
| |
| void | computePhysicalDomain (BoxArray< DIM > &domain, const IntVector< DIM > &ratio_to_level_zero) const |
| |
| void | setPhysicalDomain (const BoxArray< DIM > &domain) |
| |
| const BoxArray< DIM > & | getPhysicalDomain () const |
| |
| bool | getDomainIsSingleBox () const |
| |
| void | initializePeriodicShift (const IntVector< DIM > &directions) |
| |
| IntVector< DIM > | getPeriodicShift (const IntVector< DIM > &ratio_to_level_zero=IntVector< DIM >(1)) const |
| |
| IntVector< DIM > | computeMaxGhostWidth (tbox::Pointer< PatchDescriptor< DIM > > descriptor) |
| | Compute the maximum ghost width of all of the components associated with the patch descriptor. More...
|
| |
| void | computeBoundaryBoxesOnLevel (tbox::Array< BoundaryBox< DIM > > boundaries[], const PatchLevel< DIM > &level, const IntVector< DIM > &periodic_shift, const IntVector< DIM > &ghost_width, const BoxArray< DIM > &domain, bool do_all_patches=false) const |
| | Compute boundary boxes for each patch in patch level and assign them to the array of boundary box arrays, assumed to be of length DIM * (num patches). More...
|
| |
| void | getBoundaryBoxes (tbox::Array< BoundaryBox< DIM > > boundaries[DIM], const Box< DIM > &box, const BoxArray< DIM > &domain_boxes, const IntVector< DIM > &ghosts, const IntVector< DIM > &periodic_shift) const |
| | Compute boundary boxes for patch. More...
|
| |
| bool | checkPeriodicValidity (const BoxArray< DIM > &domain) |
| | Check that the domain is valid for periodic boundary conditions. More...
|
| |
| bool | checkBoundaryBox (const BoundaryBox< DIM > &boundary_box, const Patch< DIM > &patch, const BoxArray< DIM > &domain, const int num_per_dirs, const IntVector< DIM > &max_data_ghost_width) const |
| | Check on each BoundaryBox when it is created. More...
|
| |
| void | computeShiftsForPatch (tbox::List< IntVector< DIM > > &shifts, const Box< DIM > &box, const BoxArray< DIM > &domain, const IntVector< DIM > &periodic_shift) const |
| | Find if a box is on a periodic boundary and compute its shifts. More...
|
| |
template<int DIM>
class SAMRAI::geom::SkeletonGridGeometry< DIM >
Class SkeletonGridGeometry is a concrete grid geometry class that contains no information about the physical domain characteristics of an AMR mesh apart from the index space. The purpose of this class is to allow an application that needs to use a special mesh to manage the physical domain within the application code. The skeleton grid geometry only manages the index space of the adaptive grid. This class sets geometry information on each patch in an AMR hierarchy. This class is derived from the xfer::Geometry<DIM> base class which is further derived from the hier::GridGeometry<DIM> base class.
An object of this class requires parameters to be read from input to create the hier::BoxArray that stores the index space in the hier::GridGeometry superclass. Also, data must be written to and read from files for restart. The input and restart data are summarized as follows:
Required input keys and data types:
- domain_boxes
Array of boxes representing the index space for the entire domain (on the coarsest refinement level).
Optional input keys, data types, and defaults:
- periodic_dimension
tbox::Array of integer values representing the directions in which the physical domain is periodic. A non-zero value indicates that the direction is periodic. A zero value indicates that
the direction is not periodic. If no values are specified, then the array is initialized to all zeros (no periodic directions).
- use_original_location_indices Boolean argument used to tell whether to construct BoundaryBox objects with the original location index scheme that has existed in SAMRAI v. 1.4.0 and earlier or to use a new scheme that is compatible with the hier_BoundaryLookupTable. This only makes a difference for BoundaryBox objects in 3D with codimension 2.
If this keyword is omitted from input, the default value is true for dimension 3 and is irrelevant for any other dimension.
No input values can overwrite restart values.
A sample input file for a two-dimensional problem might look like:
*
* domain_boxes = [(0,0) , (49,39)]
* periodic_dimension = 0, 1 // periodic in y only
* use_original_location_indices = TRUE
*
*
This generates a two-dimensional domain periodic in the y-direction, and having 50 cells in the x-direction and 40 cells in the y-direction.
- See also
- xfer::Geometry
-
hier::GridGeometry
The DIM arrays of boundary boxes for each patch will be stored in groups of DIM. For example, in 3d with n patches on the level, the array For example, in 3d with n patches on the level, the array of boundary box arrays will be ordered as follows:
* (patch 0 face array, patch 0 edge array, patch 0 node array,
* patch 1 face array, patch 1 edge array, patch 1 node array, . . . ,
* patch n-1 face array, patch n-1 edge array, patch n-1 node array)
*
The optional argument do_all_patches defaults to false, in which case the boundary box computation is executed only on patches that touch a non-periodic boundary. When this routine is called during patch level construction to describe a physical boundary, it is known that only patches that touch a non-periodic boundary will have non-empty sets of boundary boxes, so for efficiency's sake the boundary box box computation is supressed for all other patches. When this routine is called to create boundary boxes that describe a coarse-fine boundary, the computation must occur for every patch, so do_all_patches mush be set to true.
- Parameters
-
| boundaries | output boundary description |
| level | level on which to generate boundaries |
| periodic_shift | periodic shift for the level (see getPeriodicShift) |
| ghost_width | ghost width to compute geometry for |
| domain | Physical domain (in index space of level) for computing boundary boxes. |
| do_all_patches | Execute boundary box computation on all patches, even those known to not touch a boundary |