前言

老师给我了一个Fortran77的老代码,这段代码在他的电脑上可以顺利运行,在我这里就会出现各种各样的奇怪问题,考虑到老代码新编译器没法好好运行,所以我想把它改写成Fortran95的,但是里面有一些奇怪的语法不知道怎么改。


一、奇怪的运行错误

在导师电脑上可以成功运行,在我这里就会变成NaN

奇怪的是,我想看看哪里开始出错的,加了一句‘write(6,*) d(20,20,20)’在一个函数之前,想看看这个值的变化,这个值和加这一句的位置是随手选的,奇怪的是,不再出现NaN了,虽然结果是错的,但是能够顺利运行下去了,而且换个位置,或者改成‘write(5)’,输出去别处,NaN就又出现了。

二、这是什么写法?

代码如下:

      ixjx=ix*jxixjxkx=ix*jx*kxdo 40 l=1,ixjxp(l,1,1)=pbtmp(l,1,kx)=ptop40   continuedo 50 l=1,ixjxkxt(l,1,1)=p(l,1,1)/d(l,1,1)50   continuedo 60 l=1,ixjxt(l,1,1)=t(l,1,2)t(l,1,kx)=t(l,1,kxm1)60   continue

do循环的上界远远超过循环里的矩阵的上界了,源码里还有各种各样的超界,老师说在过去这么写可以提高运行效率,请问这么写的规则是什么?原理又是什么?Fortran95是不是还能够支持这种写法?

我是win10装了一个Ubuntu的虚拟机,这个代码用gfortran和ifort运行结果不一样。

以下是解决

这是Fortran77很早以前的写法,这么写可以让代码运行更加高效,不用多个do循环嵌套,Fortran是列优先的存储顺序,
a(1,1)a(2,1)a(3,1)a(1,2)a(2,2)a(3,2)a(1,3)a(2,3)a(3,3)这样
从a(1,1)开始向后寻找5个,即a(5,1),就是a(2,2)。
如果需要计算x(i,j)=a(i,j)+a(i,j+1),就可以写成
do 10 i=1,9
x(l,1)=a(l,1)+a(l,2)
10 continue
这种写法在Fortran90就不能用了。

至于不同电脑,不同编译器结果不一样,主要是因为有几个变量没有初始化,导致一开始就有个变量炸了,但是到后来才体现出来。ifort和gfortran自动给这几个变量的值不一样,所以结果也不一样。

【已解决】Fortran77老代码中的do循环,在Fortran95中能否使用?相关推荐

  1. python中字典的循环遍历_python中字典如何遍历循环

    python中字典如何遍历循环 发布时间:2020-09-24 14:16:07 来源:亿速云 阅读:64 作者:Leah 这篇文章将为大家详细讲解有关python中字典如何遍历循环,文章内容质量较高 ...

  2. Java中使用for循环删除数组中某个元素,并按原有顺序打印

    package com.ty.demo; //使用for循环删除数组中的某个元素,并按照原有顺序打印出来 public class Demo03 { public static void main(S ...

  3. 已解决:手动打包war包结果无法在Tomcat中部署

    Tomcat报错信息:Unable to create the file [某某目录/META-INF/war-tracker] Tomcat部署war包的运行机制 tomcat 在解压war包后,会 ...

  4. 【已解决】【高速版】如何显示(扫描)局域网中所有的在线主机IP及MAC地址?

    有些时候,我们想知道局域网内的全部在线主机的IP地址,以进行后续相关操作; 虽然大部分情况下,路由器管理页面或者路由器APP可以得到这些主机的IP地址及在线状态; 但是有一些例外,比如: 1. 某些主 ...

  5. 【小程序】微信小程序如何获取用户微信openID?(已解决,完整代码实例)

    一.需要三个参数: 1.获取code 2.小程序AppID 3.小程序密钥AppSecret 二.代码 1.wxml代码 <view>获取Code:{{wxCode}} </view ...

  6. python游戏结束显示分数代码_当游戏循环在Python中运行时,多线程来显示游戏分数?...

    我想根据比赛时间的推移得分.为此,我想让两个循环同时运行.游戏循环和得分循环,每1.5秒加1.当我运行程序时,分数不会出现.我是否正确使用多线程?这是最好的办法吗?为了简单起见,我只发布了相关代码.谢 ...

  7. 【Linux】Shell脚本中如何使用“循环”遍历“数组”中的元素(包括MySQL的常用指令介绍)

    一.背景 实习过程中,今天mentor突然让我拉取一下远端园区数据库中的部分信息,因为包含很多不同园区的数据信息,而且要以园区为单位生成文件来对数据进行存放,因此自然是需要使用shell脚本来自动生成 ...

  8. php中in array循环,在php中in_array的使用方法

    在php中in_array的使用方法 发布时间:2020-09-29 17:00:16 来源:亿速云 阅读:69 作者:小新 在php中in_array的使用方法?这个问题可能是我们日常学习或工作经常 ...

  9. not executable: 64-bit ELF file 已解决

    not executable: 32-bit ELF file 已解决 not executable: 64-bit ELF file 已解决 如上二个问题 1,在ubuntu系统中 gcc-lina ...

  10. Access denied for user ...(已解决)

    Access denied for user -(已解决) 问题描述 代码 import java.sql.*;public class text {public static void main(S ...

最新文章

  1. Styling with the DataGridColumnStyle
  2. 机器学习Tips:关于Scikit-Learn的 10 个小秘密
  3. ValueError: Error when checking : expected input_1 to have 4 dimensions, but got array with shape (X
  4. 浅析企业网站软文效果是如何展现的?
  5. oracleI基础入门(1)--背景
  6. 2020-11-7( servlet)
  7. 万字好文 | B端产品设计指南
  8. boost::test模块测试树管理单元测试
  9. 【作品发布】QQ2008远程自助 1.5.1.1
  10. 初识Mysql(part12)--我需要知道的3条Mysql语句之插入数据
  11. Vue学习之路---No.5(分享心得,欢迎批评指正)
  12. windows_2008_server无法安装vcredist_x64
  13. Abaqus帮助文档翻译——Abaqus/CAE主窗口介绍
  14. CS代理+proxychains+nmap进行内网扫描
  15. win11提示此驱动正在使用中,硬盘格式化不了
  16. Android SDK使用迅雷下载方法
  17. web前端学习13-19(HTML常用标签)
  18. 智能优化算法:侏儒猫鼬优化算法-附代码
  19. 怎么做抽奖活动_没有公众号怎么做刮刮乐链接
  20. 【DDD】VO、DTO、DO、PO理解及应⽤

热门文章

  1. GoLang笔记—容器篇
  2. 《编码的奥秘》目录摘要及读书笔记
  3. android 排队系统设计,基于android银行排队叫号系统毕业设计论文+设计源码+答辩PPT...
  4. 数据库的使用(SQL)
  5. 数据清洗Chap4——dataframe操作
  6. python config文件_Python如何配置config文件?
  7. 深入浅出Python机器学习2——基于Python语言的环境配置
  8. 信用卡交易数据异常检测
  9. matlab进行分子动力学模拟,一种基于分子动力学模拟测试碳纳米管力学性能的方法与流程...
  10. java实现中文转拼音_Java 实现中文-拼音转换