subroutine wfm93 + (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: wfm93 - write icrccm data in new standard (1993) format *_______________________________________________________________________ * 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) *_______________________________________________________________________ * print file header with 10 lines of info in any format write(iounit,'(a80)') header * print descriptive parameters write(iounit,910) iphase,icase,atmlbl,nlayer,nlevel,nbands, + psurf,tsurf,ptrop,flgctm, + ppmco2,ppmch4,ppmn2o, + pthair,pthh2o,pthco2,ptho3,pthch4,pthn2o 910 format('.....icrccm.phase.number',i16 + ,/,'......icrccm.case.number',i16 + ,/,'.......atmospheric.label',a16 + ,/,'.....number.model.layers',i16 + ,/,'.....number.model.levels',i16 + ,/,'...number.spectral.bands',i16 + ,/,'........surface.pressure',0p,f16.2,' mb' + ,/,'.....surface.temperature',0p,f16.2,' k' + ,/,'.....tropopause.pressure',0p,f16.2,' mb' + ,/,'......h2o.continuum.flag',0p,f16.0,' (0=off,1=included)' + ,/,'........co2.mixing.ratio',0p,f16.2,' ppm' + ,/,'........ch4.mixing.ratio',0p,f16.2,' ppm' + ,/,'........n2o.mixing.ratio',0p,f16.2,' ppm' + ,/,'....total.dry.air.column',1p,e16.4,' molecules/cm**2' + ,/,'........total.h2o.column',1p,e16.4,' molecules/cm**2' + ,/,'........total.co2.column',1p,e16.4,' molecules/cm**2' + ,/,'.........total.o3.column',1p,e16.4,' molecules/cm**2' + ,/,'........total.ch4.column',1p,e16.4,' molecules/cm**2' + ,/,'........total.n2o.column',1p,e16.4,' molecules/cm**2') * print spectrally itegrated summary of icrccm fluxes k=0 write(iounit,920) bandv1(k),bandv2(k) 920 format('....spectral.region.from',0p,f16.2,' cm-1 ' + ,/,'......................to',0p,f16.2,' cm-1 ') write(iounit,930) fluxup(nlevel,k),fluxdn(nlevel,k), + tropup( k),tropdn( k), + fluxup( 1,k) 930 format('.......flux.up.@.surface',1p,e16.4,' watts/m**2' + ,/,'.....flux.down.@.surface',1p,e16.4,' watts/m**2' + ,/,'....flux.up.@.tropopause',1p,e16.4,' watts/m**2' + ,/,'..flux.down.@.tropopause',1p,e16.4,' watts/m**2' + ,/,'..flux.up.@.top.of.atmos',1p,e16.4,' watts/m**2') * print table of atmospheric profile data and layer heating rates write(iounit,'(2a)') + ' layer >> p t air mass' +,' h2o o3 heating' +,' (mb) (K) (#/cm**2)' +,' (ppm) (ppm) (deg/day)' do j=1,nlayer write(iounit,'(1p,e12.4,3p,e12.4,1p,4e12.4)') + player(j),tlayer(j),alayer(j),wlayer(j),olayer(j),heatrt(j,k) end do * print table of computed fluxes write(iounit,'(a)') + ' level >> p t flux up flux down net flux' +,' (mb) (k) (w/m**2) (w/m**2) (w/m**2)' do j=1,nlevel write(iounit,'(1p,e12.4,3p,e12.4,1p,3e12.4)') + plevel(j),tlevel(j),fluxup(j,k),fluxdn(j,k),fluxnt(j,k) end do * print band-by-band flux summaries, fluxes, heating rates do k=1,nbands write(iounit,'(0p,2f15.2)') bandv1(k),bandv2(k) write(iounit,'(1p,5e15.6)') fluxup(nlevel,k),fluxdn(nlevel,k), + tropup( k),tropdn( k), + fluxup( 1,k) write(iounit,'(1p,5e15.6)') (fluxup(j,k),j=1,nlevel) write(iounit,'(1p,5e15.6)') (fluxdn(j,k),j=1,nlevel) write(iounit,'(1p,5e15.6)') (fluxnt(j,k),j=1,nlevel) write(iounit,'(1p,5e15.6)') (heatrt(j,k),j=1,nlayer) end do return end