MPIAMRVAC
2.2
The MPI  Adaptive Mesh Refinement  Versatile Advection Code

Go to the source code of this file.
Data Types  
type  m_octree_mg_2d::mg_lvl_t 
Lists of blocks per refinement level. More...  
type  m_octree_mg_2d::mg_box_t 
Box data structure. More...  
type  m_octree_mg_2d::mg_buf_t 
Buffer type (one is used for each pair of communicating processes) More...  
type  m_octree_mg_2d::mg_comm_t 
type  m_octree_mg_2d::mg_bc_t 
type  m_octree_mg_2d::mg_timer_t 
type  m_octree_mg_2d::mg_t 
interface  m_octree_mg_2d::mg_subr_bc 
To fill ghost cells near physical boundaries. More...  
Modules  
module  m_octree_mg_2d 
Functions/Subroutines  
elemental logical function, public  m_octree_mg_2d::mg_has_children (box) 
Return .true. if a box has children. More...  
integer function, public  m_octree_mg_2d::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(2), public  m_octree_mg_2d::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_2d::mg_highest_uniform_lvl (mg) 
integer(i8) function, public  m_octree_mg_2d::mg_number_of_unknowns (mg) 
Determine total number of unknowns (on leaves) More...  
subroutine, public  m_octree_mg_2d::mg_get_face_coords (box, nb, nc, x) 
Get coordinates at the face of a box. More...  
integer function, public  m_octree_mg_2d::mg_add_timer (mg, name) 
subroutine, public  m_octree_mg_2d::mg_timer_start (timer) 
subroutine, public  m_octree_mg_2d::mg_timer_end (timer) 
subroutine, public  m_octree_mg_2d::mg_timers_show (mg) 
subroutine, public  m_octree_mg_2d::mg_deallocate_storage (mg) 
Deallocate all allocatable arrays. More...  
subroutine, public  m_octree_mg_2d::mg_allocate_storage (mg) 
Allocate communication buffers and local boxes for a tree that has already been created. More...  
subroutine, public  m_octree_mg_2d::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_2d::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_2d::laplacian_set_methods (mg) 
subroutine, public  m_octree_mg_2d::vhelmholtz_set_methods (mg) 
subroutine, public  m_octree_mg_2d::vhelmholtz_set_lambda (lambda) 
subroutine, public  m_octree_mg_2d::mg_build_rectangle (mg, domain_size, box_size, dx, r_min, periodic, n_finer) 
subroutine, public  m_octree_mg_2d::mg_set_neighbors_lvl (mg, lvl) 
subroutine, public  m_octree_mg_2d::mg_set_next_level_ids (mg, lvl) 
subroutine, public  m_octree_mg_2d::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_2d::mg_set_refinement_boundaries (boxes, level) 
Create a list of refinement boundaries (from the coarse side) More...  
subroutine, public  m_octree_mg_2d::mg_add_children (mg, id) 
subroutine, public  m_octree_mg_2d::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_2d::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_2d::mg_load_balance_parents (mg) 
Load balance the parents (nonleafs). Assign them to the rank that has most children. More...  
subroutine, public  m_octree_mg_2d::vlaplacian_set_methods (mg) 
subroutine, public  m_octree_mg_2d::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_2d::sort_and_transfer_buffers (mg, dsize) 
subroutine  m_octree_mg_2d::sort_sendbuf (gc, dsize) 
Sort send buffers according to the idbuf array. More...  
subroutine, public  m_octree_mg_2d::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_2d::mg_phi_bc_store (mg) 
Store boundary conditions for the solution variable, this can speed up calculations if the same boundary conditions are reused. More...  
subroutine, public  m_octree_mg_2d::mg_fill_ghost_cells (mg, iv) 
Fill ghost cells at all grid levels. More...  
subroutine, public  m_octree_mg_2d::mg_fill_ghost_cells_lvl (mg, lvl, iv) 
Fill ghost cells at a grid level. More...  
subroutine, public  m_octree_mg_2d::mg_prolong_buffer_size (mg, n_send, n_recv, dsize) 
Specify minimum buffer size (per process) for communication. More...  
subroutine, public  m_octree_mg_2d::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_2d::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_2d::helmholtz_set_methods (mg) 
subroutine, public  m_octree_mg_2d::helmholtz_set_lambda (lambda) 
subroutine, public  m_octree_mg_2d::mg_set_methods (mg) 
subroutine, public  m_octree_mg_2d::mg_fas_fmg (mg, have_guess, max_res) 
Perform FASFMG cycle (full approximation scheme, full multigrid). More...  
subroutine, public  m_octree_mg_2d::mg_fas_vcycle (mg, highest_lvl, max_res, standalone) 
Perform FAS Vcycle (full approximation scheme). More...  
subroutine  m_octree_mg_2d::subtract_mean (mg, iv, include_ghostcells) 
real(dp) function  m_octree_mg_2d::get_sum (mg, iv) 
subroutine, public  m_octree_mg_2d::mg_apply_op (mg, i_out, op) 
Apply operator to the tree and store in variable i_out. More...  
subroutine, public  m_octree_mg_2d::mg_restrict_buffer_size (mg, n_send, n_recv, dsize) 
Specify minimum buffer size (per process) for communication. More...  
subroutine, public  m_octree_mg_2d::mg_restrict (mg, iv) 
Restrict all levels. More...  
subroutine, public  m_octree_mg_2d::mg_restrict_lvl (mg, iv, lvl) 
Restrict from lvl to lvl1. More...  
Variables  
integer, parameter, public  m_octree_mg_2d::dp = kind(0.0d0) 
Type of reals. More...  
integer, parameter, public  m_octree_mg_2d::i8 = selected_int_kind(18) 
Type for 64bit integers. More...  
integer, parameter, public  m_octree_mg_2d::mg_laplacian = 1 
Indicates a standard Laplacian. More...  
integer, parameter, public  m_octree_mg_2d::mg_vlaplacian = 2 
Indicates a variablecoefficient Laplacian. More...  
integer, parameter, public  m_octree_mg_2d::mg_helmholtz = 3 
Indicates a constantcoefficient Helmholtz equation. More...  
integer, parameter, public  m_octree_mg_2d::mg_vhelmholtz = 4 
Indicates a variablecoefficient Helmholtz equation. More...  
integer, parameter, public  m_octree_mg_2d::mg_cartesian = 1 
Cartesian coordinate system. More...  
integer, parameter, public  m_octree_mg_2d::mg_cylindrical = 2 
Cylindrical coordinate system. More...  
integer, parameter, public  m_octree_mg_2d::mg_spherical = 3 
Spherical coordinate system. More...  
integer, parameter, public  m_octree_mg_2d::mg_smoother_gs = 1 
integer, parameter, public  m_octree_mg_2d::mg_smoother_gsrb = 2 
integer, parameter, public  m_octree_mg_2d::mg_smoother_jacobi = 3 
integer, parameter, public  m_octree_mg_2d::mg_ndim = 2 
Problem dimension. More...  
integer, parameter, public  m_octree_mg_2d::mg_num_vars = 4 
Number of predefined multigrid variables. More...  
integer, parameter, public  m_octree_mg_2d::mg_max_num_vars = 10 
Maximum number of variables. More...  
integer, parameter, public  m_octree_mg_2d::mg_iphi = 1 
Index of solution. More...  
integer, parameter, public  m_octree_mg_2d::mg_irhs = 2 
Index of righthand side. More...  
integer, parameter, public  m_octree_mg_2d::mg_iold = 3 
Index of previous solution (used for correction) More...  
integer, parameter, public  m_octree_mg_2d::mg_ires = 4 
Index of residual. More...  
integer, parameter, public  m_octree_mg_2d::mg_iveps = 5 
Index of the variable coefficient (at cell centers) More...  
integer, parameter, public  m_octree_mg_2d::mg_lvl_lo = 20 
Minimum allowed grid level. More...  
integer, parameter, public  m_octree_mg_2d::mg_lvl_hi = 20 
Maximum allowed grid level. More...  
integer, parameter, public  m_octree_mg_2d::mg_bc_dirichlet = 10 
Value to indicate a Dirichlet boundary condition. More...  
integer, parameter, public  m_octree_mg_2d::mg_bc_neumann = 11 
Value to indicate a Neumann boundary condition. More...  
integer, parameter, public  m_octree_mg_2d::mg_bc_continuous = 12 
Value to indicate a continuous boundary condition. More...  
integer, parameter, public  m_octree_mg_2d::mg_no_box = 0 
Special value that indicates there is no box. More...  
integer, parameter, public  m_octree_mg_2d::mg_physical_boundary = 1 
Special value that indicates there is a physical boundary. More...  
integer, parameter, public  m_octree_mg_2d::mg_max_timers = 20 
Maximum number of timers to use. More...  
integer, parameter, public  m_octree_mg_2d::mg_num_children = 4 
integer, dimension(2, 4), parameter, public  m_octree_mg_2d::mg_child_dix = reshape([0,0,1,0,0,1,1,1], [2,4]) 
integer, dimension(4, 2), parameter, public  m_octree_mg_2d::mg_child_rev = reshape([2,1,4,3,3,4,1,2], [4,2]) 
integer, dimension(2, 4), parameter, public  m_octree_mg_2d::mg_child_adj_nb = reshape([1,3,2,4,1,2,3,4], [2,4]) 
logical, dimension(2, 4), parameter, public  m_octree_mg_2d::mg_child_low = reshape([.true., .true., .false., .true., .true., .false., .false., .false.], [2, 4]) 
integer, parameter, public  m_octree_mg_2d::mg_num_neighbors = 4 
integer, parameter, public  m_octree_mg_2d::mg_neighb_lowx = 1 
integer, parameter, public  m_octree_mg_2d::mg_neighb_highx = 2 
integer, parameter, public  m_octree_mg_2d::mg_neighb_lowy = 3 
integer, parameter, public  m_octree_mg_2d::mg_neighb_highy = 4 
integer, dimension(2, 4), parameter, public  m_octree_mg_2d::mg_neighb_dix = reshape([1,0,1,0,0,1,0,1], [2,4]) 
logical, dimension(4), parameter, public  m_octree_mg_2d::mg_neighb_low = [.true., .false., .true., .false.] 
integer, dimension(4), parameter, public  m_octree_mg_2d::mg_neighb_high_pm = [1, 1, 1, 1] 
integer, dimension(4), parameter, public  m_octree_mg_2d::mg_neighb_rev = [2, 1, 4, 3] 
integer, dimension(4), parameter, public  m_octree_mg_2d::mg_neighb_dim = [1, 1, 2, 2] 
real(dp), public, protected  m_octree_mg_2d::vhelmholtz_lambda = 0.0_dp 
Module for implicitly solving diffusion equations. More...  
real(dp), public, protected  m_octree_mg_2d::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...  