periodic2 の root operator を前計算する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(inout) | :: | plan |
FMM 計画。 |
||
| logical, | intent(in), | optional | :: | reuse_translations |
subroutine precompute_periodic_root_operator(plan, reuse_translations) type(fmm_plan_type), intent(inout) :: plan ! Internal verification path: false computes every pair independently and bypasses disk cache. logical, intent(in), optional :: reuse_translations logical :: reuse if (allocated(plan%periodic_root_operator)) deallocate (plan%periodic_root_operator) if (allocated(plan%periodic_operator_cell_slot)) deallocate (plan%periodic_operator_cell_slot) if (allocated(plan%periodic_operator_cells)) deallocate (plan%periodic_operator_cells) plan%periodic_operator_built_count = 0_i32 plan%periodic_operator_new_cell_count = 0_i32 plan%periodic_root_operator_ready = .false. plan%periodic_root_target_count = 0_i32 plan%periodic_cache_hit = .false. plan%periodic_cache_fingerprint = '' plan%periodic_cache_path = '' if (use_periodic2_cached_kneq0(plan)) then reuse = .true. if (present(reuse_translations)) reuse = reuse_translations ! MPI の初期化・終了は呼び出し側の責務。rank の分担は plan の options が持つ文脈に従う。 call precompute_periodic_cached_operator_collective(plan, plan%options%mpi, reuse) end if end subroutine precompute_periodic_root_operator