我在下面定义了以下 fortran 代码。如果我改变 n 的值,我试图改变 do 循环的长度。当我尝试编译时出现错误:
(1) 处固有的“floor”参数“a”必须为 REAL。但是当我将 q 和 w 更改为真实值时,我收到另一条错误消息。我怎样才能解决这个问题?当我使用 Floor(...) 时,q 和 w 显然是一个整数
subroutine boundrycon(n,bc,u,v)
!input
integer :: n,bc
!output
real(8) :: u(n+2,n+2), v(n+2,n+2)
!lokale
integer :: j,i,w,q
n=30
q=floor(n/2)
w=(floor(n/2)+floor(n/6))
do j=q,w
u(q,j)=0.0;
v(q+1,j)=-v(q,j);
u(w,j)=0.0;
v(w+1,j)=-v(w,j);
end do
do i=q,w
v(i,q)=0.0;
u(i,q)=-u(i,q+1);
u(i,w+1)=-u(i,w);
v(i,w)=0;
end do
end subroutine boundrycon