|
参数传递时,个别元素变成了NaN,恳请各位解惑。下面是我的主程序[Fortran] 纯文本查看 复制代码 03 | real * 8 dx , dy , Lx , Ly , dt , c , cs |
06 | real * 8 , allocatable :: rho ( : , : ) |
07 | real * 8 , allocatable :: w ( : ) , e ( : , : ) , un ( : , : , : ) , un_ 1 ( : , : , : ) |
10 | real * 8 , allocatable :: Fn ( : , : , : ) , Fn_ 1 ( : , : , : ) |
12 | real * 8 feq , feq_n , du , u , err_e , err |
36 | allocate ( un_ 1 ( Nx , Ny , 2 ) ) |
38 | allocate ( Fn_ 1 ( Nx , Ny , Q ) ) |
40 | w ( : ) = ( / 4.0 / 9 , 1.0 / 9 , 1.0 / 9 , 1.0 / 9 , 1.0 / 9 , 1.0 / 36 , 1.0 / 36 , 1.0 / 36 , 1.0 / 36 / ) |
43 | e ( : , 1 ) = ( / 0 , 1 , 0 , -1 , 0 , 1 , -1 , -1 , 1 / ) |
44 | e ( : , 2 ) = ( / 0 , 0 , 1 , 0 , -1 , 1 , 1 , -1 , -1 / ) |
55 | call sub_equi ( rho ( i , j ) , w ( k ) , e ( k , : ) , un ( i , j , : ) , cs , feq ) |
63 | subroutine sub_equi ( rho , w , e , u , cs , feq ) |
73 | real * 8 rho , w , cs , feq , eu , uu |
77 | open ( unit = 10 , file = 'inspection.txt' ) |
80 | eu = e ( 1 ) * u ( 1 ) + e ( 2 ) * u ( 2 ) |
83 | feq = rho * w * ( 1 + eu / cs * * 2 + ( eu / cs * * 2 ) * * 2 / 2 - uu / ( 2 * cs * * 2 ) ) |
在主程序中,三维数组un的元素是正常的,但子程序中的二维数组u(用于接受un(i,j,:))的元素有时会是NaN,这可以在‘inspection.txt’文件中看到。
这个简单的boltzmann 程序我都编了3天了,总是出错,恳请各位给予解答
|
|