subroutine rfm93 + (iounit,mlayer,mlevel,mbands + ,header,atmlbl,iphase,icase,nlayer,nlevel,nbands + ,psurf,tsurf,ptrop,flgctm,ppmco2,ppmch4,ppmn2o + ,pthair,pthh2o,pthco2,ptho3,pthch4,pthn2o + ,bandv1,bandv2,plevel,tlevel + ,player,tlayer,alayer,wlayer,olayer + ,fluxup,fluxdn,fluxnt,heatrt + ,tropup,tropdn,tropnt) *_______________________________________________________________________ * purpose: rfm93 - read 1993-format icrccm data file, return data arrays *_______________________________________________________________________ * parameters defined in driver and passed to all subroutines: integer iounit,mlayer,mlevel,mbands * variables passed to or created by subroutines: character*80 header(10) character*3 atmlbl integer iphase,icase,nlayer,nlevel,nbands real psurf,tsurf,ptrop,flgctm real ppmco2,ppmch4,ppmn2o real pthair,pthh2o,pthco2,ptho3,pthch4,pthn2o real bandv1(0:mbands),bandv2(0:mbands) real plevel(mlevel),tlevel(mlevel) real player(mlayer),tlayer(mlayer) real alayer(mlayer),wlayer(mlayer),olayer(mlayer) real fluxup(mlevel,0:mbands) real fluxdn(mlevel,0:mbands) real fluxnt(mlevel,0:mbands) real heatrt(mlayer,0:mbands) real tropup( 0:mbands) real tropdn( 0:mbands) real tropnt( 0:mbands) *_______________________________________________________________________ * blank out header initially do k=1,10 write(header(k),'(80a1)') (' ',j=1,80) end do * read 10 lines of header info from fm93 file read (iounit,'(a80)') header * read key parameters which identify this case read (iounit,910) iphase,icase,atmlbl,nlayer,nlevel,nbands, + psurf,tsurf,ptrop,flgctm, + ppmco2,ppmch4,ppmn2o, + pthair,pthh2o,pthco2,ptho3,pthch4,pthn2o 910 format(24x,i16, + /,24x,i16, + /,24x,13x,a3, + 3(/,24x,i16), + 3(/,24x,f16.2), + 1(/,24x,f16.0), + 3(/,24x,f16.2), + 6(/,24x,f16.4)) * ingest spectrally summed results (k=0 only) k=0 read (iounit,'(24x,f16.2)') bandv1(k),bandv2(k) read (iounit,'(24x,e16.4)') fluxup(nlevel,k),fluxdn(nlevel,k), + tropup( k),tropdn( k), + fluxup( 1,k) tropnt(k)=tropup(k)-tropdn(k) read (iounit,'(1x)') read (iounit,'(1x)') do j=1,nlayer read (iounit,'(6e12.4)') + player(j),tlayer(j),alayer(j),wlayer(j),olayer(j),heatrt(j,k) end do read (iounit,'(1x)') read (iounit,'(1x)') do j=1,nlevel read (iounit,'(5e12.4)') + plevel(j),tlevel(j),fluxup(j,k),fluxdn(j,k),fluxnt(j,k) end do * read band-by-band flux summaries, fluxes, heating rates do k=1,nbands read(iounit,'(2f15.2)') bandv1(k),bandv2(k) read(iounit,'(5e15.6)') fluxup(nlevel,k),fluxdn(nlevel,k), + tropup( k),tropdn( k), + fluxup( 1,k) read(iounit,'(5e15.6)') (fluxup(j,k),j=1,nlevel) read(iounit,'(5e15.6)') (fluxdn(j,k),j=1,nlevel) read(iounit,'(5e15.6)') (fluxnt(j,k),j=1,nlevel) read(iounit,'(5e15.6)') (heatrt(j,k),j=1,nlayer) end do return end