admin管理员组

文章数量:1597474

常见Fortran错误解释  

2009-11-19 14:36:57|  分类: 程序编程|举报|字号 订阅

    

 0. 高精度定义避免舍入误差

   !定义Fortran语言高精度格式中,一般有(比如定义双精度)

  a=1e-3

  常见的有:

real*8 a

real(kind=8) a::a=1e-3

a=1e-3d0

但是前两种会在数值后几位出现舍入误差a=1.00000004749745e-003。

而最好的是第三种,a=1000000000000000e-3,运行结果没有舍入误差。

1.  Incrementally linked image--PC correlation disabled.

   !编译终止

2. forrtl: severe (157): Program Exception - access violation

    !The program tried to read from or write to a virt l address for which it does not have the appropriate access. Try recompiling with the /check:bounds and /warn:argument_checking options set, to see if the problem is an out-of-bounds memory reference or a argument mismatch that causes data to be treated as an address.
Other causes of this error incl?:
Mismatches in C vs. STDCALL calling mechanisms, causing the stack to become corrupted
References to unallocated pointers Attempting to access a protected (for example, read-only) address

3 "forrtl: severe (64): input conversion error, unit 2, file D:\FORTRAN2\testi

   !文件testi正在读写,直到读写到2时错误。举例:程序想读写整数,却碰到变量故终止。

4 error LNKZOOI : unresolved external symbol _ SN @ 4 fatal error LNKllZO : 1 unresolved externals

! 出现了未指定的外部函数符号 Sn 。这是因为在函数子程序中错把函数名 Sn 写成了 ns 。根据错误信息中的提示,用户在编辑窗口寻找有错位置进行修改。连接错误往往出现在有函数调用或子程序调用的程序中,常见的错误性质有:未定的函数符号、找不到主程序或子程序、实参与虚参的个数不一致等。注意:连接错误只给出错误代号和错误性质,不给出具体语句的行号。

5 :: error FOR229O : implicit type for 1 detected between 1 and = C : \ abc .

 : error FOR33Og : undefined label 10

编译系统提示用户:在程序的第 5 行,变量 i 未经类型说明;在程序的第 H 行,标号 10 未定义。为了便于将 output 窗口中的错误信息与程序中的有错语句对照起来检查,可以双击错误列表中的某一行,此时该行被高亮显示,同时有一个小指针在编辑窗口内指向程序中对应该行错误的语句行.

6  C : \ abc .f90( 5 ) : error FOR229O : implicit type forx

即编译系统通告用户:在程序“ C :、 abc . fgo ”中的第 5 行发现了错误,错误代号为“ error FoR229o " ,错误性质是“ implicit type forx " (变量 x 未经类型说明)。

7     run 一 time error M62OI : MATH 一 sqrt : DOMAIN error

该错误为内部函数 sqrt 的定义域错误,即函数 sqrt 的参数不能为负数。

 8  边界点的值往区域内部移动

 边界变量定义的维数小于实际维数

9  FortranPGM\EULER invisicid flow\TWODEULER.F90(737) : Warning: In the call to C VCUV, there is no act l argument corresponding to the dummy argument TTT.
      CALL C VCUV(MP1,NP1,M,N,DELX,DELY,U,V,CU,CV,CUS,CVS,&------^

  !调用子程序中,存在一个不存在的哑元变量TTT,建议对其修改。

10 forrtl: severe (161): Program Exception - array bounds exceeded
             Image              PC        Routine            Line        Source
             TWODEULER.exe      0041CBD4  Unknown               Unknown  Unknown
             TWODEULER.exe      0040CF57  Unknown               Unknown  Unknown
             TWODEULER.exe      004722B9  Unknown               Unknown  Unknown
             TWOD EULER.exe      00466264  Unknown               Unknown  Unknown
             kernel32.dll       7C816FE7  Unknown               Unknown  Unknow

             Incrementally linked image--PC correlation disabled.
                    Press any key to contin

超出数组的维数。(即变量的个数太大)

11 --------------------Configuration: TWODEULER - Win32 Debug--------------------
          Compiling Fortran...
          D:\FortranPGM\EULER invisicid flow\TWODEULER.F90

               TWODEULER.OBJ - 0 error(s), 0 warning(s)

源程序编译,生成一个目标文件。这TWODEULER.OBJ 是一个二进制文件,便于机器执行。这一点是与matlab的本质区别。

12 D:\FortranPGM\EULER invisicid flow\TWODEULER.F90(5) : Error: This name cannot be   assigned this data type because it conflicts with prior uses of the name.   [N]
   INTEGER MP1,NP1,M,N,I,J,KP,KH,KVEL
---------------------^
Error executing df.exe. 
TWODEULER.OBJ - 2 error(s), 0 warning(s)

! PARAMETER 中属性指定后,不能再定义成变量。

13. A specification statement cannot appear in the executable section

!

14. Configuration: TWODEULER - Win32 Debug--------------------
        Compiling Fortran...
         D:FortranPGMEULER invisicid flowTWODEULER.F90
         f90: Fatal: There has been an internal compiler error (C0000005).
         Error executing df.exe.

      TWODEULER.OBJ - 1 error(s), 0 warning(s)


   !本人真实体验了这个错误。

1.一般是 Compaq Vis l Fortran 没有安装好,可能是安装的时候询问是否修改环

境变量的时候,你选择了 否。当然可以手动设置环境变量,但这个要求比较高,操作

比较复杂。简单的办法就是重新安装编译器。

2.这是系统出问题了。在程序执行中,电脑重启后的错误。是

系统文件损坏。特别是在win32 debug 不能执行的情况下出现。一个简单的办法就是在 

 win32 debug的下拉框下选定新的编译器win32 release就可以实现程序编译。如果这

方法还是不能运行,建议重装电脑系统,一恢复已损害的文件。

15.经典fortran教材下载

http://mail.ustc.edu/~jfnano/fort/index.html

16.为何初始变量赋值后,经过调用的子程序(子程序与该初始变量有关或无关)却值改变为零呢?

这是因为,在子程序存在错误,子程序无法进行调用,里面哑元没有不能作为参数传递形式,或外部变量没有赋值进子程序内部的变量,建议修改。属逻辑错误,也属于基本语法错误。

 17.两个整数相除,为何结果为零。

在fortran中的数有属性,两个整数相除,结果是小数当然无法显示,比如3/20,结果为零。只有对整数进行float定义,才能求出相应的小数。

float(3)/float(20) 结果等于:0.15

 18.为何正常的定义不合规范

C:\FORTRAN PROGRAM\inviscid -2dliangcheng\inviscid-2d.for
C:\FORTRAN PROGRAM\inviscid -2dlian

本文标签: 常见错误Fortran