0

流れ場のスナップショット (uvw スタック、約 24k) の列を読み取り、複数のスナップショット (投稿されたコードに見られるように、個々の .dat ファイルに保存されます) をマトリックスに組み立てようとしています (列は速度です)タイムステップ、i=1 の最初のタイムステップなど) SVD/POD で使用します。私はここでいくつかのチュートリアルに従い、フォーマットを落としました(私は思う)が、このsigsegvエラーが発生しているため、スタックしています。どんな入力でも大歓迎です。ありがとう!

       program matrix2       
!      Creates rectangular matrix by adding columns of individual
!      Timesteps for use in Singular Value Decomposition (in MatLAB)

!      Allocate
       double precision, dimension(:,:), allocatable :: POD
       integer, parameter :: tend = 700
       integer, parameter :: length = 23925
       character(:), allocatable :: fn, fm
       integer :: it, idt
       character(len=5) :: t, dt
       character(len=10) :: fmt
       character(len=40) :: fmm

!      Create format discriptors
       fmt = '(i5.5)'
       fmm = '(a19,i5.5,a4)'

!      Create data file to save matrix
       fn = 'POD_Data_Matrix.dat'
       open(unit=1,file=fn,status='unknown',form='formatted')

!      Loop to open column files and write data
       do j = 1,tend

!      Open corresponding column file, add to POD matrix
!      and close every timestep column
!      Convert integer to string using internal file
         it=00001
         idt=00001
         write(t,fmt) it
         write(dt,fmt) idt
         fm = 'U-Matrix-Column-Eq-'//trim(t)//'.dat'
         open(unit=11,file=fm,status='unknown',form='formatted')  
         do i = 0,length
           read (11,*) POD(j,i)
         enddo
         close(11)
         it = it + idt
       enddo

!      Write and close final POD matrix
       write(1,*) POD(j,i)
       close(1)

!      Deallocate
!       deallocate(POD)
!       deallocate(fn,fm)
       endprogram
4

1 に答える 1

0

PODは割り振り可能であると宣言されていますが、READ ステートメントで定義しようとする前に割り振られることはありません。ALLOCATE(POD(tend,length))おそらく、読み取りループの前のようなもので割り当てるのを忘れました か?

于 2013-04-08T04:33:47.993 に答える