问题标签 [fortran]

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 投票
4 回答
3045 浏览

fortran - Fortran 2003 中未初始化的变量

为什么与 f90 相比,fortran 2003 中的变量没有初始化为零?

我在文件中的函数中有一个变量。它初始化为0。我想用另一个函数然后它显示一个垃圾值。即使对于全局变量也是如此。我需要为 fortran 2003 编译器设置任何选项吗?

0 投票
3 回答
327 浏览

fortran - 如何从函数调用中全球化虚拟参数

如何从函数调用中全球化虚拟参数?

我在 Fortran 中有以下代码

这里的问题是来自ab的值在第二次调用时没有保持。它正在返回垃圾。即使我尝试使用common但它不接受全球化虚拟参数。怎么做?

0 投票
9 回答
54665 浏览

linux - 如何在 Linux 中编译 Fortran 77 文件?

我需要一个用于 Linux 中 Fortran 77 的编译器。

有没有人们使用的免费编译器?

我听说过 g77,但我找不到 rpm 或如何在 linux 中安装它。

谢谢!

0 投票
2 回答
6090 浏览

linux - 我在哪里可以获得在 redhat linux 上安装 f2c 的文件?

我正在寻找让 f2c 在我的 redhat linux 操作系统上工作的 rpm 或简单的安装说明。我是 linux 新手,很难在谷歌上找到这样的东西。

(目标是用f2c把一个简单的fortran77文件转成c,然后编译)

有人有什么建议吗?

0 投票
6 回答
5693 浏览

performance - Fortran 的性能

Fortran 在计算机语言基准游戏中的表现出奇的差。今天的结果将 Fortran 放在两个四核测试中的第 14 位和第 11 位,单核测试中的第 7 位和第 10 位。

现在,我知道基准测试从来都不是完美的,但是,Fortran 仍然(是?)经常被认为是高性能计算的语言,而且看起来这个基准测试中使用的问题类型应该是 Fortran 的优势。在最近一篇关于计算物理学的文章中,Landau (2008) 写道:

然而,[Java] 在 HPC 和并行处理方面不如 FORTRAN 和 C 那样高效或得到很好的支持,后两者具有高度开发的编译器和更多可用的科学子例程库。反过来,FORTRAN 仍然是 HPC 的主要语言,FORTRAN 90/95 是一种令人惊讶的好、现代和有效的语言;但是很遗憾,任何 CS 部门都几乎没有教授它,而且编译器可能很昂贵。

仅仅是因为语言大战使用的编译器(英特尔为 Linux 提供的免费编译器)吗?

0 投票
2 回答
1295 浏览

c# - 如何从 Fortran dll 调用 c# 代码

目前我有 abc.dll,它是 fortran dll。现在我想从 abc.dll 调用 C# 代码。有没有办法从 fortran dll 调用 C# 代码?

谢谢萨加尔

0 投票
7 回答
48506 浏览

module - 你如何使用 Fortran 90 模块数据

假设您有一个包含大量变量、函数和子例程的 Fortran 90 模块。在您的USE陈述中,您遵循哪种约定:

  1. 使用语法显式声明您正在使用哪些变量/函数/子例程, only :,例如 USE [module_name], only : variable1, variable2, ...
  2. 插入毯子USE [module_name]

一方面,该only子句使代码更加冗长。但是,它会迫使您在代码中重复自己,并且如果您的模块包含大量变量/函数/子例程,事情就会开始变得不规则。

这是一个例子:

更新 希望有人说“Fortran?只需用 C# 重新编码!” 所以我可以否决你。


更新

我喜欢Tim Whitcomb 的回答,它将 FortranUSE modulename与 Python 的from modulename import *. 之前在 Stack Overflow 上的一个话题:

  • “导入模块”或“从模块导入”</a>

    • Mark Roddy 在回答中提到:

      不要使用“从模块导入 *”。对于任何合理的大型代码集,如果您“导入 *”,您可能会将其固定到模块中,无法删除。这是因为很难确定代码中使用的哪些项目来自“模块”,这使得它向东到达您认为不再使用导入但很难确定的地步。

  • python导入的好的经验法则是什么?

    • dbr 的答案包含

      不要这样做 from x import * - 它使您的代码很难理解,因为您无法轻易看到方法的来源(from x import *; from y import *; my_func() - my_func 定义在哪里?)

因此,我倾向于达成共识,即通过以下方式明确说明我在模块中使用的所有项目

正如Stefano Borini所说,

[如果]你有一个太大的模块,以至于你不得不只添加,这意味着你的模块太大了。拆分它。

0 投票
3 回答
3729 浏览

fortran - Fortran 中的字符串:可移植的 LEN_TRIM 和 LNBLNK?

我需要一个可移植函数/子程序来定位字符串中最后一个非空白字符的位置。我找到了两个选项: LEN_TRIMLNBLNK. 但是,不同的编译器似乎有不同的标准。以下编译器的官方文档表明 LEN_TRIM 是以下平台上 Fortran 95 标准的一部分:

但是,在 F95 标准之前发布的编译器似乎没有任何保证。 我的经验是,较旧的编译器可能会指定一个LEN_TRIMLNBLNK,但不一定同时指定两者。我的解决方案是使用预处理器条件:

然后传递-DUSE_LEN_TRIM给预处理器。但是,我不是预处理器条件和额外编译时标志的忠实粉丝。 您对定位字符串中最后一个非空白字符的位置的可移植(在 Fortran 95 标准之前)函数有什么建议吗?

0 投票
7 回答
5396 浏览

linux - 用随机数据填充内存

有没有办法用随机数据填充 linux 机器上的空闲 RAM?

我问这个的原因是:我在一个用 Fortran 进行数值编程的小组工作。有时,人们会搞砸双精度实数,因此应该给出双精度结果的程序只给出单精度。

如果我的理解是正确的,那么在这样的程序中,在单精度限制之后,人们会看到结果的随机波动。也就是说,如果您多次使用相同的输入运行相同的程序,每次都会得到随机不同的结果。您所看到的(随机部分)取决于机器空闲 RAM 中的随机值。但实际上,如果你在同一台机器上重复运行程序,内存的相同部分往往会被重复使用,其中包含相同的随机数据,每次都导致相同的输出。

我的想法是,如果您可以用随机数据覆盖内存,您实际上会看到程序输出中的随机波动。这将使找到这些错误变得容易得多。

这个想法是不是很糟糕,或者如果不是,我该如何填充记忆?我可以通过管道 /dev/random 到 RAM 中吗?

0 投票
9 回答
148489 浏览

string - 将整数转换为字符串以在运行时创建输出文件名

我在 Fortran 中有一个程序,可以将结果保存到文件中。目前我使用打开文件

但是,我现在想运行一个循环,并将每次迭代的结果保存到文件'Output1.TXT''Output2.TXT''Output3.TXT'等。

Fortran 中是否有一种简单的方法可以从循环计数器构造文件名i