<p><b>dwj07@fsu.edu</b> 2012-04-25 10:55:59 -0600 (Wed, 25 Apr 2012)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        Updating gen_inc.c to make the create_field_links subroutines create links between multiple blocks.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/omp_blocks/multiple_blocks/src/registry/gen_inc.c
===================================================================
--- branches/omp_blocks/multiple_blocks/src/registry/gen_inc.c        2012-04-25 16:48:21 UTC (rev 1810)
+++ branches/omp_blocks/multiple_blocks/src/registry/gen_inc.c        2012-04-25 16:55:59 UTC (rev 1811)
@@ -909,7 +909,18 @@
    /* subroutine to call link subroutine for every field type */
    fortprintf(fd, "      subroutine mpas_create_field_links(b)</font>
<font color="black"></font>
<font color="black">");
    fortprintf(fd, "         implicit none</font>
<font color="red">");
-   fortprintf(fd, "         type (block_type), pointer :: b</font>
<font color="black"></font>
<font color="blue">");
+   fortprintf(fd, "         type (block_type), pointer :: b</font>
<font color="blue">");
+   fortprintf(fd, "         type (block_type), pointer :: prev, next</font>
<font color="black"></font>
<font color="blue">");
+   fortprintf(fd, "         if(associated(b %% prev)) then</font>
<font color="blue">");
+   fortprintf(fd, "           prev => b %% prev</font>
<font color="blue">");
+   fortprintf(fd, "         else</font>
<font color="blue">");
+   fortprintf(fd, "           nullify(prev)</font>
<font color="blue">");
+   fortprintf(fd, "         end if</font>
<font color="blue">");
+   fortprintf(fd, "         if(associated(b %% next)) then</font>
<font color="blue">");
+   fortprintf(fd, "           next => b %% next</font>
<font color="blue">");
+   fortprintf(fd, "         else</font>
<font color="blue">");
+   fortprintf(fd, "           nullify(next)</font>
<font color="blue">");
+   fortprintf(fd, "         end if</font>
<font color="black"></font>
<font color="gray">");
    group_ptr = groups;
    while (group_ptr)
    {
@@ -937,12 +948,28 @@
          {
             for(i=1; i<=ntime_levs; i++) 
             {
-               fortprintf(fd, "         call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, i, group_ptr->name);
+                                fortprintf(fd, "         if(associated(next) .and. associated(prev)) then</font>
<font color="blue">");        
+                                fortprintf(fd, "           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s, prev = prev %% %s %% time_levs(%i) %% %s, next = next %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, i, group_ptr->name, i, group_ptr->name, group_ptr->name, i, group_ptr->name);
+                                fortprintf(fd, "         else if(associated(next)) then</font>
<font color="blue">");        
+                                fortprintf(fd, "           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s, next = next %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, i, group_ptr->name, group_ptr->name, i, group_ptr->name);
+                                fortprintf(fd, "         else if(associated(prev)) then</font>
<font color="blue">");        
+                                fortprintf(fd, "           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s, prev = prev %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, i, group_ptr->name, group_ptr->name, i, group_ptr->name);
+                                fortprintf(fd, "         else</font>
<font color="blue">");
+                                fortprintf(fd, "           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, i, group_ptr->name);
+                                fortprintf(fd, "         end if</font>
<font color="black"></font>
<font color="red">");
             }        
          }
          else
          {
-            fortprintf(fd, "         call mpas_create_%s_links(b %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name); 
+                        fortprintf(fd, "         if(associated(next) .and. associated(prev)) then</font>
<font color="blue">");        
+            fortprintf(fd, "           call mpas_create_%s_links(b %% %s, prev = prev %% %s, next = next %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, group_ptr->name, group_ptr->name); 
+                        fortprintf(fd, "         else if(associated(next)) then</font>
<font color="blue">");        
+            fortprintf(fd, "           call mpas_create_%s_links(b %% %s, next = next %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, group_ptr->name); 
+                        fortprintf(fd, "         else if(associated(prev)) then</font>
<font color="blue">");        
+            fortprintf(fd, "           call mpas_create_%s_links(b %% %s, prev = prev %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, group_ptr->name); 
+                        fortprintf(fd, "         else</font>
<font color="blue">");
+            fortprintf(fd, "           call mpas_create_%s_links(b %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name); 
+                        fortprintf(fd, "         end if</font>
<font color="black"></font>
<font color="gray">");
          }
      }
      else if (var_ptr->ndims > 0)
@@ -954,12 +981,28 @@
          {
             for(i=1; i<=ntime_levs; i++) 
             {
-               fortprintf(fd, "         call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, i, group_ptr->name);
+                                fortprintf(fd, "         if(associated(next) .and. associated(prev)) then</font>
<font color="blue">");        
+                                fortprintf(fd, "           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s, prev = prev %% %s %% time_levs(%i) %% %s, next = next %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, i, group_ptr->name, group_ptr->name, i, group_ptr->name, group_ptr->name, i, group_ptr->name);
+                                fortprintf(fd, "         else if(associated(next)) then</font>
<font color="blue">");        
+                                fortprintf(fd, "           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s, next = next %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, i, group_ptr->name, group_ptr->name, i, group_ptr->name);
+                                fortprintf(fd, "         else if(associated(prev)) then</font>
<font color="blue">");        
+                                fortprintf(fd, "           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s, prev = prev %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, i, group_ptr->name, group_ptr->name, i, group_ptr->name);
+                                fortprintf(fd, "         else</font>
<font color="blue">");
+                                fortprintf(fd, "           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, i, group_ptr->name);
+                                fortprintf(fd, "         end if</font>
<font color="black"></font>
<font color="red">");
             }        
          }
          else
          {
-            fortprintf(fd, "         call mpas_create_%s_links(b %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name); 
+                         fortprintf(fd, "         if(associated(next) .and. associated(prev)) then</font>
<font color="blue">");        
+                         fortprintf(fd, "           call mpas_create_%s_links(b %% %s, prev = prev %% %s, next = next %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, group_ptr->name, group_ptr->name);
+                         fortprintf(fd, "         else if(associated(next)) then</font>
<font color="blue">");        
+                         fortprintf(fd, "           call mpas_create_%s_links(b %% %s, next = next %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, group_ptr->name); 
+                         fortprintf(fd, "         else if(associated(prev)) then</font>
<font color="blue">");        
+                         fortprintf(fd, "           call mpas_create_%s_links(b %% %s, prev = prev %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name, group_ptr->name); 
+                         fortprintf(fd, "         else</font>
<font color="blue">");
+                         fortprintf(fd, "           call mpas_create_%s_links(b %% %s)</font>
<font color="blue">", group_ptr->name, group_ptr->name); 
+                         fortprintf(fd, "         end if</font>
<font color="black"></font>
<font color="gray">");
          }
      }
 
@@ -971,9 +1014,10 @@
    group_ptr = groups;
 
    while (group_ptr) {
-      fortprintf(fd, "      subroutine mpas_create_%s_links(%s)</font>
<font color="black"></font>
<font color="blue">", group_ptr->name, group_ptr->name); 
+      fortprintf(fd, "      subroutine mpas_create_%s_links(%s, prev, next)</font>
<font color="black"></font>
<font color="black">", group_ptr->name, group_ptr->name); 
       fortprintf(fd, "         implicit none</font>
<font color="red">");
-      fortprintf(fd, "         type (%s_type), pointer :: %s</font>
<font color="black"></font>
<font color="blue">", group_ptr->name, group_ptr->name);
+      fortprintf(fd, "         type (%s_type), pointer :: %s</font>
<font color="blue">", group_ptr->name, group_ptr->name);
+          fortprintf(fd, "         type (%s_type), pointer, optional :: prev, next</font>
<font color="gray">", group_ptr->name);
 
       var_list_ptr = group_ptr->vlist;
       while (var_list_ptr) {
@@ -992,16 +1036,46 @@
                   fortprintf(fd, "         %s %% %s %% sendList => %s %% %s %% block %% parinfo %% cellsToSend</font>
<font color="black">", group_ptr->name, var_ptr2->super_array, group_ptr->name, var_ptr2->super_array);
                   fortprintf(fd, "         %s %% %s %% recvList => %s %% %s %% block %% parinfo %% cellsToRecv</font>
<font color="black">", group_ptr->name, var_ptr2->super_array, group_ptr->name, var_ptr2->super_array);
                   fortprintf(fd, "         %s %% %s %% copyList => %s %% %s %% block %% parinfo %% cellsToCopy</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, group_ptr->name, var_ptr2->super_array);
+                                  fortprintf(fd, "         if(present(prev)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% prev => prev %% %s</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, var_ptr2->super_array);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% prev)</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+                                  fortprintf(fd, "         end if</font>
<font color="blue">");
+                                  fortprintf(fd, "         if(present(next)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% next => next %% %s</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, var_ptr2->super_array);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% next)</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+                                  fortprintf(fd, "         end if</font>
<font color="black"></font>
<font color="black">");
                }
                else if (strncmp("nEdges",outer_dim,1024) == 0) {
                   fortprintf(fd, "         %s %% %s %% sendList => %s %% %s %% block %% parinfo %% edgesToSend</font>
<font color="black">", group_ptr->name, var_ptr2->super_array, group_ptr->name, var_ptr2->super_array);
                   fortprintf(fd, "         %s %% %s %% recvList => %s %% %s %% block %% parinfo %% edgesToRecv</font>
<font color="black">", group_ptr->name, var_ptr2->super_array, group_ptr->name, var_ptr2->super_array);
                   fortprintf(fd, "         %s %% %s %% copyList => %s %% %s %% block %% parinfo %% edgesToCopy</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, group_ptr->name, var_ptr2->super_array);
+                                  fortprintf(fd, "         if(present(prev)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% prev => prev %% %s</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, var_ptr2->super_array);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% prev)</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+                                  fortprintf(fd, "         end if</font>
<font color="blue">");
+                                  fortprintf(fd, "         if(present(next)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% next => next %% %s</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, var_ptr2->super_array);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% next)</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+                                  fortprintf(fd, "         end if</font>
<font color="black"></font>
<font color="black">");
                }
                else if (strncmp("nVertices",outer_dim,1024) == 0) {
                   fortprintf(fd, "         %s %% %s %% sendList => %s %% %s %% block %% parinfo %% verticesToSend</font>
<font color="black">", group_ptr->name, var_ptr2->super_array, group_ptr->name, var_ptr2->super_array);
                   fortprintf(fd, "         %s %% %s %% recvList => %s %% %s %% block %% parinfo %% verticesToRecv</font>
<font color="black">", group_ptr->name, var_ptr2->super_array, group_ptr->name, var_ptr2->super_array);
                   fortprintf(fd, "         %s %% %s %% copyList => %s %% %s %% block %% parinfo %% verticesToCopy</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, group_ptr->name, var_ptr2->super_array);
+                                  fortprintf(fd, "         if(present(prev)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% prev => prev %% %s</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, var_ptr2->super_array);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% prev)</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+                                  fortprintf(fd, "         end if</font>
<font color="blue">");
+                                  fortprintf(fd, "         if(present(next)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% next => next %% %s</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, var_ptr2->super_array);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% next)</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+                                  fortprintf(fd, "         end if</font>
<font color="black"></font>
<font color="black">");
                }
             fortprintf(fd, "</font>
<font color="gray">");
          }
@@ -1015,16 +1089,46 @@
                   fortprintf(fd, "         %s %% %s %% sendList => %s %% %s %% block %% parinfo %% cellsToSend</font>
<font color="black">", group_ptr->name, var_ptr->name_in_code, group_ptr->name, var_ptr->name_in_code);
                   fortprintf(fd, "         %s %% %s %% recvList => %s %% %s %% block %% parinfo %% cellsToRecv</font>
<font color="black">", group_ptr->name, var_ptr->name_in_code, group_ptr->name, var_ptr->name_in_code);
                   fortprintf(fd, "         %s %% %s %% copyList => %s %% %s %% block %% parinfo %% cellsToCopy</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, group_ptr->name, var_ptr->name_in_code);
+                                  fortprintf(fd, "         if(present(prev)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% prev => prev %% %s</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, var_ptr->name_in_code);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% prev)</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+                                  fortprintf(fd, "         end if</font>
<font color="blue">");
+                                  fortprintf(fd, "         if(present(next)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% next => next %% %s</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, var_ptr->name_in_code);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% next)</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+                                  fortprintf(fd, "         end if</font>
<font color="black"></font>
<font color="black">");
                }
                else if (strncmp("nEdges",outer_dim,1024) == 0) {
                   fortprintf(fd, "         %s %% %s %% sendList => %s %% %s %% block %% parinfo %% edgesToSend</font>
<font color="black">", group_ptr->name, var_ptr->name_in_code, group_ptr->name, var_ptr->name_in_code);
                   fortprintf(fd, "         %s %% %s %% recvList => %s %% %s %% block %% parinfo %% edgesToRecv</font>
<font color="black">", group_ptr->name, var_ptr->name_in_code, group_ptr->name, var_ptr->name_in_code);
                   fortprintf(fd, "         %s %% %s %% copyList => %s %% %s %% block %% parinfo %% edgesToCopy</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, group_ptr->name, var_ptr->name_in_code);
+                                  fortprintf(fd, "         if(present(prev)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% prev => prev %% %s</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, var_ptr->name_in_code);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% prev)</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+                                  fortprintf(fd, "         end if</font>
<font color="blue">");
+                                  fortprintf(fd, "         if(present(next)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% next => next %% %s</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, var_ptr->name_in_code);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% next)</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+                                  fortprintf(fd, "         end if</font>
<font color="black"></font>
<font color="black">");
                }
                else if (strncmp("nVertices",outer_dim,1024) == 0) {
                   fortprintf(fd, "         %s %% %s %% sendList => %s %% %s %% block %% parinfo %% verticesToSend</font>
<font color="black">", group_ptr->name, var_ptr->name_in_code, group_ptr->name, var_ptr->name_in_code);
                   fortprintf(fd, "         %s %% %s %% recvList => %s %% %s %% block %% parinfo %% verticesToRecv</font>
<font color="black">", group_ptr->name, var_ptr->name_in_code, group_ptr->name, var_ptr->name_in_code);
                   fortprintf(fd, "         %s %% %s %% copyList => %s %% %s %% block %% parinfo %% verticesToCopy</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, group_ptr->name, var_ptr->name_in_code);
+                                  fortprintf(fd, "         if(present(prev)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% prev => prev %% %s</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, var_ptr->name_in_code);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% prev)</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+                                  fortprintf(fd, "         end if</font>
<font color="blue">");
+                                  fortprintf(fd, "         if(present(next)) then</font>
<font color="blue">");
+                                  fortprintf(fd, "           %s %% %s %% next => next %% %s</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, var_ptr->name_in_code);
+                                  fortprintf(fd, "         else</font>
<font color="blue">");
+                                  fortprintf(fd, "           nullify(%s %% %s %% next)</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+                                  fortprintf(fd, "         end if</font>
<font color="black"></font>
<font color="black">");
                }
                fortprintf(fd, "</font>
<font color="black">");
             }
</font>
</pre>