表面モデルごとの電荷更新後処理を扱うモジュール。
mesh_id ごとの浮遊導体を、snapshot が返す電位で等電位化する solver。
影響行列は幾何と場の境界条件だけで決まるので初期化時に一度組み、batch ごとには
固定電荷が作る電位だけを snapshot から取り直す。free-space と periodic2 の両方で同じ経路を使う。
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=i32), | public | :: | ncond | = | 0_i32 | ||
| integer(kind=i32), | public | :: | ngroup | = | 0_i32 | ||
| integer(kind=i32), | public, | allocatable | :: | elems(:) | |||
| integer(kind=i32), | public, | allocatable | :: | group(:) | |||
| integer(kind=i32), | public, | allocatable | :: | group_mesh_id(:) | |||
| real(kind=dp), | public, | allocatable | :: | influence(:,:) |
conductor 要素 j の単位電荷が要素 i の重心に作る電位を |
||
| real(kind=dp), | public, | allocatable | :: | factors(:,:) |
等電位条件と group 総電荷保存を並べた正方系の LU 分解。 |
||
| integer(kind=i32), | public, | allocatable | :: | pivot(:) |
| procedure, public :: init => init_floating_conductor_solver | |
| procedure, public :: active => floating_conductor_solver_active | |
| procedure, public :: relax => relax_floating_conductor_charges |