bem_pusher Module

荷電粒子の時間発展にBoris法を適用する運動方程式ソルバ。


Uses

  • module~~bem_pusher~~UsesGraph module~bem_pusher bem_pusher module~bem_kinds bem_kinds module~bem_pusher->module~bem_kinds iso_fortran_env iso_fortran_env module~bem_kinds->iso_fortran_env

Used by

  • module~~bem_pusher~~UsedByGraph module~bem_pusher bem_pusher module~bem_simulator bem_simulator module~bem_simulator->module~bem_pusher module~bem_simulator_io bem_simulator_io module~bem_simulator_io->module~bem_simulator module~bem_simulator_loop bem_simulator_loop module~bem_simulator_loop->module~bem_simulator module~bem_simulator_stats bem_simulator_stats module~bem_simulator_stats->module~bem_simulator program~main main program~main->module~bem_simulator

Functions

public pure function cross(a, b) result(c)

3次元ベクトルの外積を返す基本演算。

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: a(3)
real(kind=dp), intent(in) :: b(3)

Return Value real(kind=dp), (3)


Subroutines

public subroutine boris_push(x, v, q, m, dt, e, b, x_new, v_new)

電場半ステップ加速と磁場回転を組み合わせ、1タイムステップ後の位置・速度を計算する。

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: x(3)
real(kind=dp), intent(in) :: v(3)
real(kind=dp), intent(in) :: q

粒子1個あたりの電荷 [C]。

real(kind=dp), intent(in) :: m

粒子1個あたりの電荷 [C]。 粒子1個あたりの質量 [kg]。

real(kind=dp), intent(in) :: dt

粒子1個あたりの電荷 [C]。 粒子1個あたりの質量 [kg]。 時間刻み幅 [s]。

real(kind=dp), intent(in) :: e(3)

粒子1個あたりの電荷 [C]。 粒子1個あたりの質量 [kg]。 時間刻み幅 [s]。

real(kind=dp), intent(in) :: b(3)

粒子1個あたりの電荷 [C]。 粒子1個あたりの質量 [kg]。 時間刻み幅 [s]。

real(kind=dp), intent(out) :: x_new(3)
real(kind=dp), intent(out) :: v_new(3)