Files
2018-08-28 00:43:47 -04:00

423 lines
19 KiB
Fortran

! $Id: diag_mod.f,v 1.2 2012/03/01 22:00:26 daven Exp $
MODULE DIAG_MOD
!
!******************************************************************************
! Module DIAG_MOD contains declarations for allocatable arrays for use with
! GEOS-CHEM diagnostics. (amf, bdf, bmy, 11/30/99, 11/18/08)
!
! Module Routines:
! ============================================================================
! (1 ) CLEANUP_DIAG : Deallocates all module arrays
!
! GEOS-CHEM modules referenced by diag_mod.f
! ============================================================================
! none
!
! NOTES:
! (1 ) DIAG_MOD is written in Fixed-Format F90.
! (2 ) Call subroutine CLEANUP at the end of the MAIN program to deallocate
! the memory before the run stops. It is always good style to free
! any memory we have dynamically allocated when we don't need it
! anymoren
! (3 ) Added ND13 arrays for sulfur emissions (bmy, 6/6/00)
! (4 ) Moved ND51 arrays to "diag51_mod.f" (bmy, 11/29/00)
! (5 ) Added AD34 array for biofuel burning emissions (bmy, 3/15/01)
! (6 ) Eliminated old commented-out code (bmy, 4/20/01)
! (7 ) Added AD12 array for boundary layer emissions in routine "setemis.f".
! (bdf, bmy, 6/15/01)
! (8 ) Added CHEML24, DRYDL24, CTCHDD for archiving daily mean chemical
! and drydep loss in chemo3 and chemo3.f (amf, bmy, 7/2/01)
! (9 ) Add ND43 arrays LTNO2, CTNO2, LTHO2, CTHO2 (rvm, bmy, 2/27/02)
! (10) Add AD01, AD02 arrays for Rn-Pb-Be simulation (hyl, bmy, 8/7/02)
! (11) Add AD05 array for sulfate P-L diagnostic (rjp, bdf, bmy, 9/20/02)
! (12) Added subroutine CLEANUP_DIAG...moved code here from "cleanup.f",
! so that it is internal to "diag_mod.f". Added arrays AD13_NH3_bb,
! AD13_NH3_bf, AD13_NH3_an for NH3 emissons in ND13. Deleted obsolete
! allocatable arrays CHEML24, DRYDL24, CTCHDD. Now also added LTNO3
! and CTNO3 arrays for ND43 diagnostic. Added AD13_SO2_bf array for
! SO2 biofuel. (bmy, 1/16/03)
! (13) Added array AD13_NH3_na for ND13 diagnostic (rjp, bmy, 3/23/03)
! (14) Removed P24H and L24H -- these are now defined w/in "tagged_ox_mod.f"
! Also added AD03 array for Kr85 prod/loss diag. (jsw, bmy, 8/20/03)
! (15) Added ND06 (dust emission) and ND07 (carbon aerosol emission)
! diagnostic arrays (rjp, tdf, bmy, 4/5/04)
! (16) Added AD13_SO2_sh diagnostic array for ND13 (bec, bmy, 5/20/04)
! (17) Added AD07_HC diagnostic array for ND07 (rjp, bmy, 7/13/04)
! (18) Moved AD65 & FAMPL to "diag65_mod.f" (bmy, 7/20/04)
! (19) Added array AD13_SO4_bf (bmy, 11/17/04)!
! (20) Added extra arrays for ND03 mercury diagnostics (eck, bmy, 12/7/04)
! (21) Added extra ND21 array for crystalline sulfur tracers. Also remove
! ND03 and ND48 arrays; they are obsolete (bmy, 1/21/05)
! (22) Removed AD41 and AFTTOT arrays; they're obsolete (bmy, 2/17/05)
! (23) Added AD09, AD09_em arrays for HCN/CH3CN simulation (xyp, bmy, 6/27/05)
! (24) Added AD30 array for land/water/ice output (bmy, 8/18/05)
! (25) Added AD54 array for time spend in the troposphere (phs, 9/22/06)
! (26) Added CTO3 counter. Convert ND43 counter arrays from 2D to 3D, for
! the variable tropopause. (phs, 1/19/07)
! (27) Added AD10 and AD10em arrays for ND10 H2-HD-sim diag (phs, 9/18/07)
! (28) Added CTO3_24h to account for time in the troposphere for O3 in
! ND47 (phs, 11/17/08)
! (29) Added AD52 for Gamma HO2 diagnostic. (jaegle, ccc, 2/26/09)
! (30) Updated to save out GLYX production of SOAG in ND07.
! (tmf, 3/6/09)
!******************************************************************************
!
!=================================================================
! MODULE VARIABLES
!=================================================================
! For ND01 -- Rn, Pb, Be emissions
REAL*4, ALLOCATABLE :: AD01(:,:,:,:)
! For ND02 -- Rn, Pb, Be decay
REAL*4, ALLOCATABLE :: AD02(:,:,:,:)
!--------------------------------------------
!! For ND03 -- Kr85 prod/loss
!REAL*4, ALLOCATABLE :: AD03(:,:,:,:)
!--------------------------------------------
! For ND05 -- Sulfate prod/loss diagnostics
REAL*4, ALLOCATABLE :: AD05(:,:,:,:)
! For ND06 -- Dust aerosol emission
REAL*4, ALLOCATABLE :: AD06(:,:,:)
! For ND07 -- Carbon aerosol emission
REAL*4, ALLOCATABLE :: AD07(:,:,:)
REAL*4, ALLOCATABLE :: AD07_BC(:,:,:)
REAL*4, ALLOCATABLE :: AD07_OC(:,:,:)
REAL*4, ALLOCATABLE :: AD07_HC(:,:,:,:)
REAL*4, ALLOCATABLE :: AD07_SOAGM(:,:,:,:)
! For ND08 -- seasalt emission
REAL*4, ALLOCATABLE :: AD08(:,:,:)
! For ND09 -- HCN / CH3CN simulation
REAL*4, ALLOCATABLE :: AD09(:,:,:,:)
REAL*4, ALLOCATABLE :: AD09_em(:,:,:)
! For ND10 -- H2/HD prod, loss, & emiss diagnostics
REAL*4, ALLOCATABLE :: AD10(:,:,:,:)
REAL*4, ALLOCATABLE :: AD10em(:,:,:)
! For ND12 -- boundary layer multiplication factor
REAL*4, ALLOCATABLE :: AD11(:,:,:)
! For ND12 -- boundary layer multiplication factor
REAL*4, ALLOCATABLE :: AD12(:,:,:)
! For ND13 -- Sulfur emissions
REAL*4, ALLOCATABLE :: AD13_DMS(:,:)
REAL*4, ALLOCATABLE :: AD13_SO2_ac(:,:,:)
REAL*4, ALLOCATABLE :: AD13_SO2_an(:,:,:)
REAL*4, ALLOCATABLE :: AD13_SO2_bb(:,:)
REAL*4, ALLOCATABLE :: AD13_SO2_bf(:,:)
REAL*4, ALLOCATABLE :: AD13_SO2_nv(:,:,:)
REAL*4, ALLOCATABLE :: AD13_SO2_ev(:,:,:)
REAL*4, ALLOCATABLE :: AD13_SO2_sh(:,:)
REAL*4, ALLOCATABLE :: AD13_SO4_an(:,:,:)
REAL*4, ALLOCATABLE :: AD13_SO4_bf(:,:)
REAL*4, ALLOCATABLE :: AD13_NH3_an(:,:)
REAL*4, ALLOCATABLE :: AD13_NH3_na(:,:)
REAL*4, ALLOCATABLE :: AD13_NH3_bb(:,:)
REAL*4, ALLOCATABLE :: AD13_NH3_bf(:,:)
! For ND14 -- wet convection mass flux diagnostic
REAL*8, ALLOCATABLE :: CONVFLUP(:,:,:,:)
! For ND15 -- BL mixing mass flux diagnostic
REAL*8, ALLOCATABLE :: TURBFLUP(:,:,:,:)
! For ND16 -- Fraction of grid box that is precipitating
REAL*4, ALLOCATABLE :: AD16(:,:,:,:)
INTEGER, ALLOCATABLE :: CT16(:,:,:,:)
! For ND17 -- Fraction of tracer lost to rainout
REAL*4, ALLOCATABLE :: AD17(:,:,:,:,:)
INTEGER, ALLOCATABLE :: CT17(:,:,:,:)
! For ND18 -- Fraction of tracer lost to washout
REAL*4, ALLOCATABLE :: AD18(:,:,:,:,:)
INTEGER, ALLOCATABLE :: CT18(:,:,:,:)
! For ND21 -- Optical Depth diagnostic
REAL*4, ALLOCATABLE :: AD21(:,:,:,:)
REAL*4, ALLOCATABLE :: AD21_cr(:,:,:)
! For ND22 -- J-value diagnostic
REAL*4, ALLOCATABLE :: AD22(:,:,:,:)
INTEGER, ALLOCATABLE :: LTJV(:,:)
INTEGER, ALLOCATABLE :: CTJV(:,:)
! For ND23 -- CH3CCl3 lifetime diagnostic
REAL*8, ALLOCATABLE :: DIAGCHLORO(:,:,:,:)
! For ND24 -- E/W transport mass flux diagnostic
REAL*8, ALLOCATABLE :: MASSFLEW(:,:,:,:)
! For ND25 -- N/S transport mass flux diagnostic
REAL*8, ALLOCATABLE :: MASSFLNS(:,:,:,:)
! For ND26 -- UP/DOWN transport mass flux diagnostic
REAL*8, ALLOCATABLE :: MASSFLUP(:,:,:,:)
! For ND28 -- Biomass burning diagnostic
REAL*4, ALLOCATABLE :: AD28(:,:,:)
! For ND29 -- CO source diagnostic
REAL*4, ALLOCATABLE :: AD29(:,:,:)
! For ND30 -- land / water / ice flags
REAL*4, ALLOCATABLE :: AD30(:,:)
! For ND31 -- surface pressures
REAL*4, ALLOCATABLE :: AD31(:,:,:)
! For ND32 -- NOx sources
REAL*4, ALLOCATABLE :: AD32_ac(:,:,:)
REAL*4, ALLOCATABLE :: AD32_an(:,:,:)
REAL*4, ALLOCATABLE :: AD32_bb(:,:)
REAL*4, ALLOCATABLE :: AD32_bf(:,:)
REAL*4, ALLOCATABLE :: AD32_fe(:,:)
REAL*4, ALLOCATABLE :: AD32_li(:,:,:)
REAL*4, ALLOCATABLE :: AD32_so(:,:)
REAL*4, ALLOCATABLE :: AD32_ub(:,:)
REAL*4, ALLOCATABLE :: AD32_SHIP(:,:)
INTEGER, ALLOCATABLE :: AD32_SHIP_COUNT
! For ND33 -- tropopsheric sum of tracer
REAL*4, ALLOCATABLE :: AD33(:,:,:)
! For ND34 -- biofuel emissions
REAL*4, ALLOCATABLE :: AD34(:,:,:)
! For ND35 -- 500 mb tracer
REAL*4, ALLOCATABLE :: AD35(:,:,:)
! For ND36 -- Anthropogenic source diagnostic
REAL*4, ALLOCATABLE :: AD36(:,:,:)
REAL*4, ALLOCATABLE :: AD36_SHIP(:,:,:)
INTEGER, ALLOCATABLE :: AD36_SHIP_COUNT
REAL*4, ALLOCATABLE :: EMISS_ANTHR(:,:,:)
! For ND37 -- Fraction of tracer scavenged in cloud updrafts
REAL*4, ALLOCATABLE :: AD37(:,:,:,:)
! For ND38 -- Rainout in moist convection diagnostic
REAL*4, ALLOCATABLE :: AD38(:,:,:,:)
! For ND39 -- Washout in aerosol wet deposition diagnostic
REAL*4, ALLOCATABLE :: AD39(:,:,:,:)
! For ND43 -- OH, NO, NO2, HO2 chemical diagnostics
REAL*4, ALLOCATABLE :: AD43(:,:,:,:)
INTEGER, ALLOCATABLE :: LTNO(:,:)
INTEGER, ALLOCATABLE :: CTNO(:,:,:)
INTEGER, ALLOCATABLE :: LTOH(:,:)
INTEGER, ALLOCATABLE :: CTOH(:,:,:)
INTEGER, ALLOCATABLE :: LTNO2(:,:)
INTEGER, ALLOCATABLE :: CTNO2(:,:,:)
INTEGER, ALLOCATABLE :: LTHO2(:,:)
INTEGER, ALLOCATABLE :: CTHO2(:,:,:)
INTEGER, ALLOCATABLE :: LTNO3(:,:)
INTEGER, ALLOCATABLE :: CTNO3(:,:,:)
! For ND44 -- Dry deposition fluxes & velocities
REAL*4, ALLOCATABLE :: AD44(:,:,:,:)
! For ND45 -- Tracer concentration diagnostic
REAL*4, ALLOCATABLE :: AD45(:,:,:,:)
INTEGER, ALLOCATABLE :: LTOTH(:,:)
INTEGER, ALLOCATABLE :: CTOTH(:,:)
INTEGER, ALLOCATABLE :: CTO3(:,:,:)
! For ND46 -- Tracer concentration diagnostic
REAL*4, ALLOCATABLE :: AD46(:,:,:)
! For ND47 -- 24-h tracer concentration diagnostic
REAL*4, ALLOCATABLE :: AD47(:,:,:,:)
! For ND47(O3) / ND65 -- 24-h tracer diagnostic
INTEGER, ALLOCATABLE :: CTO3_24h(:,:,:)
! Dynamically allocatable array -- local only to DIAG50.F
REAL*8, ALLOCATABLE :: STT_TEMPO2(:,:,:,:)
! For ND52 -- gamma HO2 diagnostic
REAL*4, ALLOCATABLE :: AD52(:,:,:)
! For ND54 -- tropopause diagnostics
REAL*4, ALLOCATABLE :: AD54(:,:,:)
! For ND55 -- tropopause diagnostics
REAL*4, ALLOCATABLE :: AD55(:,:,:)
! -- for methane simulation diagnostics
! (kjw, dkh, 02/12/12, adj32_023)
REAL*4, ALLOCATABLE :: AD19(:,:,:)
REAL*4, ALLOCATABLE :: AD58(:,:,:)
REAL*4, ALLOCATABLE :: AD60(:,:)
! For ND63 -- fraction of NOx remaining and Integrated OPE
REAL*4, ALLOCATABLE :: AD63(:,:,:)
INTEGER, ALLOCATABLE :: AD63_COUNT
! For ND66 -- I-6 fields diagnostic
REAL*4, ALLOCATABLE :: AD66(:,:,:,:)
! For ND67 -- DAO surface fields diagnostic
REAL*4, ALLOCATABLE :: AD67(:,:,:)
! For ND68 -- BXHEIGHT, AD, AVGW diagnostic
REAL*4, ALLOCATABLE :: AD68(:,:,:,:)
! For ND69 -- DXYP diagnostic
REAL*4, ALLOCATABLE :: AD69(:,:,:)
!=================================================================
! MODULE ROUTINES -- follow below the "CONTAINS" statement
!=================================================================
CONTAINS
!------------------------------------------------------------------------------
SUBROUTINE CLEANUP_DIAG
!
!******************************************************************************
! Subroutine CLEANUP_DIAG deallocates all module arrays.
! (bmy, 12/13/02, 9/18/07)
!
! NOTES:
! (1 ) Now also deallocate AD13_NH3_an, AD13_NH3_bb, AD13_NH3_bf arrays
! for the ND13 diagnostic. (bmy, 12/13/02)
! (2 ) Now also deallocate AD13_NH3_na array for ND13 (rjp, bmy, 3/23/03)
! (3 ) Removed P24H and L24H, these are now defined within "tagged_ox_mod.f".
! Now also deallocate AD03 array for Kr85 prod/loss (jsw, bmy, 8/20/03)
! (4 ) Now also deallocate AD06 and AD07* arrays (rjp, bdf, bmy, 4/5/04)
! (5 ) Now also deallocate AD08 array (rjp, bec, bmy, 4/20/04)
! (6 ) Now also deallocaes AD13_SO2_sh array (bec, bmy, 5/20/04)
! (7 ) Now also deallocates AD07_HC array (rjp, bmy, 7/13/04)
! (8 ) Now also deallocate AD13_SO4_bf array (bmy, 11/17/04)
! (9 ) Now deallocate extra arrays for ND03 diagnostics (eck, bmy, 12/7/04)
! (10) Now deallocates AD21_cr array. Remove reference to arrays for ND03
! and ND48 diagnostics, they're obsolete. (cas, sas, bmy, 1/21/05)
! (11) Removed AD41 and AFTTOT arrays; they're obsolete (bmy, 2/17/05)
! (12) Now also deallocate AD09 and AD09_em (bmy, 6/27/05)
! (13) Now deallocate AD30 (bmy, 8/18/05)
! (14) Now deallocate CTO3, AD10, AD10em arrays (phs, 9/18/07)
!******************************************************************************
!
!=================================================================
! CLEANUP_DIAG begins here!
!=================================================================
IF ( ALLOCATED( AD01 ) ) DEALLOCATE( AD01 )
IF ( ALLOCATED( AD02 ) ) DEALLOCATE( AD02 )
IF ( ALLOCATED( AD06 ) ) DEALLOCATE( AD06 )
IF ( ALLOCATED( AD07 ) ) DEALLOCATE( AD07 )
IF ( ALLOCATED( AD07_BC ) ) DEALLOCATE( AD07_BC )
IF ( ALLOCATED( AD07_OC ) ) DEALLOCATE( AD07_OC )
IF ( ALLOCATED( AD07_HC ) ) DEALLOCATE( AD07_HC )
IF ( ALLOCATED( AD07_SOAGM ) ) DEALLOCATE( AD07_SOAGM )
IF ( ALLOCATED( AD08 ) ) DEALLOCATE( AD08 )
IF ( ALLOCATED( AD09 ) ) DEALLOCATE( AD09 )
IF ( ALLOCATED( AD09_em ) ) DEALLOCATE( AD09_em )
IF ( ALLOCATED( AD10 ) ) DEALLOCATE( AD10 )
IF ( ALLOCATED( AD10em ) ) DEALLOCATE( AD10em )
IF ( ALLOCATED( AD11 ) ) DEALLOCATE( AD11 )
IF ( ALLOCATED( AD12 ) ) DEALLOCATE( AD12 )
IF ( ALLOCATED( AD13_DMS ) ) DEALLOCATE( AD13_DMS )
IF ( ALLOCATED( AD13_SO2_ac ) ) DEALLOCATE( AD13_SO2_ac )
IF ( ALLOCATED( AD13_SO2_an ) ) DEALLOCATE( AD13_SO2_an )
IF ( ALLOCATED( AD13_SO2_bb ) ) DEALLOCATE( AD13_SO2_bb )
IF ( ALLOCATED( AD13_SO2_bf ) ) DEALLOCATE( AD13_SO2_bf )
IF ( ALLOCATED( AD13_SO2_nv ) ) DEALLOCATE( AD13_SO2_nv )
IF ( ALLOCATED( AD13_SO2_ev ) ) DEALLOCATE( AD13_SO2_ev )
IF ( ALLOCATED( AD13_SO2_sh ) ) DEALLOCATE( AD13_SO2_sh )
IF ( ALLOCATED( AD13_SO4_an ) ) DEALLOCATE( AD13_SO4_an )
IF ( ALLOCATED( AD13_SO4_bf ) ) DEALLOCATE( AD13_SO4_bf )
IF ( ALLOCATED( AD13_NH3_an ) ) DEALLOCATE( AD13_NH3_an )
IF ( ALLOCATED( AD13_NH3_na ) ) DEALLOCATE( AD13_NH3_na )
IF ( ALLOCATED( AD13_NH3_bb ) ) DEALLOCATE( AD13_NH3_bb )
IF ( ALLOCATED( AD13_NH3_bf ) ) DEALLOCATE( AD13_NH3_bf )
IF ( ALLOCATED( AD16 ) ) DEALLOCATE( AD16 )
IF ( ALLOCATED( AD17 ) ) DEALLOCATE( AD17 )
IF ( ALLOCATED( AD18 ) ) DEALLOCATE( AD18 )
IF ( ALLOCATED( AD21 ) ) DEALLOCATE( AD21 )
IF ( ALLOCATED( AD21_cr ) ) DEALLOCATE( AD21_cr )
IF ( ALLOCATED( AD22 ) ) DEALLOCATE( AD22 )
IF ( ALLOCATED( AD28 ) ) DEALLOCATE( AD28 )
IF ( ALLOCATED( AD29 ) ) DEALLOCATE( AD29 )
IF ( ALLOCATED( AD30 ) ) DEALLOCATE( AD30 )
IF ( ALLOCATED( AD31 ) ) DEALLOCATE( AD31 )
IF ( ALLOCATED( AD32_ac ) ) DEALLOCATE( AD32_ac )
IF ( ALLOCATED( AD32_an ) ) DEALLOCATE( AD32_an )
IF ( ALLOCATED( AD32_bb ) ) DEALLOCATE( AD32_bb )
IF ( ALLOCATED( AD32_bf ) ) DEALLOCATE( AD32_bf )
IF ( ALLOCATED( AD32_fe ) ) DEALLOCATE( AD32_fe )
IF ( ALLOCATED( AD32_li ) ) DEALLOCATE( AD32_li )
IF ( ALLOCATED( AD32_so ) ) DEALLOCATE( AD32_so )
IF ( ALLOCATED( AD32_ub ) ) DEALLOCATE( AD32_ub )
IF ( ALLOCATED( AD32_ship ) ) DEALLOCATE( AD32_ship )
IF ( ALLOCATED( AD32_ship_count) ) DEALLOCATE( AD32_ship_count)
IF ( ALLOCATED( AD33 ) ) DEALLOCATE( AD33 )
IF ( ALLOCATED( AD34 ) ) DEALLOCATE( AD34 )
IF ( ALLOCATED( AD35 ) ) DEALLOCATE( AD35 )
IF ( ALLOCATED( AD36 ) ) DEALLOCATE( AD36 )
IF ( ALLOCATED( AD36_SHIP ) ) DEALLOCATE( AD36_SHIP )
IF ( ALLOCATED( AD36_SHIP_COUNT ) ) DEALLOCATE( AD36_SHIP_COUNT )
IF ( ALLOCATED( AD37 ) ) DEALLOCATE( AD37 )
IF ( ALLOCATED( AD38 ) ) DEALLOCATE( AD38 )
IF ( ALLOCATED( AD39 ) ) DEALLOCATE( AD39 )
IF ( ALLOCATED( AD43 ) ) DEALLOCATE( AD43 )
IF ( ALLOCATED( AD44 ) ) DEALLOCATE( AD44 )
IF ( ALLOCATED( AD45 ) ) DEALLOCATE( AD45 )
IF ( ALLOCATED( AD46 ) ) DEALLOCATE( AD46 )
IF ( ALLOCATED( AD47 ) ) DEALLOCATE( AD47 )
IF ( ALLOCATED( AD52 ) ) DEALLOCATE( AD52 )
IF ( ALLOCATED( AD54 ) ) DEALLOCATE( AD54 )
IF ( ALLOCATED( AD55 ) ) DEALLOCATE( AD55 )
IF ( ALLOCATED( AD19 ) ) DEALLOCATE( AD19 )
IF ( ALLOCATED( AD58 ) ) DEALLOCATE( AD58 )
IF ( ALLOCATED( AD60 ) ) DEALLOCATE( AD60 )
IF ( ALLOCATED( AD63 ) ) DEALLOCATE( AD63 )
IF ( ALLOCATED( AD63_COUNT ) ) DEALLOCATE( AD63_COUNT )
IF ( ALLOCATED( AD66 ) ) DEALLOCATE( AD66 )
IF ( ALLOCATED( AD68 ) ) DEALLOCATE( AD68 )
IF ( ALLOCATED( AD69 ) ) DEALLOCATE( AD69 )
IF ( ALLOCATED( CONVFLUP ) ) DEALLOCATE( CONVFLUP )
IF ( ALLOCATED( CT16 ) ) DEALLOCATE( CT16 )
IF ( ALLOCATED( CT17 ) ) DEALLOCATE( CT17 )
IF ( ALLOCATED( CT18 ) ) DEALLOCATE( CT18 )
IF ( ALLOCATED( CTJV ) ) DEALLOCATE( CTJV )
IF ( ALLOCATED( CTNO ) ) DEALLOCATE( CTNO )
IF ( ALLOCATED( CTO3 ) ) DEALLOCATE( CTO3 )
IF ( ALLOCATED( CTO3_24h ) ) DEALLOCATE( CTO3_24h )
IF ( ALLOCATED( CTOH ) ) DEALLOCATE( CTOH )
IF ( ALLOCATED( CTNO2 ) ) DEALLOCATE( CTNO2 )
IF ( ALLOCATED( CTNO3 ) ) DEALLOCATE( CTNO3 )
IF ( ALLOCATED( EMISS_ANTHR ) ) DEALLOCATE( EMISS_ANTHR )
IF ( ALLOCATED( CTHO2 ) ) DEALLOCATE( CTHO2 )
IF ( ALLOCATED( CTOTH ) ) DEALLOCATE( CTOTH )
IF ( ALLOCATED( DIAGCHLORO ) ) DEALLOCATE( DIAGCHLORO )
IF ( ALLOCATED( LTJV ) ) DEALLOCATE( LTJV )
IF ( ALLOCATED( LTNO ) ) DEALLOCATE( LTNO )
IF ( ALLOCATED( LTOH ) ) DEALLOCATE( LTOH )
IF ( ALLOCATED( LTNO2 ) ) DEALLOCATE( LTNO2 )
IF ( ALLOCATED( LTNO3 ) ) DEALLOCATE( LTNO3 )
IF ( ALLOCATED( LTHO2 ) ) DEALLOCATE( LTHO2 )
IF ( ALLOCATED( LTOTH ) ) DEALLOCATE( LTOTH )
IF ( ALLOCATED( MASSFLEW ) ) DEALLOCATE( MASSFLEW )
IF ( ALLOCATED( MASSFLNS ) ) DEALLOCATE( MASSFLNS )
IF ( ALLOCATED( MASSFLUP ) ) DEALLOCATE( MASSFLUP )
IF ( ALLOCATED( TURBFLUP ) ) DEALLOCATE( TURBFLUP )
IF ( ALLOCATED( STT_TEMPO2 ) ) DEALLOCATE( STT_TEMPO2 )
! Return to calling program
END SUBROUTINE CLEANUP_DIAG
!------------------------------------------------------------------------------
END MODULE DIAG_MOD