fortran 77 代码write问题

fortran 77 代码write问题,第1张

fortran中的write用法大致如下:write(设备号,格式)。Fortran对这个设备号的要求是要求在设备号上的数据是整型。11是整型,自己定义的整型变量也是整型。

举个栗子:

integer::n

n=11

write(n,)"hello world!"

的意思就是说再文件号为11的文件中写入“hello world!”这句话。

修改一下代码,减小stack的使用。根据相关公开信息查询显示,防止fortran程序内存泄露可以修改代码,减小stack的使用,比如避免递归调用,避免数组整体赋值和计算,采用循环方式进行。二是增大堆栈(stack)的空间。方法参见博客“fortran增大堆栈,解决stackoverflow。

Fortran 是一种编程语言,它的运行结果一般会输出到控制台,也就是所谓的输出界面。当你运行一个 Fortran 程序时,程序会将结果输出到屏幕上,这是 Fortran 默认的行为。如果你想将输出结果保存到文件中,可以在程序中添加相应的代码。

Fortran 语言本身并没有提供 GUI 界面,也就是说 Fortran 程序一般是在命令行下运行的。这也是为什么 Fortran 程序的输出结果会显示在输出界面上的原因。当然,也可以使用一些第三方库来实现 GUI 界面的功能,但这需要开发者自己进行开发和集成。

需要注意的是,对于一些 Fortran 编译器来说,比如 gfortran,需要在编译时加上 -o 选项才能将编译结果输出到指定的文件中。如果没有指定 -o 选项,编译结果会默认输出到一个名为 aout 的文件中。因此,在运行 Fortran 程序时,需要注意文件名的指定和文件的输出路径。

这句话的意思是,有一个声明语句,它不能在执行语句的部分。

一段Fortran代码,应该先是全部的声明语句,然后是全部的执行语句。

比如

real :: a

integer b

real :: c

a = b 10

而不能是

real :: a

integer b

a = b 10

real :: c

入门fortran像入门其他所有语言一样,从最简单的装软件开始

0装软件

初学建议直接cbfortran,windows版本还自带mingw编译器,支持f77f95f2003,也不大,而且开箱即用,安装之后新建项目然后F5就Helloword了。

非常适合小东西,写个小计算单机跑跑之类的合适

然而,终究,学fortran就是为了速度,而mingw编译器本省优化是不足的,所以还是要装vs+parallelstudio。用ifort编译会有mkl和mpi支持。但是安装起来比codeblocks麻烦多了

1变量,算符,代数运算,矩阵运算

这个推荐一个小repo,里面有很多小例子,结合书上讲的内容

Pjer-zhang/fortran-examples

跑跑小例子,语法很快就好了

2并行

并行是fortran的终极目的,用fortran终究还是为了fortran的速度

fortran的并行有单机多线程并行openmp以及跨节点并行MPI,这个跨节点并行就要用到集群了

openmp

Home

是通过向程序中添加特殊注释符的形式来指示并行段的,这样在编译的时候如果添加flag[-omp]那么最后程序跑的时候就会并行,如果不加这个flag那么久不会并行。

一个小例子:

结语

Fortran的能存在到今天完全是因为成吨的遗产代码,以及懒惰的研究生

不只是CFD,空间物理,计算等离子体,聚变数值计算等等这些学科里都有动辄几十万行的模式(大部分f77写的),这些模式只有模块介绍和对应的已发表paper,没有line-by-line注释,想要重构几乎没有可能,所以只能像黑盒一样调用。

我的原则是小规模的fortran遗产代码(10k行以下),重构到matlab或者如果性能需求很高的话就cuda/c。不能把毒瘤传给下一代

最后,科大有开Fortran的课的哇,7系开的,我还当过助教呢

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/4138122.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-18
下一篇2024-04-18

发表评论

登录后才能评论

评论列表(0条)

    保存