Программа Cygwin gfortran получила сигнал SIGSEGV, ошибка сегментации

Я пытаюсь запустить программу fortran для извлечения данных из ежедневного индекса площади листьев MODIS 8 LAI и фракции фотосинтетического активного излучения FPAR. Сначала я спроецировал файл MODIS raw * .hdf в файл * .dat, используя * .sh. Затем переформатируйте из * .dat в * .txt с помощью g ++, и этот этап является моим последним этапом подготовки данных, который объединяет все данные * .txt в определенный формат * .direct и * .8daily в течение года от начала до конца. с помощью кода fortran.

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//'_fpar.txt '

filename2= year//day//'.lai.txt' 

c filename2 = '/ home / maheswor / koshi / LAIFPAR / input / koshi_' c: //year//'_'//day//'_lai.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 write (46,9) (fpar0 (ir, ic), ic = 1, nnc) write (16,50) (lai0 (ir, ic), ic = 1 , nnc) конец делать

   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. На фото я столкнулся со следующей проблемой. Пожалуйста, проверьте и помогите. запуск и ошибка gfortran


person Zigmo    schedule 11.03.2016    source источник
comment
Подсказка: nnc и nnr больше, чем 300.   -  person durasm    schedule 11.03.2016
comment
Используйте тег fortran для всех вопросов Fortran, чтобы привлечь больше внимания.   -  person Vladimir F    schedule 11.03.2016


Ответы (1)


Значения индексных переменных больше, чем оба измерения массива

integer, dimension (300,300):: fpar0, lai0

nnc = 328           ! For Red River Basin
nnr = 395

позже вы будете использовать их в циклах, где происходит эта ошибка сегментации

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

     end do
end do
person syscreat    schedule 11.03.2016
comment
Большое спасибо за Ваш ответ. - person Zigmo; 11.03.2016
comment
Один вопрос: нужно ли менять размеры массива или значение данных. - person Zigmo; 11.03.2016
comment
Большое спасибо. Я изменил размер массива больше, чем входные данные. Тогда это хорошо работает. Спасибо за помощь! - person Zigmo; 11.03.2016