Я попытался продемонстрировать ниже в примере кода, что я пытаюсь сделать.У меня есть куча условий if / else, и я хочу правильно ввести их, когда я компилирую и запускаю код.Однако я не буду вводить те, где i, j - действительное число, поскольку i, j определяется как целое число в начале кода.Как я могу смоделировать эту проблему по-другому, чтобы я мог ввести те условия if / else?Спасибо
В частности, я не хочу, чтобы пространственные точки, i, j были целыми числами.Вместо этого я хочу, чтобы они были реальными значениями, которые соответствуют любой позиции в пространстве, например: (x, y) = (5.31, 5.31).
program sample
integer :: i,j !spatial points
real, parameter :: DeltaX = 0.1
integer, parameter :: n = 10
real, dimension(-n:n, -n:n) :: u,f
do j = -n,n
do i = -n,n
f(i,j) = sin(i*DeltaX+j*DeltaX)
end do
end do
do i = -n+1,n-1 !this loop is only over integers
do j = -n+1,n-1 !this loop is only over integers
if (i == 6 .AND. j == 6 .AND. i == j) then
PRINT*, 'i,j', i,j
u(i,j) = (f(i+1,j+1)+f(i-1,j-1)-f(i,j))/DeltaX**2
else if ( i == 8 .AND. j == 8. .AND. i == j) then
PRINT*, 'i,j ', i,j
u(i,j) = (f(i+1,j+1)+f(i-1,j-1)-f(i,j))/DeltaX**2
else if ( i == 5.31 .AND. j == 5.31 .AND. i == j) then
PRINT*, 'i,j = ', i,j !I will never enter this if statement though
u(i,j) = (f(i+1,j+1)+f(i-1,j-1)-f(i,j))/DeltaX**2
else if ( i == -6.87 .AND. j == -6.87 .AND. i == j) then
PRINT*, 'i,j = ', i,j !I will never enter this if statement either
u(i,j) = (f(i+1,j+1)+f(i-1,j-1)-f(i,j))/DeltaX**2
else
u(i,j) = (f(i+1,j)+f(i-1,j)+f(i,j+1)+f(i,j-1)-4*f(i,j))/DeltaX**2
end if
end do
end do
end program