|
以下的程式碼執行後會出現以下錯誤訊息
取對數時的定義域有問題, 煩請各位先進指點迷津, 小弟感恩不盡 !!!
run-time error M6021:MATH
- log:DOMAIN error
[Fortran] 纯文本查看 复制代码 002 | IMPLICIT DOUBLE PRECISION ( A - H , O - Z ) |
007 | DIMENSION V ( MAX 1 +1 ) , XN ( MAX 1 ) , X ( MAX 1 , MAX 1 , MAX 1 ) , COLF ( MAX 1 , MAX 1 ) , & |
008 | XN 1 S ( MAX 1 ) , ZETA ( MAX 1 ) , DP ( MAX 1 ) , XM ( MAX 1 ) |
041 | DP ( I ) = ( 6 . * V ( I ) / PI ) * * 0.333333 |
045 | DP ( 1 ) = ( 6 . * V ( 1 ) / PI ) * * 0.333333 |
052 | IF ( V ( K ) .LE. ( V ( I ) + V ( J ) ) .AND. ( V ( I ) + V ( J ) ) .LT. V ( K +1 ) ) THEN |
053 | X ( I , J , K ) = ( V ( K +1 ) - V ( I ) - V ( J ) ) / ( V ( K +1 ) - V ( K ) ) |
055 | ELSE IF ( V ( K -1 ) .LE. ( V ( I ) + V ( J ) ) .AND. ( V ( I ) + V ( J ) ) .LT. V ( K ) ) THEN |
056 | X ( I , J , K ) = ( V ( I ) + V ( J ) - V ( K -1 ) ) / ( V ( K ) - V ( K -1 ) ) |
067 | S 1 = PI * ( TEMP 1 * * 0.66666666667 ) |
069 | PS = EXP ( C - D / T ) * 101325 . * P |
074 | 200 FORMAT ( 'Time' , 5 X , 'Temperature' , 5 X , 'XN(1)' , 5 X , 'XJK' , 5 X , 'S' , 5 X , 'Diameter' , 5 X , 'Particle volume' , 5 X , 'Total number' ) |
080 | DO WHILE ( T .GT. 1600 ) |
082 | PS = EXP ( C - D / T ) * 101325 . * P |
085 | THETA = ( S 1 * SIGMA ) / ( XKB * T ) |
086 | AA = ( 2 . * SIGMA ) / ( PI * XMASS ) |
087 | BB = THETA - ( 4 . * ( THETA * * 3 . ) ) / ( 27 . * ( DLOG ( DABS ( S ) ) * * 2 . ) ) |
088 | XJK = ( XNS * * 2 . ) * S * V 1 * ( AA * * 0.5 ) * EXP ( BB ) |
089 | CC = 0.6666667 * THETA / DLOG ( DABS ( S ) ) |
091 | DPSTAR = 4 . * SIGMA * V 1 / ( XKB * T * DLOG ( DABS ( S ) ) ) |
092 | VSTAR = PI * ( DPSTAR * * 3 . ) / 6 . |
105 | VTOTAL = VTOT + XN ( 1 ) * V ( 1 ) |
108 | DPAV = ( 6 . * VAV / PI ) * * 0.3333333 |
110 | IF ( XNTOT .GT. 100 . ) STEP = 1 .D -5 |
111 | IF ( TIME .GT. 0.14 ) STEP = 5 .D -8 |
113 | 201 FORMAT ( 8 ( 1 X , E 14.8 ) ) |
114 | 202 FORMAT ( 8 ( 1 X , E 14.8 ) ) |
115 | 203 FORMAT ( / 'time=' , E 14.8 ) |
116 | 204 FORMAT ( 'N' , I 2 , 2 ( 2 X , E 14.8 ) ) |
117 | OPEN ( 11 , FILE = 'output1.DAT' , STATUS = 'UNKNOWN' , ACCESS = 'APPEND' ) |
118 | OPEN ( 12 , FILE = 'output2.DAT' , STATUS = 'UNKNOWN' , ACCESS = 'APPEND' ) |
122 | ICOUNTER 2 = ICOUNTER 2 +1 |
124 | IF ( ICOUNTER .EQ. 400 ) THEN |
125 | WRITE ( * , 201 ) TIME , T , XN ( 1 ) , XJK , S , DPAV , VTOT , XNTOT |
126 | WRITE ( 11 , 202 ) TIME , T , XN ( 1 ) , XJK , S , DPAV , VTOT , XNTOT |
130 | IF ( ICOUNTER 2 .EQ. 40000 ) THEN |
135 | WRITE ( * , 204 ) I , DP ( I ) , XN ( I ) |
136 | WRITE ( 12 , 204 ) I , DP ( I ) , XN ( I ) |
142 | XMU = AMU * ( T * * 1.5 ) / ( BMU + T ) |
143 | XLAMBDA = ( XMU / ( P * 101325 . ) ) * SQRT ( PI * R * T / ( 2 . * 0.04 ) ) |
146 | XKN 1 = ( 2 . * XLAMBDA ) / DP ( I ) |
147 | XKN 2 = ( 2 . * XLAMBDA ) / DP ( J ) |
148 | D 1 = ( XKB * T ) / ( 3 . * PI * XMU * DP ( I ) ) * ( ( 5 . +4 . * XKN 1 +6 . * ( XKN 1 * * 2 ) +18 . * ( XKN 1 * * 3 ) ) / ( 5 . - XKN 1 + ( 8 . + PI ) * ( XKN 1 * * 2 ) ) ) |
149 | D 2 = ( XKB * T ) / ( 3 . * PI * XMU * DP ( J ) ) * ( ( 5 . +4 . * XKN 2 +6 . * ( XKN 2 * * 2 ) +18 . * ( XKN 2 * * 3 ) ) / ( 5 . - XKN 2 + ( 8 . + PI ) * ( XKN 2 * * 2 ) ) ) |
150 | C 1 = SQRT ( ( 8 . * XKB * T ) / ( PI * XM ( I ) ) ) |
151 | C 2 = SQRT ( ( 8 . * XKB * T ) / ( PI * XM ( J ) ) ) |
154 | G 1 = ( ( DP ( I ) + XL 1 ) * * 3 ) - ( ( DP ( I ) * * 2 + XL 1 * * 2 ) * * 1.5 ) / ( 3 . * DP ( I ) * XL 1 ) - DP ( I ) |
155 | G 2 = ( ( DP ( J ) + XL 2 ) * * 3 ) - ( ( DP ( J ) * * 2 + XL 2 * * 2 ) * * 1.5 ) / ( 3 . * DP ( J ) * XL 2 ) - DP ( J ) |
156 | COLF ( I , J ) = 2 . * PI * ( D 1 + D 2 ) * ( DP ( I ) + DP ( J ) ) / ( ( DP ( I ) + DP ( J ) ) / ( DP ( I ) + DP ( J ) +2 . * SQRT ( G 1 * * 2 + G 2 * * 2 ) ) + ( 8 . * ( D 1 + D 2 ) ) / ( SQRT ( C 1 * * 2 + C 2 * * 2 ) * ( DP ( I ) + DP ( J ) ) ) ) |
159 | IF ( COLF ( I , J ) .LT. XKMIN ) THEN |
167 | IF ( VSTAR .LT. V 1 ) THEN |
169 | ELSE IF ( V ( K -1 ) .LE. VSTAR .AND. VSTAR .LT. V ( K ) ) THEN |
178 | DP ( I ) = ( 6 . * V ( I ) / PI ) * * 0.333333 |
179 | XN 1 S ( I ) = XNS * EXP ( 4 . * SIGMA * XMW / ( R * T * RHO * DP ( I ) ) ) |
191 | IF ( STEP .NE. 1 .D -4 ) THEN |
192 | IF ( XN ( 1 ) .GT. XN 1 S ( K -1 ) ) THEN |
197 | ADDTERM = ( V ( 1 ) / ( V ( K ) - V ( K -1 ) ) ) * COLF ( 1 , K -1 ) * ( XN ( 1 ) - XN 1 S ( K -1 ) ) * XN ( K -1 ) |
198 | T 1 = T 1 + COLF ( 1 , K -1 ) * ( XN ( 1 ) - XN 1 S ( K -1 ) ) * XN ( K -1 ) |
202 | IF ( XN ( 1 ) .LT. XN 1 S ( K +1 ) ) THEN |
203 | ADDTERM = - ( V ( 1 ) / ( V ( K +1 ) - V ( K ) ) ) * COLF ( 1 , K +1 ) * ( XN ( 1 ) - XN 1 S ( K +1 ) ) * XN ( K +1 ) |
204 | T 2 = T 2 + COLF ( 1 , K +1 ) * ( - XN ( 1 ) + XN 1 S ( K +1 ) ) * XN ( K +1 ) |
207 | IF ( XN ( 1 ) .LT. XN 1 S ( K ) ) THEN |
208 | SUBTERM = - ( V ( 1 ) / ( V ( K ) - V ( K -1 ) ) ) * COLF ( 1 , K ) * ( XN ( 1 ) - XN 1 S ( K ) ) * XN ( K ) |
209 | T 3 = T 3 + COLF ( 1 , K ) * ( - XN ( 1 ) + XN 1 S ( K ) ) * XN ( K ) |
212 | IF ( XN ( 1 ) .GT. XN 1 S ( K ) ) THEN |
213 | SUBTERM = ( V ( 1 ) / ( V ( K +1 ) - V ( K ) ) ) * COLF ( 1 , K ) * ( XN ( 1 ) - XN 1 S ( K ) ) * XN ( K ) |
214 | T 4 = T 4 + COLF ( 1 , K ) * ( XN ( 1 ) - XN 1 S ( K ) ) * XN ( K ) |
218 | SUM 2 = SUM 2 + COLF ( K , I ) * XN ( I ) |
220 | SUM 1 = SUM 1 + X ( I , J , K ) * COLF ( I , J ) * XN ( I ) * XN ( J ) |
223 | XN ( K ) = XN ( K ) + STEP * ( 0.5 * SUM 1 - XN ( K ) * SUM 2 + XJK * ZETA ( K ) + ADDTERM - SUBTERM ) |
226 | XN ( 1 ) = XN ( 1 ) - XJK * XKSTAR * STEP - STEP * ( T 1 + T 4 - T 3 - T 2 ) |
|
|