|
各位大神们求帮忙,为什么我的程序感觉没有赋值上的问题,但是Ex,Ey,Ez,Bx,By,Bz都没有值~
[Fortran] 纯文本查看 复制代码 06 | Subroutine Solve ( Func , T 0 , Tt , Y 0 , N ) |
10 | Real * 8 :: Y 0 ( N ) , Y ( N ) |
11 | Real * 8 :: K 1 ( N ) , K 2 ( N ) , K 3 ( N ) , K 4 ( N ) |
12 | Real * 8 :: H , Tt , T 0 , T |
18 | Call Func ( K 1 , T , Y , N ) |
19 | Call Func ( K 2 , T + H / 2 , Y + H / 2 * K 1 , N ) |
20 | Call Func ( K 3 , T + H / 2 , Y + H / 2 * K 2 , N ) |
21 | Call Func ( K 4 , T + H , Y + H * K 3 , N ) |
22 | Y = Y + ( K 1 +2 * K 2 +2 * K 3 + K 4 ) * H / 6 |
24 | Write ( 11 , 100 ) T , Y ( 1 : 6 ) |
26 | 100 Format ( 1 X , F 12.6 , 6 F 15.5 ) |
29 | Subroutine Fun 1 ( F , T , Y , N ) |
34 | Real * 8 :: W , R , Fai , Fai 0 |
35 | Real * 8 :: Ex , Ey , Ez , Bx , By , Bz |
42 | W = W 0 * Sqrt ( 1 + ( ( 2 * Y ( 6 ) ) / ( W 0 * * 2 ) ) * * 2 ) |
43 | R = Y ( 6 ) * ( 1 + ( ( W 0 * * 2 ) / ( 2 * Y ( 6 ) ) ) * * 2 ) |
44 | Fai = Atan ( ( W 0 * * 2 ) / ( 2 * Y ( 6 ) ) ) |
45 | Ex = ( W 0 / W ) * Exp ( ( - ( Y ( 4 ) * * 2 + Y ( 5 ) * * 2 ) / ( W * * 2 ) ) ) * Exp ( I * ( T - Y ( 6 ) - Fai - Fai 0 - ( ( Y ( 4 ) * * 2 + Y ( 5 ) * * 2 ) / ( 2 * R ) ) ) ) |
47 | Ez = ( ( 2 * Y ( 4 ) * * 2 ) / ( W * * 2 * R ) ) * Ex |
48 | Bx = ( ( 4 * Y ( 4 ) * * 2 * Y ( 5 ) * * 2 ) / ( W * * 4 * R * * 2 ) ) * Ex |
49 | By = ( ( 1 - ( ( W 0 * * 2 ) / ( 2 * Y ( 6 ) * R ) ) + ( ( 8 * Y ( 6 ) * * 3 * ( Y ( 4 ) * * 2 + Y ( 5 ) * * 2 ) * R ) / ( ( R -2 * Y ( 6 ) ) * * 2 ) ) - ( ( 4 * Y ( 4 ) * * 4 ) / ( W * * 4 * R * * 2 ) ) ) + I * ( ( ( 4 * Y ( 6 ) ) / ( W 0 * * 2 * W * * 2 ) ) + ( ( 4 * Y ( 4 ) ) / ( W * * 2 * R ) ) - ( ( 8 * Y ( 6 ) * ( Y ( 4 ) * * 2 + Y ( 5 ) * * 2 ) ) / ( W 0 * * 2 * W * * 4 ) ) ) ) * Ex |
50 | Bz = - ( ( 2 * Y ( 5 ) * * 2 ) / ( W * * 2 * R ) ) * Ex |
51 | F ( 1 ) = Q * ( Ex + ( Y ( 2 ) / Sqrt ( 1 + Y ( 2 ) * * 2 ) ) * Bz - ( Y ( 3 ) / Sqrt ( 1 + Y ( 3 ) * * 2 ) ) * By ) |
52 | F ( 2 ) = Q * ( Ey + ( Y ( 3 ) / Sqrt ( 1 + Y ( 3 ) * * 2 ) ) * Bx - ( Y ( 1 ) / Sqrt ( 1 + Y ( 1 ) * * 2 ) ) * Bz ) |
53 | F ( 3 ) = Q * ( Ez + ( Y ( 1 ) / Sqrt ( 1 + Y ( 1 ) * * 2 ) ) * By - ( Y ( 2 ) / Sqrt ( 1 + Y ( 2 ) * * 2 ) ) * Bx ) |
54 | F ( 4 ) = Y ( 1 ) / Sqrt ( 1 + Y ( 1 ) * * 2 ) |
55 | F ( 5 ) = Y ( 2 ) / Sqrt ( 1 + Y ( 2 ) * * 2 ) |
56 | F ( 6 ) = Y ( 3 ) / Sqrt ( 1 + Y ( 3 ) * * 2 ) |
65 | Real * 8 :: Y ( 6 ) , Y 0 ( 6 ) |
72 | Open ( Unit = 11 , File = 'result0.txt' ) |
76 | Y 0 = ( / Px 0 , 0 , Pz 0 , X 0 , 0 , Z 0 / ) |
77 | Call Solve ( Fun 1 , T 0 , Tt , Y 0 , N ) |
|
|