gpt4 book ai didi

fortran - 使用不同的输入参数多次运行 Fortran 代码

转载 作者:行者123 更新时间:2023-12-02 06:27:02 25 4
gpt4 key购买 nike

我想使用不同的输入参数集多次运行 Fortran 77 程序;我已经确保输出文件名会根据我使用的不同输入参数而更改,但我不确定如何运行具有不同输入参数集的程序,而不必每次都转到代码来更改参数。

为了说明我的问题,这里有一个简单的代码。

   PROGRAM CODE
IMPLICIT DOUBLE PRECISION (A-H, J-Z)
COMMON / param / radius

radius = 2
write(*,*) 'radius = ', radius
write(*,*) 'the area is = ', 3.14*radius*radius

END

假设我想以不同的半径运行此代码,而不是必须进入代码并手动更改值,我想要一个具有不同参数选择的文件并让它运行多次。

当然,可以通过创建不同参数选择的数组并循环来解决此问题。但是,我不想这样做,因为我实际上有多个参数想要为每次运行更改。

为了回应下面的评论之一,如果我有一个文件,每次运行都有不同的输入选择,我如何让程序为每次运行的不同参数选择抓取不同的行?

最佳答案

有一种“行人”式的方法,我已经使用过很多次了。

为了避免重新编译,解决方案是对参数文件的名称进行硬编码并从此文件中读取数据。每次运行代码都必须有自己的参数副本以及自己的目录。

我在下面给出了单个参数的示例,但如果需要,您可以对其进行概括。它依赖于 bash 中的驱动程序脚本。

Fortran 程序:

      PROGRAM CODE
IMPLICIT DOUBLE PRECISION (A-H, J-Z)
COMMON / param / radius

open(11, file='parameters.txt')
read(11,*) radius
close(11)
write(*,*) 'radius = ', radius
write(*,*) 'the area is = ', 3.14*radius*radius

END

bash 程序:

for radius in 01 02 05 10
do
RUNDIR=run_${radius}
mkdir ${RUNDIR}
echo "${radius}" > ${RUNDIR}/parameters.txt
(cd ${RUNDIR} ; ../code)
done

编译 Fortran 代码:

gfortran -std=legacy -o code code.f

并执行参数运行:

bash parametricrun.sh
  1. Fortran 代码的作用:打开名为 parameters.txt 的文件并读取半径值的第一个条目。

  2. bash 脚本的作用:对于参数的多个值,创建一个新目录,在该目录中创建一个名为 parameters.txt 的文件,然后执行 Fortran 程序 代码该目录中。

评论:

  1. 使用 bash 程序中的第二个循环,可以将其扩展为多个变量,可以是每行一个变量,也可以是 parameters.txt 中的每行多个变量。

  2. 如果您可以使用更现代的 Fortran 版本,请提及。还有更多选择。

  3. 其他语言(Python,如 arclight 建议的那样)可用于脚本编写。许多计算集群使用bash来运行作业,因此可以用于参数化运行(然后可以通过作业队列系统传递半径值)。

  4. 我任意使用11作为文件单元号。您的实际情况确实需要为您的程序使用可用的单元号。

关于fortran - 使用不同的输入参数多次运行 Fortran 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46650571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com