问题标签 [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.
fortran - Fortran 2003 中未初始化的变量
为什么与 f90 相比,fortran 2003 中的变量没有初始化为零?
我在文件中的函数中有一个变量。它初始化为0。我想用另一个函数然后它显示一个垃圾值。即使对于全局变量也是如此。我需要为 fortran 2003 编译器设置任何选项吗?
fortran - 如何从函数调用中全球化虚拟参数
如何从函数调用中全球化虚拟参数?
我在 Fortran 中有以下代码
这里的问题是来自a和b的值在第二次调用时没有保持。它正在返回垃圾。即使我尝试使用common但它不接受全球化虚拟参数。怎么做?
linux - 如何在 Linux 中编译 Fortran 77 文件?
我需要一个用于 Linux 中 Fortran 77 的编译器。
有没有人们使用的免费编译器?
我听说过 g77,但我找不到 rpm 或如何在 linux 中安装它。
谢谢!
linux - 我在哪里可以获得在 redhat linux 上安装 f2c 的文件?
我正在寻找让 f2c 在我的 redhat linux 操作系统上工作的 rpm 或简单的安装说明。我是 linux 新手,很难在谷歌上找到这样的东西。
(目标是用f2c把一个简单的fortran77文件转成c,然后编译)
有人有什么建议吗?
performance - Fortran 的性能
Fortran 在计算机语言基准游戏中的表现出奇的差。今天的结果将 Fortran 放在两个四核测试中的第 14 位和第 11 位,单核测试中的第 7 位和第 10 位。
现在,我知道基准测试从来都不是完美的,但是,Fortran 仍然(是?)经常被认为是高性能计算的语言,而且看起来这个基准测试中使用的问题类型应该是 Fortran 的优势。在最近一篇关于计算物理学的文章中,Landau (2008) 写道:
然而,[Java] 在 HPC 和并行处理方面不如 FORTRAN 和 C 那样高效或得到很好的支持,后两者具有高度开发的编译器和更多可用的科学子例程库。反过来,FORTRAN 仍然是 HPC 的主要语言,FORTRAN 90/95 是一种令人惊讶的好、现代和有效的语言;但是很遗憾,任何 CS 部门都几乎没有教授它,而且编译器可能很昂贵。
仅仅是因为语言大战使用的编译器(英特尔为 Linux 提供的免费编译器)吗?
c# - 如何从 Fortran dll 调用 c# 代码
目前我有 abc.dll,它是 fortran dll。现在我想从 abc.dll 调用 C# 代码。有没有办法从 fortran dll 调用 C# 代码?
谢谢萨加尔
module - 你如何使用 Fortran 90 模块数据
假设您有一个包含大量变量、函数和子例程的 Fortran 90 模块。在您的USE
陈述中,您遵循哪种约定:
- 使用语法显式声明您正在使用哪些变量/函数/子例程
, only :
,例如USE [module_name], only : variable1, variable2, ...
? - 插入毯子
USE [module_name]
?
一方面,该only
子句使代码更加冗长。但是,它会迫使您在代码中重复自己,并且如果您的模块包含大量变量/函数/子例程,事情就会开始变得不规则。
这是一个例子:
更新 希望有人说“Fortran?只需用 C# 重新编码!” 所以我可以否决你。
更新
我喜欢Tim Whitcomb 的回答,它将 FortranUSE modulename
与 Python 的from modulename import *
. 之前在 Stack Overflow 上的一个话题:
-
- Mark Roddy
在回答中提到:
不要使用“从模块导入 *”。对于任何合理的大型代码集,如果您“导入 *”,您可能会将其固定到模块中,无法删除。这是因为很难确定代码中使用的哪些项目来自“模块”,这使得它向东到达您认为不再使用导入但很难确定的地步。
- Mark Roddy
在回答中提到:
-
- dbr 的答案包含
不要这样做 from x import * - 它使您的代码很难理解,因为您无法轻易看到方法的来源(from x import *; from y import *; my_func() - my_func 定义在哪里?)
- dbr 的答案包含
因此,我倾向于达成共识,即通过以下方式明确说明我在模块中使用的所有项目
正如Stefano Borini所说,
[如果]你有一个太大的模块,以至于你不得不只添加,这意味着你的模块太大了。拆分它。
fortran - Fortran 中的字符串:可移植的 LEN_TRIM 和 LNBLNK?
我需要一个可移植函数/子程序来定位字符串中最后一个非空白字符的位置。我找到了两个选项: LEN_TRIM
和LNBLNK
. 但是,不同的编译器似乎有不同的标准。以下编译器的官方文档表明 LEN_TRIM 是以下平台上 Fortran 95 标准的一部分:
但是,在 F95 标准之前发布的编译器似乎没有任何保证。 我的经验是,较旧的编译器可能会指定一个LEN_TRIM
或LNBLNK
,但不一定同时指定两者。我的解决方案是使用预处理器条件:
然后传递-DUSE_LEN_TRIM
给预处理器。但是,我不是预处理器条件和额外编译时标志的忠实粉丝。 您对定位字符串中最后一个非空白字符的位置的可移植(在 Fortran 95 标准之前)函数有什么建议吗?
linux - 用随机数据填充内存
有没有办法用随机数据填充 linux 机器上的空闲 RAM?
我问这个的原因是:我在一个用 Fortran 进行数值编程的小组工作。有时,人们会搞砸双精度实数,因此应该给出双精度结果的程序只给出单精度。
如果我的理解是正确的,那么在这样的程序中,在单精度限制之后,人们会看到结果的随机波动。也就是说,如果您多次使用相同的输入运行相同的程序,每次都会得到随机不同的结果。您所看到的(随机部分)取决于机器空闲 RAM 中的随机值。但实际上,如果你在同一台机器上重复运行程序,内存的相同部分往往会被重复使用,其中包含相同的随机数据,每次都导致相同的输出。
我的想法是,如果您可以用随机数据覆盖内存,您实际上会看到程序输出中的随机波动。这将使找到这些错误变得容易得多。
这个想法是不是很糟糕,或者如果不是,我该如何填充记忆?我可以通过管道 /dev/random 到 RAM 中吗?
string - 将整数转换为字符串以在运行时创建输出文件名
我在 Fortran 中有一个程序,可以将结果保存到文件中。目前我使用打开文件
但是,我现在想运行一个循环,并将每次迭代的结果保存到文件'Output1.TXT'
、'Output2.TXT'
、'Output3.TXT'
等。
Fortran 中是否有一种简单的方法可以从循环计数器构造文件名i
?