|
我的程序没有出现错误,运行的时候有两个问题:
1.不知道为啥daltA1没算进去
2.A3和daltA1循环的时候位置对调,结果就不一样
谢谢大家关注,以下是我的程序
[Fortran] 纯文本查看 复制代码 009 | real * 8 C 1 , D 1 , E 1 , F 1 , refs , t |
010 | real , parameter :: pi = 3.14159 |
015 | character ( len = 80 ) :: filename = "data.txt" |
016 | integer , parameter :: fileid = 10 |
026 | open ( 10 , file = "data.txt" ) |
029 | do i = 1 , int ( 0.2 / 0.001 ) |
032 | call Get_Rf ( A 3 , daltA 1 , A 1 , A 2 , A 4 , Zi , Zr , Z 0 , t , E , F , E 1 , F 1 , ref , refs , Rf ) |
034 | write ( * , "('A3:'F8.5,'Rf:'F8.5,'daltA1:'F8.5)" ) A 3 , Rf , daltA 1 |
035 | write ( 10 , "('A3:'F8.5,'Rf:'F8.5,'daltA1:'F8.5)" ) A 3 , Rf , daltA 1 |
045 | subroutine A 3 _to_A ( A 3 , A 2 , A 4 , A ) |
048 | real , parameter :: pi = 3.14159 |
050 | A = cos ( 2.0 * pi * A 2 ) * cos ( 2.0 * pi * A 4 ) - sin ( 2.0 * pi * A 2 ) * ( - cos ( 2.0 * pi * A 4 ) / tan ( 2.0 * pi * A 3 ) + sin ( 2.0 * pi * A 4 ) ) |
055 | subroutine A 3 _to_B ( A 3 , A 2 , A 4 , Z 0 , B ) |
058 | real , parameter :: pi = 3.14159 |
061 | B = Z 0 * ( cos ( 2.0 * pi * A 2 ) * sin ( 2.0 * pi * A 4 ) + sin ( 2.0 * pi * A 2 ) * ( sin ( 2.0 * pi * A 4 ) / tan ( 2.0 * pi * A 3 ) + cos ( 2.0 * pi * A 4 ) ) ) |
065 | subroutine A 3 _to_C ( A 3 , A 1 , A 2 , A 4 , Z 0 , C ) |
067 | real * 8 A 1 , A 2 , A 3 , A 4 , C , Z 0 |
068 | real , parameter :: pi = 3.14159 |
071 | C = 1.0 / Z 0 * ( cos ( 2.0 * pi * A 4 ) * ( ( - cos ( 2.0 * pi * A 2 ) ) / tan ( 2.0 * pi * A 1 ) + sin ( 2.0 * pi * A 2 ) ) + ( sin ( 2.0 * pi * A 2 ) / tan ( 2.0 * pi * A 1 ) + cos ( 2.0 * pi * A 2 ) ) * ( ( - cos ( 2.0 * pi * A 4 ) ) / tan ( 2.0 * pi * A 3 ) + sin ( 2.0 * pi * A 4 ) ) ) |
076 | subroutine A 3 _to_D ( A 3 , A 1 , A 2 , A 4 , D ) |
079 | real , parameter :: pi = 3.14159 |
081 | D = - sin ( 2.0 * pi * A 4 ) * ( - cos ( 2.0 * pi * A 2 ) / tan ( 2.0 * pi * A 1 ) + sin ( 2.0 * pi * A 2 ) ) + ( sin ( 2.0 * pi * A 2 ) / tan ( 2.0 * pi * A 1 ) + cos ( 2.0 * pi * A 2 ) ) * ( sin ( 2.0 * pi * A 4 ) / tan ( 2.0 * pi * A 3 ) + cos ( 2.0 * pi * A 4 ) ) |
086 | subroutine Get_E ( Z 0 , Zi , Zr , A 3 , A 1 , A 2 , A 4 , E ) |
088 | real * 8 A , B , C , D , Z 0 , Zi , Zr , A 3 , E , A 1 , A 2 , A 4 |
090 | call A 3 _to_A ( A 3 , A 2 , A 4 , A ) |
091 | call A 3 _to_B ( A 3 , A 2 , A 4 , Z 0 , B ) |
092 | call A 3 _to_C ( A 3 , A 1 , A 2 , A 4 , Z 0 , C ) |
093 | call A 3 _to_D ( A 3 , A 1 , A 2 , A 4 , D ) |
096 | E = ( A * Zr * ( D - C * Zi ) + C * Zr * ( B + A * Zi ) ) / ( ( ( D - C * Zi ) * * 2 + Zr * * 2 * C * * 2 ) * Z 0 ) |
101 | subroutine Get_F ( A 3 , Z 0 , Zi , Zr , A 1 , A 2 , A 4 , F ) |
103 | real * 8 A , B , C , D , Zi , Zr , Z 0 , F , A 3 , A 1 , A 2 , A 4 |
105 | call A 3 _to_A ( A 3 , A 2 , A 4 , A ) |
106 | call A 3 _to_B ( A 3 , A 2 , A 4 , Z 0 , B ) |
107 | call A 3 _to_C ( A 3 , A 1 , A 2 , A 4 , Z 0 , C ) |
108 | call A 3 _to_D ( A 3 , A 1 , A 2 , A 4 , D ) |
110 | F = ( ( B + A * Zi ) * ( D - C * Zi ) - A * C * Zr * * 2 ) / ( ( ( D - C * Zi ) * * 2 + Zr * * 2 * C * * 2 ) * Z 0 ) |
115 | subroutine Get_ref ( A 3 , A 1 , A 2 , A 4 , Z 0 , Zi , Zr , E , F , ref ) |
117 | real * 8 E , F , A 3 , ref , Z 0 , Zi , Zr , A 1 , A 2 , A 4 |
118 | call Get_E ( Z 0 , Zi , Zr , A 3 , A 1 , A 2 , A 4 , E ) |
119 | call Get_F ( A 3 , Z 0 , Zi , Zr , A 1 , A 2 , A 4 , F ) |
121 | ref = ( ( E * * 2 -1 + F * * 2 ) * * 2 +4 * F * * 2 ) / ( ( ( E +1 ) * * 2 + F * * 2 ) * * 2 ) |
127 | subroutine daltA 1 _t 0 _t ( daltA 1 , A 1 , t ) |
137 | subroutine Get_C 1 ( A 3 , daltA 1 , A 1 , A 2 , A 4 , Z 0 , t , C 1 ) |
139 | real * 8 A 1 , A 2 , A 3 , A 4 , C 1 , Z 0 , daltA 1 , t |
140 | real , parameter :: pi = 3.14159 |
142 | call daltA 1 _t 0 _t ( daltA 1 , A 1 , t ) |
144 | C 1 = 1.0 / Z 0 * ( cos ( 2.0 * pi * A 4 ) * ( ( - cos ( 2.0 * pi * A 2 ) ) / tan ( 2.0 * pi * t ) + sin ( 2.0 * pi * A 2 ) ) + ( sin ( 2.0 * pi * A 2 ) / tan ( 2.0 * pi * t ) + cos ( 2.0 * pi * A 2 ) ) * ( ( - cos ( 2.0 * pi * A 4 ) ) / tan ( 2.0 * pi * A 3 ) + sin ( 2.0 * pi * A 4 ) ) ) |
149 | subroutine Get_D 1 ( A 3 , daltA 1 , A 1 , A 2 , A 4 , t , D 1 ) |
151 | real * 8 A 1 , A 2 , A 3 , A 4 , daltA 1 , t , D 1 |
152 | real , parameter :: pi = 3.14159 |
154 | call daltA 1 _t 0 _t ( daltA 1 , A 1 , t ) |
156 | D 1 = - sin ( 2.0 * pi * A 4 ) * ( - cos ( 2.0 * pi * A 2 ) / tan ( 2.0 * pi * t ) + sin ( 2.0 * pi * A 2 ) ) + ( sin ( 2.0 * pi * A 2 ) / tan ( 2.0 * pi * t ) + cos ( 2.0 * pi * A 2 ) ) * ( sin ( 2.0 * pi * A 4 ) / tan ( 2.0 * pi * A 3 ) + cos ( 2.0 * pi * A 4 ) ) |
161 | subroutine Get_E 1 ( A 3 , daltA 1 , A 1 , A 2 , A 4 , Z 0 , Zi , Zr , t , E 1 ) |
163 | real * 8 A , B , C 1 , D 1 , Z 0 , Zi , Zr , A 3 , E 1 , daltA 1 , t , A 1 , A 2 , A 4 |
165 | call A 3 _to_A ( A 3 , A 2 , A 4 , A ) |
166 | call A 3 _to_B ( A 3 , A 2 , A 4 , Z 0 , B ) |
167 | call Get_C 1 ( A 3 , daltA 1 , A 1 , A 2 , A 4 , Z 0 , t , C 1 ) |
168 | call Get_D 1 ( A 3 , daltA 1 , A 1 , A 2 , A 4 , t , D 1 ) |
171 | E 1 = ( A * Zr * ( D 1 - C 1 * Zi ) + C 1 * Zr * ( B + A * Zi ) ) / ( ( ( D 1 - C 1 * Zi ) * * 2 + Zr * * 2 * C 1 * * 2 ) * Z 0 ) |
175 | subroutine Get_F 1 ( A 3 , daltA 1 , A 1 , A 2 , A 4 , Zi , Zr , Z 0 , t , F 1 ) |
177 | real * 8 A , B , C 1 , D 1 , Zi , Zr , Z 0 , F 1 , A 3 , daltA 1 , t , A 1 , A 2 , A 4 |
179 | call A 3 _to_A ( A 3 , A 2 , A 4 , A ) |
180 | call A 3 _to_B ( A 3 , A 2 , A 4 , Z 0 , B ) |
181 | call Get_C 1 ( A 3 , daltA 1 , A 1 , A 2 , A 4 , Z 0 , t , C 1 ) |
182 | call Get_D 1 ( A 3 , daltA 1 , A 1 , A 2 , A 4 , t , D 1 ) |
185 | F 1 = ( ( B + A * Zi ) * ( D 1 - C 1 * Zi ) - A * C 1 * Zr * * 2 ) / ( ( ( D 1 - C 1 * Zi ) * * 2 + Zr * * 2 * C 1 * * 2 ) * Z 0 ) |
190 | subroutine Get_refs ( A 3 , A 1 , A 2 , A 4 , Zi , Zr , Z 0 , E 1 , F 1 , t , refs ) |
192 | real * 8 E 1 , F 1 , A 3 , refs , daltA 1 , A 1 , A 2 , A 4 , Z 0 , Zi , Zr , t |
193 | call Get_E 1 ( A 3 , daltA 1 , A 1 , A 2 , A 4 , Z 0 , Zi , Zr , t , E 1 ) |
194 | call Get_F 1 ( A 3 , daltA 1 , A 1 , A 2 , A 4 , Zi , Zr , Z 0 , t , F 1 ) |
196 | refs = ( ( E 1 * * 2 -1 + F 1 * * 2 ) * * 2 +4 * F 1 * * 2 ) / ( ( ( E 1 +1 ) * * 2 + F 1 * * 2 ) * * 2 ) |
201 | subroutine Get_Rf ( A 3 , daltA 1 , A 1 , A 2 , A 4 , Zi , Zr , Z 0 , t , E , F , E 1 , F 1 , ref , refs , Rf ) |
204 | real * 8 A 3 , daltA 1 , E , F , E 1 , F 1 , A 1 , A 2 , A 4 , Z 0 , Zi , Zr , t |
205 | call Get_ref ( A 3 , A 1 , A 2 , A 4 , Z 0 , Zi , Zr , E , F , ref ) |
206 | call Get_refs ( A 3 , A 1 , A 2 , A 4 , Zi , Zr , Z 0 , E 1 , F 1 , t , refs ) |
|
|