MPI-AMRVAC  2.2
The MPI - Adaptive Mesh Refinement - Versatile Advection Code
Data Types | Modules | Functions/Subroutines | Variables
m_octree_mg_3d.t File Reference

Go to the source code of this file.

Data Types

type  m_octree_mg_3d::mg_lvl_t
 Lists of blocks per refinement level. More...
 
type  m_octree_mg_3d::mg_box_t
 Box data structure. More...
 
type  m_octree_mg_3d::mg_buf_t
 Buffer type (one is used for each pair of communicating processes) More...
 
type  m_octree_mg_3d::mg_comm_t
 
type  m_octree_mg_3d::mg_bc_t
 
type  m_octree_mg_3d::mg_timer_t
 
type  m_octree_mg_3d::mg_t
 
interface  m_octree_mg_3d::mg_subr_bc
 To fill ghost cells near physical boundaries. More...
 

Modules

module  m_octree_mg_3d
 

Functions/Subroutines

elemental logical function, public m_octree_mg_3d::mg_has_children (box)
 Return .true. if a box has children. More...
 
integer function, public m_octree_mg_3d::mg_ix_to_ichild (ix)
 Compute the child index for a box with spatial index ix. With child index we mean the index in the children(:) array of its parent. More...
 
pure integer function, dimension(3), public m_octree_mg_3d::mg_get_child_offset (mg, id)
 Get the offset of a box with respect to its parent (e.g. in 2d, there can be a child at offset 0,0, one at n_cell/2,0, one at 0,n_cell/2 and one at n_cell/2, n_cell/2) More...
 
pure integer function, public m_octree_mg_3d::mg_highest_uniform_lvl (mg)
 
integer(i8) function, public m_octree_mg_3d::mg_number_of_unknowns (mg)
 Determine total number of unknowns (on leaves) More...
 
subroutine, public m_octree_mg_3d::mg_get_face_coords (box, nb, nc, x)
 Get coordinates at the face of a box. More...
 
integer function, public m_octree_mg_3d::mg_add_timer (mg, name)
 
subroutine, public m_octree_mg_3d::mg_timer_start (timer)
 
subroutine, public m_octree_mg_3d::mg_timer_end (timer)
 
subroutine, public m_octree_mg_3d::mg_timers_show (mg)
 
subroutine, public m_octree_mg_3d::mg_deallocate_storage (mg)
 Deallocate all allocatable arrays. More...
 
subroutine, public m_octree_mg_3d::mg_allocate_storage (mg)
 Allocate communication buffers and local boxes for a tree that has already been created. More...
 
subroutine, public m_octree_mg_3d::diffusion_solve (mg, dt, diffusion_coeff, order, max_res)
 Solve a diffusion equation implicitly, assuming a constant diffusion coefficient. The solution at time t should be stored in mg_iphi, which is on output replaced by the solution at time t+dt. More...
 
subroutine, public m_octree_mg_3d::diffusion_solve_vcoeff (mg, dt, order, max_res)
 Solve a diffusion equation implicitly, assuming a variable diffusion coefficient which has been stored in mg_iveps (also on coarse grids). The solution at time t should be stored in mg_iphi, which is on output replaced by the solution at time t+dt. More...
 
subroutine, public m_octree_mg_3d::laplacian_set_methods (mg)
 
subroutine, public m_octree_mg_3d::vhelmholtz_set_methods (mg)
 
subroutine, public m_octree_mg_3d::vhelmholtz_set_lambda (lambda)
 
subroutine, public m_octree_mg_3d::mg_build_rectangle (mg, domain_size, box_size, dx, r_min, periodic, n_finer)
 
subroutine, public m_octree_mg_3d::mg_set_neighbors_lvl (mg, lvl)
 
subroutine, public m_octree_mg_3d::mg_set_next_level_ids (mg, lvl)
 
subroutine, public m_octree_mg_3d::mg_set_leaves_parents (boxes, level)
 Create a list of leaves and a list of parents for a level. More...
 
subroutine, public m_octree_mg_3d::mg_set_refinement_boundaries (boxes, level)
 Create a list of refinement boundaries (from the coarse side) More...
 
subroutine, public m_octree_mg_3d::mg_add_children (mg, id)
 
subroutine, public m_octree_mg_3d::mg_load_balance_simple (mg)
 Load balance all boxes in the multigrid tree, by simply distributing the load per grid level. This method will only work well for uniform grids. More...
 
subroutine, public m_octree_mg_3d::mg_load_balance (mg)
 Load balance all boxes in the multigrid tree. Compared to mg_load_balance_simple, this method does a better job of setting the ranks of parent boxes. More...
 
subroutine, public m_octree_mg_3d::mg_load_balance_parents (mg)
 Load balance the parents (non-leafs). Assign them to the rank that has most children. More...
 
subroutine, public m_octree_mg_3d::vlaplacian_set_methods (mg)
 
subroutine, public m_octree_mg_3d::mg_comm_init (mg, comm)
 Prolong from a parent to a child with index offset dix. This method could sometimes work better than the default prolongation, which does not take the variation in epsilon into account. More...
 
subroutine, public m_octree_mg_3d::sort_and_transfer_buffers (mg, dsize)
 
subroutine m_octree_mg_3d::sort_sendbuf (gc, dsize)
 Sort send buffers according to the idbuf array. More...
 
subroutine, public m_octree_mg_3d::mg_ghost_cell_buffer_size (mg, n_send, n_recv, dsize)
 Specify minimum buffer size (per process) for communication. More...
 
subroutine, public m_octree_mg_3d::mg_phi_bc_store (mg)
 Store boundary conditions for the solution variable, this can speed up calculations if the same boundary conditions are re-used. More...
 
subroutine, public m_octree_mg_3d::mg_fill_ghost_cells (mg, iv)
 Fill ghost cells at all grid levels. More...
 
subroutine, public m_octree_mg_3d::mg_fill_ghost_cells_lvl (mg, lvl, iv)
 Fill ghost cells at a grid level. More...
 
subroutine, public m_octree_mg_3d::mg_prolong_buffer_size (mg, n_send, n_recv, dsize)
 Specify minimum buffer size (per process) for communication. More...
 
subroutine, public m_octree_mg_3d::mg_prolong (mg, lvl, iv, iv_to, method, add)
 Prolong variable iv from lvl to variable iv_to at lvl+1. More...
 
subroutine, public m_octree_mg_3d::mg_prolong_sparse (mg, p_id, dix, nc, iv, fine)
 Prolong from a parent to a child with index offset dix. More...
 
subroutine, public m_octree_mg_3d::helmholtz_set_methods (mg)
 
subroutine, public m_octree_mg_3d::helmholtz_set_lambda (lambda)
 
subroutine, public m_octree_mg_3d::mg_set_methods (mg)
 
subroutine, public m_octree_mg_3d::mg_fas_fmg (mg, have_guess, max_res)
 Perform FAS-FMG cycle (full approximation scheme, full multigrid). More...
 
subroutine, public m_octree_mg_3d::mg_fas_vcycle (mg, highest_lvl, max_res, standalone)
 Perform FAS V-cycle (full approximation scheme). More...
 
subroutine m_octree_mg_3d::subtract_mean (mg, iv, include_ghostcells)
 
real(dp) function m_octree_mg_3d::get_sum (mg, iv)
 
subroutine, public m_octree_mg_3d::mg_apply_op (mg, i_out, op)
 Apply operator to the tree and store in variable i_out. More...
 
subroutine, public m_octree_mg_3d::mg_restrict_buffer_size (mg, n_send, n_recv, dsize)
 Specify minimum buffer size (per process) for communication. More...
 
subroutine, public m_octree_mg_3d::mg_restrict (mg, iv)
 Restrict all levels. More...
 
subroutine, public m_octree_mg_3d::mg_restrict_lvl (mg, iv, lvl)
 Restrict from lvl to lvl-1. More...
 

Variables

integer, parameter, public m_octree_mg_3d::dp = kind(0.0d0)
 Type of reals. More...
 
integer, parameter, public m_octree_mg_3d::i8 = selected_int_kind(18)
 Type for 64-bit integers. More...
 
integer, parameter, public m_octree_mg_3d::mg_laplacian = 1
 Indicates a standard Laplacian. More...
 
integer, parameter, public m_octree_mg_3d::mg_vlaplacian = 2
 Indicates a variable-coefficient Laplacian. More...
 
integer, parameter, public m_octree_mg_3d::mg_helmholtz = 3
 Indicates a constant-coefficient Helmholtz equation. More...
 
integer, parameter, public m_octree_mg_3d::mg_vhelmholtz = 4
 Indicates a variable-coefficient Helmholtz equation. More...
 
integer, parameter, public m_octree_mg_3d::mg_cartesian = 1
 Cartesian coordinate system. More...
 
integer, parameter, public m_octree_mg_3d::mg_cylindrical = 2
 Cylindrical coordinate system. More...
 
integer, parameter, public m_octree_mg_3d::mg_spherical = 3
 Spherical coordinate system. More...
 
integer, parameter, public m_octree_mg_3d::mg_smoother_gs = 1
 
integer, parameter, public m_octree_mg_3d::mg_smoother_gsrb = 2
 
integer, parameter, public m_octree_mg_3d::mg_smoother_jacobi = 3
 
integer, parameter, public m_octree_mg_3d::mg_ndim = 3
 Problem dimension. More...
 
integer, parameter, public m_octree_mg_3d::mg_num_vars = 4
 Number of predefined multigrid variables. More...
 
integer, parameter, public m_octree_mg_3d::mg_max_num_vars = 10
 Maximum number of variables. More...
 
integer, parameter, public m_octree_mg_3d::mg_iphi = 1
 Index of solution. More...
 
integer, parameter, public m_octree_mg_3d::mg_irhs = 2
 Index of right-hand side. More...
 
integer, parameter, public m_octree_mg_3d::mg_iold = 3
 Index of previous solution (used for correction) More...
 
integer, parameter, public m_octree_mg_3d::mg_ires = 4
 Index of residual. More...
 
integer, parameter, public m_octree_mg_3d::mg_iveps = 5
 Index of the variable coefficient (at cell centers) More...
 
integer, parameter, public m_octree_mg_3d::mg_lvl_lo = -20
 Minimum allowed grid level. More...
 
integer, parameter, public m_octree_mg_3d::mg_lvl_hi = 20
 Maximum allowed grid level. More...
 
integer, parameter, public m_octree_mg_3d::mg_bc_dirichlet = -10
 Value to indicate a Dirichlet boundary condition. More...
 
integer, parameter, public m_octree_mg_3d::mg_bc_neumann = -11
 Value to indicate a Neumann boundary condition. More...
 
integer, parameter, public m_octree_mg_3d::mg_bc_continuous = -12
 Value to indicate a continuous boundary condition. More...
 
integer, parameter, public m_octree_mg_3d::mg_no_box = 0
 Special value that indicates there is no box. More...
 
integer, parameter, public m_octree_mg_3d::mg_physical_boundary = -1
 Special value that indicates there is a physical boundary. More...
 
integer, parameter, public m_octree_mg_3d::mg_max_timers = 20
 Maximum number of timers to use. More...
 
integer, parameter, public m_octree_mg_3d::mg_num_children = 8
 
integer, dimension(3, 8), parameter, public m_octree_mg_3d::mg_child_dix = reshape( [0,0,0, 1,0,0, 0,1,0, 1,1,0, 0,0,1, 1,0,1, 0,1,1, 1,1,1], [3,8])
 
integer, dimension(8, 3), parameter, public m_octree_mg_3d::mg_child_rev = reshape( [2,1,4,3,6,5,8,7, 3,4,1,2,7,8,5,6, 5,6,7,8,1,2,3,4], [8,3])
 
integer, dimension(4, 6), parameter, public m_octree_mg_3d::mg_child_adj_nb = reshape( [1,3,5,7, 2,4,6,8, 1,2,5,6, 3,4,7,8, 1,2,3,4, 5,6,7,8], [4,6])
 
logical, dimension(3, 8), parameter, public m_octree_mg_3d::mg_child_low = reshape([ .true., .true., .true., .false., .true., .true., .true., .false., .true., .false., .false., .true., .true., .true., .false., .false., .true., .false., .true., .false., .false., .false., .false., .false.], [3, 8])
 
integer, parameter, public m_octree_mg_3d::mg_num_neighbors = 6
 
integer, parameter, public m_octree_mg_3d::mg_neighb_lowx = 1
 
integer, parameter, public m_octree_mg_3d::mg_neighb_highx = 2
 
integer, parameter, public m_octree_mg_3d::mg_neighb_lowy = 3
 
integer, parameter, public m_octree_mg_3d::mg_neighb_highy = 4
 
integer, parameter, public m_octree_mg_3d::mg_neighb_lowz = 5
 
integer, parameter, public m_octree_mg_3d::mg_neighb_highz = 6
 
integer, dimension(3, 6), parameter, public m_octree_mg_3d::mg_neighb_dix = reshape( [-1,0,0, 1,0,0, 0,-1,0, 0,1,0, 0,0,-1, 0,0,1], [3,6])
 
logical, dimension(6), parameter, public m_octree_mg_3d::mg_neighb_low = [.true., .false., .true., .false., .true., .false.]
 
integer, dimension(6), parameter, public m_octree_mg_3d::mg_neighb_high_pm = [-1, 1, -1, 1, -1, 1]
 
integer, dimension(6), parameter, public m_octree_mg_3d::mg_neighb_rev = [2, 1, 4, 3, 6, 5]
 
integer, dimension(6), parameter, public m_octree_mg_3d::mg_neighb_dim = [1, 1, 2, 2, 3, 3]
 
real(dp), public, protected m_octree_mg_3d::vhelmholtz_lambda = 0.0_dp
 Module for implicitly solving diffusion equations. More...
 
real(dp), public, protected m_octree_mg_3d::helmholtz_lambda = 0.0_dp
 Module for load balancing a tree (that already has been constructed). The load balancing determines which ranks (MPI processes) allocated physical storage for boxes. The tree structure itself is present on all processes. More...