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.
===============================================================================