プログラム・ソース

main プログラム

TYS-RBAモデルの解析main プログラム

main.f
!      program tysrba
!****************************************************
!*  numerical program for one-dimensional bed-level *
!*  variation in steep streams                      *
!*                                version 1.1.0     *
!*                                2011/10/15        *
!*  developing by TYS Inc.                          *
!*               development code name :tys-rba     *
!****************************************************
!--------------- main program ----------------------
!
      include 'bvflowxx.inc'
      character*20 ifl1,ifl2,ifl3,ifl4,ifl5,ofl1,ofl2,ofl3,ofl4,
     +             ofl5,ofl6,ofl7,ofl8,ofl9,ofl10,ofl11,ofl12
!-------- input and output file name -----------------------
!  ifl1 : 雨量・流量データの入力ファイル名
!  ifl2 : 斜面データの入力ファイル名
!  ifl3 : 河道断面データの入力ファイル名
!  ifl4 : 斜面からの土砂供給等の入力ファイル名
 
      !入力データの読み込み
      call datainput(ifl1,ifl2,ifl3,ifl4,ifl5,ofl1)
 
      !パラメータの読み込み
      call setparameter
 
      !データの初期化
      call bedinitial
      call setinitial
 
      !計算ループ
      dt0 = 0.0
      khy1 = 3
      irr=0
      do ir = 1,nndata
        !雨量・流量データ読み込み
         call input2
         !斜面土砂投入率読み込み
        do k = 1,km
          do l = 1,ks(k)
            rqsn(k,l)=0.0
          enddo
        enddo
        do nd=1,num1
          if(numd(nd).eq.ir) then 
            call input7
          !許容斜面土砂量の定義(期間ごとに総土砂量を調節)
          !掃流砂見合いの時のみ計算
              if(iqt.eq.1) then
              call set_dosya
            end if
          endif
        enddo
 
        write(*,*) 'hydoro step = ',ir,' / ',nndata,' start',' q= ',qqq0
        ii   = khy1
        dtt  = dt(ii)
        dtt2 = dt2(ii)
 
        !ハイドロに応じてDTを変化させる
        if(ii.ge.3) call set_delt
        idt  = idint(delt(ii)*1.0001/dtt)
        !計算刻み時間
        do it=1,idt
          if(mod(it,20).eq.0) then
            write(*,*) 'dt step = ',it,' / ',idt,' * ',ir,' / ',nndata
          endif
          dtl = dble(it)*dt(ii)+dt0
          !ハイエトでの計算(流出解析)
          if(ii.lt.3) then
            do kr=km,1,-1
              call runof(ir,it,kr)
            enddo
            !ハイドロでの計算(読み込んだ流量を各断面に振り分け)
          else
            if(qqq0.le.qout) goto 1300
            call set_hydoro
          endif
 
          if(mod((it*idint(dtt)),idint(dtt2)).eq.0) then
            !最下流端の流量が足切りより小さければ河床変動計算をスキップ
            if(qqq1(1,1).le.qout) then
              igate(1)=0
              igate(2)=0
              goto 1100
            endif
            call kasyouhendo(ir)
          end if
 
 1100   continue
        enddo
 
 1300   continue
        dt0 = dt0 + delt(ii)
        !結果の出力(指定ハイドロの終わりごと)
         if(idprint.eq.1) then
           irr=irr+1
           call output2(ir,irr,dt0)
           call output3(ir,irr,dt0)
           call output4(ir,irr,dt0)
           call output6(ofl6,ir,irr,dt0)
           call output13(ir,irr,dt0)
         do k=1,km
           call out_bedload(k,ir,irr,dt0)
         enddo
           !最大水位時水深・最大水位時河床高・最大河床高のリセット
           do k=1,km
             do j=1,ns(k)
               zmax(k,j)=-9999.0
               hmax(k,j)=-9999.0
               delzmax(k,j)=rjudan(k,j)
             enddo
           enddo
         endif
         !結果の出力(毎ハイドロごと)
         call output5(ofl5,ir,dt0)
      enddo
 
      close(15)
      close(16)
      stop
      end
 
tysrba/8.プログラム.txt · 最終更新: 2011/10/20 01:48 by tys
 
特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki