! $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