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

247 lines
11 KiB
Fortran

! $Id: cleanup.f,v 1.2 2009/07/14 23:51:27 daven Exp $
SUBROUTINE CLEANUP
!
!******************************************************************************
! Subroutine CLEANUP deallocates the memory assigned to dynamic allocatable
! arrays just before exiting the GEOS-CHEM model. (bmy, 11/29/99, 10/2/07)
!
! NOTES:
! (1 ) CLEANUP is written in Fixed-Format F90.
! (2 ) Now calls CLEANUP_WETSCAV, which deallocates arrays from
! "wetscav_mod.f". (bmy, 3/9/00)
! (3 ) Add call to CLEANUP_SULFATE, which deallocates arrays from
! "sulfate_mod.f". Also now deallocate ND32 arrays. (bmy, 6/6/00)
! (4 ) Add call to CLEANUP_DAO, which deallocates arrays from "dao_mod.f".
! (bmy, 6/26/00)
! (5 ) Add call to CLEANUP_TAGGED_CO and CLEANUP_COMODE, which deallocates
! arrays from and "comode_mod.f". (bmy, 7/19/00)
! (6 ) Add call to CLEANUP_GLOBAL_OH and CLEANUP_COMODE, which deallocates
! arrays from "global_oh_mod.f". (bmy, 7/28/00)
! (7 ) Add calls to CLEANUP_BIOMASS and CLEANUP_BIOFUEL, which deallocates
! arrays from "biomass_mod.f" and "biofuel_mod.f". Also deallocate
! the AD32_bf array for the biofuel NOx diagnostic. (bmy, 9/12/00)
! (8 ) Add call to CLEANUP_DIAG51, to deallocate module arrays from
! "diag51_mod.f" (bmy, 11/29/00)
! (9 ) Removed obsolete code from 11/29/00 (bmy, 12/21/00)
! (10) Add call to CLEANUP_CH4, to deallocate module arrays from
! "global_ch4_mod.f" (bmy, 1/16/01)
! (11) Now deallocate the AD34 array. Also updated comments and
! made some cosmetic changes. (bmy, 3/15/01)
! (12) Now deallocate the AD12 array (bdf, bmy, 6/15/01)
! (13) Add call to CLEANUP_ACETONE, to deallocate module arrays from
! "acetone_mod.f" Also deallocate AD11 array. Also deallocate
! variables from dao_mod.f last, to try to avoid bus error on
! SGI (bmy, 8/3/01)
! (14) Added call to CLEANUP_UVALBEDO from "uvalbedo_mod.f". Also removed
! obsolete code from 9/01. Also only include references to CLEANUP_*
! subroutines in other modules for clarity. (bmy, 1/15/02)
! (15) Added call to CLEANUP_C2H6 from "c2h6_mod.f" (bmy, 1/25/02)
! (16) Added call to CLEANUP_AIRCRAFT_NOX from "aircraft_nox_mod.f"
! (bmy, 2/14/02)
! (17) Now deallocate CTNO2, CTHO2, LTNO2, LTHO2 arrays (rvm, bmy, 2/27/02)
! (18) Now reference CLEANUP_PLANEFLIGHT from "planeflight_mod.f".
! Now also deallocate AD01 and AD02 arrays. (mje, bmy, 8/7/02)
! (19) Now reference cleanup routines from "global_nox_mod.f",
! "global_hno3_mod.f", "global_no3_mod.f", "drydep_mod.f", and
! "rpmares_mod.f". (bmy, 12/16/02)
! (20) Now reference cleanup routine from "transport_mod.f" (bmy, 2/10/03)
! (21) Now reference cleanup routine from "pjc_pfix_mod.f" and
! "tpcore_fvdas_mod.f90". (bmy, 5/9/03)
! (22) Now reference cleanup routine from "toms_mod.f" (bmy, 7/14/03)
! (23) Now reference cleanup routine from "carbon_mod.f", "dust_mod.f", and
! "dust_dead_mod.f". (bmy, 7/14/03)
! (23) Now references cleanup routine from "lightning__nox_mod.f"
! (bmy, 4/14/04)
! (24) Now references cleanup routine from "seasalt_mod.f" (bmy, 4/26/04)
! (25) Now references cleanup routines from new modules (bmy, 7/20/04)
! (26) Now calls cleanup routine from "epa_nei_mod.f" (bmy, 11/5/04)
! (27) Now call CLEANUP_MERCURY from "mercury_mod.f" (eck, bmy, 12/7/04)
! (28) Now call CLEANUP_OCEAN_MERCURY from "ocean_mercury_mod.f". Also
! reordered the calling sequence. (sas, bmy, 1/21/05)
! (29) Now call CLEANUP_PBL_MIX from "pbl_mix_mod.f". Now call CLEANUP_DIAG41
! from "diag41_mod.f". (bmy, 2/17/05)
! (30) Now calls CLEANUP_HCN_CH3CN from "hcn_ch3cn_mod.f (bmy, 6/23/05)
! (31) Now calls CLEANUP_DIAG04, CLEANUP_CO2, and CLEANUP_TROPOPAUSE
! (bmy, 8/15/05)
! (32) Now calls CLEANUP_LAI from "lai_mod.f", CLEANUP_MEGAN from
! "megan_mod.f" and CLEANUP_REGRID_1x1 from "regrid_1x1_mod.f"
! (tmf, bdf, bmy, 10/24/05)
! (33) Now calls CLEANUP_EMEP from "emep_mod.f" (bdf, bmy, 11/1/05)
! (34) Now calls CLEANUP_GC_BIOMASS and CLEANUP_GFED2_BIOMASS (bmy, 4/5/06)
! (35) Now calls CLEANUP_DIAG56 from "diag56_mod.f" and
! CLEANUP_LIGHTNING_NOX_NL from "lightning_nox_nl_mod.f"
! (ltm, bmy, 5/5/06)
! (36) Now references CLEANUP_BRAVO from "bravo_mod.f" and CLEANUP_EDGAR
! from "edgar_mod.f" (bmy, 7/6/06)
! (37) Now calls CLEANUP_H2_HD from "h2_hd_mod.f" and CLEANUP_GLOBAL_O1D
! from "global_o1d_mod.f". Remove call to CLEANUP_LIGHTNING_NOx_NL
! from "lightning_nox_nl_mod.f (hup, phs, bmy, 10/2/07)
! (38) Now calls GEOS5_EXIT_TPCORE_WINDOW to finalize the TPCORE for
! GEOS-5 nested window simulations (yxw, dan, bmy, 11/6/08)
! (39) Now references CLEANUP_CAC_ANTHRO (amv, phs, 3/10/08)
! (40) Now references CLEANUP_ARCTAS_SHIP (phs, 3/10/08)
! (41) Now references CLEANUP_VISTAS_ANTHRO (phs, 3/10/08)
! 07 Sep 2011 - P. Kasibhatla - Add modifications for GFED3
!******************************************************************************
!
! References to F90 modules
USE ACETONE_MOD, ONLY : CLEANUP_ACETONE
USE AEROSOL_MOD, ONLY : CLEANUP_AEROSOL
USE AIRCRAFT_NOX_MOD, ONLY : CLEANUP_AIRCRAFT_NOX
USE ARCTAS_SHIP_EMISS_MOD, ONLY : CLEANUP_ARCTAS_SHIP
USE BIOMASS_MOD, ONLY : CLEANUP_BIOMASS
USE BIOFUEL_MOD, ONLY : CLEANUP_BIOFUEL
USE BRAVO_MOD, ONLY : CLEANUP_BRAVO
USE C2H6_MOD, ONLY : CLEANUP_C2H6
USE CAC_ANTHRO_MOD, ONLY : CLEANUP_CAC_ANTHRO
USE CARBON_MOD, ONLY : CLEANUP_CARBON
USE CO2_MOD, ONLY : CLEANUP_CO2
USE COMODE_MOD, ONLY : CLEANUP_COMODE
USE DAO_MOD, ONLY : CLEANUP_DAO
USE DIAG_MOD, ONLY : CLEANUP_DIAG
USE DIAG03_MOD, ONLY : CLEANUP_DIAG03
USE DIAG04_MOD, ONLY : CLEANUP_DIAG04
USE DIAG41_MOD, ONLY : CLEANUP_DIAG41
USE DIAG50_MOD, ONLY : CLEANUP_DIAG50
USE DIAG51_MOD, ONLY : CLEANUP_DIAG51
USE DIAG51b_MOD, ONLY : CLEANUP_DIAG51b
USE DIAG51c_MOD, ONLY : CLEANUP_DIAG51c
USE DIAG51d_MOD, ONLY : CLEANUP_DIAG51d
USE DIAG_OH_MOD, ONLY : CLEANUP_DIAG_OH
USE DIAG_PL_MOD, ONLY : CLEANUP_DIAG_PL
USE DRYDEP_MOD, ONLY : CLEANUP_DRYDEP
USE DUST_MOD, ONLY : CLEANUP_DUST
USE DUST_DEAD_MOD, ONLY : CLEANUP_DUST_DEAD
USE EDGAR_MOD, ONLY : CLEANUP_EDGAR
USE EMEP_MOD, ONLY : CLEANUP_EMEP
USE EPA_NEI_MOD, ONLY : CLEANUP_EPA_NEI
USE ERROR_MOD, ONLY : DEBUG_MSG
USE GC_BIOMASS_MOD, ONLY : CLEANUP_GC_BIOMASS
USE GFED2_BIOMASS_MOD, ONLY : CLEANUP_GFED2_BIOMASS
USE GFED3_BIOMASS_MOD, ONLY : CLEANUP_GFED3_BIOMASS
USE GLOBAL_CH4_MOD, ONLY : CLEANUP_GLOBAL_CH4
USE GLOBAL_HNO3_MOD, ONLY : CLEANUP_GLOBAL_HNO3
USE GLOBAL_NO3_MOD, ONLY : CLEANUP_GLOBAL_NO3
USE GLOBAL_NOX_MOD, ONLY : CLEANUP_GLOBAL_NOX
USE GLOBAL_O1D_MOD, ONLY : CLEANUP_GLOBAL_O1D
USE GLOBAL_OH_MOD, ONLY : CLEANUP_GLOBAL_OH
USE H2_HD_MOD, ONLY : CLEANUP_H2_HD
USE HCN_CH3CN_MOD, ONLY : CLEANUP_HCN_CH3CN
USE LAI_MOD, ONLY : CLEANUP_LAI
USE LIGHTNING_NOX_MOD, ONLY : CLEANUP_LIGHTNING_NOX
USE MEGAN_MOD, ONLY : CLEANUP_MEGAN
USE MERCURY_MOD, ONLY : CLEANUP_MERCURY
USE OCEAN_MERCURY_MOD, ONLY : CLEANUP_OCEAN_MERCURY
USE PBL_MIX_MOD, ONLY : CLEANUP_PBL_MIX
USE PJC_PFIX_MOD, ONLY : CLEANUP_PJC_PFIX
USE PLANEFLIGHT_MOD, ONLY : CLEANUP_PLANEFLIGHT
USE PRESSURE_MOD, ONLY : CLEANUP_PRESSURE
USE REGRID_1x1_MOD, ONLY : CLEANUP_REGRID_1x1
USE SEASALT_MOD, ONLY : CLEANUP_SEASALT
USE SULFATE_MOD, ONLY : CLEANUP_SULFATE
USE TAGGED_CO_MOD, ONLY : CLEANUP_TAGGED_CO
USE TOMS_MOD, ONLY : CLEANUP_TOMS
USE TPCORE_FVDAS_MOD, ONLY : EXIT_TPCORE
USE TPCORE_GEOS5_WINDOW_MOD, ONLY : EXIT_GEOS5_TPCORE_WINDOW
USE TPCORE_GEOSFP_WINDOW_MOD,ONLY : EXIT_GEOSFP_TPCORE_WINDOW ! (lzh,02/01/2015)
USE TRACER_MOD, ONLY : CLEANUP_TRACER
USE TRANSPORT_MOD, ONLY : CLEANUP_TRANSPORT
USE TROPOPAUSE_MOD, ONLY : CLEANUP_TROPOPAUSE
USE UVALBEDO_MOD, ONLY : CLEANUP_UVALBEDO
USE VISTAS_ANTHRO_MOD, ONLY : CLEANUP_VISTAS_ANTHRO
USE WETSCAV_MOD, ONLY : CLEANUP_WETSCAV
USE ICOADS_SHIP_MOD, ONLY : CLEANUP_ICOADS_SHIP !(cklee,7/09/09)
USE RETRO_MOD, ONLY : CLEANUP_RETRO
USE RCP_MOD, ONLY : CLEANUP_RCP
IMPLICIT NONE
# include "define.h"
!=================================================================
! CLEANUP begins here!
!=================================================================
! Echo info
WRITE( 6, 100 )
100 FORMAT( ' - CLEANUP: deallocating arrays now...' )
! Call cleanup routines from individual F90 modules
CALL CLEANUP_ACETONE
CALL CLEANUP_AEROSOL
CALL CLEANUP_AIRCRAFT_NOX
CALL CLEANUP_ARCTAS_SHIP
CALL CLEANUP_BIOMASS
CALL CLEANUP_BIOFUEL
CALL CLEANUP_BRAVO
CALL CLEANUP_C2H6
CALL CLEANUP_CAC_ANTHRO
CALL CLEANUP_CARBON
CALL CLEANUP_CO2
CALL CLEANUP_COMODE
CALL CLEANUP_DAO
CALL CLEANUP_DIAG
CALL CLEANUP_DIAG03
CALL CLEANUP_DIAG04
CALL CLEANUP_DIAG41
CALL CLEANUP_DIAG50
CALL CLEANUP_DIAG51
CALL CLEANUP_DIAG51b
CALL CLEANUP_DIAG51c
CALL CLEANUP_DIAG51d
CALL CLEANUP_DIAG_OH
CALL CLEANUP_DIAG_PL
CALL CLEANUP_DRYDEP
CALL CLEANUP_DUST_DEAD
CALL CLEANUP_DUST
CALL CLEANUP_EDGAR
CALL CLEANUP_EMEP
CALL CLEANUP_EPA_NEI
CALL CLEANUP_GC_BIOMASS
CALL CLEANUP_GFED2_BIOMASS
CALL CLEANUP_GFED3_BIOMASS
CALL CLEANUP_GLOBAL_CH4
CALL CLEANUP_GLOBAL_HNO3
CALL CLEANUP_GLOBAL_NO3
CALL CLEANUP_GLOBAL_NOX
CALL CLEANUP_GLOBAL_NO3
CALL CLEANUP_GLOBAL_O1D
CALL CLEANUP_GLOBAL_OH
CALL CLEANUP_H2_HD
CALL CLEANUP_HCN_CH3CN
CALL CLEANUP_LAI
CALL CLEANUP_LIGHTNING_NOX
CALL CLEANUP_MEGAN
CALL CLEANUP_MERCURY
CALL CLEANUP_OCEAN_MERCURY
CALL CLEANUP_PBL_MIX
CALL CLEANUP_PJC_PFIX
CALL CLEANUP_PLANEFLIGHT
CALL CLEANUP_PRESSURE
CALL CLEANUP_REGRID_1x1
CALL CLEANUP_SEASALT
CALL CLEANUP_SULFATE
CALL CLEANUP_TAGGED_CO
CALL CLEANUP_TRANSPORT
CALL CLEANUP_TOMS
CALL CLEANUP_TRACER
CALL CLEANUP_TROPOPAUSE
CALL CLEANUP_UVALBEDO
CALL CLEANUP_VISTAS_ANTHRO
CALL CLEANUP_WETSCAV
CALL CLEANUP_ICOADS_SHIP !(cklee,7/09/09)
CALL CLEANUP_RETRO
CALL CLEANUP_RCP
#if defined( GEOS_5 ) && defined( GRID05x0666 )
CALL EXIT_GEOS5_TPCORE_WINDOW
#elif defined( GEOS_FP ) && defined( GRID025x03125 )
CALL EXIT_GEOSFP_TPCORE_WINDOW ! (lzh, 02/01/2015)
#else
CALL EXIT_TPCORE
#endif
! Return to calling program
END SUBROUTINE CLEANUP