GEOS-Chem Near-Real-Time Simulations
NOTE: The GEOS-Chem NRT simulations were active during the ARCTAS mission. They have since been turned off.
About the GEOS-Chem Near-Real-Time Simulations
The Atmospheric Chemistry Modeling Group at Harvard University is producing daily detailed ozone–aerosol–CO simulations with the GEOS–Chem model in support of ARCTAS. These simulations are being generated at Harvard University using the GEOS–5 assimilated data product, which are regridded from 1/2° latitude by 2/3° longitude and 72 vertical levels to a 2° latitude by 2.5° longitude horizontal resolution and 47 vertical levels. The simulations will lag the observations by only 2-3 days, and hence have been dubbed "near-real-time", or NRT for short.
- GEOS-Chem Version : GEOS-Chem v8-01-01 + minor modifications for ARCTAS mission, including:
- Met Fields: NASA GMAO GEOS-5 (version 5.1.0)
- NOTE: Met fields will be upgraded to GEOS-5.2.0 in August 2008.
- Horizontal Grid : 2° lat x 2.5° lon
- Vertical Grid : Reduced 47 layer grid.
- NOTE: GEOS-5 original vertical vertical grid has 72 levels. Stratospheric levels above L=32 (176.93 hPa) are lumped in groups of 2 and 4 for computational expediency.
- NRT Start Date: Jan 1, 2008
NRT simulation output data
Output from the NRT simulations are posted to this website and consists of 3 different kinds of quantities:
- 3-D timeseries data: CO, Ozone, NOx, PAN, HNO3, ACETONE, aerosols (SO4-NO3-NH4; black carbon, organic carbon, dust, sea salt)
- 2-D timeseries data: Tropospheric columns of O3, NO2, HCHO; Total CO columns
- GEOS–Chem data saved along flight tracks: all GEOS–Chem chemical tracers absolute humidity temperature wind speed Chemically produced quantities: NO, OH, HO2, JNO2, JO1D Aerosol optical depths
Tracers : 43 (NOx Ox PAN CO ALK4 ISOP HNO3 H2O2 ACET MEK ALD2 RCHO MVK MACR PMN PPN R4N2 PRPE C3H8 CH2O C2H6 N2O5 HNO4 MP DMS SO2 SO4 SO4s MSA NH3 NH4 NIT NITs BCPI OCPI BCPO OCPO DST1 DST2 DST3 DST4 SALA SALC).
Also see Appendix 1 of the GEOS-Chem User Guide for more information about these tracers.
Visualizing and Downloading NRT Output
Visualize the NRT output
You maycreate interactive animations of NRT data at this website (created by Lyatt Jaeglé, U. Washington): http://coco.atmos.washington.edu/cgi-bin/ion-p?page=nrt.ion
Downloading the NRT output
You can access the NRT model files by anonymous ftp from:
ftp ftp.as.harvard.edu Name: anonymous Password: your e-mail cd pub/geos-chem/NRT-ARCTAS
NRT-ARCTAS is subdivided into several sub-directories:
bpch/ - Binary punch file output columns/ - Column timeseries output (3hr time resolution) flambe/ - FLAMBE biomass burning data input flighttrack/ - Planeflight.dat files for the ND40 diagnostic (ARCTAS period only) gamap_files/ - The diaginfo.dat & tracerinfo.dat files for GAMAP logs/ - Log files plane/ - plane.log output files from The ND40 diagnostic (ARCTAS period only) restarts/ - Daily restart files timeseries/ - Daily timeseries output (3hr time resolution)
The README file describes the files that are available.
Note that only two users can be logged at anytime on the ftp site.
Near-Real-Time Simulation Status Updates
For the up-to-date status of the NRT simulation, please see this web page:http://acmg.seas.harvard.edu/geos/nrt/
We will also post important status announcements in this space. If you sign up for the GEOS-Chem wiki RSS feed then you will be notified immediately of the latest information.
If you have any questions related to the NRT simulations, please post them on the Discussion page.
--Bob Y. 15:36, 18 July 2008 (EDT)
Near-Real-Time Code Updates
If you are about to use NRT code, please make sure these changes are made in your code.
Difference from the standard code:
- Include FLAMBE biomass emissions (hardwired in the code) (phs)
- FLAMBE is limited in PBL (jaf)
- Implemented Yuxuan's seasonal cycle for Chinese anthropogenic emissions (jaf)
- Include the quick fix for optical depth(bmy)
- Include the CAC emission(jaf, need to change biomass_mod.f and input.geos)
for input_mod.f: CALL SPLIT_ONE_LINE( SUBSTRS, N, 1, 'read_emissions_menu:9' ) READ( SUBSTRS(1:N), * ) LCAC
Bug fix for implementation of Yuxuan's seasonal cycle (details of fix listed below)
There were two problems with this:
- The monthly emissions were only being read once per year, so if your simulation covered more than one month, not every month was getting it's own emissions
- The big problem - the units of CO, SO2, NOx emissions were in kg/month instead of kg/year.
- Fix:use the new emissions_mod.f.The other part of the fix was a fix to the files themselves.
To use the new reprocessed met data, a few changes have to be made:
a3_read_mod.f:806:#if defined( GEOS_5 ) && defined( IN_CLOUD_OD ) a6_read_mod.f:883:#if defined( GEOS_5 ) && defined( IN_CLOUD_OD ) a6_read_mod.f:1534:#if !defined( IN_CLOUD_OD ) define.h:70:! (24) Added IN_CLOUD_OD flag for reprocessed GEOS-5 met. Added GRID05x0666 define.h:95:#undef IN_CLOUD_OD define.h:135:!#define IN_CLOUD_OD 'IN_CLOUD_OD' fast_j.f:210:#if defined( GEOS_5 ) && defined( IN_CLOUD_OD ) fast_j.f:240:#if defined( GEOS_5 ) && defined( IN_CLOUD_OD ) fast_j.f:343:#if defined( GEOS_5 ) && defined( IN_CLOUD_OD ) i6_read_mod.f:754:#if defined( GEOS_5 ) && defined( IN_CLOUD_OD )
- Fix: copy the new version of these files
In flambe_biomass_mod.f: It is line 439: Z_MAX = FLOOR( GET_PBL_TOP_L( I, J ) ) Here I,J are the index of 1x1 degree grid box, while GET_PBL_TOP_L is accessing 2x2.5 grid box PBL_TOP_L(I,J).
- Fix: use the new flambe_biomas_mod.f.
In a6_read_mod.f: the problem is the last two digits of the ident string, which is 19 but supposed to be 21. This ident string is to define N_A6_FIELDS. So we missed the last two variables in the model : “MOISTQ” and “CMFMC” when we read the met data.
- Fix: use the new a6_read_mod.f
- Fixed bug that didn't include CO source from oxidation of short-lived VOCs when emissions overwrites or FLAMBE/GFED were being used. For full chem, this is a 2% addition to anthropogenic CO sources and 5% addition to biomass burning CO sources. For tagged CO, the differences are 19% and 11%, respectively.
- Changed input file "Scale from 1985 to: " value from 1998 to 2008. This will scale down anthropogenic NEI99 emissions of at least NOx, CO, and SO2 to 2005 values based on Aaron van Donkelaar's scale factors. Leaving it at 1998 is a bug, because it will scale them *up* to larger values (not consistent with EPA reports).
- Changed directory in epa_nei_mod.f90 to EPA_NEI_200806. Required adding LICARTT flag as designed by Philippe. This forces use of the scaled down NEI99 emissions (60% for CO, I think something like 50% for NOx?) consistent with Rynda's 2008 GRL paper. This is applied with Aaron's scaling factors by using LICARTT flag. If you just change the directory, you will be applying two scalings for 1999 - 2004, which is incorrect.
- Changed the CO oxidation source from anthropogenic VOCs from NEI99 to 39% for tagged CO, based on Rynda's 2008 GRL paper.
read OMI daily column for 2008 need to update four files:
- omi_mod.f(new one)
update OH+CO reaction in calcrate.f
KLO1=5.9D-33*(300*T3I(KLOOP))**(1.4D0) KHI1=1.1D-12*(300*T3I(KLOOP))**(-1.3D0) XYRAT1=KLO1*DENAIR(KLOOP)/KHI1 BLOG1=LOG10(XYRAT1) FEXP1=1.D0/(1.D0+BLOG1*BLOG1) KCO1=KLO1*DENAIR(KLOOP)*0.6**FEXP1/(1.d0+XYRAT1) KLO2=1.5D-13*(300*T3I(KLOOP))**(-0.6D0) KHI2=2.1D09 *(300*T3I(KLOOP))**(-6.1D0) XYRAT2=KLO2*DENAIR(KLOOP)/KHI2 BLOG2=LOG10(XYRAT2) FEXP2=1.D0/(1.D0+BLOG2*BLOG2) KCO2=KLO2*0.6**FEXP2/(1.d0+XYRAT2) KCO=KCO1+KCO2 RRATE(KLOOP,NK)=KCO
REVISIONS for ARCTAS code (based on v8-01-04)
Changed from v8-01-04:
For FLAMBE emissions, we require a 3D array. This causes compatibility issues with a number of routines. The following routines were edited for FLAMBE compatibility (bmy, phs, jaf):
1. biomass_mod.f See also biomass_mod.with_flambe.f, biomass_mod.wo_flambe.f; switch between these when using GFED2 for spinup, FLAMBE for run 2. carbon_mod.f 3. emissions_mod.f 4. regrid_1x1.f 5. setemis.f 6. sulfate_mod.f 7. tagged_co_mod.f 8. flambe_biomass_mod.f *** New routine *** NOTE: ND24, ND25, and ND26 MUST BE TURNED ON in input.geos TO USE FLAMBE. This is related to a problem with TPCORE that for some reason only affects the run with FLAMBE turned on. (jaf, phs, 3/24/09)
Created a new satellite curtain diagnostic for working with CALIPSO team. This required changes to the following routines (jaf):
1. aerosol_mod.f 2. chemdr.f 3. cleanup.f 4. diag1.f 5. file_mod.f 6. input_mod.f 7. jv_cmn.h 8. main.f 9. ndxx_setup.f 10. satcurtain_mod.f *** New routine ***
Fixed missing CO scaling from short-lived VOCs in both tagged CO and full chemistry simulations. This required changes to the following routines (jaf):
1. gfed2_biomass_mod.f 2. emfossil.f NOTE: For FLAMBE, the biomass scaling is currently done in biomass_mod.with_flambe.f
Added code to write global mean OH to file rather than to the log (jaf):
1. diag_oh_mod.f 2. file_mod.f
Added use of OMI O3 columns instead of TOMS (jmao):
1. fast_j.f 2. set_prof.f 3. omi_mod.f *** New routine ***
Added ND52 diagnostic for timeseries column data (jmao):
1. CMN_DIAG 2. diag_mod.f 3. gamap_mod.f 4. input_mod.f 5. main.f 6. ndxx_setup.f 7. diag52_mod.f *** New routine ***
Added ND53 diagnostic for HO2 uptake gamma (jmao):
1. calcrate.f 2. comode.h 3. diag1.f 4. diag3.f 5. diag_mod.f 6. gamap_mod.f 7. initialize.f 8. input_mod.f 9. ndxx_setup.f 10. readchem.f
Updated rate constants (jmao, jaf):
1. calcrate.f 2. tagged_co_mod.f
Added use of MEGAN biogenics in tagged CO simulation, with tagged CO speedup by not calculating these twice (jaf):
1. emissdr.f 2. tagged_co_mod.f
Updated ND29 diagnostic for tagged CO to include biogenic sources (jaf):
1. gamap_mod.f 2. tagged_co_mod.f
Added writing filenames to screen as they are read (eml, jaf):
Fixed problem with L1 being zero (phs, jaf)
Defined special ARCTAS regions for tagged CO simulation (jaf):
Bug fixes (bmy, phs, ccc):
1. tpcore_fvdas_mod.f90 2. sulfate_mod.f
Updated CH4 concentrations (jaf):
Addition of new routines (flambe_biomass_mod.f, diag52_mod.f, omi_mod.f, satcurtain_mod.f) required changes to Makefile.ifort as well.
Addition of new inputs (satellite curtains, ND52, ND53) required changes to input.geos. See ~jaf/testrun/runs/run.v8-01-04.2x25/input.geos/
Updated inputs are available for globchem.dat and jv_spec.dat. See ~jmao/NRT-ARCTAS/test.jmao/
Note: By default in the ARCTAS runs, HO2 --> 0.5 H2O2 is on (see globchem.dat).
Emissions options used in standard ARCTAS runs:
%%% EMISSIONS MENU %%% : Turn on emissions? : T Emiss timestep (min) : 60 Include anthro emiss? : T => Scale to (1985-2005): -1 => Use EMEP emissions? : T => Use BRAVO emissions?: T => Use EDGAR emissions?: T => Use STREETS emiss? : T => Use CAC emissions? : T Use EPA/NEI99 (anth+bf)?: T w/ ICARTT modif.? : T w/ VISTAS NOx emis? : F Include biofuel emiss? : T Include biogenic emiss? : T => Use MEGAN inventory?: T Include biomass emiss? : T => Seasonal biomass? : F => Scaled to TOMSAI? : F => Use GFED2 biomass? :--- => monthly GFED2? : T => 8-day GFED2? : F => 3-hr GFED2? : F => synoptic GFED2? : F Individual NOx sources :--- => Use aircraft NOx? : T => Use lightning NOx : T => Scale glb flrate?: T => OTD reg redist? : F => OTD loc redist? : T => Use CTH param? : T => Use MFLUX param? : F => Use PRECON param?: F => Use soil NOx : T Use SHIP emissions :--- => global EDGAR ? : T => EMEP over EUROPE ? : T => ship SO2 Colbert ? : F => ship SO2 Arctas ? : T Use AVHRR-derived LAI? : F ------------------------+------------------------------------------------------
Switch to a new transport_mod.f, which make the run at least twice faster now.
1.The column output is not working, so I changed the line1035 in main.f:
! IF ( ND52 > 0 .and. ITS_TIME_FOR_DIAG52() ) THEN IF (ITS_TIME_FOR_DIAG52() ) THEN
It should work now(ND52 is not an input any more). 2.In the tracer menu of input.geos, we need put parentheses for O3 and HNO3 (Tracer #2 and tracer #7). You can see this from here: ~jmao/NRT-ARCTAS/run/input.geos.7. Otherwise all the NOx ship emissions are missed. 3.In globchem.dat, two more lines are added for O3 and HNO3:
You can see this from here: ~jmao/NRT-ARCTAS/run/globchem.dat.
Problems found in the output of planelog file.
Where there is a very small number(such as 5.3E-118), Fortran will output 5.3-118(without E), which confuses IDL and make it to 5.3. This is the reason I got quite a few big numbers in the output of some species.
Philip's Solution: The problem is that Fortran output in ASCII switches between 2 formats: 1.234E-12 1.234-12 Correct, the E can disappear. And that confuses IDL. With the format specified by planeflight_mod.f (line 1237), it happens when the exponent is less than -100.
To keep the routine general, you can force the number of digit in the exponent with a 'e' in the format descriptor as follows:
y = -1.233d-122 write(6, '(es10.3)' ), y ! what is used now write(6, '(es11.3e3)' ), y ! what we should use instead write(6, '(es12.3e4)' ), y
-1.233-122 -1.233E-122 -1.233E-0122
So replace '(es10.3)' with '(es11.3e3)' line 1237 of planeflight_mod.f and that should fix it. change:
FORMAT(I5,X,A5,X,I8.8,X,I4.4,X,F7.2,X,F7.2,X,F7.2,X, & 95(es11.3e3,x))