mod_forest Module

Module with basic grid data structures


Used by


Variables

Type Visibility Attributes Name Initial
integer, public, dimension(:), allocatable, save :: Morton_start

First Morton number per processor

integer, public, dimension(:), allocatable, save :: Morton_stop

Last Morton number per processor

integer, public, dimension(:), allocatable, save :: Morton_sub_start
integer, public, dimension(:), allocatable, save :: Morton_sub_stop
logical, public, dimension(:,:), allocatable, save :: buffer

AMR flags and grids-in-use identifier per processor (igrid,ipe)

logical, public, dimension(:,:), allocatable, save :: coarsen

AMR flags and grids-in-use identifier per processor (igrid,ipe)

integer, public, dimension(:,:,:), allocatable, save :: iglevel1_sfc

iglevel1_sfc(ig^D) gives the Morton number for grid ig^D

logical, public, dimension(:,:), allocatable, save :: igrid_inuse

AMR flags and grids-in-use identifier per processor (igrid,ipe)

type(tree_node_ptr), public, dimension(:,:), allocatable, save :: igrid_to_node

Array to go from an [igrid, ipe] index to a node pointer

integer, public, dimension(:), allocatable, save :: igrid_to_sfc

Go from a grid index to Morton number (for a single processor)

type(tree_node_ptr), public, dimension(:), allocatable, save :: level_head

The head pointer of the linked list per refinement level

type(tree_node_ptr), public, dimension(:), allocatable, save :: level_tail

The tail pointer of the linked list per refinement level

integer, public :: nglev1
integer, public, save :: nleafs

Number of leaf block

integer, public :: nleafs_active
integer, public, dimension(:), allocatable, save :: nleafs_level

How many leaves are present per refinement level

integer, public, save :: nparents

Number of parent blocks

logical, public, dimension(:,:), allocatable, save :: refine

AMR flags and grids-in-use identifier per processor (igrid,ipe)

integer, public, dimension(:,:), allocatable, save :: sfc

Array to go from a Morton number to an igrid and processor index. Sfc(1:3, MN) contains [igrid, ipe, active], where MN is a morton number and active is 0 or 1.

integer, public, dimension(:,:), allocatable, save :: sfc_iglevel1

Space filling curve for level 1 grid. sfc_iglevel1(^D, MN) gives ig^D (the spatial index of the grid)

integer, public, dimension(:), allocatable, save :: sfc_phybound

Space filling curve used for physical boundary blocks

integer, public, dimension(:), allocatable, save :: sfc_to_igrid

Go from a Morton number to an igrid index (for a single processor)

type(tree_node_ptr), public, dimension(:,:,:), allocatable, save :: tree_root

Pointers to the coarse grid


Derived Types

type, public ::  tree_node

The data structure that contains information about a tree node/grid block

Components

Type Visibility Attributes Name Initial
logical, public :: active
type(tree_node_ptr), public :: child(2,2,2)

Pointer to children

integer, public :: id

Extra integer, not set by default. Is used to go from pointer to array for coupling with a multigrid solver.

integer, public :: ig1

Spatial indices of the grid block

integer, public :: ig2

Spatial indices of the grid block

integer, public :: ig3

Spatial indices of the grid block

integer, public :: igrid

Index of grid on processor's grid-array

integer, public :: ipe

On which processor the grid is stored

logical, public :: leaf

Is the grid a leaf (no further refinement)

integer, public :: level

Refinement level

type(tree_node_ptr), public :: neighbor(2,3)

Pointer to neighbors

type(tree_node_ptr), public :: next

Next node at refinement level (linked list)

type(tree_node_ptr), public :: parent

Pointer to parent grid

type(tree_node_ptr), public :: prev

Previous node at refinement level (linked list)

type, public ::  tree_node_ptr

Pointer to a tree_node

Components

Type Visibility Attributes Name Initial
type(tree_node), public, pointer :: node