问题标签 [fortran95]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
8524 浏览

fortran - 在 Fortran 中列出目录的内容

如何在 Fortran 95 中获取目录的内容?

0 投票
3 回答
4887 浏览

fortran - 将字符串内联传递给子例程调用,其中参数已定义长度,会产生意外结果

我发现这段代码行为异常

此代码打印依赖于编译器的垃圾。

我看到问题在于我正在跳过带有len=*字符串参数的例程,然后将其传递给字符串参数指定长度的例程。

幕后到底发生了什么,标准中在哪里描述了这种行为?我是否应该避免为字符例程参数指定长度,因为这种行为可能随时发生而没有警告?

0 投票
2 回答
3190 浏览

fortran95 - 数组 negtivel 索引的 fortran 中的调试错误

我在这里有一个测试程序:

第 8 行是错误的,因为 indp 是负数。但是当我编译它时使用'ifort'或'gfortran'他们都找不到这个错误。甚至使用 valgrind 调试这个程序也找不到这个错误。你有什么想法找到这种问题吗?

0 投票
2 回答
4468 浏览

fortran - 在 Fortran 中调用子程序(分段错误)

以下代码在 Linux 系统上使用 pgf90 编译时出现分段错误,而当我在 Windows 上使用 Intel Visual FORTRAN 时成功运行。

对此有何解释?

0 投票
2 回答
1727 浏览

compiler-errors - 使用读取语句时出错

我目前正在开发一个用于读取输入文件的 FORTRAN 程序。读取输入文件后,文件的第一行包含一个整数,表示文件中的矩阵数量。第二行包含每个矩阵有多少行和列。其余的行包含矩阵本身。该程序将读取每个矩阵并将其写入输出文件,并计算所有矩阵的总和。在读取矩阵数据时,我不断收到这两个错误

代码:READ(1,*,END=99)(DIMENSIONS(I), I=1,2)

错误:只读 I/O 列表中的常量和表达式无效。

错误 2:此标签未定义 [99]

我的代码是:

0 投票
2 回答
42455 浏览

fortran - Fortran:最大和最小整数

Fortran 对我来说是全新的,有人可以帮我解决以下问题吗?我想在我的电脑上找出所有整数种类数以及每个种类数的最大值和最小值。我在下面列出了代码:

我得到的整数种类数是:1,2,4,8。

  1. 为什么每个种类数的每个最大整数都相同:2147483647?最小整数是否有内在函数?

  2. 调用子程序时如何保留整数种类编号rang?我认为这是最大整数的关键。

0 投票
1 回答
169 浏览

oop - 连接在 Fortran 中不同模块中定义的类型

我正在 FORTRAN 中编写一个相当小的 pde 求解应用程序,并且我正在尝试使用 OOP。现在,我有几个模块,其中一些定义了具有相应内部过程的类型。

现在的问题是,如果一个模块使用另一个模块中定义的类型运行而后一个模型也使用前者的类型运行,我该怎么办?我举个例子。

比如说,我有两个模块,一个定义了Mesh类型,另一个定义了NodeVariable类型。现在我希望每个NodeVariable都与将要解决的网格相关联,因此我type(Mesh) :: mesh在类型的定义中添加了一个字段。到目前为止,我可以编写use module-mesh来访问网格类型的定义,这没有问题。但我也希望网格能够了解其上定义的变量,因此我将其声明type(NodeVariable), allocatable :: var(:)为一个字段并添加一个过程以动态将变量添加到网格中。但是现在我被卡住了,因为我负担不起另一个use语句:它导致模块使用自己,因此一切都崩溃了。解决方案?

0 投票
1 回答
187 浏览

syntax - 这些 Fortran (90) 语句有什么作用?

我遇到了以下代码,但我不明白。它有什么作用?

0 投票
1 回答
278 浏览

fortran - Fortran 矩阵生成代码错误

这个fortran代码应该从txt文件中的简单矩阵表中复制数据,然后根据之前每行和每列的成绩计算成绩和平均值。出于某种原因,我无法打印出成绩或平均值,它们显示为空白或带有 0 或星号。该程序在从 txt 文件打印矩阵表后运行时崩溃,它说错误是访问冲突 - 所以根本没有多大帮助。到目前为止,这是我的代码:

这是 in1.txt 文件中的内容:

0 投票
1 回答
341 浏览

fortran - OOP Fortran:保存指向意图(IN)变量的指针

我有一个 Fortran 模块,我想尽可能地遵循 OOP 理念来组织它,同时仍然使其与 Fortran 2003 兼容。这个模块基本上:(a)分配/释放临时数组缓冲区,以及(b)提供一个函数 do_F对一些数据进行操作。这个函数 do_F 使用这些临时缓冲区,但也依赖于几个辅助类型。

我很清楚我应该将缓冲区放入一个类型中,并在适当的时候初始化/释放。但是,由于对 do_F 的每次调用都需要几个参数,所以我确信最好使用的设计策略是什么。

更具体地说,考虑以下实现:

  1. 每次调用 do_F 时传递大量类型

    /li>
  2. 保存指向 do_F 需要的类型的指针

    /li>

我的具体问题是:

  1. 实施 #2 有效吗?PGI编译器没有抱怨,但听说函数返回后intent(IN)不再定义好
  2. 将此方案与指针一起使用是否会降低性能?即使我不写入这些 aux_ptr,编译器是否能够像 #1 一样优化我的代码?

一些注意事项:

  1. 函数 do_F 被调用了大约 100 次,每次调用都需要几分钟,并且对大型数组进行操作。
  2. 除了 do_F 之外,还有 do_G 和 do_H 函数对相同的数据进行操作并使用相同的辅助变量。这就是为什么我想首先减少传递给函数的变量数量。
  3. 我不想将所有辅助变量组合成一种类型,因为它们在大型 HPC 代码的其余部分中使用。

谢谢!