纯 Fortran 过程中的 I/O

2024-05-05

我正在尝试将错误检查合并到我正在编写的纯过程中。我想要这样的东西:

pure real function func1(output_unit,a)
    implicit none
    integer :: a, output_unit

    if (a < 0) then
        write(output_unit,*) 'Error in function func1: argument must be a nonnegative integer. It is ', a
    else
    func1 = a/3

    endif
    return
end function func1

但是,纯函数不允许对外部文件有 IO 语句,因此我尝试将单元号传递给函数,例如output_unit = 6,这是默认输出。 gfortran 仍然认为这是非法的。有没有解决的办法?是否可以使函数成为派生类型(而不是内在类型)real这里)当出现错误时输出一个字符串?


您不是第一个遇到此问题的人,我很高兴地说标准中的此缺陷将在 Fortran 2015 中得到纠正。如中所述这个文件 http://www.fortran.bcs.org/2013/removing_deficiences.pdf(第 6 页,标题“已批准的标准变更”),“对外观的限制error stop中的声明pure应删除程序”.

Fortran 2008 标准包括error stop声明中介绍了一些新的并行计算功能。它发出错误信号并在可行的情况下尽快停止所有进程。目前,既没有stop nor error stop语句允许在pure过程,因为它们显然不是线程安全的。实际上,在发生内部错误的情况下,这是不必要的限制。

根据您的编译器,您可能需要耐心等待实现。我知道英特尔已实施 https://software.intel.com/en-us/articles/intel-parallel-studio-xe-2016-composer-edition-compilers-fixes-list它在他们的 ifort 编译器中。 (“F2015:解除 PURE/ELEMENTAL 程序中 STOP 和 ERROR STOP 的限制”)

选择

对于替代方法,您可以看看在这个问题上 https://stackoverflow.com/questions/19037789/gfortran-treat-pure-functions-as-normal-functions-for-debugging-purposes,尽管在你的情况下这可能有点棘手,因为你必须改变do concurrent关键词,不仅仅是pure.

(正确答案结束)

如果可以选择弄脏手......

与此同时,你可以做一些残酷的事情,比如

pure subroutine internal_error(error_msg)
    ! Try hard to produce a runtime error, regardless of compiler flags.
    ! This is useful in pure subprograms where you want to produce an error, 
    ! preferably with a traceback.
    ! 
    ! Though far from pretty, this solution contains all the ugliness in this 
    ! single subprogram.
    ! 
    ! TODO: replace with ERROR STOP when supported by compiler
    implicit none

    character(*), intent(in) :: error_msg

    integer, dimension(:), allocatable :: molested

    allocate(molested(2))
    allocate(molested(2))
    molested(3) = molested(4)
    molested(1) = -10
    molested(2) = sqrt(real(molested(1)))
    deallocate(molested)
    deallocate(molested)
    molested(3) = molested(-10)
end subroutine internal_error

如果有人问,你不是从我这里得到的。

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

纯 Fortran 过程中的 I/O 的相关文章

  • 具有异步操作的面向铁路的编程

    以前问过类似的问题 但不知何故我没有找到出路 再次尝试另一个例子 作为起点的代码 稍作修改 可在https ideone com zkQcIU https ideone com zkQcIU 它有一些识别问题Microsoft FSharp
  • 不要因 HTTP 错误 403 而停止

    在我的 Selenium 测试用例之一中 我尝试确保某些页面无法访问 相反 应给出 HTTP 返回代码 403 然而 这里 Selenium 终止测试执行 但出现以下异常 com thoughtworks selenium Selenium
  • 如何处理java.util.concurrent.ExecutionException异常?

    我的代码的某些部分抛出 java util concurrent ExecutionException 异常 我该如何处理这个问题 我可以使用 throws 子句吗 我对java有点陌生 这取决于您的任务关键程度Future是为了如何处理它
  • 错误:Javascript 上的 [object Object]

    当我在 Firebug 中运行下面的 javascript 时 我不断收到错误 我已经尝试更改多项内容 但它仍然输出错误 我正在使用 api 从 XML 检索信息 然后将其输出到屏幕上 但我不断收到对象错误 有人能看出为什么吗 任何帮助表示
  • python os.rename ""当文件已存在时无法创建该文件

    K 我只是使用在这里找到的一个简单脚本 import os from os import rename listdir print os listdir for filename in os listdir if filename star
  • VB6中VarType返回的vbError是什么?

    我一直在网上搜索这个 但一切都在谈论ErrObject类 或常量vbError由返回VarType功能 我想知道那个类型实际上是什么is 例如一个integer是这样的4 a string是这样的 hello world etc 对于一点背
  • Perl6:我怎样才能使所有警告都是致命的?

    我怎样才能使 Perl6 中的所有警告都是致命的 以便脚本在屏幕上出现警告时立即终止 CONTROL when CX Warn note exit 1 更频繁地死亡 该脚本终止于CONTROL when CX Warn note exit
  • 在 Google Analytics 中记录 JavaScript 错误

    我正在尝试获取有关我的网络应用程序中发生的 JavaScript 错误的信息 并在 Google Analytics 中使用事件记录这些错误 我这样做如下 document ready function var sendAnalyticsE
  • 该模型已具有同名的元素 - ASP.NET

    我正在使用 ASP Net Web 应用程序 每当我尝试添加FOREIGN KEY此错误出现在数据工具操作中 SQL71508 该模型已具有同名的元素 dbo FK Sellers Users SQL71508 该模型已经有一个元素 具有相
  • 带有数字/标签的 Fortran IF 语句而不是另一个语句

    这段 Fortran 代码的含义是什么 IF J1 3 20 20 21 21 J1 J1 3 20 IF J2 3 22 22 23 23 J2 J2 3 22 CONTINUE 我在旧项目中看到过 我不知道这个带有数字 标签 的 IF
  • 在 haskell 中处理 IO 与纯代码

    我正在编写一个shell脚本 我在haskell中的第一个非示例 它应该列出一个目录 获取每个文件大小 进行一些字符串操作 纯代码 然后重命名一些文件 我不确定我做错了什么 所以有两个问题 我应该如何安排这样的程序中的代码 我有一个具体问题
  • 使用 Elmah 进行异常处理

    我用 Elmah 记录异常 想知道我使用的技术是否是好的设计 现在 我捕获并重新抛出各种类和方法中发生的异常 并将它们记录到程序的主 try catch 块中的 Elmah 主程序 try Some code that fires off
  • ruby 的 StringIO 类到底是什么?

    我想我明白StringIO有点类似于Java的StringBuffer类 但我不太完全理解 您将如何定义它及其在 Ruby 中的用途 可能的用途 只是希望能够消除我的困惑 no StringIO http ruby doc org stdl
  • 将 FORTRAN 对象传递给 C,反之亦然

    我有我的 Fortran 对象 即 this object a this object b this object c 我想将它传递给用 C 编写的代码 我主要是一名 FORTRAN 程序员 而且我很少接触 C 我正在使用iso c bin
  • 使用 Fortran 90 正确读取输入文件中的注释行

    据我了解 Fortran 在从文件读取数据时 会跳过以星号 开头的行 假设它们是注释 好吧 我似乎在用我创建的一个非常简单的程序实现这种行为时遇到了问题 这是我的简单 Fortran 程序 1 program test 2 3 intege
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 如何处理 Nuxt 中导致页面渲染崩溃的 apollo 客户端错误?

    我目前正在维护一个生产 Nuxt js Vue 应用程序 该应用程序集成了 GraphQL Apollo 客户端 该客户端遇到页面渲染错误 为了增加获得回复的机会 我构建了一个简单的代码示例 仅展示我们遇到的问题 谢谢大家 源代码 Clie
  • 使用Java修改文件内容

    我想使用java程序删除文件的一些内容 如下所示 这是在同一文件中替换的写入方法还是应该将其复制到另一个文件中 但它删除了文件的所有内容 class FileReplace ArrayList
  • 多少次函数调用会导致堆栈溢出

    你好 Android Java 开发者 当一个函数调用一个函数并且该函数调用另一个函数等等时 有多少次调用 堆栈长度 会让我陷入堆栈溢出 有一般经验法则吗 我问的原因是因为我现在对于我的 5 人纸牌游戏来说哪个更有效 设计明智 解决方案一
  • Eclipse IDE - 错误:构建路径指定执行环境 Java SE 1.7

    在 Eclipse 中 我收到一个错误 构建路径指定执行环境Java SE 1 7 工作区中没有安装与此环境严格兼容的 JRE 尝试这个 In Eclipse your project gt properties gt java build

随机推荐

  • 如果为 false,则停止在自定义验证器中执行

    我有两个文本框作为 to date 和 from date 我比较两个文本框并获取值 但它的执行在我想要停止的按钮的单击旁边进行 因为如果 to date 小于起始日期 则截止日期将变为空 并且重点关注文本框不会转到的单击事件按钮 i us
  • 从绝对路径加载类

    我有一个类 我想通过绝对路径加载该类 但我收到 ClassNotFoundException 我经历过很多这样的线程 发现从绝对路径加载类是不正确的 InputStream stream new Check getClass getReso
  • 从非 Activity 类启动一个新 Activity

    我想在非 Activity 类中启动一个新活动 该活动实现DialogListener以下是我的代码 public class FacebookLoginDialog implements DialogListener Override p
  • 将二维数组绑定到数据网格中

    所以我的情况是我想从数据库中的两个字段填充一个二维数组 我在为数组分配数据库字段值时遇到问题 第二个是在数据网格中显示数组 我已经编码了 dgv2 Datasource myArray 但它仍然返回错误消息 这是我的代码 Dim msql
  • Mac上使用docker安装gitlab的权限问题

    我正在尝试让 Gitlab 在本地运行 但遇到了权限问题 cp cannot create regular file etc gitlab gitlab rb Permission denied 我正在运行的命令是 sudo docker
  • 如何在 Android 中自定义进度条

    我正在开发一个应用程序 我想在其中展示ProgressBar 但我想替换默认的AndroidProgressBar 那么我该如何定制ProgressBar 我需要一些图形和动画吗 我阅读了以下帖子 但无法让它工作 Android自定义进度条
  • 有没有办法从 ANSI 转义字符创建橙色?

    我正在寻找一个控制代码来使用 ANSI 或其他标准在终端中创建橙色文本 这可能吗 我只看到黄色和红色可用 并且我认为您不能将红色和黄色混合用于同一角色 严格来说 不 ANSI 从未标准化任何被称为 橙色 的东西 对于终端的控制序列 有些终端
  • 为什么 CGPath 和 UIBezierPath 在 SpriteKit 中对“顺时针”的定义不同?

    在 SpriteKit 中 clockwise方向相反UIBezierPath但不是为了CGPath 例如 如果我有 do let path CGPathCreateMutable CGPathAddArc path nil 0 0 10
  • React router 如何点击查看详细组件

    我有两个组件 Car 和 CarDetails 我想用超链接 link 来显示 cars 组件中的所有汽车 当用户单击时 它应该将 carid param s 传递给 CarDetails 组件 App js import React Co
  • Python Pandas - “loc”和“where”之间的区别?

    只是对 where 的行为以及为什么要使用它而不是 loc 感到好奇 如果我创建一个数据框 df pd DataFrame ID 1 2 3 4 5 6 7 8 9 10 Run Distance 234 35 77 787 243 543
  • Visual Studio中设置“目标框架”有什么作用

    在 Visual Studio 中 您可以为项目设置 目标框架 或多或少的常识是 如果将 目标框架 设置为 例如 NET 4 5 2 则应用程序在仅安装了 NET 4 5 1 的计算机上将无法运行 第一个问题 这是真的吗 第二个问题 该设置
  • 该捆绑包在 Mac OS X 上无效

    我在将应用程序上传到应用程序商店时遇到问题 每次我将应用程序上传到苹果时 它都会显示 无效的二进制文件 因此我尝试在 Xcode Organizer 中验证存档的应用程序 但收到此错误 该捆绑包无效 Apple 目前不接受使用此版本 SDK
  • 根据给定的索引集获取参数包的子集

    好吧 这确实是一件困难的事情 我希望能够通过在给定的一组有效索引处选择参数类型来获取参数包的子集 然后使用该参数包作为函数的参数列表 IE template
  • React - Material-UI - 如何在react-hook-form中使用具有多个值的Select

    我正在尝试使用 UI 材质Select里面有多个选项react hook form没有成功 在尝试使用多种选项之前我已经完成了这项工作
  • cudaSetDevice() 对 CUDA 设备的上下文堆栈有何作用?

    假设我有一个与设备关联的活动 CUDA 上下文i 我现在打电话cudaSetDevice i 会发生什么 Nothing 主上下文取代了堆栈顶部 主上下文被压入堆栈 事实上 这似乎是不一致的 我编写了这个程序 在具有单个设备的机器上运行 i
  • java中的简单超时

    谁能指导我如何在java中使用简单的超时 基本上在我的项目中我正在执行一条语句br readLine 它正在读取调制解调器的响应 但有时调制解调器没有响应 为此 我想添加一个超时 我正在寻找类似的代码 try String s br rea
  • 图像增强 - 从书写中清除给定图像

    我需要清理这张照片 删除 清理我 的字样并使其变亮 作为图像处理课程作业的一部分 我可能会使用 matlab 函数 ginput 来查找图像中的特定点 当然 在脚本中您应该对所需的坐标进行硬编码 您可以使用 conv2 fft2 ifft2
  • 无法执行 script.sh:未知错误

    我想使用 DTrace 来查看 我的 shell 脚本进行了哪些系统调用 我做了一个非常简单的shell脚本 shell sh 并赋予它执行权限 bin bash grep 1 lt lt lt 123 I cd进入其目录 并运行这个简单的
  • BigInteger 没有自动装箱吗?

    在修复代码时这个问题 https stackoverflow com q 30938610 4271479 我意识到自动装箱并不适用于所有类型 此代码编译 Integer y 3 但做同样的事情BigInteger不编译 BigIntege
  • 纯 Fortran 过程中的 I/O

    我正在尝试将错误检查合并到我正在编写的纯过程中 我想要这样的东西 pure real function func1 output unit a implicit none integer a output unit if a lt 0 th