解决错误:Fortran运行时错误:列表输入中的项目0的错误整数

时间:2015-02-22 12:04:13

标签: fortran codeblocks

我最近将我的f90编辑器更改为适用于Mac OS X的CodeBlocks,当我尝试打开位于项目文件夹中的文件来读取数据时,代码运行时屏幕上会显示下一条错误消息:

Fortran运行时错误:列表输入中项目0的错误整数

我使用针对fortran和Visual Studio的intel编译器介绍了我在Windows 7中编写的相同代码。

代码本身是:

subroutine read_input_data

use input_data

implicit none

integer i,j

open(UNIT=5, FILE='lifting_line_input_data.txt', STATUS='old', FORM='formatted', ACCESS='sequential')

    read(5,*) C
    read(5,*) U
    read(5,*) alpha
    read(5,*) rho
    read(5,*) wake_length
    read(5,*) wake_eps
    read(5,*) n_chord
    read(5,*) n_twist

    if (n_chord .GE. n_twist ) then
        i = n_chord
    else
        i = n_twist
    end if

    allocate(chord_twist(5,i))

    do j = 1, i
        read(5,*) chord_twist(:,j)
    end do

close(5)

end subroutine read_input_data

你能帮我解决这个问题吗?非常感谢你。

PD。数据文件是从保存为由表格分隔的.txt的Excel表格中获取的

! LIFTING-LINE WING             
! Number of panels              
6               
! Free stream speed [m/s]               
50              
! Angle of attack [rad]             
0.15                
! Air density [kg/m^3]              
1.225               
! Wake length [m]               
100             
! Convergence parameter             
0.01                
! Number of data points given for the chord distribution                
2               
! Number of data points given for the twist distribution                
2               
! Y coord [m]   ! X_LE [m]  ! X_TE [m]  ! Y coord [m]   ! Twist [rad]

0   0   2   0   0

10  0   0.5 10  0.052359878

PD2。我已经更改了.txt文件的格式,使其等于我在Visual Studio中使用的输入文件。现在文件是:

6   ! Number of panels                              
50  ! Free stream speed [m/s]                               
0.15    ! Angle of attack [rad]                             
1.225   ! Air density [kg/m^3]                              
100 ! Wake length [m]                               
0.01    ! Convergence parameter                             
2   ! Number of data points given for the chord distribution                                
2   ! Number of data points given for the twist distribution                                
0   0   2   0   0   ! Y coord [m]   ! X_LE [m]  ! X_TE [m]  ! Y coord [m]   !Twist [rad]
10  0   0.5 10  0.052359878 

现在终端发出的错误是找不到该文件。由于我是CodeBlocks的初学者,我将逐步解释我所做的事情,因为我找不到我错的地方而且我开始变得绝望:

  1. 新项目 - > Fortran应用程序 - >我指出了我想要创建项目文件的位置。
  2. 我删除了main.f95文件,并添加了带代码的.f90文件。
  3. 我写了代码。
  4. 我将.txt文件保存在与项目的所有文件相同的文件夹中。
  5. 当我运行代码时,会出现找不到文件的错误消息。 代码是:

    !************************************************
    
    subroutine read_input_data
    
    use input_data
    implicit none
    integer i,j
    
    open(UNIT=10, FILE='lifting_line_wing_input.txt', STATUS='old',     ACCESS='sequential')
    
        read(10,*) C
        read(10,*) U
        read(10,*) alpha
        read(10,*) rho
        read(10,*) wake_length
        read(10,*) wake_eps
        read(10,*) n_chord
        read(10,*) n_twist
    
        if (n_chord .GE. n_twist ) then
            i = n_chord
        else
            i = n_twist
        end if
    
        allocate(chord_twist(5,i))
    
        do j = 1, i
            read(10,*) chord_twist(:,j)
        end do
    
    close(10)
    
    end subroutine read_input_data
    
    !************************************************
    

    非常感谢你的时间和帮助

2 个答案:

答案 0 :(得分:1)

这看起来像你的旧系统在列表导向的输入上做了一些非标准的感叹号。

尝试重新格式化输入数据,例如

6 / number of panels

(斜杠将终止READ)。

答案 1 :(得分:0)

我不相信任何fortran编译器都会自动处理这些注释。 如果您想按原样读取此文件,一种方法是使每个读取句柄出错,例如

 integer ios
 ios = 1  
 do while(ios.ne.0)
  read(unit,*,iostat=ios)c
 end do
 ios=1
 do while(ios.ne.0)
  read(unit,*,iostat=ios)u
 end do

等。 如果它是一次性的你可以只编辑文件并删除所有评论。