MPIAMRVAC
3.0
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::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_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...  
subroutine, public  m_octree_mg_2d::ahelmholtz_set_methods (mg) 
subroutine, public  m_octree_mg_2d::ahelmholtz_set_lambda (lambda) 
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_ahelmholtz = 5 
Indicates a anisotropiccoefficient 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_iveps1 = 5 
Indexes of anisotropic variable coefficients. More...  
integer, parameter, public  m_octree_mg_2d::mg_iveps2 = 6 
integer, parameter, public  m_octree_mg_2d::mg_iveps3 = 7 
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...  
real(dp), public, protected  m_octree_mg_2d::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...  