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