1*59599516SKenneth E. Jansen subroutine restar (code, q, ac) 2*59599516SKenneth E. Jansenc 3*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 4*59599516SKenneth E. Jansenc This routine is the restart option. 5*59599516SKenneth E. Jansenc 6*59599516SKenneth E. Jansenc input: 7*59599516SKenneth E. Jansenc code : restart option on the primitive variables 8*59599516SKenneth E. Jansenc eq. 'in ', read from [restar.inp] 9*59599516SKenneth E. Jansenc eq. 'out ', write to [restar.out] 10*59599516SKenneth E. Jansenc 11*59599516SKenneth E. Jansenc input or output: 12*59599516SKenneth E. Jansenc q (nshg,ndof) : the variables to be read/written 13*59599516SKenneth E. Jansenc 14*59599516SKenneth E. Jansenc 15*59599516SKenneth E. Jansenc Farzin Shakib, Summer 1985. 16*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 17*59599516SKenneth E. Jansenc 18*59599516SKenneth E. Jansen use readarrays ! used to access qold, acold 19*59599516SKenneth E. Jansen include "common.h" 20*59599516SKenneth E. Jansen include "mpif.h" 21*59599516SKenneth E. Jansenc 22*59599516SKenneth E. Jansen character*4 code 23*59599516SKenneth E. Jansen character*8 mach2 24*59599516SKenneth E. Jansen character*20 fname1, fmt1 25*59599516SKenneth E. Jansen character*5 cname 26*59599516SKenneth E. Jansen 27*59599516SKenneth E. Jansenc 28*59599516SKenneth E. Jansen dimension q(nshg,ndof),ac(nshg,ndof) 29*59599516SKenneth E. Jansenc arrays in the following 1 line are now dimensioned in readnblk 30*59599516SKenneth E. Jansenc real*8 qold(nshg,ndof),acold(nshg,ndof) 31*59599516SKenneth E. Jansenc 32*59599516SKenneth E. Jansenc.... --------------------------> 'in ' <--------------------------- 33*59599516SKenneth E. Jansenc 34*59599516SKenneth E. Jansen if (code .eq. 'in ') then 35*59599516SKenneth E. Jansenc 36*59599516SKenneth E. Jansenc incompressible orders velocity, pressure, temperature unlike compressible 37*59599516SKenneth E. Jansenc which is what we have our files set up for 38*59599516SKenneth E. Jansenc 39*59599516SKenneth E. Jansen q(:,1:3)=qold(:,2:4) 40*59599516SKenneth E. Jansen q(:,4)=qold(:,1) 41*59599516SKenneth E. Jansen if(ndof.gt.4) q(:,5:ndof)=qold(:,5:ndof) 42*59599516SKenneth E. Jansen 43*59599516SKenneth E. Jansen ac(:,1:3)=acold(:,2:4) 44*59599516SKenneth E. Jansen ac(:,4)=acold(:,1) 45*59599516SKenneth E. Jansen if(ndof.gt.4) ac(:,5:ndof)=acold(:,5:ndof) 46*59599516SKenneth E. Jansen 47*59599516SKenneth E. Jansen deallocate(qold) 48*59599516SKenneth E. Jansen deallocate(acold) 49*59599516SKenneth E. Jansen return 50*59599516SKenneth E. Jansen endif 51*59599516SKenneth E. Jansenc 52*59599516SKenneth E. Jansenc.... --------------------------> 'out ' <--------------------------- 53*59599516SKenneth E. Jansenc 54*59599516SKenneth E. Jansen if (code .eq. 'out ') then 55*59599516SKenneth E. Jansen 56*59599516SKenneth E. Jansenc$$$ ttim(75) = ttim(75) - tmr() 57*59599516SKenneth E. Jansen allocate( qold(nshg,ndof) ) 58*59599516SKenneth E. Jansen allocate( acold(nshg,ndof) ) 59*59599516SKenneth E. Jansen acold=0 60*59599516SKenneth E. Jansenc itmp = 1 61*59599516SKenneth E. Jansenc if (lstep .gt. 0) itmp = int(log10(float(lstep)))+1 62*59599516SKenneth E. Jansenc write (fmt1,"('(''restart.'',i',i1,',1x)')") itmp 63*59599516SKenneth E. Jansenc write (fname1,fmt1) lstep 64*59599516SKenneth E. Jansenc 65*59599516SKenneth E. Jansenc fname1 = trim(fname1) // cname(myrank+1) 66*59599516SKenneth E. Jansen 67*59599516SKenneth E. Jansenc open (unit=irstou, file=fname1, status='unknown', 68*59599516SKenneth E. Jansenc & form='unformatted', err=996) 69*59599516SKenneth E. Jansen 70*59599516SKenneth E. Jansenc write (irstou) machin, nshg, lstep 71*59599516SKenneth E. Jansenc incompressible orders velocity, pressure, temperature unlike compressible 72*59599516SKenneth E. Jansenc which is what we have our files set up for 73*59599516SKenneth E. Jansenc 74*59599516SKenneth E. Jansen qold(:,2:4) = q(:,1:3) 75*59599516SKenneth E. Jansen qold(:,1) = q(:,4) 76*59599516SKenneth E. Jansen if(ndof.gt.4) qold(:,5:ndof) = q(:,5:ndof) 77*59599516SKenneth E. Jansenc 78*59599516SKenneth E. Jansen acold(:,2:4) = ac(:,1:3) 79*59599516SKenneth E. Jansen acold(:,1) = ac(:,4) 80*59599516SKenneth E. Jansen if(ndof.gt.4) acold(:,5:ndof) = ac(:,5:ndof) 81*59599516SKenneth E. Jansenc 82*59599516SKenneth E. Jansen iqoldsiz=nshg*ndof 83*59599516SKenneth E. Jansen call write_restart(myrank, lstep, nshg, ndof, 84*59599516SKenneth E. Jansen & qold, acold) 85*59599516SKenneth E. Jansenc write (irstou) qold 86*59599516SKenneth E. Jansenc write (irstou) acold ! note that this is dYdt (reordered) 87*59599516SKenneth E. Jansenc close (irstou) 88*59599516SKenneth E. Jansen 89*59599516SKenneth E. Jansenc$$$ open(unit=79,file="fort.79") 90*59599516SKenneth E. Jansenc$$$ do i=1,nshg 91*59599516SKenneth E. Jansenc$$$ write(79,78)(qold(i,j),j=1,5) 92*59599516SKenneth E. Jansenc$$$ enddo 93*59599516SKenneth E. Jansenc$$$ do i=1,nshg 94*59599516SKenneth E. Jansenc$$$ write(79,78)(acold(i,j),j=1,5) 95*59599516SKenneth E. Jansenc$$$ enddo 96*59599516SKenneth E. Jansenc$$$ 78 format(5(2x,e12.5)) 97*59599516SKenneth E. Jansenc$$$ close(79) 98*59599516SKenneth E. Jansen 99*59599516SKenneth E. Jansen if (myrank.eq.master) then 100*59599516SKenneth E. Jansen open(unit=72,file='numstart.dat',status='old') 101*59599516SKenneth E. Jansen write(72,*) lstep 102*59599516SKenneth E. Jansen close(72) 103*59599516SKenneth E. Jansen endif 104*59599516SKenneth E. Jansen deallocate(qold) 105*59599516SKenneth E. Jansen deallocate(acold) 106*59599516SKenneth E. Jansenc$$$ ttim(75) = ttim(75) + tmr() 107*59599516SKenneth E. Jansen return 108*59599516SKenneth E. Jansen endif 109*59599516SKenneth E. Jansenc 110*59599516SKenneth E. Jansenc.... ----------------------> Error Handling <----------------------- 111*59599516SKenneth E. Jansenc 112*59599516SKenneth E. Jansenc.... Error handling 113*59599516SKenneth E. Jansenc 114*59599516SKenneth E. Jansen call error ('restar ',code//' ',0) 115*59599516SKenneth E. Jansenc 116*59599516SKenneth E. Jansenc.... file error handling 117*59599516SKenneth E. Jansenc 118*59599516SKenneth E. Jansen995 call error ('restar ','opening ', irstin) 119*59599516SKenneth E. Jansen996 call error ('restar ','opening ', irstou) 120*59599516SKenneth E. Jansenc 121*59599516SKenneth E. Jansenc.... end 122*59599516SKenneth E. Jansenc 123*59599516SKenneth E. Jansen end 124