0

私はいくつかのfortran 2003をいじっていますが、実際に物事を行う方法を理解できないように見えるので、ここで簡単にヘルプを使用できると思います. 実際には、メンバーの 1 つとして実際の関数へのポインターを持つ新しいデータ型をモジュール内で宣言する Fortran コードを作成する必要があります。何かのようなもの

module new_mod
  type my_type
    real*8 :: a, b
    (here something that declares a real*8 function), pointer :: ptr
  end type my_type
end module_new

module funcs
  real*8 function function1(x)
    real*8 :: x
    function1 = x*x
  end function function1
  real*8 function function2(x)
    real*8 :: x
    function2 = x*x
  end function function2
end module funcs

次に、メインプログラムで次のようなものが必要です

program my_prog
  use module_new
  use module_funcs
  implicit none
  real*8 :: y, z
  type(my_type) :: atom
  ...
  atom%ptr => function1
  y = atom%ptr(x)
  ...
  atom%ptr => function2
  z = atom%ptr(x)
end program my_prog

その間

したがって、主なアイデアは、module_new に実際の関数へのポインターを持つ型が含まれているということです。新しいタイプ I のオブジェクト内のこのポインターは、メイン プログラム内のさまざまな関数を指すことができなければなりません。抽象インターフェースなどで同様のことができるのを見てきましたが、正直なところ、私はここで混乱しています。誰かが助けることができれば、私はそれを感謝します. 乾杯...

4

1 に答える 1