
===========================================================
 National Environmental Modeling System (NEMS) Version 4.0
===========================================================

 -Employs ESMF superstructure & utilities
 -Separate dynamics, physics, and coupler grid components & import/export states
 -Digital filtering capabilities added
 -Adiabatic (dynamics only) simulation capability
 -Enhanced postprocessing capability


=====================
 Directory Structure
=====================

exe:  NEMS and makedepf90 executables

inc:  KIND types and some #defines for the GFS

job:  Examples of loadleveler runscripts;

   -- regression_tests: The NEMS regression tests 

src:  The Main program for NEMS.
      The NEMS component code and its internal state.
      The EARTH component code and its internal state.

   -- atmos
      - The ATM component code and its internal state.

      - gfs
	- All files directly related to the GFS.

      - nmm
	- All files directly related to the NMM-B.

      - fim
        - All files directly related to the FIM.

      - gen
        - All files directly related to the GEN.

      - phys
        - All physics science routines (nothing core-specific and no ESMF)
          [Currently holds only NMM-B routines.  GFS routines under /gfs/phys.]

      - share
        - Assorted source shared by all model cores.

      - ENS_Cpl
        - The Ensemble coupler directory.

      - post
        - The post directory, only contains subroutines to conenct NEMS and POST, no unified post source code included 

   -- chem 
      - gocart
        - The GOCART source files.

   -- conf 
      - Various compile specifications.

util: ESMF source codes.
      makedepf90-2.8.8: Source code for the makedepf90 executable used to create the "depend" text file
                        which determines dependencies between modules. 


=====================
 Configure and Build
=====================

To compile and load the model(s):

 (1) Go into /src .

 (2) Set special compile options in the appropiate configure file in /conf .

 (3) Based on which version of the ESMF library will be used, 
     run "esmf_version ESMF_Version_Number", where:
          ESMF_Version_Number = 3,  use ESMF 3.1.0rp2 library 
          ESMF_Version_Number = 4,  use ESMF 4.0.0rp2 library
          ESMF_Version_Number = 5,  use ESMF 5.1.0    library
          ESMF_Version_Number = 5.2,use ESMF 5.2.0r_beta_snapshot_07 library

 (4) In /src execute one of the following commands indicating which cores are to be compiled:
       gmake nmm                          --- for NMM core only
       gmake gfs                          --- for GFS core only - without GOCART
       gmake gfs GOCART_MODE=full         --- for GFS core only - with GOCART
       gmake nmm_gfs                      --- for both NMM and GFS core - without GOCART
       gmake nmm_gfs GOCART_MODE=full     --- for both NMM and GFS core - with GOCART
       gmake fim                          --- for FIM core only
       gmake fim_gfs                      --- for both FIM and GFS core only - without GOCART
       gmake fim_gfs GOCART_MODE=full     --- for both FIM and GFS core only - with GOCART
       gmake gen                          --- for GEN core only
       gmake gen_nmm_gfs GOCART_MODE=full --- for GEN, NMM and GFS cores - with GOCART
       gmake nmm_post                     --- for NMM core, run with post on quilt
       gmake gfs_post                     --- for GFS core, run with post on quilt
       gmake nmm_gfs_gen_post GOCART_MODE=full --- for GEN, NMM and GFS cores - with post

 (5) The executable NEMS.x will appear in /exe .


===========
 Execution
===========

 Once an executable is created, one may go about running NEMS by merely using one's own loadleveler submission script and accessing:

 trunk/exe/NEMS.x  

 Sample loadleveler submission scripts are provided in the directory:

 trunk/job

 These may be used as templates from which user-specific submission scripts can be based. These include:

 trunk/job/runglobal_nmm - global nmmb experiment
 trunk/job/runregional_nmm - regional nmmb experiment 
 trunk/job/gfs_prep_test - gfs prep
 trunk/job/gfs_run_test - gfs experiment
 trunk/job/gen_run_test - gen experiment

 The associated configure files which are read by this scripts are included as well:

 trunk/job/configfile_global_nmm - global nmmb experiment configure file
 trunk/job/configfile_regional_nmm - regional nmmb experiment configure file
 trunk/job/exglobal_fcst.sh.sms_nems - gfs experiment configure file
 trunk/job/gen_fcst.sh.sms_nems - gen experiment job script file.

