mesh_type や sim_config に依存しない Coulomb FMM コア API。
FMM 計画を構築する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(inout) | :: | plan |
構築先の計画。 |
||
| real(kind=dp), | intent(in) | :: | src_pos(:,:) | |||
| type(fmm_options_type), | intent(in) | :: | options |
FMM 設定。 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(inout) | :: | plan | |||
| real(kind=dp), | intent(in) | :: | v0(:,:) | |||
| real(kind=dp), | intent(in) | :: | v1(:,:) | |||
| real(kind=dp), | intent(in) | :: | v2(:,:) | |||
| type(fmm_options_type), | intent(in) | :: | options |
パネルソースの幾何だけを準備する(build_panel_plan の前半)。exact-direct 評価はこれで足りる。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(inout) | :: | plan | |||
| real(kind=dp), | intent(in) | :: | v0(:,:) | |||
| real(kind=dp), | intent(in) | :: | v1(:,:) | |||
| real(kind=dp), | intent(in) | :: | v2(:,:) | |||
| type(fmm_options_type), | intent(in) | :: | options |
prepare_panel_sources 済みの計画に木・相互作用・演算子を加え、build_panel_plan と同じ計画にする。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(inout) | :: | plan |
ソース電荷から FMM state を更新する。 全 rank が同じ plan と src_q で呼ぶこと。結果は分担しない場合と bit 単位で同じ。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
構築済みの FMM 計画。 |
||
| type(fmm_state_type), | intent(inout) | :: | state |
更新対象の state。 |
||
| real(kind=dp), | intent(in) | :: | src_q(:) | |||
| type(mpi_context), | intent(in), | optional | :: | mpi |
与えると M2L を target node のブロックごとに rank で分担し、局所展開を全 rank で揃える。 |
複数の評価点で電場を計算する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
構築済みの FMM 計画。 |
||
| type(fmm_state_type), | intent(inout) | :: | state |
評価に使う FMM state。 |
||
| real(kind=dp), | intent(in) | :: | target_pos(:,:) | |||
| real(kind=dp), | intent(out) | :: | e(:,:) |
複数の評価点で全ソースの直接和による電場を計算する(非周期のみ)。
ソース幾何(prepare_panel_sources 以降)と電荷 src_q(nsrc) だけを使う。Coulomb 係数は含まない。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan | |||
| real(kind=dp), | intent(in) | :: | src_q(:) | |||
| real(kind=dp), | intent(in) | :: | target_pos(:,:) | |||
| real(kind=dp), | intent(out) | :: | e(:,:) |
1 点で電場を計算する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
構築済みの FMM 計画。 |
||
| type(fmm_state_type), | intent(inout) | :: | state |
評価に使う FMM state。 |
||
| real(kind=dp), | intent(in) | :: | r(3) | |||
| real(kind=dp), | intent(out) | :: | e(3) |
複数の評価点で電位を計算する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
構築済みの FMM 計画。 |
||
| type(fmm_state_type), | intent(inout) | :: | state |
評価に使う FMM state。 |
||
| real(kind=dp), | intent(in) | :: | target_pos(:,:) | |||
| real(kind=dp), | intent(out) | :: | phi(:) |
複数の評価点で全ソースの直接和による電位を計算する(非周期のみ)。
ソース幾何(prepare_panel_sources 以降)と電荷 src_q(nsrc) だけを使う。Coulomb 係数は含まない。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan | |||
| real(kind=dp), | intent(in) | :: | src_q(:) | |||
| real(kind=dp), | intent(in) | :: | target_pos(:,:) | |||
| real(kind=dp), | intent(out) | :: | phi(:) |
1 点で電位を計算する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(in) | :: | plan |
構築済みの FMM 計画。 |
||
| type(fmm_state_type), | intent(inout) | :: | state |
評価に使う FMM state。 |
||
| real(kind=dp), | intent(in) | :: | r(3) | |||
| real(kind=dp), | intent(out) | :: | phi |
電位 [V]( |
FMM 計画を解放する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_plan_type), | intent(inout) | :: | plan |
解放対象の計画。 |
FMM state を解放する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fmm_state_type), | intent(inout) | :: | state |
解放対象の state。 |