% $Id$
%
% Earth System Modeling Framework
% Copyright (c) 2002-2023, 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{Description}

%ESMF data types, such as Fields, FieldBundles, Arrays and ArrayBundles, are used
%to exchange data between Components through States. In the simplest
%scenario the producer Component or Coupler can compute the full data set
%required by the consumer Component. However, memory constraints or otherwise
%the nature of the algorithm, may require that the final calculation be
%performed right before the data is consumed. 

%ESMF provides the concept of Attachable Methods that allows a producer 
%component to associate user defined methods with the data objects it provides.
%The final calculation, while defined by the producer Component, is deferred
%until the consumer Component requires its execution.

%The current implementation of Attachable Methods is limited to the ESMF State
%class. States are a general container class for Fields, FieldBundles, Arrays
%and ArrayBundles. States provide the most general interface to Attachable
%Methods.

ESMF allows user methods to be attached to Components and States. Providing
this capability supports a more object oriented way of model design. 

Attachable methods on Components can be used to implement the concept of
generic Components where the specialization requires attaching methods with
well defined names. This methods are then called by the generic Component 
code.

Attaching methods to States can be used to supply data operations along with
the data objects inside of a State object. This can be useful where a producer
Component not only supplies a data set, but also the associated processing
functionality. This can be more efficient than providing all of the possible
sets of derived data.
