c234567 program make_gdfl c f77 -o mkgdfl_wuson_TEST.exe mkgdfl_wuson_TEST.f /disk6/morgan/oldgemlib/*.a c ** This program creates GEMPAK grid file from data stored by variables c ** then level CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC c ** This program creates a GEMPAK grid file from data stored in a file c by date then variable then level c e.g. in the input file I might have heights(z) , temps(t), rel hum(rh) c for two days at 500 mb and 400 mb. c the file would contain data in this order: c day 1 c z c 500 mb c 400 mb c t c 500 mb c 400 mb c rh c 500 mb C 400 mb c day 2 c z c 500 mb c 400 mb c t c 500 mb c 400 mb c rh c 500 mb c 400 mb CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC integer NX, NY CHARACTER*70 outfile1, outfile2, infile INTEGER nskip, ntimes, nvar REAL rlat11, rlat21, rlon11, rlon21, angl1, angl2, angl3 CHARACTER*3 proj c c Read in input data c write(6,*) 'number of points in X-dir (NX)' read(5,*) NX write(6,*) 'number of points in Y-dir (NY)' read(5,*) NY write(6,*) 'enter filename' read(5,'(a)') infile write(6,*) 'enter output1 filename' read(5,'(a)') outfile1 write (6,*) 'enter the number of time periods we want to skip' read(5,*) nskip write(6,*) 'enter the number of time periods' read(5,*) ntimes write(6,*) 'enter numbers of variables' read(5,*) nvar write(6,*) 'enter GAREA (lat1 lon1 lat2 lon2)' read(5,*) rlat11, rlon11, rlat21, rlon21 write(6,*) 'enter PROJ (CED, LCC)' read(5,*) proj write(6,*) 'enter projection angles (angl1 angl2 angl3)' read(5,*) angl1, angl2, angl3 c c Display input data c write(6,*) 'NX = ', NX write(6,*) 'NY = ', NY write(6,*) 'infile = ', infile write(6,*) 'outfile1 = ', outfile1 write(6,*) 'nskip = ', nskip write(6,*) 'ntimes = ', ntimes write(6,*) 'nvar = ', nvar write(6,*) 'GAREA = ', rlat11, rlon11, rlat21, rlon21 write(6,*) 'PROJ = ', proj, angl1, angl2, angl3 call gdfl_main(NX,NY,infile,outfile1,nskip,ntimes,nvar,rlat11, &rlat21,rlon11,rlon21,proj,angl1,angl2,angl3) stop end c c SUBROUTINES c subroutine gdfl_main(NX,NY,infile,outfile1,nskip,ntimes,nvar, &rlat11,rlat21,rlon11,rlon21,proj,angl1,angl2,angl3) integer NX, NY PARAMETER (nz=3000) real w(nx,ny) integer m, n INTEGER kx,ky,iret, level(2), level2(nvar,30),nskip,ihdrsz1,ihdrsz2 REAL rlat11, rlat21, rlon11, rlon21 REAL rlat12, rlat22, rlon12, rlon22 REAL rnvblk1(256),rnvblk2(256), anlblk1(128), anlblk2(128) REAL new1(nx,ny),skip(nx,ny) REAL new2(72,NY),new(nx,ny) REAL hdr(8), mi, rmissd CHARACTER*20 gdattm(2), datetime(ntimes) CHARACTER*70 outfile1, outfile2, infile CHARACTER*12 Var(nvar) PARAMETER(mi=9999.90,rmissd=-9999.0) REAL nlevel(nvar) INTEGER nvc(nvar) INTEGER sameasb4 LOGICAL angflg CHARACTER*3 proj REAL angl1, angl2, angl3 m = nx n = ny c data level2/1000,850,700,500,400,300,250,200,150,100/ C READ IN FILE NAME FOR INPUT and output write(6,*) 'enter the dates date/time, yymmdd/hhmm' do itime=1,ntimes read(5,'(a)') datetime(itime) enddo write(6,*) 'enter variable names' read(5,'(a)') (Var(i),i=1,nvar) do i = 1, nvar write(6,*) 'FOR VARIABLE: ', Var(i) write(6,*) 'enter numbers of vertical levels' write(6,*) '(enter -1 if same as previous variable)' read(5,*) sameasb4 if (sameasb4 .EQ. -1) then nlevel(i) = nlevel(i-1) else nlevel(i) = sameasb4 endif write(6,*) 'enter vertical coordinate number' write(6,*) '0:none, 1:pres, 2:thta, 3:height, 4:sigma' write(6,*) '(enter -1 if same as previous variable)' read(5,*) sameasb4 if (sameasb4 .EQ. -1) then nvc(i) = nvc(i-1) else nvc(i) = sameasb4 endif write(6,*) 'FOR VERTICAL LEVELS' write(6,*) 'enter -1 if same as previous variable, OR' write(6,*) 'enter 0 if new vertical levels' read(5,*) sameasb4 if (sameasb4 .EQ. -1) then do k = 1, nlevel(i) level2(i,k) = level2(i-1,k) enddo else write(6,*) 'enter vertical levels in order' read(5,*) (level2(i,k),k=1,nlevel(i)) endif enddo c proj='CED' c angl1 = 0. c angl2 = 0. c angl3 = 0. C OPEN FILEs open(unit=9,file=infile,status='old') C do 5 i=1,nskip+1 C write(6,*)'date =',i C 5 read(9,'(10(10e12.5/)/)')w CC close(9) gdattm(2) = ' ' level(2) = -1 C INPUT FOR MAKING NAVIGATION BLOCK kx = nx ky = ny call in_bdta(iret) write(6,*) 'IN_BDTA: iret = ', iret write(6,*) 'ANGLES:' write(6,*) angl1, angl2, angl3 call gr_mnav(proj,kx,ky,rlat11,rlon11,rlat21,rlon21, x angl1,angl2, x angl3,.TRUe.,rnvblk1,iret) write(6,*) 'GR_MNAV1: iret = ', iret write(6,*) 'ANGLES:' write(6,*) angl1, angl2, angl3 ihdrsz1 = 2 call gd_cref(outfile1,256,rnvblk1,128,anlblk1,ihdrsz1, x 9999,igdfln1,iret) write(6,*) 'GD_CREF: iret = ', iret C88 do itime = 1, ntimes C gdattm(1) = datetime(itime) C do klev = 1, nlevel 88 do itime = 1, ntimes do kvar = 1, nvar gdattm(1) = datetime(itime) do klev = 1, nlevel(kvar) do j = 1, ky do i = 1, kx read(9,*) w(i,j) enddo enddo level(1) = level2(kvar,klev) call gd_wdat(igdfln1,w,kx,ky,IHDRSZ1,gdattm, * LEVEL,nvc(kvar),var(kvar),0,IRET) write(6,*) 'GD_WDAT1: iret = ', iret write(6,*) 'Wrote variable ',var(kvar), 'at level ',level(1) write(6,*) 'date ', gdattm(1), ' completed' end do end do end do c do i = 1, kx c do j = 1, ky c write(6,*) w(i,j) c enddo c enddo 92 format(11g16.7) end