leapfrog 算法计算量相对较少,精度适中,可用于力学求解
速度比位移、加速度快半步长,本例程仅用作力学求解,求解一段时间内的力学变化,并更新时间
Type | Intent | Optional | 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 |
初始化leapfrog算法,初始化加速度及推进速度半步长
Type | Intent | Optional | 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 |
速度后退半步长,使其与位移、加速度同步
Type | Intent | Optional | 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 |