Octopus
multigrid_oct_m Module Reference

Data Types

type  multigrid_level_t
 
type  multigrid_t
 

Functions/Subroutines

subroutine, public multigrid_init (mgrid, namespace, space, mesh, der, stencil, mc, nlevels)
 
subroutine, public multigrid_get_transfer_tables (tt, space, fine, coarse)
 creates the lookup tables to go between the coarse and fine meshes More...
 
subroutine, public multigrid_mesh_half (space, namespace, mesh_in, mesh_out, stencil)
 Creates a mesh that has twice the spacing betwen the points than the in mesh. This is used in the multi-grid routines. More...
 
subroutine, public multigrid_mesh_double (space, namespace, mesh_in, mesh_out, stencil)
 
subroutine, public multigrid_end (mgrid)
 
integer function, public multigrid_number_of_levels (base_der)
 
subroutine multigrid_build_stencil (dim, weight, shift)
 
subroutine, public dmultigrid_coarse2fine (tt, coarse_der, fine_mesh, f_coarse, f_fine, set_bc)
 
subroutine, public dmultigrid_fine2coarse (tt, fine_der, coarse_mesh, f_fine, f_coarse, method_p)
 
subroutine dmultigrid_injection (tt, f_fine, f_coarse)
 
subroutine dmultigrid_restriction (tt, fine_der, coarse_mesh, f_fine, f_coarse, set_bc)
 
subroutine, public dmultigrid_coarse2fine_batch (tt, coarse_der, fine_mesh, coarseb, fineb)
 
subroutine, public dmultigrid_fine2coarse_batch (tt, fine_der, coarse_mesh, fineb, coarseb, method_p)
 
subroutine dmultigrid_restriction_batch (tt, fine_der, coarse_mesh, fineb, coarseb)
 
subroutine, public zmultigrid_coarse2fine (tt, coarse_der, fine_mesh, f_coarse, f_fine, set_bc)
 
subroutine, public zmultigrid_fine2coarse (tt, fine_der, coarse_mesh, f_fine, f_coarse, method_p)
 
subroutine zmultigrid_injection (tt, f_fine, f_coarse)
 
subroutine zmultigrid_restriction (tt, fine_der, coarse_mesh, f_fine, f_coarse, set_bc)
 
subroutine, public zmultigrid_coarse2fine_batch (tt, coarse_der, fine_mesh, coarseb, fineb)
 
subroutine, public zmultigrid_fine2coarse_batch (tt, fine_der, coarse_mesh, fineb, coarseb, method_p)
 
subroutine zmultigrid_restriction_batch (tt, fine_der, coarse_mesh, fineb, coarseb)
 

Variables

integer, parameter, public injection = 1
 
integer, parameter, public fullweight = 2
 

Function/Subroutine Documentation

◆ multigrid_init()

subroutine, public multigrid_oct_m::multigrid_init ( type(multigrid_t), intent(out), target  mgrid,
type(namespace_t), intent(in)  namespace,
class(space_t), intent(in)  space,
class(mesh_t), intent(in), target  mesh,
type(derivatives_t), intent(in), target  der,
type(stencil_t), intent(in)  stencil,
type(multicomm_t), intent(in)  mc,
integer, intent(in), optional  nlevels 
)

Definition at line 184 of file multigrid.F90.

◆ multigrid_get_transfer_tables()

subroutine, public multigrid_oct_m::multigrid_get_transfer_tables ( type(transfer_table_t), intent(inout)  tt,
class(space_t), intent(in)  space,
type(mesh_t), intent(in)  fine,
type(mesh_t), intent(in)  coarse 
)

creates the lookup tables to go between the coarse and fine meshes

Definition at line 301 of file multigrid.F90.

◆ multigrid_mesh_half()

subroutine, public multigrid_oct_m::multigrid_mesh_half ( class(space_t), intent(in)  space,
type(namespace_t), intent(in)  namespace,
type(mesh_t), intent(in), target  mesh_in,
type(mesh_t), intent(inout)  mesh_out,
type(stencil_t), intent(in)  stencil 
)

Creates a mesh that has twice the spacing betwen the points than the in mesh. This is used in the multi-grid routines.

Definition at line 415 of file multigrid.F90.

◆ multigrid_mesh_double()

subroutine, public multigrid_oct_m::multigrid_mesh_double ( class(space_t), intent(in)  space,
type(namespace_t), intent(in)  namespace,
type(mesh_t), intent(in), target  mesh_in,
type(mesh_t), intent(inout)  mesh_out,
type(stencil_t), intent(in)  stencil 
)

Definition at line 453 of file multigrid.F90.

◆ multigrid_end()

subroutine, public multigrid_oct_m::multigrid_end ( type(multigrid_t), intent(inout), target  mgrid)

Definition at line 501 of file multigrid.F90.

◆ multigrid_number_of_levels()

integer function, public multigrid_oct_m::multigrid_number_of_levels ( type(derivatives_t), intent(in), target  base_der)

Definition at line 537 of file multigrid.F90.

◆ multigrid_build_stencil()

subroutine multigrid_oct_m::multigrid_build_stencil ( integer, intent(in)  dim,
real(real64), dimension(:), intent(inout)  weight,
integer, dimension(:,:), intent(inout)  shift 
)
private

Definition at line 554 of file multigrid.F90.

◆ dmultigrid_coarse2fine()

subroutine, public multigrid_oct_m::dmultigrid_coarse2fine ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  coarse_der,
type(mesh_t), intent(in)  fine_mesh,
real(real64), dimension(:), intent(inout), contiguous  f_coarse,
real(real64), dimension(:), intent(out)  f_fine,
logical, intent(in), optional  set_bc 
)

Definition at line 673 of file multigrid.F90.

◆ dmultigrid_fine2coarse()

subroutine, public multigrid_oct_m::dmultigrid_fine2coarse ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  fine_der,
type(mesh_t), intent(in)  coarse_mesh,
real(real64), dimension(:), intent(inout), contiguous  f_fine,
real(real64), dimension(:), intent(out)  f_coarse,
integer, intent(in), optional  method_p 
)

Definition at line 752 of file multigrid.F90.

◆ dmultigrid_injection()

subroutine multigrid_oct_m::dmultigrid_injection ( type(transfer_table_t), intent(in)  tt,
real(real64), dimension(:), intent(in)  f_fine,
real(real64), dimension(:), intent(out)  f_coarse 
)
private

Definition at line 781 of file multigrid.F90.

◆ dmultigrid_restriction()

subroutine multigrid_oct_m::dmultigrid_restriction ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  fine_der,
type(mesh_t), intent(in)  coarse_mesh,
real(real64), dimension(:), intent(inout), contiguous  f_fine,
real(real64), dimension(:), intent(out)  f_coarse,
logical, intent(in), optional  set_bc 
)
private

Definition at line 800 of file multigrid.F90.

◆ dmultigrid_coarse2fine_batch()

subroutine, public multigrid_oct_m::dmultigrid_coarse2fine_batch ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  coarse_der,
type(mesh_t), intent(in)  fine_mesh,
class(batch_t), intent(inout)  coarseb,
class(batch_t), intent(inout)  fineb 
)

Definition at line 867 of file multigrid.F90.

◆ dmultigrid_fine2coarse_batch()

subroutine, public multigrid_oct_m::dmultigrid_fine2coarse_batch ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  fine_der,
type(mesh_t), intent(in)  coarse_mesh,
class(batch_t), intent(inout)  fineb,
class(batch_t), intent(inout)  coarseb,
integer, intent(in), optional  method_p 
)

Definition at line 971 of file multigrid.F90.

◆ dmultigrid_restriction_batch()

subroutine multigrid_oct_m::dmultigrid_restriction_batch ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  fine_der,
type(mesh_t), intent(in)  coarse_mesh,
class(batch_t), intent(inout)  fineb,
class(batch_t), intent(inout)  coarseb 
)
private

Definition at line 1012 of file multigrid.F90.

◆ zmultigrid_coarse2fine()

subroutine, public multigrid_oct_m::zmultigrid_coarse2fine ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  coarse_der,
type(mesh_t), intent(in)  fine_mesh,
complex(real64), dimension(:), intent(inout), contiguous  f_coarse,
complex(real64), dimension(:), intent(out)  f_fine,
logical, intent(in), optional  set_bc 
)

Definition at line 1184 of file multigrid.F90.

◆ zmultigrid_fine2coarse()

subroutine, public multigrid_oct_m::zmultigrid_fine2coarse ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  fine_der,
type(mesh_t), intent(in)  coarse_mesh,
complex(real64), dimension(:), intent(inout), contiguous  f_fine,
complex(real64), dimension(:), intent(out)  f_coarse,
integer, intent(in), optional  method_p 
)

Definition at line 1263 of file multigrid.F90.

◆ zmultigrid_injection()

subroutine multigrid_oct_m::zmultigrid_injection ( type(transfer_table_t), intent(in)  tt,
complex(real64), dimension(:), intent(in)  f_fine,
complex(real64), dimension(:), intent(out)  f_coarse 
)
private

Definition at line 1292 of file multigrid.F90.

◆ zmultigrid_restriction()

subroutine multigrid_oct_m::zmultigrid_restriction ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  fine_der,
type(mesh_t), intent(in)  coarse_mesh,
complex(real64), dimension(:), intent(inout), contiguous  f_fine,
complex(real64), dimension(:), intent(out)  f_coarse,
logical, intent(in), optional  set_bc 
)
private

Definition at line 1311 of file multigrid.F90.

◆ zmultigrid_coarse2fine_batch()

subroutine, public multigrid_oct_m::zmultigrid_coarse2fine_batch ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  coarse_der,
type(mesh_t), intent(in)  fine_mesh,
class(batch_t), intent(inout)  coarseb,
class(batch_t), intent(inout)  fineb 
)

Definition at line 1378 of file multigrid.F90.

◆ zmultigrid_fine2coarse_batch()

subroutine, public multigrid_oct_m::zmultigrid_fine2coarse_batch ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  fine_der,
type(mesh_t), intent(in)  coarse_mesh,
class(batch_t), intent(inout)  fineb,
class(batch_t), intent(inout)  coarseb,
integer, intent(in), optional  method_p 
)

Definition at line 1482 of file multigrid.F90.

◆ zmultigrid_restriction_batch()

subroutine multigrid_oct_m::zmultigrid_restriction_batch ( type(transfer_table_t), intent(in)  tt,
type(derivatives_t), intent(in)  fine_der,
type(mesh_t), intent(in)  coarse_mesh,
class(batch_t), intent(inout)  fineb,
class(batch_t), intent(inout)  coarseb 
)
private

Definition at line 1523 of file multigrid.F90.

Variable Documentation

◆ injection

integer, parameter, public multigrid_oct_m::injection = 1

Definition at line 158 of file multigrid.F90.

◆ fullweight

integer, parameter, public multigrid_oct_m::fullweight = 2

Definition at line 158 of file multigrid.F90.