! 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