module cdraw_data implicit none integer::ind,ibc,iph,ivc,isc real(4)::baselength,grdspc real(4)::xmin,xmax,zmin,zmax real(4)::bav,bfv real(4)::conint,annint character::strx*100,strz*100 end module cdraw_data program f90_GMTseep !Drawing by GMT for seepage analysis use cdraw_data implicit none integer::i,j,k,l,ne integer::n1,n2,n3,k1,k2,k3 character::strcom*256 !Comment integer::NODT !Number of nodes integer::NELT !Number of elements integer::MATEL !Number of material sets integer::KOH !Number of nodes with given toal head integer::KOQ !Number of nodes with given discharge integer::KOU !Number of nodes with the condition of seepage point integer::nt !Number of total degree of freedom (NODT x nhen) integer::nod !Number of nodes per element integer::nhen=1 !Number of degree of freedom per node integer,allocatable::kakom(:,:) !Element connectivity integer,allocatable::matno(:) !Material set number real(4),allocatable::x(:) !x-coordinate of node real(4),allocatable::z(:) !z-coordinate of node real(4),allocatable::hvec(:) !Total head vector real(4),allocatable::qvec(:) !Discharge vector real(4),allocatable::pvec(:) !Pressure head vector integer,allocatable::nokh(:) integer,allocatable::nokq(:) integer,allocatable::noku(:) real(4),allocatable::xg(:) !x-coordinate of centroid of element real(4),allocatable::zg(:) !z-coordinate of centroid of element real(4),allocatable::vx(:) !Velocity vector in x-direction real(4),allocatable::vz(:) !velocity vector in z-direction real(4),allocatable::Akr(:) !Ratio of permeability (unsat/sat) integer::iw real(4)::rw character::linebuf*1000 character::filename*128 character::fnameR*50 call getarg(1,fnameR) !Input file name !*************************** !data input !*************************** open(11,file=fnameR,status='old') read(11,*) strcom read(11,'()') read(11,*) nod,NODT,NELT,MATEL,KOH,KOQ,KOU !------------------------------------------------------------------------------------------ !To declare array size !------------------------------------------------------------------------------------------ nt=NODT*nhen allocate(kakom(1:NELT,1:nod)) allocate(matno(1:NELT)) allocate(x(1:NODT)) allocate(z(1:NODT)) allocate(hvec(1:nt)) allocate(qvec(1:nt)) allocate(pvec(1:nt)) allocate(xg(1:NELT)) allocate(zg(1:NELT)) allocate(vx(1:NELT)) allocate(vz(1:NELT)) allocate(Akr(1:NELT)) if(0' write(12,*) (x(i)),' ',(z(i)) write(12,*) (x(j)),' ',(z(j)) write(12,*) (x(k)),' ',(z(k)) end if end do case(4) do ne=1,NELT if(matno(ne)==ma)then i=kakom(ne,1) j=kakom(ne,2) k=kakom(ne,3) l=kakom(ne,4) write(12,*) '>' write(12,*) (x(i)),' ',(z(i)) write(12,*) (x(j)),' ',(z(j)) write(12,*) (x(k)),' ',(z(k)) write(12,*) (x(l)),' ',(z(l)) end if end do end select close (12) end do if(0 %fig%' do ma=1,MATEL write (strw1,'(i2.2)') ma snum='set num='//trim(adjustl(strw1)) scol='set col='//col_mesh(ma) write(12,'(a)') trim(adjustl(snum)) write(12,'(a)') trim(adjustl(scol)) write(12,'(a)') 'psxy _mesh%num%.txt -R -J -W0.5/black -G%col% -K -O >> %fig%' end do if(0> %fig%' write(12,'(a)') 'pstext _text_ne.txt -R -J -N -K -O >> %fig%' write(12,'(a)') 'pstext _text_nd.txt -R -J -N -K -O >> %fig%' end if if(0> %fig%' if(0> %fig%' if(0> %fig%' end if write(12,'(a)') 'echo 0 0 | psxy -R -J -Sp -O >> %fig%' write(12,'()') !Preparing of contour drawing write(12,'(a)') 'grdmask _mask_data.txt -G_mask.grd -I%grdspc% -R%range% -S%sradi% -NNan/0/0' write(12,'(a)') 'surface _pvec.txt -G_pvec.grd -I%grdspc% -R%range% -T0.0' write(12,'(a)') 'surface _hvec.txt -G_hvec.grd -I%grdspc% -R%range% -T0.0' write(12,'(a)') 'grdmath _pvec.grd _mask.grd OR = _pvecm.grd' write(12,'(a)') 'grdmath _hvec.grd _mask.grd OR = _hvecm.grd' !Drawing of contour for pressure head write(12,'(a)') 'rem *** Drawing of contour ***' write(12,'(a)') 'set fig=fig_gmt_conp.eps' write(12,'(a)') 'psbasemap -R%range% -JX%scale% -B%ba%:%strx%:/%ba%:%strz%:WS -P -K > %fig%' write(12,'(a)') 'grdimage _pvecm.grd -J -C0_cpt.cpt -K -O >> %fig%' write(12,'(a)') 'grdcontour _pvecm.grd -C%conint% -A%annint% -J -K -O >> %fig%' if(iph==1)write(12,'(a)') 'grdcontour _hvecm.grd -C%conint% -A%annint% -J -K -O >> %fig%' if(0> %fig%' write(12,'(a)') 'echo 0 0 | psxy -R -J -Sp -O >> %fig%' !Drawing of contour for total head write(12,'(a)') 'set fig=fig_gmt_conh.eps' write(12,'(a)') 'psbasemap -R%range% -JX%scale% -B%ba%:%strx%:/%ba%:%strz%:WS -P -K > %fig%' write(12,'(a)') 'grdimage _hvecm.grd -J -C0_cpt.cpt -K -O >> %fig%' write(12,'(a)') 'grdcontour _hvecm.grd -C%conint% -A%annint% -J -K -O >> %fig%' if(iph==1)write(12,'(a)') 'grdcontour _pvecm.grd -C%conint% -A%annint% -J -K -O >> %fig%' if(0> %fig%' write(12,'(a)') 'echo 0 0 | psxy -R -J -Sp -O >> %fig%' write(12,'()') !Drawing of vector write(12,'(a)') 'rem *** Drawing of vector ***' write(12,'(a)') 'set fig=fig_gmt_vect.eps' write(12,'(a)') 'psbasemap -R%range% -JX%scale% -B%ba%:%strx%:/%ba%:%strz%:WS -P -K > %fig%' if(ivc==1)write(12,'(a)') 'grdimage _pvecm.grd -J -C0_cpt.cpt -K -O >> %fig%' if(ivc==2)write(12,'(a)') 'grdimage _hvecm.grd -J -C0_cpt.cpt -K -O >> %fig%' write(12,'(a)') 'psxy _vect.txt -R -J -Svs0.005/0.1/0.03 -G0 -N -K -O >> %fig%' if(0> %fig%' write(12,'(a)') 'echo 0 0 | psxy -R -J -Sp -O >> %fig%' write(12,'()') !reset of variables write(12,'(a)') 'set fig=' write(12,'(a)') 'set range=' write(12,'(a)') 'set scale=' write(12,'(a)') 'set ba=' write(12,'(a)') 'set grdspc=' write(12,'(a)') 'set sradi=' write(12,'(a)') 'set conint=' write(12,'(a)') 'set annint=' write(12,'(a)') 'set strx=' write(12,'(a)') 'set strz=' write(12,'(a)') 'set scld=' write(12,'(a)') 'set psize=' write(12,'(a)') 'set csize=' write(12,'(a)') 'del .gmt*' close(12) end subroutine MAKE_BAT subroutine del_spaces(s) character (*), intent (inout) :: s character (len=len(s)) tmp integer i, j j = 1 do i = 1, len(s) if (s(i:i)==' ') cycle tmp(j:j) = s(i:i) j = j + 1 end do s = tmp(1:j-1) end subroutine del_spaces end program f90_GMTseep