function

基本

Fortran の function は subrountine よりもっと単純な式で戻り値が1つのときに使う.

! 風速に応じた海面抵抗係数Cdを返す関数
function dragcoef_seasurf(windvel) result(cd)
   implicit none
   real(kind=8) :: windvel
   real(kind=8) :: cd
   if (windvel < 8.0d0) then
      cd = (1.290d0 - 0.024d0*windvel) * 1.0d-3
   else
      cd = (0.581d0 + 0.063d0*min(45.0d0,windvel)) * 1.0d-3
   endif
end function dragcoef_seasurf

上記の

result(cd)

という箇所を書かなかった場合は,関数名を戻り値の変数として使う.

! 風速に応じた海面抵抗係数Cdを返す関数
real(kind=8) function dragcoef_seasurf(windvel)
   implicit none
   real(kind=8) :: windvel
   if (windvel < 8.0d0) then
      dragcoef_seasurf = (1.290d0 - 0.024d0*windvel) * 1.0d-3
   else
      dragcoef_seasurf = (0.581d0 + 0.063d0*min(45.0d0,windvel)) * 1.0d-3
   endif
end function dragcoef_seasurf

こっちはちょっと読みにくいし,grep や検索する時も邪魔なので,result を使ったほうが良いと思う.

戻り値を2つ以上にしたい場合は,配列を定義して1つの変数に押し込めばできなくもないけど,それなら素直に subroutine を使ったほうが良いかも.



Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2023-12-21 (Thu) 09:08:13 (156d)