Coulomb FMM コアで共有する型定義。
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public, | parameter | :: | inv_sqrt_pi | = | 0.56418958354775628695d0 |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public | :: | theta | = | 0.5d0 | ||
| integer(kind=i32), | public | :: | leaf_max | = | 16_i32 | ||
| integer(kind=i32), | public | :: | order | = | 4_i32 | ||
| real(kind=dp), | public | :: | softening | = | 0.0d0 | ||
| logical, | public | :: | use_periodic2 | = | .false. | ||
| character(len=16), | public | :: | periodic_far_correction | = | 'auto' | ||
| integer(kind=i32), | public | :: | periodic_axes(2) | = | 0_i32 | ||
| real(kind=dp), | public | :: | periodic_len(2) | = | 0.0d0 | ||
| integer(kind=i32), | public | :: | periodic_image_layers | = | 1_i32 | ||
| real(kind=dp), | public | :: | periodic_ewald_alpha | = | 0.0d0 | ||
| integer(kind=i32), | public | :: | periodic_ewald_layers | = | 4_i32 | ||
| real(kind=dp), | public | :: | target_box_min(3) | = | 0.0d0 | ||
| real(kind=dp), | public | :: | target_box_max(3) | = | 0.0d0 |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | public | :: | ready | = | .false. | ||
| integer(kind=i32), | public | :: | axis1 | = | 0_i32 | ||
| integer(kind=i32), | public | :: | axis2 | = | 0_i32 | ||
| integer(kind=i32), | public | :: | axis_free | = | 0_i32 | ||
| integer(kind=i32), | public | :: | nimg | = | 0_i32 | ||
| integer(kind=i32), | public | :: | img_outer | = | 0_i32 | ||
| integer(kind=i32), | public | :: | kmax | = | 0_i32 | ||
| real(kind=dp), | public | :: | alpha | = | 0.0d0 | ||
| real(kind=dp), | public | :: | soft2 | = | 0.0d0 | ||
| real(kind=dp), | public | :: | cell_area | = | 0.0d0 | ||
| real(kind=dp), | public | :: | k0_pref | = | 0.0d0 | ||
| integer(kind=i32), | public | :: | screen_count | = | 0_i32 | ||
| integer(kind=i32), | public | :: | inner_count | = | 0_i32 | ||
| integer(kind=i32), | public | :: | k_count | = | 0_i32 | ||
| real(kind=dp), | public, | allocatable | :: | screen_shift1(:) | |||
| real(kind=dp), | public, | allocatable | :: | screen_shift2(:) | |||
| real(kind=dp), | public, | allocatable | :: | inner_shift1(:) | |||
| real(kind=dp), | public, | allocatable | :: | inner_shift2(:) | |||
| real(kind=dp), | public, | allocatable | :: | k1(:) | |||
| real(kind=dp), | public, | allocatable | :: | k2(:) | |||
| real(kind=dp), | public, | allocatable | :: | kmag(:) | |||
| real(kind=dp), | public, | allocatable | :: | karg0(:) | |||
| real(kind=dp), | public, | allocatable | :: | kpref1(:) | |||
| real(kind=dp), | public, | allocatable | :: | kpref2(:) | |||
| real(kind=dp), | public, | allocatable | :: | kprefz(:) |
| 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 | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | public | :: | ready | = | .false. | ||
| integer(kind=i32), | public | :: | update_count | = | 0_i32 | ||
| real(kind=dp), | public, | pointer | :: | src_q(:) | => | null() | |
| real(kind=dp), | public, | pointer | :: | multipole(:,:) | => | null() | |
| real(kind=dp), | public, | pointer | :: | local(:,:) | => | null() | |
| integer(kind=i32), | public, | pointer | :: | multipole_active(:) | => | null() | |
| integer(kind=i32), | public, | pointer | :: | local_active(:) | => | null() |
periodic2 Ewald 用の補助データを初期状態へ戻す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(periodic2_ewald_data_type), | intent(inout) | :: | data |
リセット対象の補助データ。 |
FMM plan を初期状態へ戻す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(inout) | :: | plan |
リセット対象の FMM plan。 |
FMM state のポインタ成分を未関連状態へ初期化する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_state_type), | intent(inout) | :: | state |
初期化対象の FMM state。 |
FMM state を初期状態へ戻す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_state_type), | intent(inout) | :: | state |
リセット対象の FMM state。 |