Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cygwin gfortran程序收到信号SIGSEGV,分段故障_Fortran_Gfortran - Fatal编程技术网

Cygwin gfortran程序收到信号SIGSEGV,分段故障

Cygwin gfortran程序收到信号SIGSEGV,分段故障,fortran,gfortran,Fortran,Gfortran,我尝试运行fortran程序,从MODIS 8每日叶面积指数LAI和光合有效辐射分数FPAR中提取数据。首先,我使用*.sh将MODIS原始*.hdf文件投影到*.dat文件。然后使用g++将*.dat格式重新格式化为*.txt格式,这一阶段是我准备数据的最后一个阶段,即使用fortran代码将所有*.txt数据合并为特定格式*.direct和*.8daily,自始至终贯穿全年 Program read_8daily Implicit None integer ir,ic integer n

我尝试运行fortran程序,从MODIS 8每日叶面积指数LAI和光合有效辐射分数FPAR中提取数据。首先,我使用*.sh将MODIS原始*.hdf文件投影到*.dat文件。然后使用g++将*.dat格式重新格式化为*.txt格式,这一阶段是我准备数据的最后一个阶段,即使用fortran代码将所有*.txt数据合并为特定格式*.direct和*.8daily,自始至终贯穿全年

Program  read_8daily
Implicit None

integer ir,ic
integer nnr, nnc
character filename1*80,filename2*80, string*20, year*4, day*3
character hour*2, outfile*200, ch2*2, ch5*5, chim*2
integer rec,count,i,j,sta,im, iday, ihour,iyear,d
integer, dimension (300,300):: fpar0, lai0
real, dimension (300,300):: fpar, lai
  integer, dimension (300,300)::modis1, modis2      
integer startday,endday,starthour,endhour
  integer  rec_no


nnc = 328           ! For Red River Basin
nnr = 395


do iyear = 2010, 2010         ! Change year 

write(year,  '(i4.4)') iyear

  startday = 1                  ! change start date (if)         
endday   = 361                  ! change end date (if)

print *, 'EVALUATING from:', iyear, startday
print *, '.............To:', iyear, endday

print *, 'Reading modis data...'



OPEN (15, file='FPAR.'//year//'.8daily', 
 :       status='unknown')

OPEN (16, file='LAI.'//year//'.8daily', 
 :       status='unknown')

OPEN (25, file='FPAR.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    

OPEN (26, file='LAI.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    


print *,'Writing', '..modis.'//year//'.daily'

  rec_no = 0    !record number for every monthly data file

  do iday = startday, endday, 8    !8-day snow cover product

 write(day,  '(i3.3)')  iday

filename1= year//day//'.fpar.txt'  
c filename1='/home/maheswor/koshi/LAIFPAR/input/koshi' c://year/''.//'.//day/'.\u fpar.txt'

Program  read_8daily
Implicit None

integer ir,ic
integer nnr, nnc
character filename1*80,filename2*80, string*20, year*4, day*3
character hour*2, outfile*200, ch2*2, ch5*5, chim*2
integer rec,count,i,j,sta,im, iday, ihour,iyear,d
integer, dimension (300,300):: fpar0, lai0
real, dimension (300,300):: fpar, lai
  integer, dimension (300,300)::modis1, modis2      
integer startday,endday,starthour,endhour
  integer  rec_no


nnc = 328           ! For Red River Basin
nnr = 395


do iyear = 2010, 2010         ! Change year 

write(year,  '(i4.4)') iyear

  startday = 1                  ! change start date (if)         
endday   = 361                  ! change end date (if)

print *, 'EVALUATING from:', iyear, startday
print *, '.............To:', iyear, endday

print *, 'Reading modis data...'



OPEN (15, file='FPAR.'//year//'.8daily', 
 :       status='unknown')

OPEN (16, file='LAI.'//year//'.8daily', 
 :       status='unknown')

OPEN (25, file='FPAR.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    

OPEN (26, file='LAI.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    


print *,'Writing', '..modis.'//year//'.daily'

  rec_no = 0    !record number for every monthly data file

  do iday = startday, endday, 8    !8-day snow cover product

 write(day,  '(i3.3)')  iday

filename1= year//day//'.fpar.txt'  
filename2= year//day//'.lai.txt' 
c filename2='/home/maheswor/koshi/LAIFPAR/input/koshi' c://year/''\'//day/''\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Program  read_8daily
Implicit None

integer ir,ic
integer nnr, nnc
character filename1*80,filename2*80, string*20, year*4, day*3
character hour*2, outfile*200, ch2*2, ch5*5, chim*2
integer rec,count,i,j,sta,im, iday, ihour,iyear,d
integer, dimension (300,300):: fpar0, lai0
real, dimension (300,300):: fpar, lai
  integer, dimension (300,300)::modis1, modis2      
integer startday,endday,starthour,endhour
  integer  rec_no


nnc = 328           ! For Red River Basin
nnr = 395


do iyear = 2010, 2010         ! Change year 

write(year,  '(i4.4)') iyear

  startday = 1                  ! change start date (if)         
endday   = 361                  ! change end date (if)

print *, 'EVALUATING from:', iyear, startday
print *, '.............To:', iyear, endday

print *, 'Reading modis data...'



OPEN (15, file='FPAR.'//year//'.8daily', 
 :       status='unknown')

OPEN (16, file='LAI.'//year//'.8daily', 
 :       status='unknown')

OPEN (25, file='FPAR.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    

OPEN (26, file='LAI.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    


print *,'Writing', '..modis.'//year//'.daily'

  rec_no = 0    !record number for every monthly data file

  do iday = startday, endday, 8    !8-day snow cover product

 write(day,  '(i3.3)')  iday

filename1= year//day//'.fpar.txt'  
OPEN(7, file=filename1)
OPEN(8, file=filename2)

    read(7,*) ((modis1(ir, ic),ic=1,nnc), ir=1,nnr)
    read(8,*) ((modis2(ir, ic),ic=1,nnc), ir=1,nnr)

      rec_no = rec_no + 1
    print *, 'record number:', rec_no

    do ir = 1, nnr
       do ic=1, nnc
         fpar0(ir,ic) = modis1(ir,ic) 
          lai0(ir,ic) = modis2(ir,ic)              

         end do
    end do

      print *, 'begin writing'
50格式(1x,300i10) do ir=1,nnr 写入(15,50)(fpar0(ir,ic),ic=1,nnc) 写入(16,50)(lai0(ir,ic),ic=1,nnc) 结束

Program  read_8daily
Implicit None

integer ir,ic
integer nnr, nnc
character filename1*80,filename2*80, string*20, year*4, day*3
character hour*2, outfile*200, ch2*2, ch5*5, chim*2
integer rec,count,i,j,sta,im, iday, ihour,iyear,d
integer, dimension (300,300):: fpar0, lai0
real, dimension (300,300):: fpar, lai
  integer, dimension (300,300)::modis1, modis2      
integer startday,endday,starthour,endhour
  integer  rec_no


nnc = 328           ! For Red River Basin
nnr = 395


do iyear = 2010, 2010         ! Change year 

write(year,  '(i4.4)') iyear

  startday = 1                  ! change start date (if)         
endday   = 361                  ! change end date (if)

print *, 'EVALUATING from:', iyear, startday
print *, '.............To:', iyear, endday

print *, 'Reading modis data...'



OPEN (15, file='FPAR.'//year//'.8daily', 
 :       status='unknown')

OPEN (16, file='LAI.'//year//'.8daily', 
 :       status='unknown')

OPEN (25, file='FPAR.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    

OPEN (26, file='LAI.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    


print *,'Writing', '..modis.'//year//'.daily'

  rec_no = 0    !record number for every monthly data file

  do iday = startday, endday, 8    !8-day snow cover product

 write(day,  '(i3.3)')  iday

filename1= year//day//'.fpar.txt'  
   write(25,rec = rec_no)  ((fpar0(ir,ic),ic=1,nnc),ir=1,nnr)
   write(26,rec = rec_no)  ((lai0(ir,ic), ic=1,nnc),ir=1,nnr)

end do         !do iday = startday, enday 

close(7)
    close(8)
    close(25)
close(26)
close(15)
close(16)

end do   !do iyear

end program  
我用cygwin运行了那个脚本。我在照片中遇到了以下问题。请检查并帮助。
索引变量的值大于两个数组维度

Program  read_8daily
Implicit None

integer ir,ic
integer nnr, nnc
character filename1*80,filename2*80, string*20, year*4, day*3
character hour*2, outfile*200, ch2*2, ch5*5, chim*2
integer rec,count,i,j,sta,im, iday, ihour,iyear,d
integer, dimension (300,300):: fpar0, lai0
real, dimension (300,300):: fpar, lai
  integer, dimension (300,300)::modis1, modis2      
integer startday,endday,starthour,endhour
  integer  rec_no


nnc = 328           ! For Red River Basin
nnr = 395


do iyear = 2010, 2010         ! Change year 

write(year,  '(i4.4)') iyear

  startday = 1                  ! change start date (if)         
endday   = 361                  ! change end date (if)

print *, 'EVALUATING from:', iyear, startday
print *, '.............To:', iyear, endday

print *, 'Reading modis data...'



OPEN (15, file='FPAR.'//year//'.8daily', 
 :       status='unknown')

OPEN (16, file='LAI.'//year//'.8daily', 
 :       status='unknown')

OPEN (25, file='FPAR.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    

OPEN (26, file='LAI.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    


print *,'Writing', '..modis.'//year//'.daily'

  rec_no = 0    !record number for every monthly data file

  do iday = startday, endday, 8    !8-day snow cover product

 write(day,  '(i3.3)')  iday

filename1= year//day//'.fpar.txt'  
integer, dimension (300,300):: fpar0, lai0

nnc = 328           ! For Red River Basin
nnr = 395
稍后,您将在发生分段错误的循环中使用它们

Program  read_8daily
Implicit None

integer ir,ic
integer nnr, nnc
character filename1*80,filename2*80, string*20, year*4, day*3
character hour*2, outfile*200, ch2*2, ch5*5, chim*2
integer rec,count,i,j,sta,im, iday, ihour,iyear,d
integer, dimension (300,300):: fpar0, lai0
real, dimension (300,300):: fpar, lai
  integer, dimension (300,300)::modis1, modis2      
integer startday,endday,starthour,endhour
  integer  rec_no


nnc = 328           ! For Red River Basin
nnr = 395


do iyear = 2010, 2010         ! Change year 

write(year,  '(i4.4)') iyear

  startday = 1                  ! change start date (if)         
endday   = 361                  ! change end date (if)

print *, 'EVALUATING from:', iyear, startday
print *, '.............To:', iyear, endday

print *, 'Reading modis data...'



OPEN (15, file='FPAR.'//year//'.8daily', 
 :       status='unknown')

OPEN (16, file='LAI.'//year//'.8daily', 
 :       status='unknown')

OPEN (25, file='FPAR.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    

OPEN (26, file='LAI.'//year//'.direct', 
 :           form = 'unformatted', access = 'direct',
 :       recl = 4*nnc*nnr, status='unknown')    


print *,'Writing', '..modis.'//year//'.daily'

  rec_no = 0    !record number for every monthly data file

  do iday = startday, endday, 8    !8-day snow cover product

 write(day,  '(i3.3)')  iday

filename1= year//day//'.fpar.txt'  
do ir = 1, nnr
   do ic=1, nnc
     fpar0(ir,ic) = modis1(ir,ic) 
      lai0(ir,ic) = modis2(ir,ic)              

     end do
end do

提示如下:nnc和nnr比thsn 300大。所有fortran问题都使用fortran标记以获得更多关注。非常感谢您的回答。一个问题是我应该更改数组维度还是更改数据值。非常感谢。我更改了高于输入数据的数组维度。那么它工作得很好。谢谢你的帮助!