|
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 (non-leafs). 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 re-used. 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 FAS-FMG cycle (full approximation scheme, full multigrid). More...
|
|
subroutine, public | m_octree_mg_2d::mg_fas_vcycle (mg, highest_lvl, max_res, standalone) |
| Perform FAS V-cycle (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 lvl-1. More...
|
|
subroutine, public | m_octree_mg_2d::ahelmholtz_set_methods (mg) |
|
subroutine, public | m_octree_mg_2d::ahelmholtz_set_lambda (lambda) |
|
|
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 64-bit 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 variable-coefficient Laplacian. More...
|
|
integer, parameter, public | m_octree_mg_2d::mg_helmholtz = 3 |
| Indicates a constant-coefficient Helmholtz equation. More...
|
|
integer, parameter, public | m_octree_mg_2d::mg_vhelmholtz = 4 |
| Indicates a variable-coefficient Helmholtz equation. More...
|
|
integer, parameter, public | m_octree_mg_2d::mg_ahelmholtz = 5 |
| Indicates a anisotropic-coefficient 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 right-hand 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...
|
|