18得票4回答
Fortran中的彩色终端输出

我的程序将计算状态输出到终端,包含大量信息。如果可能的话,我想对文本的某些部分进行颜色编码。 我已经在这个网站上看到了如何在Bash和C++中完成这项工作,但是我无法使用其中任何方法来在Fortran (modern)中实现相同的结果。例如,我尝试了这个示例代码,我认为它应该可以工作:PRO...

18得票1回答
Fortran中结果变量的目的是什么?

在Fortran中,有两种标准的方法来从函数中返回一个结果。第一种方法是将函数的返回值分配给函数名称。function foo() integer :: foo foo = 10 end function foo 第二种形式是在Fortran 90中标准化的,通过一个"res...

18得票1回答
使用Fortran重载函数

在Fortran 90中,我们可以使用接口来重载函数。然而,根据该网站的说法,我们不能使用相同的参数名称定义这些函数。但在gfortran中,下面的代码似乎没有问题:interface check module procedure check_int, check_real end int...

18得票1回答
在声明变量时,使用双冒号有什么区别吗?

在声明变量时,使用双冒号和单冒号有什么区别吗?real(8) :: a real(8) b 这两个看起来做的事情是一样的。除了风格之外,它们之间有什么不同吗? 我知道我们可以按照以下方式初始化变量并添加属性 我知道我们可以像下面这样初始化变量并添加属性:real(8), intent...

18得票3回答
Fortran中带前导零的格式化输出

我有一些十进制数需要写入文本文件,并在适当时加上前导零。我已经进行了一些研究,但我看到的所有内容都建议使用以下方式: REAL VALUE INTEGER IVALUE IF (VALUE.LT.0) THEN IVALUE = CEILING(VALUE) ELSE ...

18得票2回答
在Fortran中将大数组写入文件的最佳方法是什么?文本方式还是其他方式?

我想知道将一个大的Fortran数组(5000x5000实数单精度数)写入文件的最佳方式。我正在尝试保存数值计算的结果以供以后使用,以便不必重复计算。对于每个数字4字节,从计算5000x5000得到了100MB,是否可能以只有100MB的形式保存它?有没有一种方法可以将Fortran数组保存为...

18得票2回答
如何强制将numpy数组顺序设置为Fortran风格?

我正在使用许多Fortran库进行数学计算。因此,numpy中的所有数组都需要是 Fortran连续的。 目前我使用numpy.asfortranarray()来实现这一点。 我的问题如下: 这是告诉numpy将数组以Fortran风格存储的快速方法吗?还有更快的方法吗? 是否有可能设置...

18得票5回答
Fortran 95的语法结构,如WHERE、FORALL和SPREAD,是否通常会导致更快速的并行代码?

我已经阅读了Metcalf,Reid和Cohen写的Fortran 95书以及用于Fortran 90的Numerical Recipes。他们建议使用WHERE,FORALL和SPREAD等方法来避免程序不必要的串行化。 然而,我偶然发现了这个答案,声称尽管FORALL在理论上很好,但在实...

18得票1回答
强制gfortran在第一个NaN处停止程序

为了调试我的应用程序(Fortran 90),我想把所有的NaN转换成信号NaN。 使用默认设置,我的程序可以正常工作,但输出文件中存在NaN数据。我想要找到生成NaN的位置。如果我能重新编译程序时使用信号NaN,我将在第一个错误浮点操作所在的第一个点收到SIGFPE信号。

18得票1回答
如何像MATLAB一样调用UMFPACK?

问题 我希望解决一个线性方程组A*x=b。这个m×m的矩阵是稀疏的、实数的、方阵,条件较差,非对称,但由于x只知道上加一个常量,所以它是奇异的(rank(A)==m-1)。 我可以通过指定三个向量(i、j和v)中的非零条目来创建矩阵A,使得A(i(k),j(k))=v(k):A = spa...