이 문제에 대한 좋은 해결책을 보여줄 수 있습니다. 나는 또한 이전 MATLAB 사용자이고 FORTRAN으로 전환 할 때 함수가 없어서 haha를 처리하지 못합니다. 이 문제로 귀하의 문제를 해결했습니다 :
module
private
public :: f , g
real(kind=RP) :: a0,b0,c0,...
contains
function f(x,a,b,c,d,...)
implicit none
real(kind=RP) :: x,a,b,c,d,...
real(kind=RP) :: f
! Here you define your function
f = ...
end function f
function g(x)
implicit none
real(kind=RP) :: x , g
! Here you call "f" function with the frozen variables *0
g = f(x,a0,b0,c0,...)
end function g
! We said that parameters were private
! (to avoid to be modified from the outside, which can be dangerous,
! so we define functions to set their values
subroutine setValues(a,b,c,...)
implicit none
real(kind=RP) :: a,b,c,...
a0 = a
b0 = b
c0 = c
end subroutine setValues
end module
나는 이름 변경의 복잡성을 마지막에 따르지 않습니다. 분명히 구적 서브 루틴에'f'가 아닌'wrap_f'를 전달할 수 있을까요? – francescalus
음, OP가 그 기능으로 무엇을하기를 원하는지 분명하지 않았습니다. 원래 f가 그 라이브러리에 있다고 생각했습니다. –
아, 그건 의미가 있습니다. 첫 번째 부분은 +1의 가치가있었습니다. – francescalus