我有一个Fortran代码,其中包括一些值,如温度和调用子程序。在Fortran中每X次迭代只调用一次函数/子程序
这个子程序给了我一个辐射解决方案,然后用于新的迭代。
问题是,这个子程序需要大量的时间来处理,所以我希望每20次迭代只调用一次,并保留程序其余部分的最后一个解决方案。
有没有可行的方法来做到这一点?
我有一个Fortran代码,其中包括一些值,如温度和调用子程序。在Fortran中每X次迭代只调用一次函数/子程序
这个子程序给了我一个辐射解决方案,然后用于新的迭代。
问题是,这个子程序需要大量的时间来处理,所以我希望每20次迭代只调用一次,并保留程序其余部分的最后一个解决方案。
有没有可行的方法来做到这一点?
根本就只是
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
零整除。
非常感谢你。有一件事,我不确定需要多少次迭代才能实现融合,我可以将任意数字设置为100000吗?我只是猜测,实际数字会低得多。 –
Fortran中有各种类型的循环以及如何退出它们的各种方法。这完全取决于你。我的答案只是用'i'作为计数器。即使在'do while'循环中你也可以有一个计数器,你可以在每次迭代时自己增加一个计数器。 –
另一种方法是使用嵌套的循环:
do i = 1,bignum
do j = i,20
code to be repeated many times
end do
call subroutine_to_be_called_ocasionally()
end do
格式化,删除感谢 – Hugo