网站大量收购闲置独家精品文档,联系QQ:2885784924

FORTRAN-90-程序编程规范.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FORTRAN-90-程序编程规范 PAGE PAGE 1 FORTRAN 90 程序编程规范 Fortran 90 编程规范,使程序代码高度组织化,更加易读、易懂、易于维护,程序更加高效。使编出的程序更易懂、易于维护。 1 语言选择 数值预报创新系统软件开发应避免使用Fortran77 的某些过时特征以Fortran 90不一致的特征。选择Fortran 90 作为开发语言,并采用Fortran 90 的新功能,如动态内存的分配(dynamic memory allocation)、递归(recursion ), 模块(modules)、POINTER 、长变量名、自由格式等。 Fortran 77其中某些只是一些冗余的功能,这些功能已经过时,另外,还有一些在Fortran90 中被证明是不好的用法,建议不要使用。 2 Fortran 90 的新特性 2.1.1 建议使用的Fortran 90 新特性 建议使用Fortran 90 提供的模块(module ),并用Use ONLY 指定module 中哪些变量或派生类型定义可用于调用程序。 尽量使用数组下标三元组,这样可优化并减少所需的代码行数。为提高可读性,要在括号内表明数组的维数,例如: 1dArrayA(:) = 1dArrayB(:) + 1dArrayC(:) 2dArray(: , :) = scalar * Another2dArray(: , :) 当访问数组的子集时,例如在有限差分等式中,可以通过使用下标三元组实现。例如:2dArray(: , 2:len2) = scalar *( Another2dArray(:, 1:len2 -1) - Another2dArray(:, 2:len2) ) 自动数组(automatic arrays):这种数组的大小在子程序中指定,其大小取决于运行时的变量,例如,可通过参数列表向子程序传递实元变量。使用自动数组优先于其它形式的动态内存分配方法。 可分配数组(allocatable arrays):声明为ALLOCATABLE 属性的数组变量可在运行时通过ALLOCATE 命令分配空间。与指针不同的是ALLOCATABLE 属性不能用于派生数据类型中。这种方法申请的空间要使用DEALLOCATE 命令释放。 在一个程序中,不要重复进行“ALLOCATE—DEALLOCATE-然后再ALLOCATE 一个更大的空间”这样的操作,这样会导致大量不可利用的碎片空间产生。应在程序中对要开辟的动态数组空间进行连续分配,或连续释放。 在使用ALLOCATE 和DEALLOCATE 命令之后,要利用ALLOCATE 和DEALLOCATE 命令参数中的返回值来判断操作是否成功;不建议使用指针数组。 2.2 Fortran 90 中不建议使用的过时的特性 不要使用固定书写格式,采用Fortran 90 的自由书写格式。 不要使用旧式的DO 循环和CONTINUE 语句。在以前的DO 循环中,关键字之后大多有一个标号,循环在该标号处结束,如: DO 10 I = 1, 10 DO 20 j= 1, 20 A(i,j)=0. 20 CONTINUE? 10 CONTINUE? 建议采用统一的DO 结构,如: DO i = 1, 10 DO j = 1, 20 A(i, j) = 0. END DO END DO 不能使用实循环变量? 在DO 循环中若用实数作循环变量,由于截断误差的存在,会导致得不到预期的循环次数,如应将下面的DO 循环 DO r = 0.1 ,0.9 ,0.1 ... END DO 改写为: DO i = 1 , 9 r = i * 0.1 ... END DO 不要使用DO WHILE 语句,可用不带循环变量的DO 语句配合exit 替代,如: 不要使用选择性返回。例如: CALL Foo( x, y, *100, *200, *300 ) 在执行完该子程序后程序根据Foo 的返回语句后的表达式值选择从标号为100 、200 、 300 处继续执行。可将上述子程改写为结构化CASE 语句: CALL Foo(x, y, return_code) SELECT CASE(return_code) ... 不要使用算法IF 语句:使用块IF 结构来代替; 不要使用计算GO TO 语句,如GO TO (10,

文档评论(0)

158****1866 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档