错误:无法写入为读取而打开的文件

时间:2020-09-07 18:06:23

标签: visual-studio-code fortran gfortran

因此,我要编写此后处理代码,其中的代码将打开一些文件,读取它们并将其值存储在数组中,以进行一些计算。

我已经在打开(...)关闭(...)中放入了write(*,*) 'Loaded ***.txt',以确定是哪个引起了麻烦。

代码:

001 program Post_Processing
002     implicit none
003     real*8 :: radius, u_d, nu, cond, u_mean, gx, Porosity, kk, press_in, press_out, dpdx
004     real*8 :: Pi=4*atan(1.d0)
005     integer :: i,j
006     integer, parameter :: ni=257,nj=257,n=9
007     integer,dimension(ni,nj) :: wall=0.d0
008     real*8,dimension(ni,nj) :: ux=0.d0,uy=0.d0, T=0.d0, rho=0.d0
009     real*8,dimension(ni) :: x(ni)=0.d0, T_bulk=0.d0, T_bulk_sum=0.d0, h=0.d0, q=0.d0
010     real*8,dimension(nj) :: y(nj)=0.d0
011
012     open(UNIT=1, FILE='Porosity.txt', STATUS='OLD', ACTION='READ')
013     read(1,*) ((wall(i,j), j=nj, 1, -1), i=1,ni)
014     write(*,*) 'Loaded Porosity.txt'
015     close(1)
016     open(UNIT=2, FILE='Data_porosity.txt', STATUS='OLD', ACTION='READ')
017     read(2,*) Porosity, radius
018     write(*,*) 'Loaded Data_porosity.txt'
019     close(2)
020     open(UNIT=3, FILE='Data_main.txt', STATUS='OLD', ACTION='READ')
021     read(3,*) gx, nu
022     write(*,*) 'Loaded Data_main.txt'
023     close(3)
024     open(UNIT=4, FILE='Ux_excel.txt', STATUS='OLD', ACTION='READ')
025     read(4,*) ((ux(i,j), j=nj, 1, -1), i=1,ni)
026     write(*,*) 'Loaded Ux_excel.txt'
027     close(4)
028     open(UNIT=5, FILE='Uy_excel.txt', STATUS='OLD', ACTION='READ')
029     read(5,*) ((uy(i,j), j=nj, 1, -1), i=1,ni)
030     write(*,*) 'Loaded Uy_excel.txt'
031     close(5)
032     open(UNIT=6, FILE='T_excel.txt', STATUS='OLD', ACTION='READ')    This is
033     read(6,*) ((T(i,j), j=nj, 1, -1), i=1,ni)                          the
034     write(*,*) 'Loaded T_excel.txt'                                  troubled
035     close(6)                                                           one.
036     open(UNIT=7, FILE='Rho.txt', STATUS='OLD', ACTION='READ')
037     read(7,*) ((rho(i,j), j=nj,1,-1),i=1,ni)
038     write(*,*) 'Loaded Rho.txt'
039     close(7)
040
041     x(1) = 0.d0
042     do i = 2, ni
043         x(i) = x(i-1) +1.d0
044     enddo
045
046     y(1) = 0.d0
047     do j = 2, nj
048         y(j) = y(j-1) +1.d0
049     enddo
050
051     if (Porosity == 1.d0) then
052         !   ================================================================
053         !   =                 Temperature Bulk Definition                  =
054         !   ================================================================
055         u_mean = gx * (nj-1)**2 / (12 * nu)
056         do i = 1, ni
057             do j = 1, nj
058                 T_bulk_sum(i) = (ux(i,j)-gx) * T(i,j) + T_bulk_sum(i)
059             enddo
060         T_bulk(i) = T_bulk_sum(i) / (u_mean * (nj-1))
061         enddo
062         !   ================================================================
063         !   =                   Heat Transfer Coefficient                  =
064         !   ================================================================
065         cond = (1.d0 / 3.d0) * 5.d-1
066         do i = 1, ni
067         q(i) = cond * (T(i,1) - T(i,2)) / 1.d0
068         h(i) = q(i) / (T(i,1) - T_bulk(i))
069         enddo
070
071         open(10,File='Heat Transfer Coefficient.txt')
072         do i = 1, ni
073         if (i==ni) then
074             write(10,01,advance='yes') x(i)
075         else
076             write(10,01,advance='no') x(i)
077         endif
078         enddo
079         do i = 1, ni
080         if (i==ni) then
081             write(10,01,advance='yes') h(i)
082         else
083             write(10,01,advance='no') h(i)
084         endif
085         enddo
086         close(10)
087     endif
088     !   ================================================================
089     !   =                        Permeability                          =
090     !   ================================================================
091     if (Porosity /= 1) then
092         U_d = 0.d0
093         do j = 1, nj
094             do i = 1, ni
095                 if (wall(i,j)==1) cycle
096                 U_d = ux(i,j) + U_d
097             enddo
098         enddo
099         U_d = U_d / (dble(ni)*dble(nj))
100         write(*,*) ' '
101         write(*,*) 'Velocidade de Darcy=',U_d
102
103         press_in = sum(rho(1,2:nj-1))/(3*nj-1)
104         press_out = sum(rho(ni,2:nj-1))/(3*nj-1)
105         dpdx=(press_in - press_out)/dble(ni-1)
106
107         kk = nu*U_d/gx
108         kk = kk / (2*radius)**2
109         write(*,*) ' '
110         write(*,*) 'Permebilidade= ', kk
111         write(*,*) ' '
112         write(*,*) 'Variacao de pressao em x =', dpdx
113         write(*,*) ' '
114         write(*,*) 'Permeabilidade do Kaviany, correlação 1(K/L^2)= ', 6.06d-2*Porosity**5.1
115         write(*,*) ' '
116         write(*,*) 'Permeabilidade do Kaviany, correlação 2(K/d^2)= ', 6.06d-2*(Pi/4.d0)*Porosity**5.1/(1-Porosity)
117         open(10,File='Data_post_processing(Ud,K).txt')
118         write(10,02) u_d
119         write(10,03) kk
120         close(10)
121     endif
122     !   =======================================================================
123     !   =                              Output                                 =
124     !   =======================================================================
125     01 format (F16.8)
126     02 format (1X,'Darcy Velocity=',F18.12)
127     03 format (1X,'Permeability=',F18.12)
128
129     if(Porosity == 1.d0) then
130         
131     endif
132 end program Post_Processing

错误:

 Loaded Porosity.txt
 Loaded Data_porosity.txt
 Loaded Data_main.txt
 Loaded Ux_excel.txt
 Loaded Uy_excel.txt
At line 34 of file Post_Processing.f95 (unit = 6, file = 'T_excel.txt')
Fortran runtime error: Cannot write to file opened for READ

Error termination. Backtrace:

Could not print backtrace: libbacktrace could not find executable to open
#0  0x65754044
#1  0x656ed55e
#2  0x6565f842
#3  0x65764853
#4  0x401e82
#5  0x402dee
#6  0x401235

我要在提示符下而不是文件中写的东西。当我注释第032-035行时,程序运行正常,给出结果(由于未加载温度矩阵,所以有些错误)。但是我有点需要加载T_excel.txt。

每个矩阵为257x257。

有主角吗? (如果需要,可以提供更多信息)。我可以附加文件吗?

0 个答案:

没有答案