mod_fmm Module


Uses

  • module~~mod_fmm~~UsesGraph module~mod_fmm mod_fmm module~mod_tree mod_tree module~mod_fmm->module~mod_tree module~mod_constants mod_constants module~mod_fmm->module~mod_constants module~mod_fmm_utils mod_fmm_utils module~mod_fmm->module~mod_fmm_utils module~mod_harmonics mod_harmonics module~mod_fmm->module~mod_harmonics module~mod_tree->module~mod_constants module~mod_tree->module~mod_fmm_utils module~mod_adjacency_mat mod_adjacency_mat module~mod_tree->module~mod_adjacency_mat iso_c_binding iso_c_binding module~mod_constants->iso_c_binding module~mod_fmm_utils->module~mod_constants module~mod_harmonics->module~mod_constants module~mod_harmonics->module~mod_fmm_utils module~mod_memory mod_memory module~mod_adjacency_mat->module~mod_memory module~mod_memory->module~mod_constants module~mod_memory->iso_c_binding module~mod_io mod_io module~mod_memory->module~mod_io module~mod_io->module~mod_constants

Used by


Contents


Derived Types

type, public ::  fmm_type

Components

Type Visibility Attributes Name Initial
type(fmm_tree_type), public, pointer :: tree

Tree data structure to store the particles

integer(kind=ip), public :: pmax_mm

Maximum order of spherical harmonics used in multipolar expansion

integer(kind=ip), public :: pmax_le

Maximum order of spherical harmonics used in local expansion

real(kind=rp), public, allocatable :: multipoles_p(:,:)

Multipole expansion for each particle

real(kind=rp), public, allocatable :: multipoles(:,:)

Multipole expansion for each node of the tree

real(kind=rp), public, allocatable :: local_expansion(:,:)

Local expansion for each node of the tree


Subroutines

public subroutine fmm_init(fmm_obj, pmax, tree)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(inout) :: fmm_obj
integer(kind=ip), intent(in) :: pmax
type(fmm_tree_type), intent(in), target :: tree

public subroutine free_fmm(fmm_obj)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(inout) :: fmm_obj

public subroutine fmm_solve(fmm_obj)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(inout) :: fmm_obj

public subroutine cart_prop_at_ipart(fmm_obj, i_part, do_V, V, do_E, E, do_grdE, grdE, do_HE, HE)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(in) :: fmm_obj
integer(kind=ip) :: i_part
logical, intent(in) :: do_V
real(kind=rp), intent(inout) :: V
logical, intent(in) :: do_E
real(kind=rp), intent(inout) :: E(3)
logical, intent(in) :: do_grdE
real(kind=rp), intent(inout) :: grdE(6)
logical, intent(in) :: do_HE
real(kind=rp), intent(inout) :: HE(10)

public subroutine cart_propfar_at_ipart(fmm_obj, i_part, do_V, V, do_E, E, do_grdE, grdE, do_HE, HE)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(in) :: fmm_obj
integer(kind=ip) :: i_part
logical, intent(in) :: do_V
real(kind=rp), intent(inout) :: V
logical, intent(in) :: do_E
real(kind=rp), intent(inout) :: E(3)
logical, intent(in) :: do_grdE
real(kind=rp), intent(inout) :: grdE(6)
logical, intent(in) :: do_HE
real(kind=rp), intent(inout) :: HE(10)

public subroutine cart_propnear_at_ipart(fmm_obj, i_part, do_V, V, do_E, E, do_grdE, grdE, do_HE, HE)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(in) :: fmm_obj
integer(kind=ip) :: i_part
logical, intent(in) :: do_V
real(kind=rp), intent(inout) :: V
logical, intent(in) :: do_E
real(kind=rp), intent(inout) :: E(3)
logical, intent(in) :: do_grdE
real(kind=rp), intent(inout) :: grdE(6)
logical, intent(in) :: do_HE
real(kind=rp), intent(inout) :: HE(10)

public subroutine tree_p2m(fmm_obj, particle_multipoles, pmax_particles)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(inout) :: fmm_obj
real(kind=rp), intent(in) :: particle_multipoles(:,:)
integer(kind=ip), intent(in) :: pmax_particles

public subroutine tree_m2m(fmm_obj)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(inout) :: fmm_obj

public subroutine tree_m2l(fmm_obj)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(inout) :: fmm_obj

public subroutine tree_l2l(fmm_obj)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(inout) :: fmm_obj