| 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)。 |
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