fmm_options_type Derived Type

type, public :: fmm_options_type


Inherits

type~~fmm_options_type~~InheritsGraph type~fmm_options_type fmm_options_type type~mpi_context mpi_context type~fmm_options_type->type~mpi_context mpi

Inherited by

type~~fmm_options_type~~InheritedByGraph type~fmm_options_type fmm_options_type type~field_solver_type field_solver_type type~field_solver_type->type~fmm_options_type fmm_core_options type~fmm_plan_type fmm_plan_type type~field_solver_type->type~fmm_plan_type fmm_core_plan type~fmm_plan_type->type~fmm_options_type options type~electrostatic_snapshot_type electrostatic_snapshot_type type~electrostatic_snapshot_type->type~field_solver_type nonzero_solver

Components

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
logical, public :: near_field_single = .false.

Panel sources only: keep the per-leaf near-field tables in single precision (relative to the leaf center) and sum them with the single-precision SIMD kernel. Off by default; results then differ at the 1e-6 level.

real(kind=dp), public :: softening = 0.0d0
logical, public :: use_periodic2 = .false.
character(len=16), public :: periodic_far_correction = 'none'
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
character(len=256), public :: periodic_cache_dir = ''
real(kind=dp), public :: periodic_generation_tolerance = 1.0d-8
integer(kind=i32), public :: periodic_operator_source_cells(3) = -1_i32

cached_kneq0 の遠方補正が使う source セルと target anchor の box 格子の各軸の分割数。負なら box と周期長から 自動で選ぶ(anchor は半対角線が短い周期長の 0.5 倍以下、source は 0.4 倍以下になるほぼ立方体のセルで、 source の分割数は anchor の 2^k 倍)。粗いと作成は速いが、粒子層の高さが周期長に近いとき非零モードに 面平均が漏れる。

integer(kind=i32), public :: periodic_operator_anchor_cells(3) = -1_i32
real(kind=dp), public :: target_box_min(3) = 0.0d0
real(kind=dp), public :: target_box_max(3) = 0.0d0
type(mpi_context), public :: mpi

cached_kneq0 の root operator を rank で分担して作るときの MPI 文脈。呼び出し側(runtime)が渡す。 既定は単一 rank で、collective は何もしない(C ABI・テスト・非 MPI build)。


Source Code

  type :: fmm_options_type
    real(dp) :: theta = 0.5d0
    integer(i32) :: leaf_max = 16_i32
    integer(i32) :: order = 4_i32
    !> Panel sources only: keep the per-leaf near-field tables in single precision (relative to the leaf center)
    !! and sum them with the single-precision SIMD kernel. Off by default; results then differ at the 1e-6 level.
    logical :: near_field_single = .false.
    real(dp) :: softening = 0.0d0
    logical :: use_periodic2 = .false.
    character(len=16) :: periodic_far_correction = 'none'
    integer(i32) :: periodic_axes(2) = 0_i32
    real(dp) :: periodic_len(2) = 0.0d0
    integer(i32) :: periodic_image_layers = 1_i32
    real(dp) :: periodic_ewald_alpha = 0.0d0
    integer(i32) :: periodic_ewald_layers = 4_i32
    character(len=256) :: periodic_cache_dir = ''
    real(dp) :: periodic_generation_tolerance = 1.0d-8
    !> cached_kneq0 の遠方補正が使う source セルと target anchor の box 格子の各軸の分割数。負なら box と周期長から
    !! 自動で選ぶ(anchor は半対角線が短い周期長の 0.5 倍以下、source は 0.4 倍以下になるほぼ立方体のセルで、
    !! source の分割数は anchor の 2^k 倍)。粗いと作成は速いが、粒子層の高さが周期長に近いとき非零モードに
    !! 面平均が漏れる。
    integer(i32) :: periodic_operator_source_cells(3) = -1_i32
    integer(i32) :: periodic_operator_anchor_cells(3) = -1_i32
    real(dp) :: target_box_min(3) = 0.0d0
    real(dp) :: target_box_max(3) = 0.0d0
    !> cached_kneq0 の root operator を rank で分担して作るときの MPI 文脈。呼び出し側(runtime)が渡す。
    !! 既定は単一 rank で、collective は何もしない(C ABI・テスト・非 MPI build)。
    type(mpi_context) :: mpi
  end type fmm_options_type