• fortran90编译器 > "十五"国家重点科技攻关计划项目2001BA607B
  • "十五"国家重点科技攻关计划项目2001BA607B

    免费下载 下载该文档 文档格式:DOC   更新时间:2008-12-01   下载次数:0   点击次数:1
    文档基本属性
    文档语言:Simplified Chinese
    文档格式:doc
    文档作者:wuxiangjun
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    可以将一个软件包中所有程序的interface块写入一个模块中,该模块被软件包中的所有程序使用.这样做的优点是只需一个模块来检查interface定义,缺点是仍需对此模块和调用语句进行维护.
    Fortran 90编译器可在contains语句后自动提供过程之间的interface块,这种interface块可用于使用模块的任何程序.例如模块A含有过程a,模块B含有过程b,过程a调用模块B的过程b,在A中使用模块B(use B)将自动提供过程b的接口.另一方面,若将过程b置于A中,则不需使用use语句.因此可以在contains语句中尽量将相关的代码放在同一个模块中.
    建议在同一个软件包内可使用2,3的形式,而在调用软件包的入口程序时采用1或2的形式.
    关于动态内存的使用
    合理使用动态内存可提高效率.在Fortran90中常采用下列方法获取动态内存.
    自动数组(automatic arrays):这种数组的大小在子程序中指定,其大小取决于运行时的变量,例如,可通过参数列表向子程序传递实元变量.使用自动数组的优点是运行速度快,但是如果内存分配失败会使程序出错而中断.使用方法举例:
    SUBROUTINE Sub1(a,n)
    REAL,DIMENSION(n)::a
    可分配数组(allocatable arrays):声明为ALLOCATABLE属性的数组变量可在运行时通过ALLOCATE命令分配空间.与指针不同的是,ALLOCATABLE属性不能用于派生数据类型中.这种方法申请的空间要使用DEALLOCATE命令释放.在一个程序中,不要重复进行"ALLOCATE—DEALLOCATE-然后再ALLOCATE一个更大的空间"这样的操作,这样会导致大量不可利用的碎片空间产生.应在程序中对要开辟的动态数组空间进行连续分配,或连续释放.在使用ALLOCATE和DEALLOCATE命令之后,要利用ALLOCATE和DEALLOCATE命令参数中的返回值来判断操作是否成功.使用方法举例:
    REAL, ALLOCATABLE :: a(:)
    INTEGER :: Error
    ALLOCATE(a(5),STAT=Error)
    IF(Error /= 0 ) PRINT *,"Allocate Error"
    数组指针:声明为指向一个数组的指针,然后通过ALLOCATE命令分配空间.使用方法举例:
    REAL,POINTER,DIMENSION(:,:):: A
    INTEGER :: Error
    ALLOCATE(a(5,5),STAT=Error)
    IF(Error /= 0 ) PRINT *,"Allocate Error"
    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

    上一页下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 DOC格式下载
  • 您可能感兴趣的
  • fortran90编译器下载  fortran编译器  win7fortran编译器  fortran6.6编译器下载  visualfortran编译器  fortran编译器下载  abaqusfortran编译器  安卓fortran编译器  fortran2003编译器