| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(field_solver_type), | public | :: | nonzero_solver | ||||
| real(kind=dp), | public | :: | prescribed_e(3) | = | [0.0_dp, 0.0_dp, 0.0_dp] | ||
| real(kind=dp), | public | :: | prescribed_phi_origin(3) | = | [0.0_dp, 0.0_dp, 0.0_dp] | ||
| logical, | public | :: | use_zero_mode | = | .false. | ||
| logical, | public | :: | use_panel_spectral_reference | = | .false. | ||
| logical, | public | :: | use_cached_kneq0 | = | .false. | ||
| logical, | public | :: | use_upper_panel_fourier_retry | = | .false. | ||
| real(kind=dp), | public | :: | periodic_length(2) | = | [0.0_dp, 0.0_dp] | ||
| real(kind=dp), | public | :: | periodic_origin(2) | = | [0.0_dp, 0.0_dp] | ||
| integer(kind=i32), | public | :: | reference_mode_layers | = | 0_i32 | ||
| integer(kind=i32), | public | :: | panel_quadrature_order | = | 0_i32 | ||
| type(periodic_zero_mode_plan_type), | public | :: | zero_plan | ||||
| type(periodic_zero_mode_state_type), | public | :: | zero_state | ||||
| type(periodic_nonzero_upper_vacuum_plan_type), | public | :: | upper_fourier_plan | ||||
| type(periodic2_physics_config), | public | :: | periodic_options | ||||
| type(electrostatic_diagnostics_type), | public | :: | diagnostics | ||||
| real(kind=dp), | public | :: | gauss_residual | = | 0.0_dp | ||
| logical, | public | :: | matching_plane_gauge_active | = | .false. | ||
| real(kind=dp), | public | :: | matching_plane_z | = | 0.0_dp | ||
| real(kind=dp), | public | :: | matching_plane_phi | = | 0.0_dp |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(inout) | :: | self | |||
| type(mesh_type), | intent(in) | :: | mesh | |||
| type(sim_config), | intent(in) | :: | sim | |||
| type(field_physics_config), | intent(in), | optional | :: | field_config | ||
| type(periodic2_physics_config), | intent(in), | optional | :: | periodic_config | ||
| type(panel_kernel_config), | intent(in), | optional | :: | panel_config |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(inout) | :: | self | |||
| type(mesh_type), | intent(in) | :: | mesh |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(inout) | :: | self | |||
| type(mesh_type), | intent(in) | :: | mesh | |||
| real(kind=dp), | intent(in) | :: | position(3) | |||
| real(kind=dp), | intent(out) | :: | electric_field(3) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(inout) | :: | self | |||
| type(mesh_type), | intent(in) | :: | mesh | |||
| real(kind=dp), | intent(in) | :: | position(3) | |||
| real(kind=dp), | intent(out) | :: | electric_field(3) | |||
| logical, | intent(out) | :: | available |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(inout) | :: | self | |||
| type(mesh_type), | intent(in) | :: | mesh | |||
| real(kind=dp), | intent(in) | :: | position(3) | |||
| real(kind=dp), | intent(out) | :: | potential | |||
| logical, | intent(out) | :: | available |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(inout) | :: | self | |||
| type(mesh_type), | intent(in) | :: | mesh | |||
| type(sim_config), | intent(in) | :: | sim | |||
| real(kind=dp), | intent(in) | :: | position(3) | |||
| real(kind=dp), | intent(out) | :: | potential |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(inout) | :: | self | |||
| type(mesh_type), | intent(in) | :: | mesh | |||
| type(sim_config), | intent(in) | :: | sim | |||
| integer(kind=i32), | intent(in) | :: | element | |||
| real(kind=dp), | intent(out) | :: | potential |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(inout) | :: | self | |||
| type(mesh_type), | intent(in) | :: | mesh | |||
| type(sim_config), | intent(in) | :: | sim | |||
| real(kind=dp), | intent(out) | :: | potential(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(inout) | :: | self | |||
| type(mesh_type), | intent(in) | :: | mesh | |||
| real(kind=dp), | intent(in) | :: | candidate_charge(:) | |||
| real(kind=dp), | intent(out) | :: | max_abs_delta_phi_v | |||
| real(kind=dp), | intent(out), | optional | :: | delta_phi_v(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(in) | :: | self | |||
| type(electrostatic_diagnostics_type), | intent(out) | :: | diagnostics |
周期k=0成分の電位ゲージをmatching planeへ移す。 非ゼロモードのsolver/cacheは変更しない。次回refreshでもこのゲージを保持する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(inout) | :: | self | |||
| type(mesh_type), | intent(in) | :: | mesh | |||
| real(kind=dp), | intent(in) | :: | z_high | |||
| real(kind=dp), | intent(in) | :: | phi_high |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(inout) | :: | self | |||
| type(mesh_type), | intent(in) | :: | mesh |
matching plane直下の法線電束密度 D_H = eps0 E_bottom + Q/A を返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(electrostatic_snapshot_type), | intent(in) | :: | self |
type, public :: electrostatic_snapshot_type type(field_solver_type) :: nonzero_solver real(dp) :: prescribed_e(3) = [0.0_dp, 0.0_dp, 0.0_dp] real(dp) :: prescribed_phi_origin(3) = [0.0_dp, 0.0_dp, 0.0_dp] logical :: use_zero_mode = .false. logical :: use_panel_spectral_reference = .false. logical :: use_cached_kneq0 = .false. logical :: use_upper_panel_fourier_retry = .false. real(dp) :: periodic_length(2) = [0.0_dp, 0.0_dp] real(dp) :: periodic_origin(2) = [0.0_dp, 0.0_dp] integer(i32) :: reference_mode_layers = 0_i32 integer(i32) :: panel_quadrature_order = 0_i32 type(periodic_zero_mode_plan_type) :: zero_plan type(periodic_zero_mode_state_type) :: zero_state type(periodic_nonzero_upper_vacuum_plan_type) :: upper_fourier_plan type(periodic2_physics_config) :: periodic_options type(electrostatic_diagnostics_type) :: diagnostics real(dp) :: gauss_residual = 0.0_dp logical :: matching_plane_gauge_active = .false. real(dp) :: matching_plane_z = 0.0_dp real(dp) :: matching_plane_phi = 0.0_dp contains procedure :: init => init_electrostatic_snapshot procedure :: refresh => refresh_electrostatic_snapshot procedure :: eval_local_e => eval_snapshot_local_e procedure :: eval_upper_panel_fourier_e => eval_snapshot_upper_panel_fourier_e procedure :: eval_upper_panel_fourier_phi => eval_snapshot_upper_panel_fourier_phi procedure :: eval_local_phi => eval_snapshot_local_phi procedure :: eval_local_phi_without_primary_self => eval_snapshot_local_phi_without_primary_self procedure :: compute_mesh_potential => compute_snapshot_mesh_potential procedure :: measure_kneq0_potential_step => measure_snapshot_kneq0_potential_step procedure :: get_diagnostics => get_snapshot_diagnostics procedure :: set_matching_plane_gauge => set_snapshot_matching_plane_gauge procedure :: clear_matching_plane_gauge => clear_snapshot_matching_plane_gauge procedure :: get_matching_plane_displacement => get_snapshot_matching_plane_displacement end type electrostatic_snapshot_type