<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>