seakeeping_leapfrog Module

leapfrog 算法计算量相对较少,精度适中,可用于力学求解



Contents


Subroutines

public subroutine leapfrog(func, x, v, a, t, m, dt, n)

速度比位移、加速度快半步长,本例程仅用作力学求解,求解一段时间内的力学变化,并更新时间

Arguments

Type IntentOptional Attributes Name
real :: func
real(kind=rk), intent(inout), dimension(*) :: x
real(kind=rk), intent(inout), dimension(*) :: v
real(kind=rk), intent(inout), dimension(*) :: a
real(kind=rk), intent(inout) :: t
integer, intent(in) :: m
real(kind=rk), intent(in) :: dt
integer, intent(in) :: n

public subroutine leapfrog_init(func, x0, v0, a0, t0, dt, n)

初始化leapfrog算法,初始化加速度及推进速度半步长

Arguments

Type IntentOptional Attributes Name
real :: func
real(kind=rk), intent(in), dimension(*) :: x0
real(kind=rk), intent(inout), dimension(*) :: v0
real(kind=rk), intent(out), dimension(*) :: a0
real(kind=rk), intent(in) :: t0
real(kind=rk), intent(in) :: dt
integer, intent(in) :: n

public subroutine leapfrog_final(v0, a0, dt, n)

速度后退半步长,使其与位移、加速度同步

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(inout), dimension(*) :: v0
real(kind=rk), intent(in), dimension(*) :: a0
real(kind=rk), intent(in) :: dt
integer, intent(in) :: n