<p><b>dwj07@fsu.edu</b> 2012-06-06 09:18:54 -0600 (Wed, 06 Jun 2012)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        Making registry changes to support the provis pointer inside of a block.<br>
        Registry changes to support transferring non-decomposed fields  to multiple blocks.<br>
<br>
        Using the new registry changes in io_input.<br>
        Adding routines to copy a non-decomposed field from a header field to the other nodes in the field linked list.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/omp_blocks/multiple_blocks/src/framework/mpas_dmpar.F
===================================================================
--- branches/omp_blocks/multiple_blocks/src/framework/mpas_dmpar.F        2012-06-06 14:09:14 UTC (rev 1964)
+++ branches/omp_blocks/multiple_blocks/src/framework/mpas_dmpar.F        2012-06-06 15:18:54 UTC (rev 1965)
@@ -19,7 +19,6 @@
    integer, parameter :: IO_NODE = 0
    integer, parameter :: BUFSIZE = 6000
 
-
    interface mpas_dmpar_alltoall_field
       module procedure mpas_dmpar_alltoall_field1d_integer
       module procedure mpas_dmpar_alltoall_field2d_integer
@@ -51,6 +50,22 @@
    private :: mpas_dmpar_exch_halo_field2d_real
    private :: mpas_dmpar_exch_halo_field3d_real
 
+   interface mpas_dmpar_copy_field
+      module procedure mpas_dmpar_copy_field1d_integer
+      module procedure mpas_dmpar_copy_field2d_integer
+      module procedure mpas_dmpar_copy_field3d_integer
+      module procedure mpas_dmpar_copy_field1d_real
+      module procedure mpas_dmpar_copy_field2d_real
+      module procedure mpas_dmpar_copy_field3d_real
+   end interface
+
+   private :: mpas_dmpar_copy_field1d_integer
+   private :: mpas_dmpar_copy_field2d_integer
+   private :: mpas_dmpar_copy_field3d_integer
+   private :: mpas_dmpar_copy_field1d_real
+   private :: mpas_dmpar_copy_field2d_real
+   private :: mpas_dmpar_copy_field3d_real
+
    contains
 
    subroutine mpas_dmpar_init(dminfo, mpi_comm)!{{{
@@ -3678,8 +3693,6 @@
 
       dminfo =&gt; field % block % domain % dminfo
 
-      write(6,*) 'Halo exchange on....', field % fieldName
-
       if(present(haloLayersIn)) then
         nHaloLayers = size(haloLayersIn)
         allocate(haloLayers(nHaloLayers))
@@ -4252,4 +4265,83 @@
 
    end subroutine mpas_dmpar_destroy_exchange_list!}}}
 
+   subroutine mpas_dmpar_copy_field1d_integer(field)!{{{
+       type (field1dInteger), pointer :: field
+       type (field1dInteger), pointer :: fieldCursor
+
+       if(associated(field % next)) then
+         fieldCursor =&gt; field % next
+         do while(associated(fieldCursor))
+           fieldCursor % array = field % array
+           fieldCursor =&gt; fieldCursor % next
+         end do
+       end if
+   end subroutine mpas_dmpar_copy_field1d_integer!}}}
+
+   subroutine mpas_dmpar_copy_field2d_integer(field)!{{{
+       type (field2dInteger), pointer :: field
+       type (field2dInteger), pointer :: fieldCursor
+
+       if(associated(field % next)) then
+         fieldCursor =&gt; field % next
+         do while(associated(fieldCursor))
+           fieldCursor % array = field % array
+           fieldCursor =&gt; fieldCursor % next
+         end do
+       end if
+   end subroutine mpas_dmpar_copy_field2d_integer!}}}
+
+   subroutine mpas_dmpar_copy_field3d_integer(field)!{{{
+       type (field3dInteger), pointer :: field
+       type (field3dInteger), pointer :: fieldCursor
+
+       if(associated(field % next)) then
+         fieldCursor =&gt; field % next
+         do while(associated(fieldCursor))
+           fieldCursor % array = field % array
+           fieldCursor =&gt; fieldCursor % next
+         end do
+       end if
+   end subroutine mpas_dmpar_copy_field3d_integer!}}}
+
+   subroutine mpas_dmpar_copy_field1d_real(field)!{{{
+       type (field1dReal), pointer :: field
+       type (field1dReal), pointer :: fieldCursor
+
+
+       if(associated(field % next)) then
+         fieldCursor =&gt; field
+         do while(associated(fieldCursor))
+           fieldCursor % array(:) = field % array(:)
+           fieldCursor =&gt; fieldCursor % next
+         end do
+       end if
+   end subroutine mpas_dmpar_copy_field1d_real!}}}
+
+   subroutine mpas_dmpar_copy_field2d_real(field)!{{{
+       type (field2dReal), pointer :: field
+       type (field2dReal), pointer :: fieldCursor
+
+       if(associated(field % next)) then
+         fieldCursor =&gt; field % next
+         do while(associated(fieldCursor))
+           fieldCursor % array = field % array
+           fieldCursor =&gt; fieldCursor % next
+         end do
+       end if
+   end subroutine mpas_dmpar_copy_field2d_real!}}}
+
+   subroutine mpas_dmpar_copy_field3d_real(field)!{{{
+       type (field3dReal), pointer :: field
+       type (field3dReal), pointer :: fieldCursor
+
+       if(associated(field % next)) then
+         fieldCursor =&gt; field % next
+         do while(associated(fieldCursor))
+           fieldCursor % array = field % array
+           fieldCursor =&gt; fieldCursor % next
+         end do
+       end if
+   end subroutine mpas_dmpar_copy_field3d_real!}}}
+
 end module mpas_dmpar

Modified: branches/omp_blocks/multiple_blocks/src/framework/mpas_io_input.F
===================================================================
--- branches/omp_blocks/multiple_blocks/src/framework/mpas_io_input.F        2012-06-06 14:09:14 UTC (rev 1964)
+++ branches/omp_blocks/multiple_blocks/src/framework/mpas_io_input.F        2012-06-06 15:18:54 UTC (rev 1965)
@@ -881,6 +881,8 @@
 
 #include &quot;exchange_input_field_halos.inc&quot;
 
+#include &quot;non_decomp_copy_input_fields.inc&quot;
+
    end subroutine mpas_exch_input_field_halos!}}}
 
    subroutine mpas_io_input_finalize(input_obj, dminfo)!{{{

Modified: branches/omp_blocks/multiple_blocks/src/registry/gen_inc.c
===================================================================
--- branches/omp_blocks/multiple_blocks/src/registry/gen_inc.c        2012-06-06 14:09:14 UTC (rev 1964)
+++ branches/omp_blocks/multiple_blocks/src/registry/gen_inc.c        2012-06-06 15:18:54 UTC (rev 1965)
@@ -478,10 +478,12 @@
 
    group_ptr = groups;
    while (group_ptr) {
-      if (group_ptr-&gt;vlist-&gt;var-&gt;ntime_levs &gt; 1)
+      if (group_ptr-&gt;vlist-&gt;var-&gt;ntime_levs &gt; 1) {
          fortprintf(fd, &quot;      type (%s_multilevel_type), pointer :: %s</font>
<font color="red">&quot;, group_ptr-&gt;name, group_ptr-&gt;name);
-      else
+         fortprintf(fd, &quot;      type (%s_type), pointer :: provis</font>
<font color="blue">&quot;, group_ptr-&gt;name, group_ptr-&gt;name);
+          } else {
          fortprintf(fd, &quot;      type (%s_type), pointer :: %s</font>
<font color="gray">&quot;, group_ptr-&gt;name, group_ptr-&gt;name);
+          }
       group_ptr = group_ptr-&gt;next;
    }
 
@@ -1076,7 +1078,22 @@
                                   fortprintf(fd, &quot;         else</font>
<font color="black">&quot;);
                                   fortprintf(fd, &quot;           nullify(%s %% %s %% next)</font>
<font color="black">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array);
                                   fortprintf(fd, &quot;         end if</font>
<font color="black"></font>
<font color="red">&quot;);
-               }
+               } else {
+                                  fortprintf(fd, &quot;         nullify(%s %% %s %% sendList)</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array);
+                                  fortprintf(fd, &quot;         nullify(%s %% %s %% recvList)</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array);
+                                  fortprintf(fd, &quot;         nullify(%s %% %s %% copyList)</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array);
+                                  fortprintf(fd, &quot;         if(present(prev)) then</font>
<font color="blue">&quot;);
+                                  fortprintf(fd, &quot;           %s %% %s %% prev =&gt; prev %% %s</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array, var_ptr2-&gt;super_array);
+                                  fortprintf(fd, &quot;         else</font>
<font color="blue">&quot;);
+                                  fortprintf(fd, &quot;           nullify(%s %% %s %% prev)</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array);
+                                  fortprintf(fd, &quot;         end if</font>
<font color="blue">&quot;);
+                                  fortprintf(fd, &quot;         if(present(next)) then</font>
<font color="blue">&quot;);
+                                  fortprintf(fd, &quot;           %s %% %s %% next =&gt; next %% %s</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array, var_ptr2-&gt;super_array);
+                                  fortprintf(fd, &quot;         else</font>
<font color="blue">&quot;);
+                                  fortprintf(fd, &quot;           nullify(%s %% %s %% next)</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array);
+                                  fortprintf(fd, &quot;         end if</font>
<font color="black"></font>
<font color="blue">&quot;);
+
+                           }
             fortprintf(fd, &quot;</font>
<font color="gray">&quot;);
          }
          else 
@@ -1129,7 +1146,21 @@
                                   fortprintf(fd, &quot;         else</font>
<font color="black">&quot;);
                                   fortprintf(fd, &quot;           nullify(%s %% %s %% next)</font>
<font color="black">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code);
                                   fortprintf(fd, &quot;         end if</font>
<font color="black"></font>
<font color="red">&quot;);
-               }
+               } else {
+                  fortprintf(fd, &quot;         nullify(%s %% %s %% sendList)</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code);
+                  fortprintf(fd, &quot;         nullify(%s %% %s %% recvList)</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code);
+                  fortprintf(fd, &quot;         nullify(%s %% %s %% copyList)</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code);
+                                  fortprintf(fd, &quot;         if(present(prev)) then</font>
<font color="blue">&quot;);
+                                  fortprintf(fd, &quot;           %s %% %s %% prev =&gt; prev %% %s</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code, var_ptr-&gt;name_in_code);
+                                  fortprintf(fd, &quot;         else</font>
<font color="blue">&quot;);
+                                  fortprintf(fd, &quot;           nullify(%s %% %s %% prev)</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code);
+                                  fortprintf(fd, &quot;         end if</font>
<font color="blue">&quot;);
+                                  fortprintf(fd, &quot;         if(present(next)) then</font>
<font color="blue">&quot;);
+                                  fortprintf(fd, &quot;           %s %% %s %% next =&gt; next %% %s</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code, var_ptr-&gt;name_in_code);
+                                  fortprintf(fd, &quot;         else</font>
<font color="blue">&quot;);
+                                  fortprintf(fd, &quot;           nullify(%s %% %s %% next)</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code);
+                                  fortprintf(fd, &quot;         end if</font>
<font color="black"></font>
<font color="blue">&quot;);
+                           }
                fortprintf(fd, &quot;</font>
<font color="gray">&quot;);
             }
             var_list_ptr = var_list_ptr-&gt;next;
@@ -1153,7 +1184,7 @@
    struct dimension_list * dimlist_ptr, * lastdim;
    struct group_list * group_ptr;
    struct dtable * dictionary;
-   FILE * fd;
+   FILE * fd, *fd2;
    char vtype[5];
    char fname[32];
    char super_array[1024];
@@ -1903,6 +1934,7 @@
     * MGD NEW CODE
     */
    fd = fopen(&quot;exchange_input_field_halos.inc&quot;, &quot;w&quot;);
+   fd2 = fopen(&quot;non_decomp_copy_input_fields.inc&quot;, &quot;w&quot;);
 
    group_ptr = groups;
    while (group_ptr) {
@@ -1918,10 +1950,11 @@
                    !strncmp(dimlist_ptr-&gt;dim-&gt;name_in_file, &quot;nEdges&quot;, 1024) ||
                    !strncmp(dimlist_ptr-&gt;dim-&gt;name_in_file, &quot;nVertices&quot;, 1024)) {
    
-                  if (var_ptr-&gt;ntime_levs &gt; 1)
+                  if (var_ptr-&gt;ntime_levs &gt; 1) {
                      snprintf(struct_deref, 1024, &quot;domain %% blocklist %% %s %% time_levs(1) %% %s&quot;, group_ptr-&gt;name, group_ptr-&gt;name);
-                  else
+                                  } else {
                      snprintf(struct_deref, 1024, &quot;domain %% blocklist %% %s&quot;, group_ptr-&gt;name);
+                                  }
                   
                   if (strncmp(var_ptr-&gt;super_array, &quot;-&quot;, 1024) != 0) {
                      fortprintf(fd, &quot;      if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &amp;</font>
<font color="gray">&quot;, struct_deref, var_ptr-&gt;super_array);
@@ -1944,7 +1977,13 @@
             
                   fortprintf(fd, &quot;      end if</font>
<font color="black"></font>
<font color="red">&quot;);
    
-               }
+               } else {
+                  fortprintf(fd2, &quot;      if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &amp;</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;name_in_code);
+                  fortprintf(fd2, &quot;          (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART) .or. &amp;</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;name_in_code);
+                  fortprintf(fd2, &quot;          (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC)) then</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;name_in_code);
+                                  fortprintf(fd2, &quot;          call mpas_dmpar_copy_field(%s %% %s)</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;name_in_code);
+                  fortprintf(fd2, &quot;      end if</font>
<font color="black"></font>
<font color="gray">&quot;);
+                           }
             }
    
             i++;
@@ -1957,6 +1996,7 @@
    }
 
    fclose(fd);
+   fclose(fd2);
 
 
 #ifdef LEGACY_CODE

Modified: branches/omp_blocks/multiple_blocks/src/registry/registry_types.h
===================================================================
--- branches/omp_blocks/multiple_blocks/src/registry/registry_types.h        2012-06-06 14:09:14 UTC (rev 1964)
+++ branches/omp_blocks/multiple_blocks/src/registry/registry_types.h        2012-06-06 15:18:54 UTC (rev 1965)
@@ -71,6 +71,7 @@
    int timedim;
    int ntime_levs;
    int iostreams;
+   int decomposed;
    struct dimension_list * dimlist;
    struct variable * next;
 };

</font>
</pre>