上部真空域のfactorized P0-panel Fourier場だけで、失敗した1 stepを最初から再試行する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mesh_type), | intent(in) | :: | mesh | |||
| type(sim_config), | intent(in) | :: | sim | |||
| type(electrostatic_snapshot_type), | intent(inout) | :: | snapshot | |||
| real(kind=dp), | intent(in) | :: | bfield(3) | |||
| real(kind=dp), | intent(in) | :: | x0(3) | |||
| real(kind=dp), | intent(in) | :: | v0(3) | |||
| real(kind=dp), | intent(in) | :: | q | |||
| real(kind=dp), | intent(in) | :: | m | |||
| real(kind=dp), | intent(in) | :: | dt | |||
| type(particle_step_result), | intent(out) | :: | result | |||
| logical, | intent(out) | :: | field_available | |||
| type(external_boundary_contract_type), | intent(in), | optional | :: | boundary_contract | ||
| integer(kind=i64), | intent(in), | optional | :: | boundary_rng_counter(4) |
subroutine advance_particle_step_upper_panel_fourier( & mesh, sim, snapshot, bfield, x0, v0, q, m, dt, result, field_available, & boundary_contract, boundary_rng_counter & ) type(mesh_type), intent(in) :: mesh type(sim_config), intent(in) :: sim type(electrostatic_snapshot_type), intent(inout) :: snapshot real(dp), intent(in) :: bfield(3), x0(3), v0(3), q, m, dt type(particle_step_result), intent(out) :: result logical, intent(out) :: field_available type(external_boundary_contract_type), intent(in), optional :: boundary_contract integer(i64), intent(in), optional :: boundary_rng_counter(4) field_available = .true. call advance_particle_step_impl( & mesh, sim, snapshot, bfield, x0, v0, q, m, dt, result, boundary_contract, boundary_rng_counter, 0_i32, & .true., field_available & ) end subroutine advance_particle_step_upper_panel_fourier