c subroutine pltutlin(futloc,futlocht,htutpert,htutcntr) c c Line plots with ut on x-axis, field on y-axis at selected pressures c and/or heights: c include 'tigcmdif.h' dimension futloc(ntms,kmx,nfplt,nloc),htutpert(ntms,kmx,nloc), + htutcntr(ntms,kmx,nloc),futlocht(ntms,nhtscale,nfplt,nloc) dimension plt(ntms),fht(nhtscale) character*80 histlab,rec80 character*56 toplab character*24 flnm0,flnm1 character*16 ylab dimension vp(4) data vp /0.14,0.95,0.20,0.90/ c c Set up AG: c call agsetf('DASH/PATTERNS/1.',65535.) call agsetc ('LABEL/NAME.','T') call agsetr("AXIS/TOP/CONTROL.",-1.) call agseti ('LINE/NUMBER.', 100) call agsetf ('LINE/CHARACTER.', .025) call agsetc("LABEL/NAME.","B") call agsetr("LABEL/DEF/SUPPRESSION.",1.) call agsetr("AXIS/BOT/CONTROL.",-1.) call set(vp(1),vp(2),vp(3),vp(4),0.,1.,0.,1.,1) c c lset=2 -> AG will use only fractional from set call lset = 2 c c Field loop: c iip = 0 do 300 ip=1,nftot if (ifplt(ip).le.0) goto 300 if (ip.eq.ixuivi.or.ip.eq.ixunvn) goto 300 iip = iip+1 c c Location loop: c do 200 l=1,nloc c c Selected zp and/or ht loop: c do 100 k=1,npls+nhts if (k.gt.1.and.(ip.eq.ixfof2.or.ip.eq.ixhmf2)) goto 100 if (k.le.npls) then ixpl = ixfind(gcmzp,kmx,spls(k),dzp) if (ixpl.le.0) then write(6,"('>>> pltutlin: bad selected pressure=', + f10.3,' k=',i3)") spls(k),k goto 100 endif plt(:) = futloc(:,ixpl,iip,l) else c c futlocht(ntms,nhtscale,nfplt,nloc) has been defined with diffs at c linear height scale. Selected height shts(kk) must be within linear c height scale nhtscale and are linearly interpolated from futloc: c kk = k-npls if (shts(kk).lt.htscale(1).or. + shts(kk).gt.htscale(nhtscale)) then write(6,"('>>> pltutlin: ht ',f7.2,' not within ', + 'height scale (',f7.2,' to ',f7.2,') -- skipping ', + 'this height')") shts(kk),htscale(1), + htscale(nhtscale) goto 100 endif do it=1,ntms fht(:) = futlocht(it,:,iip,l) call terp(fht,htscale,nhtscale,plt(it),shts(kk),1, + 0,cpspval,ier,0) enddo endif call clearstr(ylab) write(ylab,"(a)") labshort(ip) call clearstr(toplab) if (k.le.npls) then if (ip.ne.ixfof2.and.ip.ne.ixhmf2) then if (gloc(1,l).eq.gmflag.and.gloc(2,l).eq.gmflag) then write(toplab,"('GLOBAL MEANS ZP=',f4.1)") spls(k) elseif (gloc(1,l).ne.gmflag.and.gloc(2,l).eq.gmflag)then write(toplab,"('LAT= ',f6.2,' LON=ZONAL MEANS ZP=', + f4.1)") gloc(1,l),spls(k) else write(toplab,"('LAT,LON = ',f6.2,',',f7.2,' ZP=', + f4.1)") gloc(1,l),gloc(2,l),spls(k) if (locname(1).ne.'xxxxxxxxxxxxxxxx') then lentop = lenstr(toplab) lenlab = lenstr(locname(l)) write(toplab(lentop+1:lentop+lenlab+3),"(' (',a, + ')')") locname(l)(1:lenlab) endif endif else if (gloc(1,l).eq.gmflag.and.gloc(2,l).eq.gmflag) then write(toplab,"('GLOBAL MEANS')") elseif (gloc(1,l).ne.gmflag.and.gloc(2,l).eq.gmflag)then write(toplab,"('LAT= ',f6.2,' LON=ZONAL MEANS')") + gloc(1,l) else write(toplab,"('LAT,LON = ',f6.2,',',f7.2)") + gloc(1,l),gloc(2,l) if (locname(1).ne.'xxxxxxxxxxxxxxxx') then lentop = lenstr(toplab) lenlab = lenstr(locname(l)) write(toplab(lentop+1:lentop+lenlab+3),"(' (',a, + ')')") locname(l)(1:lenlab) endif endif endif else if (ip.ne.ixfof2.and.ip.ne.ixhmf2) then if (gloc(1,l).eq.gmflag.and.gloc(2,l).eq.gmflag) then write(toplab,"('GLOBAL MEANS HT=',f5.1)") shts(kk) elseif (gloc(1,l).ne.gmflag.and.gloc(2,l).eq.gmflag)then write(toplab,"('LAT= ',f6.2,' LON=ZONAL MEANS HT=', + f5.1)") gloc(1,l),shts(kk) else write(toplab,"('LAT,LON = ',f6.2,',',f7.2,' HT=', + f5.1)") gloc(1,l),gloc(2,l),shts(kk) if (locname(1).ne.'xxxxxxxxxxxxxxxx') then lentop = lenstr(toplab) lenlab = lenstr(locname(l)) write(toplab(lentop+1:lentop+lenlab+3),"(' (',a, + ')')") locname(l)(1:lenlab) endif endif else if (gloc(1,l).eq.gmflag.and.gloc(2,l).eq.gmflag) then write(toplab,"('GLOBAL MEANS')") elseif (gloc(1,l).ne.gmflag.and.gloc(2,l).eq.gmflag)then write(toplab,"('LAT= ',f6.2,' LON=ZONAL MEANS')") + gloc(1,l) else write(toplab,"('LAT,LON = ',f6.2,',',f7.2)") + gloc(1,l),gloc(2,l) if (locname(1).ne.'xxxxxxxxxxxxxxxx') then lentop = lenstr(toplab) lenlab = lenstr(locname(l)) write(toplab(lentop+1:lentop+lenlab+3),"(' (',a, + ')')") locname(l)(1:lenlab) endif endif endif endif len = lenstr(toplab) call clearstr(rec80) write(rec80,"(a)") toplab(1:len) c call displa(2,1,1) call anotat('UT',ylab(1:lenstr(ylab)),0,lset,-1,l) call ezxy(utinc,plt,ntms,toplab(1:len)) call fminmax(plt,ntms,rmin,rmax,cpspval) if (rmin.lt.0..and.rmax.gt.0.) + call line(utinc(1),0.,utinc(ntms),0.) isltax = 0 if (gloc(1,l).ne.gmflag.and.gloc(2,l).ne.gmflag) isltax=1 call labutxy(mtcntr,ntms,0.,0,' ',0.,1,gloc(2,l)) write(6,"('utline: frame ',i4,' ',a,' ',a)") iframe+1, + labshort(ip),toplab(1:lenstr(toplab)) call clearstr(toplab) write(toplab,"(a,' (DIFFERENCE)')") + flab(ip)(1:lenstr(flab(ip))) call wrlab(toplab(1:lenstr(toplab)),0.5*(vp(1)+vp(2)), + vp(4)+.07,0.) call frame iframe = iframe+1 call clearstr(histlab) call tail(pertvol(ipvol),flnm0) call tail(cntrvol(icvol),flnm1) write(histlab,"('DIFFS FROM ',a,' MINUS ',a)") + flnm0(1:lenstr(flnm0)),flnm1(1:lenstr(flnm1)) if (iwrascii.gt.0) + call wrascii(iwrascii,luascii,plt,1,ntms,dum, + utinc,' ','UT (HRS)',histlab,flab(ip),iframe, + rec80,'tigcmdif',dirascii) c c End selected zp/ht loop: 100 continue c c End location loop: 200 continue c c End field loop: 300 continue return end