97/01/10 Documentation on transcom diagnostic code used with GISS 4x5 tracer model. The code is provided more as a guideline than as a plug-in subroutine. No guarantees, as this is our first attempt. Report errors etc to jasmin@garryoak.seos.uvic.ca. Updated 97/03/01: added dxyp to computation of W. fixed PNTRP so it uses SIGE (not SIG). corrected unit of PU,PV in this readme file. ============================================================================= The diagnostic code is made up of a common block: TRANSCOM.COM and a subroutine: transcom.f The common block contains the arrays needed by TRANSCOM2. The subroutine is divided into entries that are called at appropriate places by main tracer code. Note that in GISS model, diagnostics are produced every NDIAG hours. Convection is called every NCONV hours and diffusion every NDFUS hours. The diagnostics for convection and diffusion are therefore done in separate entries. CAUTION: For computing average quantities for a period (e.g. a month), the diagnostics are accumulated/summed/integrated in accumulation arrays. A relevant counter is also updated. Averaging (division of the accumulation array by the counter) is done in the post-analysis (not included here). ............................................................................. Overview of subroutine entries: TRANSI One-time initialization of certain variables. This should be done when model is first started up. TRANSIM Initialization of accumulating arrays. This is done at the start of each month. GETUVW Model uses PU,PV,PW. Need to extract U,V,W from these. This is done at each timestep. TRANSIA Interpolation of arrays to pressure levels and accumulation of arrays at each diagnostic timestep. Also saves station meteorological data to disk. TRANSAC Interpolate and accumulate change of tracer mass by convection. Done at each convection timestep. TRANSAD Interpolate and accumulate change of tracer mass by diffusion. Done at each diffusion timestep. PNTRP Subroutine to interpolate an array to pressure levels. STNIJ Subroutine to locate stations on model grid BLOCK DATA Station locations for high-frequency diagnostics ............................................................................. Overview of input variables and arrays: IM,JM,LM these specify the resolution of model MTRACE maximum number of tracers: used to dimension arrays NTRACE actual number of tracers in run (NTRACE <= MTRACE) TAU Model time (hours) NDIAG Diagnostic timestep (hrs) JYEAR Current year of model run IYEARE Final year of model run GRAV acceleration of gravity (m/s2) SIG edges of sigma levels DSIG thickness of sigma levels DXYP area of gridbox (m2) DXVSAV arc length (m) NPL number of pressure levels NSTN number of stations KSTN unit number of dataset which holds station meteorological info. C0 initial mass mixing ratio of SF6 (= 1.04E-11 kg SF6/kg air) UNIT scale factor to convert from mass mixing ratio to mole fraction IDTRANS counter to keep track of how often diagnostics are accumulated each month. IDACC(4) counter: incremented each time convection is called (passed from tracer model) IDACC(3) counter: incremented each time diffusion is called (passed from tracer model) NDT counter: incremented every time station data is written. GSRC time integrated surface emission field (kg SF6/kg air) PLEV specifies pressure levels PSAVE (=P) surface pressure (mb) SRC instantaneous SF6 source (kg/m2/sec) PU,PV Pressure*U, Pressue*V: horizontal air mass fluxes (mb m2/s) at sigma levels. PW (=SD) Pressure*W: vertical air mass flux (100 N/s) at sigma levels. M Mass of air (kg) at sigma levels RM Mass of tracer (kg) at sigma levels RMCNV Change of tracer mass due to convection (at sigma levels) RMDIF Change of tracer mass due to diffusion (at sigma levels) Overview of output arrays: U,V,W horizontal and vertical velocities (m/s) at sigma levels. CI Instantaneous concentration (kg tracer/kg air) = RM/M at sigma levels. APS Accumulated sfc pressure ACI Accumulated instantaneous concentration at sigma levels ACN Accumulated 'normalized' concentration (background subtracted) at sigma levels. BETA Terrain Mask at pressure levels. UP,VP,WP U,V,W interpolated to pressure levels CIP Instantaneous concentration interpolated to pressure levels. CNP Normalized concentration interpolated to pressure levels. RMCNVP Change of tracer mass due to convection (at pressure levels) RMDIFP Change of tracer mass due to diffusion (at pressure levels) ABETA Accumulated BETA at pressure levels. ABETAC Accumulated Terrain Mask for convection diagnostics (at pressure levels) ABETAD Accumulated Terrain Mask for diffusion diagnostics (at pressure levels) AUP,AVP,AWP Accumulated UP,VP,WP at pressure levels. ACIP Accumulated instantaneous concentration at pressure levels ACNP Accumulated normalized concentration at pressure levels. ACHIP Accumulated Mole Fraction at pressure levels. AUCNP Accumulated UP*CNP at pressure levels. AVCNP Accumulated VP*CNP at pressure levels. AWCNP Accumulated WP*CNP at pressure levels. ARMCNVP Accumulated RMCNVP at pressure levels. ARMDIFP Accumulated RMDIFP at pressure levels. Arrays for station meteorological information: PSTN surface pressure (mb) HSTN height above ground (m) (not implemented yet) TSTN temperature (K) QSTN specific humidity (kg/kg) VSTN V (m/s) BHSTN boundary layer depth (m) (not implemented yet) XVSTN mixing ratio (kg/kg) =============================================================================== NOTE Certain variables and arrays which are defined or computed in main tracer model are needed by transcom.f subroutine. Make sure they are defined by your model. These are defined or computed below. REAL SIG0(9)/.974264,.907372,.796957,.640124,.470418,.318899, * .195759,.094938,.016897/ REAL SIGE0(10)/1.,.948665,.866530,.728953,.554415,.390144, * .251540,.143737,.061602,0./ TWOPI = 6.283185 RADIUS = 6375000. GRAV=9.81 NTRACE=1 DO 50 L=1,LM SIG(L) = SIG0(L) 50 SIGE(L) = SIGE0(L) SIGE(LM+1) = 0. DLON = TWOPI/IM DLAT=.5*TWOPI/(JM-1) BYIM = 1./IM FIM = IM FJEQ = .5*(1+JM) DXP(1)=0. DXP(JM)=0. COSP(1) = 0. COSP(JM) = 0. DO 110 J=2,JM-1 DLATJ=(J-FJEQ)*DLAT DXP(J)=RADIUS*DLON*COS(DLATJ) 110 COSP(J) = COS(DLAT*(J-FJEQ)) DO 120 J=2,JM DYV(J)=RADIUS*DLAT DXVSAV(J) = .5*RADIUS*DLON*(COSP(J-1)+COSP(J)) 120 DXV(J) = .5*RADIUS*DLON*(COSP(J-1)+COSP(J)) DYP(2)=RADIUS*DLAT DYP(1)=.5*DYP(2) DYP(JM)=.5*DYP(2) DXYP(1)=.25*DXV(2)*DYP(2)*FIM DXYP(JM)=.25*DXV(JM)*DYP(2)*FIM DO 130 J=2,JM-1 DYP(J)=DYP(2) DXYP(J)=.5*(DXV(J)+DXV(J+1))*DYP(J) 130 CONTINUE C**** CALCULATE DSIG AND DSIGO DO 150 L=1,LM 150 DSIG(L) = SIGE(L)-SIGE(L+1) DO 160 L=1,LM-1 160 DSIGO(L) = SIG(L)-SIG(L+1) =============================================================================== Please see transcom.f for additional documentation. ===============================================================================