|
10F 币
当位移x的初值x0=-12,v0=3时,进行运动学求解,采用ivprk求解微分方程,此时加速度为2,但我想要当得到的位移xt>16时,停止计算,将停止时的时间t2变成新的t0,停止时的速度vt和xt变成新的速度和位移的初值v0,x0,然后再进行第二次求微分方程,此时加速度为10。我的程序已经列出,但是总是报错,求大神指导。
[Fortran] 纯文本查看 复制代码 02 | INTEGER * 4 MTIME , MXPARM , NP , IDO , MC , istep |
03 | PARAMETER ( MXPARM = 50 , MTIME = 5000000000 , NP = 50 ) |
04 | REAL * 8 Y ( NP ) , YPRIME ( NP ) , Y 2 ( NP ) , YPRIME 2 ( NP ) |
06 | real * 8 x ( -300 : 300 ) , xe ( 0 : 2000 , -300 : 300 ) |
07 | real * 8 vex ( -300 : 300 ) , ve ( 0 : 2000 ) |
08 | real * 8 t ( 0 : 2000 ) , a ( 0 : 3000 ) |
09 | real * 8 t_stop , t_start , del_t |
10 | REAL * 8 TOL , T 1 , T 2 , t 11 , t 21 |
11 | external DIVPRK , DSET , FCN 1 , fcn 2 |
22 | 1 'C : \USERS\YANGBO\DESKTOP\test_tang\test_xiabishi |
26 | CALL DSET ( MXPARM , 0.0D0 , PARAM , 1 ) |
36 | CALL DIVPRK ( IDO , NP , FCN 1 , T 1 , T 2 , TOL , PARAM , Y ) |
43 | CALL DSET ( MXPARM , 0.0D0 , PARAM , 1 ) |
56 | CALL DIVPRK ( IDO , NP , FCN 2 , T 11 , T 21 , TOL , PARAM , Y 2 ) |
58 | write ( 3725 , 1345 ) t 2 , y ( 2 ) , y ( 1 ) , y 2 ( 2 ) , y 2 ( 1 ) |
60 | 1345 format ( 1 x , 4 ( x , d 13.6 ) ) |
63 | IF ( T 2 <= T_STOP ) GOTO 110 |
72 | subroutine FCN 1 ( NP , T 2 , Y , YPRIME ) |
73 | INTEGER * 4 NP , npv 21 , npz , npx |
74 | REAL * 8 Y ( NP ) , YPRIME ( NP ) |
82 | subroutine FCN 2 ( NP , T 21 , Y 2 , YPRIME 2 ) |
83 | INTEGER * 4 NP , npv 21 , npz , npx |
84 | REAL * 8 Y 2 ( NP ) , YPRIME 2 ( NP ) |
|
|