<p><b>dwj07@fsu.edu</b> 2013-04-02 13:42:31 -0600 (Tue, 02 Apr 2013)</p><p><br>
        -- TRUNK COMMIT --<br>
        COMMENTS AND WHITESPACE ONLY<br>
<br>
        Adding doxygen comments to mpas_grid_types.F<br>
</p><hr noshade><pre><font color="gray">Modified: trunk/mpas/src/framework/mpas_grid_types.F
===================================================================
--- trunk/mpas/src/framework/mpas_grid_types.F        2013-04-02 19:02:42 UTC (rev 2707)
+++ trunk/mpas/src/framework/mpas_grid_types.F        2013-04-02 19:42:31 UTC (rev 2708)
@@ -1,3 +1,16 @@
+!***********************************************************************
+!
+!  mpas_grid_types
+!
+!&gt; \brief   MPAS Grid and field type defintion module
+!&gt; \author  Michael Duda, Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This module defines derived data types related to fields, and variable structures.
+!&gt; It also includes routines for allocating and deallocating these types.
+!
+!-----------------------------------------------------------------------
 module mpas_grid_types
 
    use mpas_kind_types
@@ -472,31 +485,54 @@
 
    contains
 
+!***********************************************************************
+!
+!  routine mpas_allocate_domain
+!
+!&gt; \brief   MPAS Domain allocation routine
+!&gt; \author  Michael Duda
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine allocates a domain structure.
+!
+!-----------------------------------------------------------------------
+   subroutine mpas_allocate_domain(dom, dminfo)!{{{
 
-   subroutine mpas_allocate_domain(dom, dminfo)
-
       implicit none
 
-      type (domain_type), pointer :: dom
-      type (dm_info), pointer :: dminfo
+      type (domain_type), pointer :: dom !&lt; Input/Output: Domain structure
+      type (dm_info), pointer :: dminfo !&lt; Input: Domain Information
 
       allocate(dom)
       nullify(dom % blocklist)
       dom % dminfo =&gt; dminfo
 
-   end subroutine mpas_allocate_domain
+   end subroutine mpas_allocate_domain!}}}
 
-
-   subroutine mpas_allocate_block(nHaloLayers, b, dom, blockID, &amp;
+!***********************************************************************
+!
+!  routine mpas_allocate_block
+!
+!&gt; \brief   MPAS Block allocation routine
+!&gt; \author  Michael Duda
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine allocates a block structure. It calls routines to allocate the variable structures
+!&gt; that are members of the block type.
+!
+!-----------------------------------------------------------------------
+   subroutine mpas_allocate_block(nHaloLayers, b, dom, blockID, &amp;!{{{
 #include &quot;dim_dummy_args.inc&quot;
                             )
 
       implicit none
 
-      integer, intent(in) :: nHaloLayers
-      type (block_type), pointer :: b
-      type (domain_type), pointer :: dom
-      integer, intent(in) :: blockID
+      integer, intent(in) :: nHaloLayers !&lt; Input: Number of halo laters
+      type (block_type), pointer :: b !&lt; Input/Output: Block structure
+      type (domain_type), pointer :: dom !&lt; Input: Domain structure
+      integer, intent(in) :: blockID !&lt; Input: Global ID of block
 #include &quot;dim_dummy_decls.inc&quot;
 
 
@@ -511,19 +547,30 @@
 
 #include &quot;block_allocs.inc&quot;
 
-   end subroutine mpas_allocate_block
+   end subroutine mpas_allocate_block!}}}
 
 
 #include &quot;group_alloc_routines.inc&quot;
 
 #include &quot;provis_alloc_routines.inc&quot;
 
-
+!***********************************************************************
+!
+!  routine mpas_deallocate_domain
+!
+!&gt; \brief   MPAS Domain deallocation routine
+!&gt; \author  Michael Duda
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a domain structure. 
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_domain(dom)!{{{
 
       implicit none
 
-      type (domain_type), pointer :: dom
+      type (domain_type), pointer :: dom !&lt; Input/Output: Domain to deallocate
 
       type (block_type), pointer :: block_ptr
 
@@ -537,9 +584,21 @@
 
    end subroutine mpas_deallocate_domain!}}}
 
+!***********************************************************************
+!
+!  routine mpas_allocate_scratch_field1d_integer
+!
+!&gt; \brief   MPAS 1D Scratch integer allocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine allocates a 1D scratch integer field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_allocate_scratch_field1d_integer(f, single_block_in)!{{{
-       type (field1dInteger), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field1dInteger), pointer :: f !&lt; Input: Field to allocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical flag that determines if a single block should be allocated or all blocks.
        logical :: single_block
        type (field1dInteger), pointer :: f_cursor
 
@@ -569,9 +628,21 @@
 
    end subroutine mpas_allocate_scratch_field1d_integer!}}}
 
+!***********************************************************************
+!
+!  routine mpas_allocate_scratch_field2d_integer
+!
+!&gt; \brief   MPAS 2D Scratch integer allocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine allocates a 2D scratch integer field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_allocate_scratch_field2d_integer(f, single_block_in)!{{{
-       type (field2dInteger), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field2dInteger), pointer :: f !&lt; Input: Field to allocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical flag that determines if a single block should be allocated, or all blocks.
        logical :: single_block
        type (field2dInteger), pointer :: f_cursor
 
@@ -601,9 +672,21 @@
 
    end subroutine mpas_allocate_scratch_field2d_integer!}}}
 
+!***********************************************************************
+!
+!  routine mpas_allocate_scratch_field3d_integer
+!
+!&gt; \brief   MPAS 3D Scratch integer allocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine allocates a 3D scratch integer field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_allocate_scratch_field3d_integer(f, single_block_in)!{{{
-       type (field3dInteger), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field3dInteger), pointer :: f !&lt; Input: Field to allocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical flag that determines if a single block should be allocated, or all blocks.
        logical :: single_block
        type (field3dInteger), pointer :: f_cursor
 
@@ -633,9 +716,21 @@
 
    end subroutine mpas_allocate_scratch_field3d_integer!}}}
 
+!***********************************************************************
+!
+!  routine mpas_allocate_scratch_field1d_real
+!
+!&gt; \brief   MPAS 1D Scratch real allocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine allocates a 1D scratch real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_allocate_scratch_field1d_real(f, single_block_in)!{{{
-       type (field1dReal), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field1dReal), pointer :: f !&lt; Input: Field to allocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical flag that determines if a single block should be allocated, or all blocks.
        logical :: single_block
        type (field1dReal), pointer :: f_cursor
 
@@ -665,9 +760,21 @@
 
    end subroutine mpas_allocate_scratch_field1d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_allocate_scratch_field2d_real
+!
+!&gt; \brief   MPAS 2D Scratch real allocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine allocates a 2D scratch real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_allocate_scratch_field2d_real(f, single_block_in)!{{{
-       type (field2dReal), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field2dReal), pointer :: f !&lt; Input: Field to allocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical flag that determines if a single block should be allocated, or all blocks.
        logical :: single_block
        type (field2dReal), pointer :: f_cursor
 
@@ -697,9 +804,21 @@
 
    end subroutine mpas_allocate_scratch_field2d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_allocate_scratch_field3d_real
+!
+!&gt; \brief   MPAS 3D Scratch real allocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine allocates a 3D scratch real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_allocate_scratch_field3d_real(f, single_block_in)!{{{
-       type (field3dReal), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field3dReal), pointer :: f !&lt; Input: Field to allocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical flag that determines if a single block should be allocated, or all blocks.
        logical :: single_block
        type (field3dReal), pointer :: f_cursor
 
@@ -729,9 +848,21 @@
 
    end subroutine mpas_allocate_scratch_field3d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_allocate_scratch_field4D_real
+!
+!&gt; \brief   MPAS 4D Scratch real allocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine allocates a 4D scratch real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_allocate_scratch_field4d_real(f, single_block_in)!{{{
-       type (field4dReal), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field4dReal), pointer :: f !&lt; Input: Field to allocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical flag that determines if a single block should be allocated, or all blocks.
        logical :: single_block
        type (field4dReal), pointer :: f_cursor
 
@@ -761,9 +892,21 @@
 
    end subroutine mpas_allocate_scratch_field4d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_allocate_scratch_field5D_real
+!
+!&gt; \brief   MPAS 5D Scratch real allocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine allocates a 5D scratch real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_allocate_scratch_field5d_real(f, single_block_in)!{{{
-       type (field5dReal), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field5dReal), pointer :: f !&lt; Input: Field to allocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical flag that determines if a single block should be allocated, or all blocks.
        logical :: single_block
        type (field5dReal), pointer :: f_cursor
 
@@ -793,9 +936,21 @@
 
    end subroutine mpas_allocate_scratch_field5d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_allocate_scratch_field1D_char
+!
+!&gt; \brief   MPAS 1D Scratch character deallocation rotuine
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine allocates a 1D scratch character field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_allocate_scratch_field1d_char(f, single_block_in)!{{{
-       type (field1dChar), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field1dChar), pointer :: f !&lt; Input: Field to allocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical flag that determines if a single block should be allocated, or all blocks.
        logical :: single_block
        type (field1dChar), pointer :: f_cursor
 
@@ -825,9 +980,21 @@
 
    end subroutine mpas_allocate_scratch_field1d_char!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_scratch_field1D_integer
+!
+!&gt; \brief   MPAS 1D Scratch integer deallocation rotuine
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 1D scratch integer field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_scratch_field1d_integer(f, single_block_in)!{{{
-       type (field1dInteger), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field1dInteger), pointer :: f !&lt; Input: Field to deallocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical that determines if a single block should be deallocated, or all blocks.
        logical :: single_block
        type (field1dInteger), pointer :: f_cursor
 
@@ -858,9 +1025,21 @@
 
    end subroutine mpas_deallocate_scratch_field1d_integer!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_scratch_field2D_integer
+!
+!&gt; \brief   MPAS 2D Scratch integer deallocation rotuine
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 2D scratch integer field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_scratch_field2d_integer(f, single_block_in)!{{{
-       type (field2dInteger), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field2dInteger), pointer :: f !&lt; Input: Field to deallocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical that determines if a single block should be deallocated, or all blocks.
        logical :: single_block
        type (field2dInteger), pointer :: f_cursor
 
@@ -891,9 +1070,21 @@
 
    end subroutine mpas_deallocate_scratch_field2d_integer!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_scratch_field3D_integer
+!
+!&gt; \brief   MPAS 3D Scratch integer deallocation rotuine
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 3D scratch integer field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_scratch_field3d_integer(f, single_block_in)!{{{
-       type (field3dInteger), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field3dInteger), pointer :: f !&lt; Input: Field to deallocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical that determines if a single block should be deallocated, or all blocks.
        logical :: single_block
        type (field3dInteger), pointer :: f_cursor
 
@@ -924,9 +1115,21 @@
 
    end subroutine mpas_deallocate_scratch_field3d_integer!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_scratch_field1D_real
+!
+!&gt; \brief   MPAS 1D Scratch real deallocation rotuine
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 1D scratch real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_scratch_field1d_real(f, single_block_in)!{{{
-       type (field1dReal), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field1dReal), pointer :: f !&lt; Input: Field to deallocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical that determines if a single block should be deallocated, or all blocks.
        logical :: single_block
        type (field1dReal), pointer :: f_cursor
 
@@ -957,9 +1160,21 @@
 
    end subroutine mpas_deallocate_scratch_field1d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_scratch_field2D_real
+!
+!&gt; \brief   MPAS 2D Scratch real deallocation rotuine
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 2D scratch real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_scratch_field2d_real(f, single_block_in)!{{{
-       type (field2dReal), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field2dReal), pointer :: f !&lt; Input: Field to deallocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical that determines if a single block should be deallocated, or all blocks.
        logical :: single_block
        type (field2dReal), pointer :: f_cursor
 
@@ -990,9 +1205,21 @@
 
    end subroutine mpas_deallocate_scratch_field2d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_scratch_field3D_real
+!
+!&gt; \brief   MPAS 3D Scratch real deallocation rotuine
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 3D scratch real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_scratch_field3d_real(f, single_block_in)!{{{
-       type (field3dReal), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field3dReal), pointer :: f !&lt; Input: Field to deallocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical that determines if a single block should be deallocated, or all blocks.
        logical :: single_block
        type (field3dReal), pointer :: f_cursor
 
@@ -1023,9 +1250,21 @@
 
    end subroutine mpas_deallocate_scratch_field3d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_scratch_field4D_real
+!
+!&gt; \brief   MPAS 4D Scratch real deallocation rotuine
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 4D scratch real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_scratch_field4d_real(f, single_block_in)!{{{
-       type (field4dReal), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field4dReal), pointer :: f !&lt; Input: Field to deallocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical that determines if a single block should be deallocated, or all blocks.
        logical :: single_block
        type (field4dReal), pointer :: f_cursor
 
@@ -1056,9 +1295,21 @@
 
    end subroutine mpas_deallocate_scratch_field4d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_scratch_field5D_real
+!
+!&gt; \brief   MPAS 5D Scratch real deallocation rotuine
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 5D scratch real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_scratch_field5d_real(f, single_block_in)!{{{
-       type (field5dReal), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field5dReal), pointer :: f !&lt; Input: Field to deallocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical that determines if a single block should be deallocated, or all blocks.
        logical :: single_block
        type (field5dReal), pointer :: f_cursor
 
@@ -1089,9 +1340,21 @@
 
    end subroutine mpas_deallocate_scratch_field5d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_scratch_field1D_char
+!
+!&gt; \brief   MPAS 1D Scratch character deallocation rotuine
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 1D scratch character field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_scratch_field1d_char(f, single_block_in)!{{{
-       type (field1dChar), pointer :: f
-       logical, intent(in), optional :: single_block_in
+       type (field1dChar), pointer :: f !&lt; Input: Field to deallocate
+       logical, intent(in), optional :: single_block_in !&lt; Input: Logical that determines if a single block should be deallocated, or all blocks.
        logical :: single_block
        type (field1dChar), pointer :: f_cursor
 
@@ -1122,9 +1385,20 @@
 
    end subroutine mpas_deallocate_scratch_field1d_char!}}}
 
-
+!***********************************************************************
+!
+!  routine mpas_deallocate_field0d_integer
+!
+!&gt; \brief   MPAS 0D integer deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 0D integer field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_field0d_integer(f)!{{{
-       type (field0dInteger), pointer :: f
+       type (field0dInteger), pointer :: f !&lt; Input: Field to deallocate
        type (field0dInteger), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1146,8 +1420,20 @@
 
    end subroutine mpas_deallocate_field0d_integer!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_field1D_integer
+!
+!&gt; \brief   MPAS 1D integer deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 1D integer field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_field1d_integer(f)!{{{
-       type (field1dInteger), pointer :: f
+       type (field1dInteger), pointer :: f !&lt; Input: Field to deallocate
        type (field1dInteger), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1173,8 +1459,20 @@
 
    end subroutine mpas_deallocate_field1d_integer!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_field2D_integer
+!
+!&gt; \brief   MPAS 2D integer deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 2D integer field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_field2d_integer(f)!{{{
-       type (field2dInteger), pointer :: f
+       type (field2dInteger), pointer :: f !&lt; Input: Field to deallocate
        type (field2dInteger), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1200,8 +1498,20 @@
 
    end subroutine mpas_deallocate_field2d_integer!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_field3D_integer
+!
+!&gt; \brief   MPAS 3D integer deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 3D integer field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_field3d_integer(f)!{{{
-       type (field3dInteger), pointer :: f
+       type (field3dInteger), pointer :: f !&lt; Input: Field to deallocate
        type (field3dInteger), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1227,8 +1537,20 @@
 
    end subroutine mpas_deallocate_field3d_integer!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_field0d_real
+!
+!&gt; \brief   MPAS 0D real deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 0D real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_field0d_real(f)!{{{
-       type (field0dReal), pointer :: f
+       type (field0dReal), pointer :: f !&lt; Input: Field to deallocate
        type (field0dReal), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1251,8 +1573,20 @@
 
    end subroutine mpas_deallocate_field0d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_field1D_real
+!
+!&gt; \brief   MPAS 1D real deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 1D real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_field1d_real(f)!{{{
-       type (field1dReal), pointer :: f
+       type (field1dReal), pointer :: f !&lt; Input: Field to deallocate
        type (field1dReal), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1278,8 +1612,20 @@
 
    end subroutine mpas_deallocate_field1d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_field2D_real
+!
+!&gt; \brief   MPAS 2D real deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 2D real field.
+!
+
    subroutine mpas_deallocate_field2d_real(f)!{{{
-       type (field2dReal), pointer :: f
+       type (field2dReal), pointer :: f !&lt; Input: Field to deallocate
        type (field2dReal), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1305,8 +1651,20 @@
 
    end subroutine mpas_deallocate_field2d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_field3D_real
+!
+!&gt; \brief   MPAS 3D real deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 3D real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_field3d_real(f)!{{{
-       type (field3dReal), pointer :: f
+       type (field3dReal), pointer :: f !&lt; Input: Field to deallocate
        type (field3dReal), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1332,8 +1690,20 @@
 
    end subroutine mpas_deallocate_field3d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_field4D_real
+!
+!&gt; \brief   MPAS 4D real deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 4D real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_field4d_real(f)!{{{
-       type (field4dReal), pointer :: f
+       type (field4dReal), pointer :: f !&lt; Input: Field to deallocate
        type (field4dReal), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1359,8 +1729,20 @@
 
    end subroutine mpas_deallocate_field4d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_field5D_real
+!
+!&gt; \brief   MPAS 5D real deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 5D real field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_field5d_real(f)!{{{
-       type (field5dReal), pointer :: f
+       type (field5dReal), pointer :: f !&lt; Input: Field to deallocate
        type (field5dReal), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1386,8 +1768,20 @@
 
    end subroutine mpas_deallocate_field5d_real!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_field0D_char
+!
+!&gt; \brief   MPAS 0D character deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 0D character field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_field0d_char(f)!{{{
-       type (field0dChar), pointer :: f
+       type (field0dChar), pointer :: f !&lt; Input: Field to deallocate
        type (field0dChar), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1409,8 +1803,20 @@
 
    end subroutine mpas_deallocate_field0d_char!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_field1D_char
+!
+!&gt; \brief   MPAS 1D character deallocation routine.
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a 1D character field.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_field1d_char(f)!{{{
-       type (field1dChar), pointer :: f
+       type (field1dChar), pointer :: f !&lt; Input: Field to deallocate
        type (field1dChar), pointer :: f_cursor
 
        f_cursor =&gt; f
@@ -1436,16 +1842,29 @@
 
    end subroutine mpas_deallocate_field1d_char!}}}
 
+!***********************************************************************
+!
+!  routine mpas_deallocate_block
+!
+!&gt; \brief   MPAS Block deallocation routine
+!&gt; \author  Doug Jacobsen
+!&gt; \date    04/02/13
+!&gt; \version SVN:$Id$
+!&gt; \details 
+!&gt; This routine deallocates a block structure.
+!
+!-----------------------------------------------------------------------
    subroutine mpas_deallocate_block(b)!{{{
  
       implicit none
 
-      type (block_type), intent(inout) :: b
+      type (block_type), intent(inout) :: b !&lt; Input/Output: Block to be deallocated.
 
       integer :: i
 
       ! BUG: It seems like we should be deallocating the exchange lists before we 
       !      deallocate the array of head pointers and the parinfo type...
+      !      It also seems like these deallocations should happen with mpas_dmpar_destroy_multihalo_exchange_list
 
       deallocate(b % parinfo % cellsToSend)
       deallocate(b % parinfo % cellsToRecv)

</font>
</pre>