module defg implicit none real(8),parameter::g=9.80D0 end module defg program f90_NUF ! Non uniform flow analysis (subcritical flow, supercritical flow) use defg implicit none integer,parameter::nn=200 integer,parameter::mm=100 integer::nas(1:nn) real(8)::ninp(1:nn) real(8)::xx(1:nn) ! Distance real(8)::zz(1:nn) ! Elevation of river bed real(8)::hh(1:nn,1:mm) ! Water depth real(8)::area(1:nn,1:mm) ! Section area of Flow real(8)::wper(1:nn,1:mm) ! Wetted perimeter real(8)::wids(1:nn,1:mm) ! Width of water surface character(len=50)::fnameR character(len=10)::dummy1,dummy2,dummy3,dummy4 integer::nd,i,j,k,nask,it integer::icase ! case real(8)::Q0 ! Discharge at Weir real(8)::h0 ! Water depth at Weir real(8)::DQ(1:nn) ! Changeof Discharge due to Intake real(8)::Q1,n1,x1,a1,r1,t1,h1,z1,v1,hcrit,cs,ds real(8)::Q2,n2,x2,a2,r2,t2,h2,z2 integer,parameter::itlim=100 real(8)::ha,hb,hc,fa,fb,fc real(8),parameter::eps=1.0D-6 call getarg(1,dummy1) call getarg(2,dummy2) call getarg(3,dummy3) call getarg(4,fnameR) read(dummy1,*) icase read(dummy2,*) Q0 read(dummy3,*) h0 open(11,file=fnameR,status='old') read(11,*) nd do i=1,nd read(11,'()') read(11,*) k,xx(i),zz(i),nas(i),ninp(i) do j=1,nas(i) read(11,*) hh(i,j),area(i,j),wper(i,j),wids(i,j) end do end do close(11) if(icase==11.or.icase==21)then fnameR='inp_DQ.csv' open(11,file=fnameR,status='old') do i=1,nd read(11,*) xx(i),DQ(i) end do close(11) end if k=1 nask=nas(k) select case (icase) case (10,20); Q1=Q0 case (11,21); Q1=Q0+DQ(1) end select ds=sqrt((xx(k+1)-xx(k))**2.0D0+(zz(k+1)-zz(k))**2.0D0) cs=(xx(k+1)-xx(k))/ds hcrit=CALHC(icase,k,nn,mm,nask,hh,area,wper,wids,Q1,cs) h1=h0 select case (icase) case(10,11) if(h1