コンテンツにスキップ
開発版ドキュメント — このサイトはmainブランチ向けで、インストール済みリリースと異なる場合があります。変更履歴を確認してください。

periodic2静電場

field_boundary.mode="periodic2" の静電場は、x/y 周期・z 非周期の slab で有限画像、無限周期 k\ne0、平面平均 k=0 を別々に計算し、各成分を一度ずつ加算します。

zero mode の「ゼロ」は x/y の波数 kx=ky=0k_x=k_y=0 を意味します。この成分は高さに依存する平面平均の電場で、 下側境界条件と 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] は周期軸を 上書きできません。

成分物理的な意味production経路
primary + near imagesprimary cell近傍の強い局所場Direct/FMMの有限画像和
far k\ne0x/y方向に変化する無限周期遠方場cached_kneq0 operator
surface k=0各高さより下の総電荷が作る平面平均場triangle-height累積多項式

cached_kneq0 は surface k=0 を除いた nonzero mode を返し、場の合成処理が境界条件を反映した physical k=0 を一度だけ加えます。実行構成は periodic2 有限画像構成を参照してください。

非零modeの構成用途制約
finite images小規模比較、有限画像model画像範囲外は含まない
panel_spectral_referencetriangle P0の小規模referenceDirect、mode/quadrature収束が必要
cached_kneq0FMM productionの無限周期nonzero modex/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と設定した画像層NNについて

(i,j)[N,N]2(i,j)\in[-N,N]^2

のsourceを陽に加えます。near fieldは元のkernelで評価できますが、範囲外に続く画像が作る滑らかなfar fieldは 含まれません。したがって、field_periodic_far_correction="none"は有限画像modelです。NNを増やした結果が 収束するまでは、無限周期解として扱えません。

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 を一度だけ加えます。

Ksurface=(Kshell+REwaldfullK0sym)+K0physicalK_\mathrm{surface} =\left(K_\mathrm{shell}+R_\mathrm{Ewald}^{\mathrm{full}}-K_0^\mathrm{sym}\right) +K_0^\mathrm{physical}

括弧内が nonzero backend の責務です。zero_mode_policy="exclude_k0" は平均場を捨てる指定ではなく、二重加算を 防ぐ ownership 規則です。Ewald 分割、operator fit、FMM への注入位置、cache lifecycle は periodic2 遠方補正にまとめています。

triangle iiの総電荷をqiq_i、面積のうち高さzz以下にある割合をFi(z)F_i(z)とすると、平面平均された累積電荷は

C(z)=iqiFi(z)C(z)=\sum_iq_iF_i(z)

です。FiF_iは3頂点の高さの間で区分二次関数になります。geometry planは全頂点の高さをsortしてbreakpointを作り、 各triangleがそれぞれの区間へ加える二次係数を保存します。水平triangleはsheet chargeとして別に保持します。 面上評価ではminus trace、plus trace、principal valueを区別します。

batchでqiq_iが変わると、保存済みgeometry係数へqiq_iを掛けて区間差分を作り、prefix sumで

C(z)=a0+a1z+a2z2C(z)=a_0+a_1z+a_2z^2

の区間係数とそのprimitiveを更新します。geometry planは再構築しません。

Gauss則からzero-mode fieldとpotentialを求める

Section titled “Gauss則からzero-mode fieldとpotentialを求める”

cell面積A=LxLyA=L_xL_y、下側far fieldをEbottomE_\mathrm{bottom}とするとGauss則から

E0(z)=Ebottom+C(z)ϵ0AE_0(z)=E_\mathrm{bottom}+\frac{C(z)}{\epsilon_0A}

です。gauge点(zg,ϕg)(z_g,\phi_g)からのpotentialは

ϕ0(z)=ϕgEbottom(zzg)1ϵ0AzgzC(ζ)dζ\phi_0(z)=\phi_g-E_\mathrm{bottom}(z-z_g) -\frac1{\epsilon_0A}\int_{z_g}^zC(\zeta)\,d\zeta

です。breakpoint区間を二分探索し、区間内の二次式と三次primitiveを使うため、1点評価はO(logNz)O(\log N_z)です。

非中性cellではz遠方に一定fieldと線形potentialが残り得ます。zero modeは数値的に消してよい成分ではなく、Gauss則と 境界条件を満たす物理成分です。

z方向の境界条件で平均場を閉じる

Section titled “z方向の境界条件で平均場を閉じる”

総表面電荷Q=iqiQ=\sum_iq_iについて、現行選択は次のとおりです。

lower_boundary_modelEbottomE_\mathrm{bottom}EtopE_\mathrm{top}意味
symmetric_vacuumQ/(2ϵ0A)-Q/(2\epsilon_0A)+Q/(2ϵ0A)+Q/(2\epsilon_0A)上下に同じvacuum半空間がある無外場境界条件
e_bottom_zero00Q/(ϵ0A)Q/(\epsilon_0A)下側電束を0に固定するlegacy境界条件

どちらのmodelも、誘電体内部のscreeningやpolarizationは解きません。symmetric_vacuumは、追加のinterfaceや 誘電率を持たない最小の対称境界条件です。e_bottom_zeroは過去の計算を再現するための設定であり、一般的な 物理defaultではありません。

matching_plane_quasistaticでは、同じlower closureと全表面電荷から整合面直下の DH=ϵ0Ebottom+Q/AD_H=\epsilon_0E_\mathrm{bottom}+Q/Aを外部応答へ渡します。応答が返した(H,ΦH)(H,\Phi_H)を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

  • finite image modelではimage layerを増やして目的量を収束させる。
  • cached modelではcache miss/hit、thread/MPI構成で同じoperator結果を確認する。
  • Ewald α\alpha、real/reciprocal layer、proxy/check設定に対するteacher/operator誤差を確認する。
  • primary、near、far、symmetric k=0 subtraction、physical k=0の二重加算がないことをoracleと比較する。
  • Gauss residualと上下の境界条件を確認する。
  • 非中性cellの有限高さpotential差を、そのまま無限遠escape energyと解釈しない。

FMM内部のEwald式とoperator APIはFMM内部実装にまとめています。