| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(fmm_options_type), | public | :: | options | = | fmm_options_type() | ||
| logical, | public | :: | built | = | .false. | ||
| integer(kind=i32), | public | :: | nsrc | = | 0_i32 | ||
| integer(kind=i32), | public | :: | ncoef | = | 0_i32 | ||
| integer(kind=i32), | public | :: | nderiv | = | 0_i32 | ||
| integer(kind=i32), | public, | allocatable | :: | alpha(:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | alpha_degree(:) | |||
| real(kind=dp), | public, | allocatable | :: | alpha_factorial(:) | |||
| real(kind=dp), | public, | allocatable | :: | alpha_sign(:) | |||
| integer(kind=i32), | public, | allocatable | :: | alpha_map(:,:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | alpha_plus_axis(:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | deriv_alpha(:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | deriv_degree(:) | |||
| real(kind=dp), | public, | allocatable | :: | deriv_factorial(:) | |||
| integer(kind=i32), | public, | allocatable | :: | deriv_map(:,:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | alpha_beta_deriv_idx(:,:) | |||
| integer(kind=i32), | public | :: | eval_term_count | = | 0_i32 | ||
| integer(kind=i32), | public, | allocatable | :: | eval_exp(:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | eval_deriv_idx(:,:) | |||
| real(kind=dp), | public, | allocatable | :: | eval_inv_factorial(:) | |||
| real(kind=dp), | public, | allocatable | :: | src_pos(:,:) | |||
| integer(kind=i32), | public | :: | max_node | = | 0_i32 | ||
| integer(kind=i32), | public | :: | nnode | = | 0_i32 | ||
| integer(kind=i32), | public | :: | node_max_depth | = | 0_i32 | ||
| integer(kind=i32), | public, | allocatable | :: | elem_order(:) | |||
| integer(kind=i32), | public, | allocatable | :: | node_start(:) | |||
| integer(kind=i32), | public, | allocatable | :: | node_count(:) | |||
| integer(kind=i32), | public, | allocatable | :: | child_count(:) | |||
| integer(kind=i32), | public, | allocatable | :: | child_idx(:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | child_octant(:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | node_depth(:) | |||
| integer(kind=i32), | public, | allocatable | :: | node_level_start(:) | |||
| integer(kind=i32), | public, | allocatable | :: | node_level_nodes(:) | |||
| real(kind=dp), | public, | allocatable | :: | node_center(:,:) | |||
| real(kind=dp), | public, | allocatable | :: | node_half_size(:,:) | |||
| real(kind=dp), | public, | allocatable | :: | node_radius(:) | |||
| logical, | public | :: | target_tree_ready | = | .false. | ||
| integer(kind=i32), | public | :: | target_max_node | = | 0_i32 | ||
| integer(kind=i32), | public | :: | target_nnode | = | 0_i32 | ||
| integer(kind=i32), | public | :: | target_node_max_depth | = | 0_i32 | ||
| integer(kind=i32), | public, | allocatable | :: | target_child_count(:) | |||
| integer(kind=i32), | public, | allocatable | :: | target_child_idx(:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | target_child_octant(:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | target_node_depth(:) | |||
| integer(kind=i32), | public, | allocatable | :: | target_level_start(:) | |||
| integer(kind=i32), | public, | allocatable | :: | target_level_nodes(:) | |||
| real(kind=dp), | public, | allocatable | :: | target_node_center(:,:) | |||
| real(kind=dp), | public, | allocatable | :: | target_node_half_size(:,:) | |||
| real(kind=dp), | public, | allocatable | :: | target_node_radius(:) | |||
| integer(kind=i32), | public | :: | nsource_leaf | = | 0_i32 | ||
| integer(kind=i32), | public, | allocatable | :: | source_leaf_nodes(:) | |||
| integer(kind=i32), | public | :: | nleaf | = | 0_i32 | ||
| integer(kind=i32), | public, | allocatable | :: | leaf_nodes(:) | |||
| integer(kind=i32), | public, | allocatable | :: | leaf_slot_of_node(:) | |||
| integer(kind=i32), | public, | allocatable | :: | near_start(:) | |||
| integer(kind=i32), | public, | allocatable | :: | near_nodes(:) | |||
| integer(kind=i32), | public, | allocatable | :: | near_source_start(:) | |||
| integer(kind=i32), | public, | allocatable | :: | near_source_idx(:) | |||
| real(kind=dp), | public, | allocatable | :: | near_source_shift1(:) | |||
| real(kind=dp), | public, | allocatable | :: | near_source_shift2(:) | |||
| integer(kind=i32), | public, | allocatable | :: | far_start(:) | |||
| integer(kind=i32), | public, | allocatable | :: | far_nodes(:) | |||
| integer(kind=i32), | public | :: | m2l_pair_count | = | 0_i32 | ||
| integer(kind=i32), | public | :: | m2l_build_count | = | 0_i32 | ||
| integer(kind=i32), | public | :: | m2l_visit_count | = | 0_i32 | ||
| integer(kind=i32), | public, | allocatable | :: | m2l_target_nodes(:) | |||
| integer(kind=i32), | public, | allocatable | :: | m2l_source_nodes(:) | |||
| integer(kind=i32), | public, | allocatable | :: | m2l_shift_idx1(:) | |||
| integer(kind=i32), | public, | allocatable | :: | m2l_shift_idx2(:) | |||
| integer(kind=i32), | public, | allocatable | :: | m2l_target_start(:) | |||
| integer(kind=i32), | public, | allocatable | :: | m2l_pair_order(:) | |||
| integer(kind=i32), | public, | allocatable | :: | source_parent_of(:) | |||
| integer(kind=i32), | public, | allocatable | :: | parent_of(:) | |||
| integer(kind=i32), | public, | allocatable | :: | m2m_term_count(:) | |||
| integer(kind=i32), | public, | allocatable | :: | m2m_alpha_list(:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | m2m_delta_list(:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | l2l_term_count(:) | |||
| integer(kind=i32), | public, | allocatable | :: | l2l_gamma_list(:,:) | |||
| integer(kind=i32), | public, | allocatable | :: | l2l_delta_list(:,:) | |||
| real(kind=dp), | public, | allocatable | :: | shift_axis1(:) | |||
| real(kind=dp), | public, | allocatable | :: | shift_axis2(:) | |||
| type(periodic2_ewald_data_type), | public | :: | periodic_ewald | = | periodic2_ewald_data_type() | ||
| logical, | public | :: | periodic_root_operator_ready | = | .false. | ||
| integer(kind=i32), | public | :: | periodic_root_target_count | = | 0_i32 | ||
| integer(kind=i32), | public, | allocatable | :: | periodic_root_target_nodes(:) | |||
| real(kind=dp), | public, | allocatable | :: | periodic_root_operator(:,:,:) | |||
| real(kind=dp), | public, | allocatable | :: | m2l_deriv(:,:) | |||
| real(kind=dp), | public, | allocatable | :: | source_p2m_basis(:,:) | |||
| real(kind=dp), | public, | allocatable | :: | source_shift_monomial(:,:) | |||
| real(kind=dp), | public, | allocatable | :: | target_shift_monomial(:,:) |
type :: fmm_plan_type type(fmm_options_type) :: options = fmm_options_type() logical :: built = .false. integer(i32) :: nsrc = 0_i32 integer(i32) :: ncoef = 0_i32 integer(i32) :: nderiv = 0_i32 integer(i32), allocatable :: alpha(:, :) integer(i32), allocatable :: alpha_degree(:) real(dp), allocatable :: alpha_factorial(:) real(dp), allocatable :: alpha_sign(:) integer(i32), allocatable :: alpha_map(:, :, :) integer(i32), allocatable :: alpha_plus_axis(:, :) integer(i32), allocatable :: deriv_alpha(:, :) integer(i32), allocatable :: deriv_degree(:) real(dp), allocatable :: deriv_factorial(:) integer(i32), allocatable :: deriv_map(:, :, :) integer(i32), allocatable :: alpha_beta_deriv_idx(:, :) integer(i32) :: eval_term_count = 0_i32 integer(i32), allocatable :: eval_exp(:, :) integer(i32), allocatable :: eval_deriv_idx(:, :) real(dp), allocatable :: eval_inv_factorial(:) real(dp), allocatable :: src_pos(:, :) integer(i32) :: max_node = 0_i32 integer(i32) :: nnode = 0_i32 integer(i32) :: node_max_depth = 0_i32 integer(i32), allocatable :: elem_order(:) integer(i32), allocatable :: node_start(:), node_count(:) integer(i32), allocatable :: child_count(:), child_idx(:, :), child_octant(:, :) integer(i32), allocatable :: node_depth(:) integer(i32), allocatable :: node_level_start(:), node_level_nodes(:) real(dp), allocatable :: node_center(:, :) real(dp), allocatable :: node_half_size(:, :) real(dp), allocatable :: node_radius(:) logical :: target_tree_ready = .false. integer(i32) :: target_max_node = 0_i32 integer(i32) :: target_nnode = 0_i32 integer(i32) :: target_node_max_depth = 0_i32 integer(i32), allocatable :: target_child_count(:), target_child_idx(:, :), target_child_octant(:, :) integer(i32), allocatable :: target_node_depth(:) integer(i32), allocatable :: target_level_start(:), target_level_nodes(:) real(dp), allocatable :: target_node_center(:, :) real(dp), allocatable :: target_node_half_size(:, :) real(dp), allocatable :: target_node_radius(:) integer(i32) :: nsource_leaf = 0_i32 integer(i32), allocatable :: source_leaf_nodes(:) integer(i32) :: nleaf = 0_i32 integer(i32), allocatable :: leaf_nodes(:) integer(i32), allocatable :: leaf_slot_of_node(:) integer(i32), allocatable :: near_start(:), near_nodes(:) integer(i32), allocatable :: near_source_start(:), near_source_idx(:) real(dp), allocatable :: near_source_shift1(:), near_source_shift2(:) integer(i32), allocatable :: far_start(:), far_nodes(:) integer(i32) :: m2l_pair_count = 0_i32 integer(i32) :: m2l_build_count = 0_i32 integer(i32) :: m2l_visit_count = 0_i32 integer(i32), allocatable :: m2l_target_nodes(:), m2l_source_nodes(:) integer(i32), allocatable :: m2l_shift_idx1(:), m2l_shift_idx2(:) integer(i32), allocatable :: m2l_target_start(:), m2l_pair_order(:) integer(i32), allocatable :: source_parent_of(:) integer(i32), allocatable :: parent_of(:) integer(i32), allocatable :: m2m_term_count(:) integer(i32), allocatable :: m2m_alpha_list(:, :) integer(i32), allocatable :: m2m_delta_list(:, :) integer(i32), allocatable :: l2l_term_count(:) integer(i32), allocatable :: l2l_gamma_list(:, :) integer(i32), allocatable :: l2l_delta_list(:, :) real(dp), allocatable :: shift_axis1(:), shift_axis2(:) type(periodic2_ewald_data_type) :: periodic_ewald = periodic2_ewald_data_type() logical :: periodic_root_operator_ready = .false. integer(i32) :: periodic_root_target_count = 0_i32 integer(i32), allocatable :: periodic_root_target_nodes(:) real(dp), allocatable :: periodic_root_operator(:, :, :) real(dp), allocatable :: m2l_deriv(:, :) real(dp), allocatable :: source_p2m_basis(:, :) real(dp), allocatable :: source_shift_monomial(:, :) real(dp), allocatable :: target_shift_monomial(:, :) end type fmm_plan_type