PRINTSCRIPT; print $script_style; include "/var/www/html/core/partc"; $linkpage = <<< PRINTLINK gfdl homepage > people > cobweb homepage > people > v. balaji homepage > this page PRINTLINK; print $linkpage; // GFDL header include "/var/www/html/core/partd"; $titlepage = <<< TITLEPAGE Components in FRE TITLEPAGE; print $titlepage; // GFDL header include_once( '/var/lib/php/counter.inc' ); error_reporting(E_ERROR); require_once('../magpierss/rss_fetch.inc'); require_once('../magpierss/rss_utils.inc'); include "/var/www/html/core/parte"; $pagecontent = <<< ENDCONTENT
The current version of FRE (Version 2 of the syntax) is organized by the stages in the sequence of preparing an experiment, as follows: <cvs> ... <cvs> <compile> ... <compile> <input> ... </input> <run> ... </run> <postProcess> ... </postProcess> The Organizing by stages in the workflow rather than by component clearly violates modularity at some very basic level: everyone is exposed to the inner workings of every component. As part of the FRE overhaul, we have reorganized the FRE schema
entirely by component. Also, with a nod to the future and our
ESC project, we now allow components to be recursive. The Checkout and compilationConcurrently with the Nalanda release, we are deploying a new syntax wherein the checkout and compilation is done per component. <component name="fms" paths="shared"> <source versionControl="cvs" root="/home/fms/cvs"> <codeBase version="latest">shared</codeBase> </source> <compile> <cppDefs>-Duse_libMPI -Duse_netCDF -Duse_SGI_GSM</cppDefs> </compile> <compile target="debug"> <cppDefs>-Duse_libMPI -Duse_netCDF -Duse_SGI_GSM</cppDefs> <mkmfTemplate>/home/fms/bin/mkmf.debugtemplate.ia64</mkmfTemplate> </compile> </component> Features to note:
Other components will be listed as follows: each can have its own
checkout and compilation instructions, its own <component name="atmos_phys" paths="atmos_param atmos_shared" requires="fms"> ... </component> Note the <component name="atmos_dyn" paths="atmos_coupled atmos_fv_dynamics" requires="fms atmos_phys"> ... </component> <component name="ice" paths="ice_amip ice_param" requires="fms"> ... </component> <component name="land" paths="land_lad land_param" requires="fms"> ... </component> <component name="ocean" paths="ocean_amip" requires="fms"> ... </component> <component name="coupler" paths="coupler" requires="fms atmos_phys atmos_dyn ice land ocean"> ... </component> Precompiled librariesSince compilation is now by library, we introduce a powerful new
feature. Just as in the old FRE, you could specify an <component name="fms" paths="shared"> <library path="/home/arl/fre/test/trial9/m45_am2p14/exec/libfms.a" headerDir="/home/arl/fre/test/trial9/m45_am2p14/exec" /> <source versionControl="cvs" root="/home/fms/cvs"> <codeBase version="latest">shared</codeBase> </source> <compile> <cppDefs>-Duse_libMPI -Duse_netCDF -Duse_SGI_GSM</cppDefs> </compile> <compile target="debug"> <cppDefs>-Duse_libMPI -Duse_netCDF -Duse_SGI_GSM</cppDefs> <mkmfTemplate>/home/fms/bin/mkmf.debugtemplate.ia64</mkmfTemplate> </compile> </component> tells Starting with the Nalanda release, a set of standard libraries for most component configurations in common use at GFDL will be provided. These will have the best known optimizations. Users principally working on one component will be able to link to other components as black box libraries. The list of components in this example are one or two levels deep from
the coupler. The method however can be done at much deeper levels of
component systems. For example, the CVS module Input datasetsCurrently, FMS uses a flat file structure across components (e.g
Composite datasets such the RunningIn principle, each In future, there will be a Post-processingThe post-processing is already organized by component. The only change we foresee here is that the hierarchy: <postProcess> <component name="atmos"> ... </component> </postProcess> will be reversed, and the |
![]() ![]() ENDCONTENT; print $pagecontent; print "last modified: ". date( "d F Y", getlastmod() ); print " this page visited: ".getCount(). " times "; include "/var/www/html/core/partf"; include "/var/www/html/core/partg"; |