Coulomb FMM tree 構造の共通ユーティリティ。
座標が親ノード中心のどの八分木に属するかを返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | x |
判定する x 座標。 |
||
| real(kind=dp), | intent(in) | :: | y |
判定する x 座標。 判定する y 座標。 |
||
| real(kind=dp), | intent(in) | :: | z |
判定する x 座標。 判定する y 座標。 判定する z 座標。 |
||
| real(kind=dp), | intent(in) | :: | center(3) |
判定する x 座標。 判定する y 座標。 判定する z 座標。 |
現在有効な木のノード数を返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
FMM 計画。 |
||
| logical, | intent(in) | :: | use_target_tree |
target 木を使うなら |
有効な木の指定ノードにある子ノード数を返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
FMM 計画。 |
||
| logical, | intent(in) | :: | use_target_tree |
target 木を使うなら |
||
| integer(kind=i32), | intent(in) | :: | node_idx |
ノード番号。 |
有効な木の子ノード番号を返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
FMM 計画。 |
||
| logical, | intent(in) | :: | use_target_tree |
target 木を使うなら |
||
| integer(kind=i32), | intent(in) | :: | child_k |
子の連番。 |
||
| integer(kind=i32), | intent(in) | :: | node_idx |
子の連番。 親ノード番号。 |
有効な木の子ノードが属する八分木番号を返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
FMM 計画。 |
||
| logical, | intent(in) | :: | use_target_tree |
target 木を使うなら |
||
| integer(kind=i32), | intent(in) | :: | child_k |
子の連番。 |
||
| integer(kind=i32), | intent(in) | :: | node_idx |
子の連番。 親ノード番号。 |
有効な木のノード中心座標を返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
FMM 計画。 |
||
| logical, | intent(in) | :: | use_target_tree |
target 木を使うなら |
||
| integer(kind=i32), | intent(in) | :: | node_idx |
ノード番号。 |
有効な木のノード半サイズを返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
FMM 計画。 |
||
| logical, | intent(in) | :: | use_target_tree |
target 木を使うなら |
||
| integer(kind=i32), | intent(in) | :: | node_idx |
ノード番号。 |
有効な木のノード外接半径を返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
FMM 計画。 |
||
| logical, | intent(in) | :: | use_target_tree |
target 木を使うなら |
||
| integer(kind=i32), | intent(in) | :: | node_idx |
ノード番号。 |
有効な木の最大深さを返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
FMM 計画。 |
||
| logical, | intent(in) | :: | use_target_tree |
target 木を使うなら |
レベル配列からノード番号を返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
FMM 計画。 |
||
| logical, | intent(in) | :: | use_target_tree |
target 木を使うなら |
||
| integer(kind=i32), | intent(in) | :: | level_pos |
レベル内位置。 |
target/source ノードが十分離れているかを判定する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
FMM 計画。 |
||
| integer(kind=i32), | intent(in) | :: | target_node |
target ノード番号。 |
||
| integer(kind=i32), | intent(in) | :: | source_node |
target ノード番号。 source ノード番号。 |
指定深さのレベル範囲を返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
FMM 計画。 |
||
| logical, | intent(in) | :: | use_target_tree |
target 木を使うなら |
||
| integer(kind=i32), | intent(in) | :: | depth |
深さ。 |
||
| integer(kind=i32), | intent(out) | :: | level_start_pos |
レベル先頭位置。 |
||
| integer(kind=i32), | intent(out) | :: | level_end_pos |
レベル先頭位置。 レベル末尾位置。 |
整数バッファへ値を追加し、必要なら容量を拡張する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=i32), | intent(inout), | allocatable | :: | buf(:) | ||
| integer(kind=i32), | intent(inout) | :: | n_used |
使用中要素数。 |
||
| integer(kind=i32), | intent(inout) | :: | capacity |
使用中要素数。 確保容量。 |
||
| integer(kind=i32), | intent(in) | :: | value |
追加する値。 |