xref: /phasta/phSolver/common/rwvelb.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32) !
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