MPI-AMRVAC  3.0
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::diffusion_solve_acoeff (mg, dt, order, max_res)
 Solve a diffusion equation implicitly, assuming anisotropic diffusion coefficient which has been stored in mg_iveps1, mg_iveps2, mg_iveps3 (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...
 
subroutine, public m_octree_mg_3d::ahelmholtz_set_methods (mg)
 
subroutine, public m_octree_mg_3d::ahelmholtz_set_lambda (lambda)
 

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_ahelmholtz = 5
 Indicates a anisotropic-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_iveps1 = 5
 Indexes of anisotropic variable coefficients. More...
 
integer, parameter, public m_octree_mg_3d::mg_iveps2 = 6
 
integer, parameter, public m_octree_mg_3d::mg_iveps3 = 7
 
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...
 
real(dp), public, protected m_octree_mg_3d::ahelmholtz_lambda = 0.0_dp
 Module which contains multigrid procedures for a Helmholtz operator of the form: div(D grad(phi)) - lambda*phi = f, where D has a smooth spatial variation and a component in each spatial direction. More...