1*59599516SKenneth E. Jansen subroutine rwvelb (code, q, ifail) 2*59599516SKenneth E. Jansenc 3*59599516SKenneth E. Jansen use quadfilt 4*59599516SKenneth E. Jansen include "common.h" 5*59599516SKenneth E. Jansen include "mpif.h" 6*59599516SKenneth E. Jansen include "auxmpi.h" 7*59599516SKenneth E. Jansenc 8*59599516SKenneth E. Jansen character*4 code 9*59599516SKenneth E. Jansen character*5 cname 10*59599516SKenneth E. Jansen character*8 mach2 11*59599516SKenneth E. Jansen character*20 fname1, fmt1 12*59599516SKenneth E. Jansen character*20 fname2 13*59599516SKenneth E. Jansen character*60 syscmd 14*59599516SKenneth E. Jansenc 15*59599516SKenneth E. Jansen dimension q(nfath,nflow) 16*59599516SKenneth E. Jansen logical exlog 17*59599516SKenneth E. Jansenc 18*59599516SKenneth E. Jansenc.... --------------------------> 'in ' <--------------------------- 19*59599516SKenneth E. Jansenc 20*59599516SKenneth E. Jansen 21*59599516SKenneth E. Jansen 22*59599516SKenneth E. Jansen if (code .eq. 'in ') then 23*59599516SKenneth E. Jansen 24*59599516SKenneth E. Jansen numNden=zero ! in case the read fails 25*59599516SKenneth E. Jansen 26*59599516SKenneth E. Jansen ifail=1 27*59599516SKenneth E. Jansenc 28*59599516SKenneth E. Jansenc.... open file 29*59599516SKenneth E. Jansenc 30*59599516SKenneth E. Jansen fname1='bar.latest' 31*59599516SKenneth E. Jansen fname1 = trim(fname1) // cname(myrank+1) 32*59599516SKenneth E. Jansen inquire(file=fname1,exist=exlog) 33*59599516SKenneth E. Jansen 34*59599516SKenneth E. Jansen if(exlog) then 35*59599516SKenneth E. Jansen else 36*59599516SKenneth E. Jansen open(unit=72,file='numstart.dat',status='old') 37*59599516SKenneth E. Jansen read(72,*) irstart 38*59599516SKenneth E. Jansen close(72) 39*59599516SKenneth E. Jansen itmp = 1 40*59599516SKenneth E. Jansen if (irstart .gt. 0) itmp = int(log10(float(irstart)))+1 41*59599516SKenneth E. Jansen write (fmt1,"('(''bar.'',i',i1,',1x)')") itmp 42*59599516SKenneth E. Jansen write (fname1,fmt1) irstart 43*59599516SKenneth E. Jansen fname1 = trim(fname1) // cname(myrank+1) 44*59599516SKenneth E. Jansen 45*59599516SKenneth E. Jansen inquire(file=fname1,exist=exlog) 46*59599516SKenneth E. Jansen endif 47*59599516SKenneth E. Jansen 48*59599516SKenneth E. Jansen write (*,*) 'Reading bar field file : ', fname1 49*59599516SKenneth E. Jansen 50*59599516SKenneth E. Jansen if(exlog) then ! velb exists; open and use it 51*59599516SKenneth E. Jansen open (unit=irstin, file=fname1, status='old', 52*59599516SKenneth E. Jansen & form='unformatted', err=877) 53*59599516SKenneth E. Jansen 54*59599516SKenneth E. Jansen read (irstin) mach2, nshg2, lstep2 55*59599516SKenneth E. Jansen if((itwmod.gt.0) .or. (irscale.ge.0)) then 56*59599516SKenneth E. Jansen read (irstin,err=877,end=877) q 57*59599516SKenneth E. Jansen write(*,*) "velb found and read properly" 58*59599516SKenneth E. Jansen ifail=0 ! i.e. I didn't fail 59*59599516SKenneth E. Jansen endif 60*59599516SKenneth E. Jansen if((nsonmax.eq.1) .and. (iLES.gt.0)) then 61*59599516SKenneth E. Jansen read (irstin,err=888,end=888) numNDen 62*59599516SKenneth E. Jansen write(*,*) "numDen found and read properly",myrank+1 63*59599516SKenneth E. Jansen endif 64*59599516SKenneth E. Jansen 888 continue 65*59599516SKenneth E. Jansen 877 continue 66*59599516SKenneth E. Jansen close (irstin) 67*59599516SKenneth E. Jansen endif ! if bar field file exists 68*59599516SKenneth E. Jansen 69*59599516SKenneth E. Jansen return 70*59599516SKenneth E. Jansen endif 71*59599516SKenneth E. Jansenc 72*59599516SKenneth E. Jansenc.... --------------------------> 'out ' <--------------------------- 73*59599516SKenneth E. Jansenc 74*59599516SKenneth E. Jansen if (code .eq. 'out ') then 75*59599516SKenneth E. Jansen 76*59599516SKenneth E. Jansen itmp = 1 77*59599516SKenneth E. Jansen if (lstep .gt. 0) itmp = int(log10(float(lstep)))+1 78*59599516SKenneth E. Jansen write (fmt1,"('(''bar.'',i',i1,',1x)')") itmp 79*59599516SKenneth E. Jansen write (fname1,fmt1) lstep 80*59599516SKenneth E. Jansen fname1 = trim(fname1) // cname(myrank+1) 81*59599516SKenneth E. Jansenc 82*59599516SKenneth E. Jansen open (unit=irstou, file=fname1, status='unknown', 83*59599516SKenneth E. Jansen & form='unformatted', err=996) 84*59599516SKenneth E. Jansen 85*59599516SKenneth E. Jansen write (irstou) machin, nshg, lstep 86*59599516SKenneth E. Jansen if((itwmod.gt.0) .or. (irscale.ge.0)) then 87*59599516SKenneth E. Jansen write (irstou) q 88*59599516SKenneth E. Jansen endif 89*59599516SKenneth E. Jansen if((nsonmax.eq.1) .and. (iLES.gt.0)) then 90*59599516SKenneth E. Jansen write (irstou) numNden 91*59599516SKenneth E. Jansen endif 92*59599516SKenneth E. Jansen close (irstou) 93*59599516SKenneth E. Jansen 94*59599516SKenneth E. Jansen call MPI_BARRIER(MPI_COMM_WORLD,ierr) 95*59599516SKenneth E. Jansenc 96*59599516SKenneth E. Jansenc update links of "latest" 97*59599516SKenneth E. Jansenc 98*59599516SKenneth E. Jansen fname2='bar.latest' 99*59599516SKenneth E. Jansen fname2 = trim(fname2) // cname(myrank+1) 100*59599516SKenneth E. Jansenc syscmd = 'ln -sf '//trim(fname1)// ' ' //fname2 101*59599516SKenneth E. Jansenc write(*,*) syscmd 102*59599516SKenneth E. Jansenc call system(syscmd) 103*59599516SKenneth E. Jansen 104*59599516SKenneth E. Jansen return 105*59599516SKenneth E. Jansen endif 106*59599516SKenneth E. Jansenc 107*59599516SKenneth E. Jansenc.... ----------------------> Error Handling <----------------------- 108*59599516SKenneth E. Jansenc 109*59599516SKenneth E. Jansenc.... Error handling 110*59599516SKenneth E. Jansenc 111*59599516SKenneth E. Jansen call error ('velb ',code//' ',0) 112*59599516SKenneth E. Jansenc 113*59599516SKenneth E. Jansenc.... file error handling 114*59599516SKenneth E. Jansenc 115*59599516SKenneth E. Jansen995 call error ('velb ','opening ', irstin) 116*59599516SKenneth E. Jansen996 call error ('velb ','opening ', irstou) 117*59599516SKenneth E. Jansenc 118*59599516SKenneth E. Jansenc.... end 119*59599516SKenneth E. Jansenc 120*59599516SKenneth E. Jansen end 121