MPI-AMRVAC 3.2
The MPI - Adaptive Mesh Refinement - Versatile Advection Code (development version)
Loading...
Searching...
No Matches
mod_forest.t
Go to the documentation of this file.
1!> Module with basic grid data structures
3 implicit none
4 !> Replicated forest generation: topology or ownership changes invalidate
5 !> cached particle locations and the rank-neighbor list.
6 integer(kind=8) :: particle_mesh_epoch=0_8
7
8 !> Pointer to a tree_node
10 type(tree_node), pointer :: node
11 end type tree_node_ptr
12
13 !> The data structure that contains information about a tree node/grid block
15 integer :: ig^d !< Spatial indices of the grid block
16 integer :: level !< Refinement level
17 integer :: igrid !< Index of grid on processor's grid-array
18 integer :: ipe !< On which processor the grid is stored
19 !> Extra integer, not set by default. Is used to go from pointer to array
20 !> for coupling with a multigrid solver.
21 integer :: id
22 logical :: leaf !< Is the grid a leaf (no further refinement)
23 logical :: active
24 type(tree_node_ptr) :: parent !< Pointer to parent grid
25 type(tree_node_ptr) :: child(2^d&) !< Pointer to children
26 type(tree_node_ptr) :: neighbor(2,^nd) !< Pointer to neighbors
27 type(tree_node_ptr) :: next !< Next node at refinement level (linked list)
28 type(tree_node_ptr) :: prev !< Previous node at refinement level (linked list)
29 end type tree_node
30
31 !> Pointers to the coarse grid
32 type(tree_node_ptr), dimension(:^D&), allocatable, save :: tree_root
33
34 !> Array to go from an [igrid, ipe] index to a node pointer
35 type(tree_node_ptr), dimension(:,:), allocatable, save :: igrid_to_node
36
37 !> The head pointer of the linked list per refinement level
38 type(tree_node_ptr), dimension(:), allocatable, save :: level_head
39
40 !> The tail pointer of the linked list per refinement level
41 type(tree_node_ptr), dimension(:), allocatable, save :: level_tail
42
43 !> Array to go from a Morton number to an igrid and processor index. Sfc(1:3,
44 !> MN) contains [igrid, ipe, active], where MN is a morton number and active
45 !> is 0 or 1.
46 integer, dimension(:,:), allocatable, save :: sfc
47
48 !> Space filling curve for level 1 grid. sfc_iglevel1(^D, MN) gives ig^D (the
49 !> spatial index of the grid)
50 integer, dimension(:,:), allocatable, save :: sfc_iglevel1
51
52 !> iglevel1_sfc(ig^D) gives the Morton number for grid ig^D
53 integer, dimension(:^D&), allocatable, save :: iglevel1_sfc
54
55 !> Go from a Morton number to an igrid index (for a single processor)
56 integer, dimension(:), allocatable, save :: sfc_to_igrid
57
58 !> Go from a grid index to Morton number (for a single processor)
59 integer, dimension(:), allocatable, save :: igrid_to_sfc
60
61 !> Space filling curve used for physical boundary blocks
62 integer, dimension(:), allocatable, save :: sfc_phybound
63
64 !> First Morton number per processor
65 integer, dimension(:), allocatable, save :: morton_start
66
67 !> Last Morton number per processor
68 integer, dimension(:), allocatable, save :: morton_stop
69
70 integer, dimension(:), allocatable, save :: morton_sub_start, morton_sub_stop
71
72 !> AMR flags and grids-in-use identifier per processor (igrid,ipe)
73 logical, dimension(:,:), allocatable, save :: coarsen, refine, buffer, igrid_inuse
74
75 !> Number of parent blocks
76 integer, save :: nparents
77
78 !> Number of leaf block
79 integer, save :: nleafs
80
82
83 !> How many leaves are present per refinement level
84 integer, dimension(:), allocatable, save :: nleafs_level
85
86end module mod_forest
Module with basic grid data structures.
Definition mod_forest.t:2
integer(kind=8) particle_mesh_epoch
Replicated forest generation: topology or ownership changes invalidate cached particle locations and ...
Definition mod_forest.t:6
integer, dimension(:), allocatable, save nleafs_level
How many leaves are present per refinement level.
Definition mod_forest.t:84
integer, dimension(:), allocatable, save sfc_to_igrid
Go from a Morton number to an igrid index (for a single processor).
Definition mod_forest.t:56
logical, dimension(:,:), allocatable, save refine
Definition mod_forest.t:73
integer evolvingboundary
Definition mod_forest.t:81
integer nleafs_active
Definition mod_forest.t:81
integer, dimension(:), allocatable, save sfc_phybound
Space filling curve used for physical boundary blocks.
Definition mod_forest.t:62
integer, dimension(:), allocatable, save morton_start
First Morton number per processor.
Definition mod_forest.t:65
integer, dimension(:), allocatable, save morton_sub_start
Definition mod_forest.t:70
logical, dimension(:,:), allocatable, save buffer
Definition mod_forest.t:73
logical, dimension(:,:), allocatable, save igrid_inuse
Definition mod_forest.t:73
integer, save nleafs
Number of leaf block.
Definition mod_forest.t:79
integer, dimension(:), allocatable, save igrid_to_sfc
Go from a grid index to Morton number (for a single processor).
Definition mod_forest.t:59
integer nglev1
Definition mod_forest.t:81
integer, dimension(:), allocatable, save morton_sub_stop
Definition mod_forest.t:70
integer, dimension(:^d &), allocatable, save iglevel1_sfc
iglevel1_sfc(ig^D) gives the Morton number for grid ig^D
Definition mod_forest.t:53
integer nphyboundblock
Definition mod_forest.t:81
integer, 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)...
Definition mod_forest.t:50
logical, dimension(:,:), allocatable, save coarsen
AMR flags and grids-in-use identifier per processor (igrid,ipe).
Definition mod_forest.t:73
type(tree_node_ptr), dimension(:), allocatable, save level_tail
The tail pointer of the linked list per refinement level.
Definition mod_forest.t:41
integer ifdef
Definition mod_forest.t:81
integer, dimension(:), allocatable, save morton_stop
Last Morton number per processor.
Definition mod_forest.t:68
type(tree_node_ptr), dimension(:^d &), allocatable, save tree_root
Pointers to the coarse grid.
Definition mod_forest.t:32
integer, dimension(:,:), allocatable, save sfc
Array to go from a Morton number to an igrid and processor index. Sfc(1:3,MN) contains [igrid,...
Definition mod_forest.t:46
integer, save nparents
Number of parent blocks.
Definition mod_forest.t:76
type(tree_node_ptr), dimension(:,:), allocatable, save igrid_to_node
Array to go from an [igrid, ipe] index to a node pointer.
Definition mod_forest.t:35
type(tree_node_ptr), dimension(:), allocatable, save level_head
The head pointer of the linked list per refinement level.
Definition mod_forest.t:38
Pointer to a tree_node.
Definition mod_forest.t:9
The data structure that contains information about a tree node/grid block.
Definition mod_forest.t:14