periodic2静電場
field_boundary.mode="periodic2" の静電場は、x/y 周期・z 非周期の slab で有限画像、無限周期 k\ne0、平面平均
k=0 を別々に計算し、各成分を一度ずつ加算します。
zero mode の「ゼロ」は x/y の波数 を意味します。この成分は高さに依存する平面平均の電場で、 下側境界条件と Gauss 則から決まります。電場ソルバーが扱う物理成分の一つです。
domain topology と場 closure を指定する
Section titled “domain topology と場 closure を指定する”[domain]box_min = [0.0, 0.0, 0.0]box_max = [1.0, 1.0, 1.0]periodic_axes = ["x", "y"]
[field_boundary]mode = "periodic2"周期性は [domain] の topology です。[field_boundary] はその cell に適用する free / periodic2 の場 closure を
選びます。現行 periodic2 は x/y 周期・z 非周期だけを受理し、species や [particle_boundary] は周期軸を
上書きできません。
場を3つの成分に分ける
Section titled “場を3つの成分に分ける”| 成分 | 物理的な意味 | production経路 |
|---|---|---|
| primary + near images | primary cell近傍の強い局所場 | Direct/FMMの有限画像和 |
far k\ne0 | x/y方向に変化する無限周期遠方場 | cached_kneq0 operator |
surface k=0 | 各高さより下の総電荷が作る平面平均場 | triangle-height累積多項式 |
cached_kneq0 は surface k=0 を除いた nonzero mode を返し、場の合成処理が境界条件を反映した physical
k=0 を一度だけ加えます。実行構成は periodic2 有限画像構成を参照してください。
nonzero modeの計算経路を選ぶ
Section titled “nonzero modeの計算経路を選ぶ”| 非零modeの構成 | 用途 | 制約 |
|---|---|---|
| finite images | 小規模比較、有限画像model | 画像範囲外は含まない |
panel_spectral_reference | triangle P0の小規模reference | Direct、mode/quadrature収束が必要 |
cached_kneq0 | FMM productionの無限周期nonzero mode | x/y periodic、z nonperiodic、exclude_k0 |
field_periodic_far_correction="auto" は互換性のため none として動作します。無限周期の production 計算では
cached_kneq0 を明示します。起動時に高水準設定と typed [periodic2] の整合性を検証し、zero-mode ownership
の矛盾を拒否します。削除済みの [outer_plasma] と [coupling] は unknown input です。
m2l_root_oracleは削除済みで、設定すると起動時にrejectされます。
Ewald2P teacher、root multipoleからlocal展開へのoperator、cacheとFMM stateの接続は periodic2遠方補正に分けています。このページでは、それを場全体のnonzero成分として扱います。
有限画像和が含む範囲を定める
Section titled “有限画像和が含む範囲を定める”primary cellと設定した画像層について
のsourceを陽に加えます。near fieldは元のkernelで評価できますが、範囲外に続く画像が作る滑らかなfar fieldは
含まれません。したがって、field_periodic_far_correction="none"は有限画像modelです。を増やした結果が
収束するまでは、無限周期解として扱えません。
FMMのnear image層はfar operatorを作るときに差し引くshellと一致する必要があります。cache fingerprintが画像層を identityに含むのはこのためです。
Ewald2Pで無限周期の遠方場を分離する
Section titled “Ewald2Pで無限周期の遠方場を分離する”cached_kneq0 は Ewald2P teacher と有限画像 shell の差を operator として適用し、teacher 由来の対称 k=0 を
除きます。場の合成処理は選択した physical k=0 を一度だけ加えます。
括弧内が nonzero backend の責務です。zero_mode_policy="exclude_k0" は平均場を捨てる指定ではなく、二重加算を
防ぐ ownership 規則です。Ewald 分割、operator fit、FMM への注入位置、cache lifecycle は
periodic2 遠方補正にまとめています。
物理k=0を一度だけ加える
Section titled “物理k=0を一度だけ加える”triangle の総電荷を、面積のうち高さ以下にある割合をとすると、平面平均された累積電荷は
です。は3頂点の高さの間で区分二次関数になります。geometry planは全頂点の高さをsortしてbreakpointを作り、 各triangleがそれぞれの区間へ加える二次係数を保存します。水平triangleはsheet chargeとして別に保持します。 面上評価ではminus trace、plus trace、principal valueを区別します。
batchでが変わると、保存済みgeometry係数へを掛けて区間差分を作り、prefix sumで
の区間係数とそのprimitiveを更新します。geometry planは再構築しません。
Gauss則からzero-mode fieldとpotentialを求める
Section titled “Gauss則からzero-mode fieldとpotentialを求める”cell面積、下側far fieldをとするとGauss則から
です。gauge点からのpotentialは
です。breakpoint区間を二分探索し、区間内の二次式と三次primitiveを使うため、1点評価はです。
非中性cellではz遠方に一定fieldと線形potentialが残り得ます。zero modeは数値的に消してよい成分ではなく、Gauss則と 境界条件を満たす物理成分です。
z方向の境界条件で平均場を閉じる
Section titled “z方向の境界条件で平均場を閉じる”総表面電荷について、現行選択は次のとおりです。
lower_boundary_model | 意味 | ||
|---|---|---|---|
symmetric_vacuum | 上下に同じvacuum半空間がある無外場境界条件 | ||
e_bottom_zero | 下側電束を0に固定するlegacy境界条件 |
どちらのmodelも、誘電体内部のscreeningやpolarizationは解きません。symmetric_vacuumは、追加のinterfaceや
誘電率を持たない最小の対称境界条件です。e_bottom_zeroは過去の計算を再現するための設定であり、一般的な
物理defaultではありません。
matching_plane_quasistaticでは、同じlower closureと全表面電荷から整合面直下の
を外部応答へ渡します。応答が返したをzero-modeのgauge点に
するため、場とGauss則を変えずにinner potentialを外部シースへ連続させます。外部のfield profileをBEACH領域へ
追加する処理ではありません。構成と高さ依存性の検証は
matching-plane準定常連成にまとめています。
粒子衝突では軌道が届く周期画像を調べる
Section titled “粒子衝突では軌道が届く周期画像を調べる”field targetはprimary periodic cellへwrapして評価しますが、軌道上の衝突・境界位置は物理座標のまま保持します。 mesh collisionでは、軌道線分が到達し得るperiodic imageを幾何的に探索します。fieldのnear-image layerと collisionのimage boundは、それぞれ独立に決まります。1
成分ごとに収束を確認する
Section titled “成分ごとに収束を確認する”- finite image modelではimage layerを増やして目的量を収束させる。
- cached modelではcache miss/hit、thread/MPI構成で同じoperator結果を確認する。
- Ewald 、real/reciprocal layer、proxy/check設定に対するteacher/operator誤差を確認する。
- primary、near、far、symmetric
k=0subtraction、physicalk=0の二重加算がないことをoracleと比較する。 - Gauss residualと上下の境界条件を確認する。
- 非中性cellの有限高さpotential差を、そのまま無限遠escape energyと解釈しない。
FMM内部のEwald式とoperator APIはFMM内部実装にまとめています。
Code reference
Section titled “Code reference”- periodic FMM plan/state/evaluation:
bem_coulomb_fmm_core.f90 - Ewald teacherとcached root operator:
bem_coulomb_fmm_periodic_root_ops.f90 - cached symmetric
k=0subtraction:bem_coulomb_fmm_eval_ops.f90 - surface zero-mode plan/state:
bem_periodic_zero_mode_plan.f90 - zero-mode evaluation:
bem_periodic_zero_mode_eval.f90 - 非ゼロ Fourier 参照評価:
bem_coulomb_fmm_periodic_nonzero_reference.f90 - 上部真空域での Fourier 評価:
bem_coulomb_fmm_periodic_nonzero_upper_vacuum.f90 - component ownershipと場の合成:
bem_electrostatic_snapshot.f90