% $Id: State_design.tex,v 1.11 2011/01/05 20:05:47 svasquez Exp $
%
% Earth System Modeling Framework
% Copyright 2002-2011, University Corporation for Atmospheric Research, 
% Massachusetts Institute of Technology, Geophysical Fluid Dynamics 
% Laboratory, University of Michigan, National Centers for Environmental 
% Prediction, Los Alamos National Laboratory, Argonne National Laboratory, 
% NASA Goddard Space Flight Center.
% Licensed under the University of Illinois-NCSA License.

%\subsection{Design}

A State object encapsulates all data being communicated into and
out of a Gridded Component.  No private communication
of data between Components is permitted in order to maintain the
independence of Components; to enable Components to be replaced
without rewriting the internal code inside the Component.

States contain the name of the associated Component, a flag for Import
or Export, and a list of data objects, which can be a combination of
FieldBundles, Fields, and/or Arrays.  The objects must be named and have
the proper attributes so they can be identified by the receiver of
the data.  For example, units and other detailed information
may need to be associated with the data as an Attribute.  
The standard CF naming convention for data should be followed.

States can be create and deleted, have data added or deleted from them,
and queried for various kinds of information.

Transform methods operate on States, doing regridding, interpolation,
summation, averaging, transposes, and other operations needed to
make the export State of one Component suitable for import to another
Component.
