Difference between revisions of "Submitting updates for inclusion in GEOS-Chem"

From Geos-chem
Jump to: navigation, search
(Checklist for data submissions)
(Checklist for code update submissions)
Line 24: Line 24:
 
=== Checklist for code update submissions ===
 
=== Checklist for code update submissions ===
  
*Use F90 free format whenever possible
+
#Use F90 free format whenever possible
*Include thorough comments throughout code updates
+
#Include thorough comments throughout code updates
*Remove extraneous code updates (e.g. testing options, other science)
+
#Remove extraneous code updates (e.g. testing options, other science)
*Include full citations at the top of relevant source code modules
+
#Include full citations at the top of relevant source code modules
*Complete [[Developing_GCHP#GCHP_Updates_Required_with_GEOS-Chem_Classic_Updates|GCHP updates required with GEOS-Chem Classic updates]]
+
#Complete [[Developing_GCHP#GCHP_Updates_Required_with_GEOS-Chem_Classic_Updates|GCHP updates required with GEOS-Chem Classic updates]]
  
 
=== Checklist for data submissions ===
 
=== Checklist for data submissions ===

Revision as of 19:36, 19 December 2019

Overview

The GEOS-Chem Steering Committee (GCSC) encourages updates to the GEOS-Chem model. Updates to the GEOS-Chem model benefit both the developer and the entire GEOS-Chem community. The developer benefits through coauthorship and citations. Priority development needs are identified at GEOS-Chem users' meetings with updates between meetings based on GCSC input through working groups.

When should you submit updates to the GEOS-Chem code? Bug fixes should be submitted as soon as possible and be given high priority. Code related to model developments should be submitted when it is mature (i.e. a paper has been submitted). Your working group chair can offer guidance on the timing of submitting code to the GCST.

The practical aspects of submitting updates to the GEOS-Chem Support Team are outlined below.

Guidelines

  1. Contact your Working Group leaders to request that your changes be included in the standard code. The GEOS-Chem Steering Committee will meet every three months and set the GEOS-Chem model development priorities (i.e. decide on the order in which updates will be added to GEOS-Chem).
  2. Create or log into your GitHub account.
  3. Fork the GEOS-Chem repositories. Navigate to each appropriate GEOS-Chem repository on GitHub and click Fork in the top-right corner of the page.
  4. Clone your forks of the GEOS-Chem repositories to your system (e.g. git clone https://github.com/YOUR-USERNAME/geos-chem Code.12.0.0; git clone https://github.com/YOUR-USERNAME/geos-chem-unittest UT.12.0.0).
  5. Add your modifications into a new branch off of the master branch.
  6. Test your update thoroughly and make sure that it works.
  7. Review the code update checklist and data checklist below.
  8. Create a pull request in GitHub (recommended) or a Git patch file.
  9. The GEOS-Chem Support Team will add your changes to the standard code. Your update may be bundled with other code updates and the GEOS-Chem version number (X.Y.Z) will be changed. The update will be validated following the GEOS-Chem benchmarking procedure.

Checklist for code update submissions

  1. Use F90 free format whenever possible
  2. Include thorough comments throughout code updates
  3. Remove extraneous code updates (e.g. testing options, other science)
  4. Include full citations at the top of relevant source code modules
  5. Complete GCHP updates required with GEOS-Chem Classic updates

Checklist for data submissions

  1. Make sure netCDF data files are COARDS-compliant
  2. Concatenate netCDF files together whenever possible.
    • e.g. If the data is a multi-year archive of monthly-mean data, create one file per year containing all data variables. Each data variable would have 12 timestamps, one for each month.
    • Reducing the number of files that have to be opened results in more efficient GEOS-Chem simulations.

  3. Make sure files have been chunked and deflated.
    • Deflation level 1 is usually sufficient for most files.
    • e.g. ./nc_chunk.pl myfile.nc 1

  4. Follow these additional steps to ensure data can also be read by GCHP:
    • All variables should be of type float (aka REAL*4) or double (aka REAL*8).
      • The MAPL library used by GCHP cannot read integer data from netCDF files.
    • Use a recent reference date, if possible, for the time:units attribute.
      • MAPL may have issues interpreting reference times such as 1750 (which is prior to the Julian-to-Gregorian calendar switch).

  5. Include updated HEMCO Configuration file (if the data will be read via HEMCO).
  6. Include README file detailing data source, contents, etc.

  7. Include script(s) used to process original data

  8. Include a summary or description of the expected results (e.g. emission totals for each species)

Further reading