主题:[讨论]fortran内部函数minval似乎有bug
最近用maxval,minval函数求数组的最大最小值,发现有的时候minval得到的值总出错。
不晓得是不是有bug,特来请教大家。
比如,在module share_data中声明一个可变大小的数组:
module share_data
implicit none
real, save, dimension(:,:,:), allocatable :: x, y, z
end module share_data
然后利用子程序read_data读取网格数据:
subroutine read_data()
use share_data
implicit none
...
对x,y,z数组指定大小并读取数据
...
end subroutine read_data
然后在进行数据处理的时候,将数组x的最小值赋给xmin (real型):
xmin= minval(x)
得到的xmin并不对,但是如果用循环的办法却可以得到正确的:
do k= 1, Kmax
do j= 1, Jmax
do i= 1, Imax
xmin= min(xmin, x(i,j,k))
end do
end do
end do
到底是为啥嗫?请大家不吝赐教,谢谢。
不晓得是不是有bug,特来请教大家。
比如,在module share_data中声明一个可变大小的数组:
module share_data
implicit none
real, save, dimension(:,:,:), allocatable :: x, y, z
end module share_data
然后利用子程序read_data读取网格数据:
subroutine read_data()
use share_data
implicit none
...
对x,y,z数组指定大小并读取数据
...
end subroutine read_data
然后在进行数据处理的时候,将数组x的最小值赋给xmin (real型):
xmin= minval(x)
得到的xmin并不对,但是如果用循环的办法却可以得到正确的:
do k= 1, Kmax
do j= 1, Jmax
do i= 1, Imax
xmin= min(xmin, x(i,j,k))
end do
end do
end do
到底是为啥嗫?请大家不吝赐教,谢谢。