在Fortran中每X次迭代只调用一次函数/子例程

时间:2017-03-22 12:34:46

标签: function fortran call subroutine

我有一个fortran代码,除其他外,我放了一些像温度这样的值并调用子程序。

这个子程序给了我一个辐射解决方案,然后用于新的迭代。

问题是这个子程序需要花费很多时间来处理,所以我希望每次只调用一次,比方说,二十次迭代,并保留程序其余部分的最后一个解决方案。

有可行的方法吗?

2 个答案:

答案 0 :(得分:1)

只需做

  n_iterations = 100000
  nth = 20

  do i = 1, n_iterations
    if (mod(i, nth)==0) call my_subroutine
  end do
仅当mod(i, nth)==0可以除以i且余数为零时,

表达式nth才为真。

答案 1 :(得分:0)

另一种方法是使用嵌套循环:

       do i = 1,bignum
         do j = i,20
            code to be repeated many times
         end do
         call subroutine_to_be_called_ocasionally()
       end do