小贺 发表于 2023-12-6 21:51:12

输出数据全部为零

佬们,代码中在do k 循环中vsum和usum能够输出数据,但是在循环外输出数据全部为零时为什么,全部代码在附件中,不知道是不是这一部分的原因?
感谢各位的解答subroutine rhouv(f,rho,u,v,cx,cy,n,m)
real f(0:8,0:n,0:m),rho(0:n,0:m),u(0:n,0:m),v(0:n,0:m),cx(0:8),cy(0:8)
integer :: i, j, k
real :: ssum, usum, vsum
    do j=0,m
      do i=0,n
            ssum = 0.0
            usum = 0.0
            vsum = 0.0
            do k=0,8
                ssum = ssum + f(k,i,j)
                usum = usum + f(k,i,j)*cx(k)
                vsum = vsum + f(k,i,j)*cy(k)
            !print*,vsum,usum      ! 可以输出数据
            end do
            !print*,ssum,usum,vsum ! 输出数据全部为零
            rho(i,j) = ssum
            if (ssum > 0.0) then
                u(i,j) = usum / ssum
                v(i,j) = vsum / ssum
            else
                u(i,j) = 0.0
                v(i,j) = 0.0
            end if
            !print*,u(i,j),v(i,j)
      end do
    end do




fcode 发表于 2023-12-7 08:39:58

我没太看懂你说的输出为0,可以输出的数据是那个或哪些变量。

数值不正确的问题,学会单步debug调试,会对你有很大的好处,其他人由于不了解你的算法过程,很难帮助你。

debug调试的教程:
https://debug.w.fcode.cn/
http://v.fcode.cn/video-debugger.html

小贺 发表于 2023-12-10 20:10:17

fcode 发表于 2023-12-7 08:39
我没太看懂你说的输出为0,可以输出的数据是那个或哪些变量。

数值不正确的问题,学会单步debug调试,会对 ...

谢谢您的回答,我会尝试进行学习debug调试,再次感谢
页: [1]
查看完整版本: 输出数据全部为零