标签: fortran77

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

我正在寻找一个rpm或简单的安装说明,让f2c在我的redhat linux os上工作.我是linux新手,很难在google上找到类似这样的东西.

(目标是使用f2c将简单的fortran77文件转换为c,然后编译)

有人有什么建议吗?

linux fortran fortran77

1
推荐指数
1
解决办法
5620
查看次数

Fortran 77(Fortran-II)中的抽象数据类型?

我正在尝试在Fotran 77中工作,我发现需要基于树的数据结构.除了使用数组实现树之外,是否有任何方法可以构建具有指向其他节点的指针节点的树,根据大多数语言的标准实现?

这种野兽的文件很少,似乎没有任何标准的结构类型可以实现这一点.

思考?

fortran abstract-data-type fortran77

1
推荐指数
1
解决办法
1314
查看次数

Fortran'call'声明:它实际上可以调用什么?

我继承了大约400行非常古怪的Fortran 77代码,我试图逐步分析它,以便在我的脑海中清楚地表达出来.

无论如何,我有一个类似头文件(实际上是一个.h,但其中的代码是在fortran而不是C/C++中),其中有两个语句,称为getarg.h:

character*80 serie
integer ln
Run Code Online (Sandbox Code Playgroud)

然后我有另一个fortran文件(.f)调用getserie.h其中包含此代码:

subroutine getserie(serie, ln)
include 'getarg.h'
call getarg(1, serie)
ln = index(serie, ' ') - 1
return
end
Run Code Online (Sandbox Code Playgroud)

我的问题是:我可以call使用只有变量声明的外部文件吗?这样做有什么影响?

fortran fortran77 subroutine fortran90

1
推荐指数
1
解决办法
3524
查看次数

确定未在Fortran子例程顶部声明的变量类型

我正在使用传统的Fortran 77代码子例程,其中参数类型未在代码块的顶部声明.

这是一个显示子程序顶部的片段.

   SUBROUTINE BPASS(F1,F2,F3,F4,SI,N,A,IERR)
   REAL * 4 A( N ),FV( 4 )
Run Code Online (Sandbox Code Playgroud)

根据以上所述,我认为A是长度的数组N类型REAL *4,大小等于一个C float.或者,FV(4)是一个长度4与类型的数组REAL *4.

但是,F1,F2,F3,F4,SI,N,IERR如果未列出类型,有哪些类型?它似乎N应该是一个integer.

我需要知道类型,以便我可以从C++代码调用子例程.对于未声明的类型,是否存在Fortran约定?

c++ fortran types fortran77

1
推荐指数
1
解决办法
916
查看次数

Fortran 77中的Char数组维度混淆

我的子程序中有以下代码:

character    x*256 ,y*80
common /foo/ x     ,y(999)
Run Code Online (Sandbox Code Playgroud)

好吧,我实际上并没有写这个.所以我不明白这里的尺寸.是y一个999元素宽的80字符长字符串数组?

如果是这样,如何在没有公共块的情况下在Fortran 90中正确定义?

fortran fortran77 fortran-common-block

1
推荐指数
1
解决办法
224
查看次数

Fortran 77:IF语句,其变量作为参数,后跟label语句

我从FORTRAN 77中编写的模型中看到了这个FORTRAN语句.我不知道这意味着什么.如果有人可以发光,会很高兴.

以下是代码的外观:

IF(NC)20,20,10

注意:NC是一个变量(我认为),后面的数字是标签语句(我认为).

我的问题是,上述陈述是什么意思?我理解通常在"IF"语句之后,括号中应该有一个参数,例如(a <20).但是,在这种情况下,括号中只有一个变量.

fortran fortran77

1
推荐指数
1
解决办法
179
查看次数

理解 Fortran 指针

在 Fortran 中,可以为指针分配内存,或者不能:

real(kind=jp), target :: bt(100,100)
real(kind=jp), pointer :: pt(:,:)
Run Code Online (Sandbox Code Playgroud)

但是你可以为指针分配内存pt

allocate(pt(100,100))
Run Code Online (Sandbox Code Playgroud)

我的问题是:利弊是什么?就我所见,为指针分配内存违背了指针的目的并占用了更多内存。当然,我对指针的了解是有限的,所以如果有人能向我解释这里发生了什么,我将不胜感激。

我正在使用混合 FORTRAN 77 和 Fortran 90 代码的模型,此外,我正在使用英特尔编译器编译代码。

fortran fortran77 fortran90 intel-fortran

1
推荐指数
1
解决办法
1116
查看次数

没有动态内存分配,fortran 77程序员如何管理?

我开始学习Fortran,来自C++/Matlab/Java背景.我意识到一些Fortran程序员仍然坚持使用F77,可能是因为他们不喜欢面向对象,命名空间和东西,并且习惯于旧的语法.

我知道你可以编写一个没有OOP的程序.我不明白的是没有动态内存管理你怎么做.有一千个例子,你事先不知道数组大小 - 例如将完整矩阵转换为稀疏矩阵时.

当然,现代Fortran提供"自动数组"和"可分配数组".但这些并没有出现在1977年.如果没有这些结构,F77的人如何管理?

fortran fortran77 dynamic-memory-allocation

1
推荐指数
1
解决办法
314
查看次数

如何在fortran中初始化整数类8的数组?

我想在fortran初始化一个大整数数组,我试过:

integer(kind=8) :: XGrid(1:20)
Run Code Online (Sandbox Code Playgroud)

但整数仍然是默认类= 4.我后来在数组中添加了数字:

XGrid = (/3002, 3340403,....,19460630000/)
Run Code Online (Sandbox Code Playgroud)

我收到"此数字常量超出范围"错误.因为它不适合一种kind = 4 int,但会在一种= 8 int.

我也尝试将其声明为:

integer, parameter :: ik8 = selected_int_kind(8) 
integer(ik8) :: XGrid(1:20)
Run Code Online (Sandbox Code Playgroud)

但这也行不通.

编辑:感谢Vladimir F,但我试图定义一个数组而不仅仅是一个变量,因此我无法理解如何调整使用的答案: Fortran 90中有更好的双精度赋值吗? 可不可能是:

integer, parameter :: ik8 = selected_int_kind(8) 
integer(ik8) :: XGrid(1:20)_ik8
XGrid = (/3002_ik8, 3340403_ik8,....,19460630000_ik8/)
Run Code Online (Sandbox Code Playgroud)

还是不一样?谢谢

arrays fortran fortran77 fortran90 fortran95

1
推荐指数
1
解决办法
1448
查看次数

C和Fortran中指针在确定程序速度中的作用

我的理解是Fortran(90之前)非常快,部分原因是它不允许指针别名(因此允许更好的编译器优化).但是,我也知道C语言语言中的指针允许程序员编写极其快速的代码.

我不明白为什么这两种语言因为相反的原因而快速.任何人都可以了解正在发生的事情吗?

提前致谢.

c performance fortran pointers fortran77

1
推荐指数
1
解决办法
207
查看次数