entero, hacer bucle, fortran, error
Tengo el siguiente código fortran definido en. Estoy tratando de cambiar la longitud del bucle do si cambio el valor de n. Cuando intento compilar me sale el error:
El argumento "a" del "piso" intrínseco en (1) debe ser REAL. Pero cuando cambio q y w para definirlo como real, recibo otro mensaje de error. ¿Cómo puedo arreglar esto? q y w es claramente un número entero cuando uso piso (...)
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