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

2024-01-15

我想使用不同的输入参数集多次运行 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 程序code in那个目录。

评论:

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用不同的输入参数多次运行 Fortran 代码 的相关文章

  • OpenMP 因大型数组而崩溃

    我正在使用 Fortran 和 OpenMP 但当我尝试在存在大型数组时使用 OpenMP 并行化循环时 我不断遇到问题 例如 以下代码 PROGRAM main IMPLICIT NONE INTEGER PARAMETER NUMLOO
  • 将 C 字符串数组传递给 Fortran (iso_c_binding)

    如何传递 C 字符串数组 char cstrings 到 Fortran 子程序 问题使用 iso c binding 的 fortran C 桥接器中的字符串数组 https stackoverflow com questions 968
  • Fortran 读取混合文本和数字

    我正在使用 Fortran 90 读取包含以下格式数据的文件 number 125 var1 2 var2 1 var3 4 number 234 var1 3 var2 5 var3 1 我尝试了以下命令并且工作正常 read 2 tem
  • Fortran:向文件添加列(即跳过不同数量的水平空格)

    我是 Fortran f90 的初学者 一些看似简单的问题结果却导致严重头痛 感谢您帮助我解决这个问题 我的代码运行一个循环 处理数据并将它们写入文件 我希望将这些数据写入同一文件的列中 直到循环完成 OPEN unit 11 file f
  • Dependency Walker 未显示所有依赖的 Dll

    我有一个 fortran dll 我想知道它所依赖的程序集再分配目的 http software intel com en us forums showthread php t 73161 我发现的一件事是依赖项步行器没有显示所有依赖项 即
  • 如何用好Fortran语句标签?

    我正在开发一个用 Fortran 95 编写的模型 我对此完全陌生 语句标签的概念似乎很奇怪 到目前为止我只找到了标签可以由作者任意决定的解释 通常以 10 为增量 除了更容易地找出语句的结尾位置之外 这些标签还有其他实际用途吗 以及关于如
  • FORTRAN 写()

    在开始之前 我必须先声明一下 我是 FORTRAN 的新手 我正在维护 1978 年的一段遗留代码 它的目的是从文件中读取一些数据值 处理这些值 然后将处理后的值输出到另一个文本文件 给出以下 FORTRAN 代码 INTEGER NM S
  • 如何包装 fortran write 语句

    我想包装 fortran写语句 http software intel com sites products documentation doclib stdxe 2013 composerxe compiler fortran lin 在
  • 关于for循环中的fortran continue语句的问题

    我正在分析 Fortran 代码并有一个简单的问题 我想知道下面代码中 100 和 200 处的 继续 语句的作用 它会增加 i 和 j 计数器吗 如果是这样的话 不会if not flg 那么条件包含flg循环中 flg 的 最后一个值
  • 将数组从 .npy 文件读入 Fortran 90

    我使用 Python 以二维数组 例如 X 的形式生成一些初始数据 然后使用 Fortran 对它们进行一些计算 最初 当数组大小约为 10 000 x 10 000 时 np savetxt 在速度方面表现良好 但是一旦我开始增加数组的维
  • f951 错误:无法识别的命令行选项

    我在linux上 正在编译以下内容 mpif90 shared source F90 object1 o object2 o L some path Qoption link rpath some path I some path lhdf
  • 如何读取 Fortran 中内容不以空格分隔的 2D 文件

    我有一个矩阵存储在文件 number txt 中 如下所示 12323456 54254311 76534522 我如何在 Fortran 中读取这样的矩阵 结果将是 1 2 3 2 3 4 5 6 5 4 2 5 4 3 1 1 7 6
  • gfortran 支持尾调用消除吗?

    我编写了这个小程序来测试 gfortran 是否执行尾调用消除 program tailrec implicit none print tailrecsum 5 0 contains recursive function tailrecsu
  • forrt1:严重(170):程序异常 - 堆栈溢出

    并提前感谢您的帮助 我已经编译了一个程序 不是我编写的 它在 Mac 上运行得很好 但是当我尝试在 Windows 上执行该程序时 在程序开始执行后不久 我收到以下错误消息 forrt1 严重 170 程序异常 堆栈溢出 我不是 ifort
  • 使用 Fortran 进行数组问题的二分查找

    我正在使用 Schaum 的 Fortran 77 编程概要 一书 其中有一个关于使用括号值组方法进行二分搜索的示例 首先这是代码 INTEGER X 100 INTEGER RANGE INTEGER START FINISH PRINT
  • Fortran90 中 BLAS 函数返回零

    我正在学习在Fortran90中使用BLAS 并使用子例程编写了一个简单的程序SAXPY https software intel com en us mkl developer reference fortran axpy和函数SNRM2
  • 分发编译后的 fortran 库和模块文件

    我有一个Fortran使用很多模块的库 我用ifortWindows 上的编译器 因此 我得到一个 lib图书馆的文件和 mod所用模块的文件 这有一个缺点 我还必须分发 mod文件 如果我想在另一个程序中使用编译的库 如何防止这种情况发生
  • 将 FORTRAN 对象传递给 C,反之亦然

    我有我的 Fortran 对象 即 this object a this object b this object c 我想将它传递给用 C 编写的代码 我主要是一名 FORTRAN 程序员 而且我很少接触 C 我正在使用iso c bin
  • CMake:Fortran 模块和编译顺序

    我有一个大型 Fortran 程序 其中包含许多目录 每个目录都在伪库中单独编译 但仍然存在相互依赖的混乱 因此最终所有伪库都组合在一个可用的库中 我想使用 Fortran 模块 但它非常脆弱 因为我不能依赖自动依赖项检查 并且根据顺序编译
  • 如何从 Fortran 调用 R 函数?

    根据http gallery rcpp org articles r function from c http gallery rcpp org articles r function from c Rcpp 允许用户从 C 调用 R 函数

随机推荐

  • .net 中的异步套接字是无线程的吗?

    From http msdn microsoft com en us library bbx2eya8 aspx http msdn microsoft com en us library bbx2eya8 aspx看起来 这种类型的套接字
  • 除非您更新 Google Play 服务(通过 Bazaar),否则此应用程序不会运行

    我正在测试适用于 Android 的新 Google Maps API V2 当应用程序启动时我收到此消息 这是在 4 1 模拟器上运行的 这是我的AndroidManifest xml file
  • Hibernate的sessionFactory是线程安全的原因

    我了解到Hibernate的会话工厂据说是线程安全的 任何人都可以阐明它如何在 Web 应用程序中充当线程安全以及所有方法如何同步或其他什么 SessionFactory 的内部状态是不可变的 http docs jboss org hib
  • OleDb SQL 查询中的两个内部联接[重复]

    这个问题在这里已经有答案了 我正在尝试使用 OleDbCommand 对 Access 数据库 accdb 进行 SQL 查询 虽然这个命令工作正常 在OleDbCommand ExecuteReader string command SE
  • JSF 语言环境:浏览器定义的语言似乎被忽略

    目前 我的团队正在使用 Java 开发 Web 2 0 应用程序 我们使用 JSF 作为表示层 我们从表示层开始 因此尚未添加业务和数据层 我们使用的技术 JSF 莫贾拉 2 0 3 Primefaces 2 1 JSF 组件库 春季安全3
  • 在 .Net Core 应用程序中使用 SharePoint CSOM

    我想通过 Net Core MVC 应用程序上的 CSOM 库从 SharePoint 列表中获取数据 在 Net Framework 应用程序上实现这一点绝对没有问题 因为 Microsoft SharePoint Client 库包含
  • SVN 客户端错误“[...] 的服务器不支持 HTTP/DAV 协议”

    我正在 64 位系统上从 Windows 7 更新到 Windows 10 我在 Windows 7 机器上从 Subversion 服务器更新和签出项目没有任何问题 我下载了最新的 64 位版本并将其安装在 Windows 10 机器上
  • 对 qr.Q() 感到困惑:什么是“紧凑”形式的正交矩阵?

    R has a qr 函数 它使用 LINPACK 或 LAPACK 执行 QR 分解 根据我的经验 后者快 5 返回的主要对象是一个矩阵 qr 其中包含上三角矩阵 R 即R qr upper tri qr 到目前为止 一切都很好 qr 的
  • 将服务注入到类(而不是组件)Angular2

    我正在努力寻找一种将服务注入到 angular2 中的类对象中的方法 注意 这不是一个组件 只是一个类 export class Product id number name string manufacturer string const
  • 为什么自动装箱的整数和 .getClass() 值 ==-相等,而不仅仅是 .equals()-相等?

    也许我在 Java 上工作太久了 却没有真正理解它的一些基础知识 我确实明白 用于对象引用相等并且 equals 是为了对象值相等 比较Integers Integer x 1 y 1 System out println x y true
  • TFS 2015 - 等待请求代理

    因此 度假回来后 我的构建服务器不想再运行任何构建 它只是卡在了等待可用的代理 等待请求代理如果我取消它 我觉得它会卡住正在取消构建 因为在我取消构建后什么也没有发生 等待消息仍然存在 但构建不在构建队列中 代理池中的所有代理均呈绿色 且后
  • 改进 Dinic 算法的动态树数据结构

    我想将 Dinic 算法应用于动态树 但我找到的来源很少 特别是关于动态树 如果有一个带有详细解释的良好源代码或一些使用动态树的简单源代码 那就太好了 有人遇到过类似的事情吗 提前致谢 改进的基本思想是避免 Dinic 算法过早悲观 与预流
  • 在 div 中显示“显示更多”按钮而不是垂直滚动条

    我有一个固定高度的 div 其中包含一些 html 内容 当这个高度溢出时 我不希望出现滚动条 而是在 div 底部出现一个按钮 只有当你按下这个按钮时 所有的内容才会被显示 显然滚动条会自动显示 我知道有一个名为 溢出 的属性 您可以使用
  • 自动完成将值而不是标签应用于文本框

    我在尝试让自动完成功能正常工作时遇到了麻烦 对我来说一切看起来都不错但是
  • PopoverPresentationController 为零

    创建了一个单视图应用程序 我在其中放置了一个按钮 现在单击按钮我需要将 tableView 显示为弹出窗口 TableViewController 是在 xib 中创建的 问题是 tableViewController popoverPre
  • 使用任务管理器生成转储文件

    我知道在 Vista 中 您可以通过 goigg 到任务管理器 gt 进程 gt 右键单击 进程来生成转储文件 此选项在 Windows 7 Windows 2003 Windows 2008 等其他版本的 Windows 中是否可用 它在
  • Kivy - 另一个屏幕上的滑块类值更改

    我有一个滑块 其值会更改标签 这很容易理解 现在的问题是我想使用这个值在另一个屏幕上显示 最终 我希望滑块根据在滑块上选择的值在另一个屏幕上显示 1 16 个图像 下面是我现在所拥有的 它适用于该屏幕 但如何让这个值显示在另一个屏幕上 我知
  • NavUtils.shouldUpRecreateTask 在 JellyBean 上失败

    我有一个应用程序 它会发出通知 选择该通知后将启动一项活动 根据Android文档 我可以使用NavUtils shouldUpRecreateTask来检查活动是否已直接启动 即从通知 或通过正常的活动堆栈启动 然而它给出了错误的答案 我
  • 如何在 laravel 5.3 中显示图像

    我将图像存储在公共文件夹中现在我想显示我给出的路径的图像 但图像不显示任何人帮助我我的代码出了什么问题 我的图像完整路径是 public admin product img src height 30px width 30px 首先 您不应
  • 使用不同的输入参数多次运行 Fortran 代码

    我想使用不同的输入参数集多次运行 Fortran 77 程序 我已经确保输出文件名会根据我使用的不同输入参数而更改 但我不确定如何运行具有不同输入参数集的程序 而不必每次都转到代码来更改参数 为了说明我的问题 这里有一个简单的代码 PROG