call Grid_getMaxRefinement(integer(OUT) :: maxRefinement, OPTIONAL,integer(IN) :: mode, OPTIONAL,integer(IN) :: scope, OPTIONAL,integer(IN) :: inputComm )
This routine returns the maximum block refinement level in the grid. Depending on the mode used (and modified by other optional arguments), the returned value represents the maximum refinement level that is either allowed, or is currently realized anywhere on the grid (or a subset of the grid). We may have an AMR grid in which one portion of the grid is highly refined. Here, it may be useful to determine globally the highest block refinement level that occurs, or can potentially occur during the simulation.
maxRefinement - Max common refinement level of blocks in the inputComm communicator. inputComm - Input MPI communicator, only used if mode=4 and scope=2. Default - none. mode - 1 for lrefine_max, 2 for gr_maxRefine (if used) or lrefine_max, 3 for gr_maxRefine, 4 for existing blocks. Default is 3. scope - scope only used if mode=4; 1 for local to this MPI task, 2 for tasks in inputComm, [3 for mesh communicator,] [4 for MPI_COMM_WORLD]. Default is 3.
Communicator argument allows us to compare a subset of processes. It also makes it explicit to the user that this routine must be called by all processes in the passed communicator ... otherwise deadlock. This applies only for modes that require communication. For a uniform grid implementation, the returned level will always be 1. This routine differs from Grid_getMaxCommonRefinement is several ways: 1. Grid_getMaxCommonRefinement looks for existing LEAF blocks with the smallest refinement level (actual), while Grid_getMaxRefinement looks for blocks with the highest refinement level (either actual or potential). 2. Grid_getMaxRefinement has additional optional arguments to select modes and task subsets.