У меня есть функция некоторых переменных, которая даст массив, состоящий как из отрицательных, так и из положительных значений (вещественных). Но поскольку для меня физически значимы только положительные значения, я хочу установить все отрицательные значения в массиве равными нулю.
Я предоставил свой код, связанный с этой функцией ниже:
Причина, по которой я объявляю временную переменную 'res', заключается в том, что я пытаюсь встроить IF-ELSE в позицию, которую я пометил в коде следующим образом:
If (res >= 0) Then
result = res
Else
result = 0
End If
Но ошибка говорит о скалярном выражении для S_A, если требуется здесь.
Если вместо res мы используем res (il, ir),
If (res(il,ir) >= 0) Then
result(il,ir) = res(il,ir)
Else
result = 0
End If
ошибка говорит об ошибке #6351: The number of subscripts is incorrect
.
Есть ли способ реализовать эту идею?
Function somefunction(x,y,il,ir) Result(result)
!! ---- begin of declaration ---------------------------
Implicit None
!! boundary indices
Integer, Intent ( in ) :: il,ir
!! the vars
Real ( kind = rk ), Intent ( in ), Dimension ( il:ir ) :: x,y
!! the result
Real ( kind = rk ), Dimension ( il:ir ) :: result
!! temp vars
Real ( kind = rk ), Dimension ( il:ir ) :: res
!! loop index
Integer :: i
!! ---- end of declaration -----------------------------
res = x+y
SA = S_A
!!IF-ELSE!!
End Function somefunction