Title: Earth System Modeling Framework ESMF Community Meeting, 2006'
1Earth System Modeling Framework (ESMF) Community
Meeting, 2006.
DOD
NSF
DOE
NASA
NOAA
2Todays Agenda
A reception from 530pm to 730pm in the same
room as the Community Meeting, Chesapeake I and
II.
Tomorrow (May 24) 8.30-12.30. Sheraton Inner
Harbor
Room - Loch Raven 1
3(No Transcript)
4Earth System Modeling Framework (ESMF)
Introduction to ESMF and ESMF Components in the
Community.
- ESMF Community Meeting, Baltimore, 2006
DOD
NSF
DOE
NASA
NOAA
5Outline
- What is ESMF?
- ESMF components.
- Where is ESMF being used?
- Components in production or being developed.
- What does it take to use ESMF?
- Future directions
6What is ESMF
- ESMF provides a software library for turning
model codes into coupled components with standard
interfaces and standard drivers. - ESMF provides library of common infrastructure
that components use for routine services such as
data communications, regridding, time management
and message logging.
e.g ocean transport, optimization line
search, atmospheric radiation.
ESMF Superstructure
AppDriver
Component Classes GridComp, CplComp, State
User Provided Numerical/Science Code
E
SMF Infrastructure
Data Classes Bundle, Field, Grid, Array
Utility Classes Clock, LogErr, DELayout, Machine
- e.g. three model codes operating as coupled
components ESMF provides a parallel, scalable
standard software platform to facilitate this
coupling, including - a programming model for coding drivers that steer
individual component computations - data structures for passing information between
components - This software is the core of the ESMF component
model.
Component 1
Component 2
Component 3
7ESMF ComponentModel
- Provides machinery for coding a hierarchy of
interacting components - coupler components, e.g. ocm2atm_coupler and
- gridded components, e.g. atm_phys_comp
- Machinery includes
- general-purpose mechanisms to code wirings
between components (ESMF_State, ESMF_regrid()) - general purpose mechanisms to create components
and to control their lifecycle (SetServices,
Init(), Run(), Final() )
Graph of hypothetical ESMF app. in left
panel. Numbers correspond hypothetical app. user
code
1
climate_comp
1
2
atm2ocn_coupler
3
ocn_comp
atm_comp
4
phys2dyn_coupler
5
_comp
3
4
gridded components
2
_coupler
coupler components
atm_phys_comp
6
7
atm_dyn_comp
5
7
6
Components are nodes . Flow of data between
components is shown by edges.
Hypothetical application on parallel machine
8Example ESMF component graph for GEOS-5 AGCM
GEOS-5
coupler
history
agcm
coupler
dynamics
physics
coupler
coupler
surface
fvcore
gravity_wave_drag
chemistry
moist_processes
radiation
turbulence
coupler
coupler
infrared
solar
lake
land_ice
data_ocean
land
coupler
Max Suarez, Atanas Tryanov
vegetation
catchment
- Boxes are user written ESMF components
- Every component has a standard ESMF interface
Init(),Run(), Finalize(). These drive the
components. - Data in and out of components are packaged in
ESMF_state types - New components can be added to the hierarchical
system - Coupling tools include parallel regridding and
redistribution methods
GEOS-5 presentation later
9Creating and controlling ESMF Components
dyn_init(dGC,dI,dE,cl,rc)
ESMF_CCInit(dyn2fv,dI,dE,cl,rc)
ESMF_GCInit(fvGC,fvI,fvE,cl,rc)
ESMF_CCInit(fv2dyn,dI,dE,cl,rc)
Initialize
dyn_run(dGC,dI,dE,cl,rc) ESMF_CCRun(dyn2fv,d
I,fvI,cl,rc) ESMF_GCRun(fvGC,fvI,fvE,cl,rc)
ESMF_CCRun(fv2dyn,fvE,dE,cl,rc)
Run
ESMF component model defines standard interfaces
that a component must provide Key
ones Initialize(IState,EState,Clock,RC) Run(IState
,EState,) Finalize(IState,EState,)
ESMF component model defines a standard
container type for passing information between
components e.g TYPE(ESMF_State) fvI, fvE, dI,
dE Components exchange data (with their peers
and parent in the graph) by encoding/decoding
ESMF_State data type arguments. An ESMF_state can
hold many sorts of information and includes
meta-data needed to decode it.
10- Data is transferred between components through
ESMF_State type container variables. - Functions such as ESMF_regrid/ESMF_redist are
used in coupler components to succinctly remap
data within components. - Every component registers ESMF_Init(),
ESMF_Run(), ESMF_Finalize() so that it can be
controlled from a parent. - Components may also use an internal state pointer
to maintain private state between calls. - The component model provides everyone with a
common model of time and alarms at the component
interface.
ESMF Component Modeling.
These aspects of the ESMF component model are
being used both to develop interoperable
applications and to develop new applications.
11Outline
- What is ESMF?
- ESMF components.
- Where is ESMF being used?
- Components in production or being developed.
- What does it take to use ESMF?
- Future directions/challenges
12 Components in production or in test and
development
37 different components, span research to
production
13 Using ESMF CCSM example
Erik Kluzek, Mariana Vertenstein
Group looking for way to provide a
single-executable system like the NCAR Community
Atmosphere Model (CAM) (left) but that has
coupling flexibility of CCSM. For this CCSM is
prototyping ESMF as a way to separate out ice and
ocean from under a CAM specific driver (right).
14 Using ESMF BEI example
Part of BEI project targeting coupled HYCOM
(Hybrid Coordinate Ocean Model) CICE (Los
Alamos Sea Ice Model) system for more accurate
polar modeling. Using ESMF to wire CICE and
HYCOM together. BEI presentation later
Alan Wallcroft
15 Using ESMF LIS example
LIS team looking for strategy to integrate
land-surface and atmospheric dynamics modeling
and assimilation. Using ESMF to wire LIS and
GMAO atmospheric modules together.
Sujay Kumar, Christa Peters-Liddard
16 Using ESMF SWMF example
SWMF exploring approach to coupling space weather
to Earth atmosphere. Using ESMF to provide SWMF
as an encapsulated ESMF component.
Quentin Stout
17ESMF in the community examples of strategies
Complete framework component
Whole model components
Fine grain components
ESMF gridded and coupler components are user
written, so ESMF can be used flexibly at
different levels of abstraction and with mixed
coupling paradigms.
Hub-and-spoke coupling
One-to-one coupling
18Outline
- What is ESMF?
- ESMF components.
- Where is ESMF being used?
- Components in production or being developed.
- What does it take to use ESMF?
- Future directions/challenges
19Using ESMF - why?
- The emerging pool of other ESMF-based science
components. Can be used to create applications. - To reduce the amount of infrastructure code that
you need to maintain and write, and allow you to
focus more resources on science development. - ESMF is addressing two major technical problems
in model development Structuring large,
multi-component applications so that they are
easier to use and extend, and achieving
performance portability on a wide variety of
parallel architectures. - It may be better software (better features,
better performance portability, better tested,
better documented, more stable maintenance) than
the infrastructure software that you are
currently using. - Community development and use means that the ESMF
software is widely reviewed and tested, and that
you can leverage contributions from other groups.
20Using ESMF - how?
- More in later talks and, especially, at tomorrows
tutorial - Basic steps to get started
- Download (from http//www.esmf.ucar.edu ) and
build - Read manual (not all of it!)
- Try a few of the examples
- Decide on scope of your components e.g. is your
code one monolithic component or several
sub-components. - Arrange the code internally into init(), run(),
finalize() sections. - Attach ESMF_Init() etc to your internal init()
- Develop couplers to map between sub-components,
if needed. - Qs to esmf-support_at_ucar.edu
- More advanced steps
- Develop internal state for your component that
can be attached to component. - Refactor infrastructure to use ESMF basis
21Future directions and challenges
Having a standard interface doesnt guarantee
meaningful results! Conventions, rules,
best-practices and higher-level protocols are
required to describe, precisely and unambiguously
(to a machine), what inputs a component expects
and what it can export, what rules it must adhere
to etc Some of this can be automated (Curator
presentation and discussion session later). Some
requires expert knowledge.
22Summary
The basis of ESMF is a component paradigm
tailored to Earth and planetary science
disciplines. The component paradigm in ESMF
centers on components written in a user community.
The ESMF community has a growing pool of
components upcoming presentations from Mark
Iredell (NCEP), Max Suarez (GSFC), Alan Wallcraft
(DOD), but room for lots more! The granularity
of available components spans sub-process models
to complete frameworks, and covers algorithm
areas from assimilation algebra to cloud
processes. Some emerging standard rules (see
later presentations)
23(No Transcript)
24(No Transcript)
25(No Transcript)
26What is ESMF
The Earth System Modeling Framework (ESMF) is a
software package for building scalable, portable,
modular modeling and data assimilation
applications. . ESMF promotes an organized,
hierarchical application architecture that makes
complex applications easier to maintain and
extend, and allows individual components of an
application to be exchanged and used in multiple
contexts.
- ESMF provides tools for turning model codes into
components with standard interfaces and standard
drivers. - ESMF provides library of common utilities that
components use for routine services such as data
communications, regridding, time management and
message logging.
e.g ocean transport, optimization line
search, atmospheric radiation.
ESMF Superstructure
AppDriver
Component Classes GridComp, CplComp, State
User Provided Numerical/Science Code
E
SMF Infrastructure
Data Classes Bundle, Field, Grid, Array
Utility Classes Clock, LogErr, DELayout, Machine