260 likes | 281 Views
NEMS 3.0 and beyond. Mark Iredell June 30, 2010. NEMS 3.0 and beyond. Status Structure Eight layers Coupling Rules Regression Subversion Tasks IO Documentation Schedule Proposal Libraries Postprocessor Insulation. NEMS 3.0 Component Structure. MAIN. NEMS. EARTH(1:M). EnsCpl.
E N D
NEMS 3.0 and beyond Mark Iredell June 30, 2010
NEMS 3.0 and beyond • Status • Structure • Eight layers • Coupling • Rules • Regression • Subversion • Tasks • IO • Documentation • Schedule • Proposal • Libraries • Postprocessor • Insulation
NEMS 3.0 Component Structure MAIN NEMS EARTH(1:M) EnsCpl Atmos Ice Ocean GFS FIM NMM Domains(1:N) Wrt Wrt Phy Dyn Phy Dyn Wrt Phy Dyn Chem Below the dashed line the cores can be organized as best suits their own needs.
NEMS hierarchy of components • NEMS • Couples ensemble • EARTH • Couples atm/ocn • ATM • Couples gfs/nmm • NMMdriver • Couples nests • NMMinstance • Couples dyn/phys • PHYS • Couples phys/chemistry/land • CHEM
NEMS hierarchy rulesfor each component • One coupling per component, generally. • Clock received is read only. Use start and end time given. • A new clock may be created at each level. This local clock can be updated in a loop. The local clock increment is the coupling interval. • Read own config file to determine options such as local clock increment • Create own internal state as usual. • Create import and export states of children, including couplers as usual. • Attach import to child’s import and attach child’s export to its export.
Choosing a core • Atmosphere chooses the core or cores to run. • In Atmosphere Init, core name is read in from configure file. • Atmosphere calls specific core component’s setservices and links it to generic Atmos core component name. • Each possible core not used has a setservices stub file to resolve links.
Run-time Registry • Each component lists fields and their disposition (History, Restart, Import, Export, Ownership)in a run-time registry.NMMB-Dynamics Temperature H R I E OGFS-Phys Temperature H - I E O Precipitation H - - - - • Names linked to internal state names in code, and can be aliased to CF names. • Ownership can be shared during development and single during operations.
Code is slightly different to enable concurrent 2-way coupling
NEMS issues in high-level coupling between atmosphere, waves, ice, ocean, and land • Under ESMF NEMS, there should be not much difference between SPMD and MPMD codes. However, the MPMD code might not be as portable. MPMD will allow more flexible optimizations though. • Due to some rapidly interacting physics, some coupling would have to be frequent and possibly iterative. The fast mode components may need to run serially on the atmospheric component’s processors. • The fast and slow “modes” of model components may have different import and output requirements, and notably different processor sets. • Assume the “fast” physics is column-oriented and doesn’t require horizontal differencing. It may require coupling to different grids, however. If “fast” physics does not require different grids, physics subprograms with plug-compatible interfaces may suffice instead of full gridded components.
Possible NEMS Earth system model component tree Color Key Earth system model Component class Fast C Slow Coupler class Column subprogram Atmosphere Fast-Slow Coupler Slow Processes = iteration Dynamics Physics Etc. Rad. Waves (Slow) Ice (Slow) Ocean (Slow) Land (Slow) Fast Surface Turbulence Waves (Fast) Ice (Fast) Ocean (Fast) Land (Fast)
Earth system model load-balance scenarioassuming 3 fast timesteps for every 1 slow timestep processor time
Regression Testingand Subversion • All NEMS developers have full access to the NEMS development trunk as well as their own branches • Merging back to trunk is the responsibility of the developer. • Full regression test set must be passed before committing back to trunk. • Regression test set ensure certain capabilities are not broken. Regression test set may take a few hours. • (Current) One day’s email notice is given before commitment. • (Future) Changes are signed off using Trac ticketing system.
XML post control file - NMMB <?xml version="1.0"?> <postcntrl> <paramset> <datset>BGDAWP</datset> <grid_num>255</grid_num> <sub_center>ncep_nco</sub_center> <version_no>v2003</version_no> <local_table_vers_no>local_tab_no</local_table_vers_no> <sigreftime>fcst</sigreftime> <prod_status>oper</prod_status> <data_type>fcst</data_type> <gen_proc_type>fcst</gen_proc_type> <time_range_unit>hour</time_range_unit> <orig_center>nws_ncep</orig_center> <gen_proc>nmm_8km</gen_proc> <packing_method>jpeg2000</packing_method> <field_datatype>fltng_pnt</field_datatype> <comprs_type>lossless</comprs_type> <param> <pname> PRES</pname> <fixed_sfc1_type>hybrid_lvl</fixed_sfc1_type> <level> 1 2 </level> <binary_scale> 0 0</binary_scale> <decimal_scale> -2 -2</decimal_scale> </param> </paramset>
<paramset> <datset>BGRDSF</datset> <grid_num>255</grid_num> <sub_center>ncep_nco</sub_center> <version_no>v2003</version_no> <local_table_vers_no>local_tab_no</local_table_vers_no> <sigreftime>fcst</sigreftime> <prod_status>oper</prod_status> <data_type>fcst</data_type> <gen_proc_type>fcst</gen_proc_type> <time_range_unit>hour</time_range_unit> <orig_center>nws_ncep</orig_center> <gen_proc>nmm_8km</gen_proc> <packing_method>jpeg2000</packing_method> <comprs_type>lossless</comprs_type> <param> <pname> PRES</pname> <fixed_sfc1_type>hybrid_lvl</fixed_sfc1_type> <level> 1 </level> <binary_scale> 0</binary_scale> <decimal_scale> -2</decimal_scale> </param> </paramset> </postcntrl>
Results GFS master files from NEMS GFS (1152*576, 664 fields) B grid 8KM output from NEMS NMMB (954*835, 1098fields)
NEMS delivery plans • 2010 • NMMB with nests • 2010-2011 • GFS • GEFS • Post on quilt • 2011 • FIM • Multimodel ensemble • GRIB2 output • NMM nested in GFS • 2012 • Moving nests • Coupled ocean atmosphere • Tiled land model • netCDF output
Proposals • Global branch (GFS and GEFS) should buy in like Meso branch has. • Moorthi is working on bringing NEMS up to GFS Model 9.0.0 level.
Proposals • Bring non-scientific library support management within software development team, maybe in collaboration with NCO. • GRIB2 • IPLIB • Physical constants module
Proposals • Develop postprocessor as both a standalone code and one that runs on the quilt. Management of the scientific postprocessor code would be done outside of NEMS management. That is, regression testing of the NEMS and postprocessor would be independent. This could be implemented using tagged versions.
Proposals • Insulate other scientific codes such as column physics from the NEMS. Column physics could become an independently managed library. Similarly, NAM and GFS science codes could be insulated as well. Their development would be independent of NEMS regression testing. This could be implemented using tagged versions.
Code Management Relationships = NEMS managed