<p><b>duda</b> 2012-01-06 18:18:10 -0700 (Fri, 06 Jan 2012)</p><p>BRANCH COMMIT<br>
<br>
Add new members to field DDTs: dims, timeDimension, prev, next, sendList, recvList, and copyList.<br>
Also add code to set or link these fields appropriately.<br>
<br>
Minor bug fixes: correct the number of time levels in a few variables in the ocean and nhyd_atmos<br>
registries.<br>
<br>
<br>
M src/core_sw/mpas_sw_time_integration.F<br>
M src/registry/gen_inc.c<br>
M src/core_nhyd_atmos/Registry<br>
M src/core_ocean/mpas_ocn_time_integration_rk4.F<br>
M src/core_ocean/Registry<br>
M src/framework/mpas_io_input.F<br>
M src/framework/mpas_grid_types.F<br>
</p><hr noshade><pre><font color="gray">Modified: branches/omp_blocks/ddt_reorg/src/core_nhyd_atmos/Registry
===================================================================
--- branches/omp_blocks/ddt_reorg/src/core_nhyd_atmos/Registry        2012-01-06 22:48:40 UTC (rev 1317)
+++ branches/omp_blocks/ddt_reorg/src/core_nhyd_atmos/Registry        2012-01-07 01:18:10 UTC (rev 1318)
@@ -280,7 +280,7 @@
% Space needed for deformation calculation weights
var persistent real defc_a ( maxEdges nCells ) 0 iro defc_a mesh - -
var persistent real defc_b ( maxEdges nCells ) 0 iro defc_b mesh - -
-var persistent real kdiff ( nVertLevels nCells Time ) 2 - kdiff diag - -
+var persistent real kdiff ( nVertLevels nCells Time ) 1 - kdiff diag - -
% Arrays required for reconstruction of velocity field
var persistent real coeffs_reconstruct ( R3 maxEdges nCells ) 0 iro coeffs_reconstruct mesh - -
Modified: branches/omp_blocks/ddt_reorg/src/core_ocean/Registry
===================================================================
--- branches/omp_blocks/ddt_reorg/src/core_ocean/Registry        2012-01-06 22:48:40 UTC (rev 1317)
+++ branches/omp_blocks/ddt_reorg/src/core_ocean/Registry        2012-01-07 01:18:10 UTC (rev 1318)
@@ -207,13 +207,13 @@
var persistent real ssh ( nCells Time ) 2 o ssh state - -
var persistent real uBtrSubcycle ( nEdges Time ) 2 - uBtrSubcycle state - -
var persistent real sshSubcycle ( nCells Time ) 2 - sshSubcycle state - -
-var persistent real FBtr ( nEdges Time ) 1 - FBtr state - -
-var persistent real GBtrForcing ( nEdges Time ) 1 - GBtrForcing state - -
+var persistent real FBtr ( nEdges Time ) 2 - FBtr state - -
+var persistent real GBtrForcing ( nEdges Time ) 2 - GBtrForcing state - -
var persistent real uBcl ( nVertLevels nEdges Time ) 2 - uBcl state - -
-var persistent real circulationBtr ( nVertices Time ) 1 - circulationBtr state - -
-var persistent real divergenceBtr ( nCells Time ) 1 - divergenceBtr state - -
-var persistent real vorticityBtr ( nVertices Time ) 1 - vorticityBtr state - -
-var persistent real u_diffusionBtr ( nEdges Time ) 1 - u_diffusionBtr state - -
+var persistent real circulationBtr ( nVertices Time ) 2 - circulationBtr state - -
+var persistent real divergenceBtr ( nCells Time ) 2 - divergenceBtr state - -
+var persistent real vorticityBtr ( nVertices Time ) 2 - vorticityBtr state - -
+var persistent real u_diffusionBtr ( nEdges Time ) 2 - u_diffusionBtr state - -
% Diagnostic fields: only written to output
var persistent real v ( nVertLevels nEdges Time ) 2 - v state - -
Modified: branches/omp_blocks/ddt_reorg/src/core_ocean/mpas_ocn_time_integration_rk4.F
===================================================================
--- branches/omp_blocks/ddt_reorg/src/core_ocean/mpas_ocn_time_integration_rk4.F        2012-01-06 22:48:40 UTC (rev 1317)
+++ branches/omp_blocks/ddt_reorg/src/core_ocean/mpas_ocn_time_integration_rk4.F        2012-01-07 01:18:10 UTC (rev 1318)
@@ -95,7 +95,7 @@
block => domain % blocklist
- call mpas_allocate_state(provis, &
+ call mpas_allocate_state(block, provis, &
block % mesh % nCells, block % mesh % nEdges, block % mesh % maxEdges, block % mesh % maxEdges2, &
block % mesh % nVertices, block % mesh % vertexDegree, block % mesh % nVertLevels )
Modified: branches/omp_blocks/ddt_reorg/src/core_sw/mpas_sw_time_integration.F
===================================================================
--- branches/omp_blocks/ddt_reorg/src/core_sw/mpas_sw_time_integration.F        2012-01-06 22:48:40 UTC (rev 1317)
+++ branches/omp_blocks/ddt_reorg/src/core_sw/mpas_sw_time_integration.F        2012-01-07 01:18:10 UTC (rev 1318)
@@ -70,7 +70,7 @@
real (kind=RKIND), dimension(4) :: rk_weights, rk_substep_weights
block => domain % blocklist
- call mpas_allocate_state(provis, &
+ call mpas_allocate_state(block, provis, &
block % mesh % nCells, block % mesh % nEdges, block % mesh % maxEdges, block % mesh % maxEdges2, &
block % mesh % nVertices, block % mesh % vertexDegree, block % mesh % nVertLevels, &
block % mesh % nTracers)
Modified: branches/omp_blocks/ddt_reorg/src/framework/mpas_grid_types.F
===================================================================
--- branches/omp_blocks/ddt_reorg/src/framework/mpas_grid_types.F        2012-01-06 22:48:40 UTC (rev 1317)
+++ branches/omp_blocks/ddt_reorg/src/framework/mpas_grid_types.F        2012-01-07 01:18:10 UTC (rev 1318)
@@ -24,6 +24,12 @@
type (block_type), pointer :: block
real (kind=RKIND), dimension(:,:,:), pointer :: array
type (io_info), pointer :: ioinfo
+ integer, dimension(3) :: dims
+ logical :: timeDimension
+ type (field3DReal), pointer :: prev, next
+ type (exchange_list), pointer :: sendList
+ type (exchange_list), pointer :: recvList
+ type (exchange_list), pointer :: copyList
end type field3DReal
@@ -32,6 +38,12 @@
type (block_type), pointer :: block
real (kind=RKIND), dimension(:,:), pointer :: array
type (io_info), pointer :: ioinfo
+ integer, dimension(2) :: dims
+ logical :: timeDimension
+ type (field2DReal), pointer :: prev, next
+ type (exchange_list), pointer :: sendList
+ type (exchange_list), pointer :: recvList
+ type (exchange_list), pointer :: copyList
end type field2DReal
@@ -40,6 +52,12 @@
type (block_type), pointer :: block
real (kind=RKIND), dimension(:), pointer :: array
type (io_info), pointer :: ioinfo
+ integer, dimension(1) :: dims
+ logical :: timeDimension
+ type (field1DReal), pointer :: prev, next
+ type (exchange_list), pointer :: sendList
+ type (exchange_list), pointer :: recvList
+ type (exchange_list), pointer :: copyList
end type field1DReal
@@ -48,6 +66,11 @@
type (block_type), pointer :: block
real (kind=RKIND) :: scalar
type (io_info), pointer :: ioinfo
+ logical :: timeDimension
+ type (field0DReal), pointer :: prev, next
+ type (exchange_list), pointer :: sendList
+ type (exchange_list), pointer :: recvList
+ type (exchange_list), pointer :: copyList
end type field0DReal
@@ -56,6 +79,12 @@
type (block_type), pointer :: block
integer, dimension(:,:), pointer :: array
type (io_info), pointer :: ioinfo
+ integer, dimension(2) :: dims
+ logical :: timeDimension
+ type (field2DInteger), pointer :: prev, next
+ type (exchange_list), pointer :: sendList
+ type (exchange_list), pointer :: recvList
+ type (exchange_list), pointer :: copyList
end type field2DInteger
@@ -64,6 +93,12 @@
type (block_type), pointer :: block
integer, dimension(:), pointer :: array
type (io_info), pointer :: ioinfo
+ integer, dimension(1) :: dims
+ logical :: timeDimension
+ type (field1DInteger), pointer :: prev, next
+ type (exchange_list), pointer :: sendList
+ type (exchange_list), pointer :: recvList
+ type (exchange_list), pointer :: copyList
end type field1DInteger
@@ -72,6 +107,12 @@
type (block_type), pointer :: block
character (len=64), dimension(:), pointer :: array
type (io_info), pointer :: ioinfo
+ integer, dimension(1) :: dims
+ logical :: timeDimension
+ type (field1DChar), pointer :: prev, next
+ type (exchange_list), pointer :: sendList
+ type (exchange_list), pointer :: recvList
+ type (exchange_list), pointer :: copyList
end type field1DChar
@@ -80,6 +121,11 @@
type (block_type), pointer :: block
character (len=64) :: scalar
type (io_info), pointer :: ioinfo
+ logical :: timeDimension
+ type (field0DChar), pointer :: prev, next
+ type (exchange_list), pointer :: sendList
+ type (exchange_list), pointer :: recvList
+ type (exchange_list), pointer :: copyList
end type field0DChar
@@ -223,4 +269,15 @@
#include "group_shift_level_routines.inc"
+
+ subroutine mpas_create_field_links(b)
+
+ implicit none
+
+ type (block_type), pointer :: b
+
+#include "field_links.inc"
+
+ end subroutine mpas_create_field_links
+
end module mpas_grid_types
Modified: branches/omp_blocks/ddt_reorg/src/framework/mpas_io_input.F
===================================================================
--- branches/omp_blocks/ddt_reorg/src/framework/mpas_io_input.F        2012-01-06 22:48:40 UTC (rev 1317)
+++ branches/omp_blocks/ddt_reorg/src/framework/mpas_io_input.F        2012-01-07 01:18:10 UTC (rev 1318)
@@ -968,6 +968,11 @@
domain % blocklist % mesh % nVerticesSolve = ghostVertexStart-1
domain % blocklist % mesh % nVertLevelsSolve = domain % blocklist % mesh % nVertLevels ! No vertical decomp yet...
+ ! Link the sendList and recvList pointers in each field type to the appropriate lists
+ ! in parinfo, e.g., cellsToSend and cellsToRecv; in future, it can also be extended to
+ ! link blocks of fields to eachother
+ call mpas_create_field_links(domain % blocklist)
+
!
! Deallocate fields, graphs, and other memory
Modified: branches/omp_blocks/ddt_reorg/src/registry/gen_inc.c
===================================================================
--- branches/omp_blocks/ddt_reorg/src/registry/gen_inc.c        2012-01-06 22:48:40 UTC (rev 1317)
+++ branches/omp_blocks/ddt_reorg/src/registry/gen_inc.c        2012-01-07 01:18:10 UTC (rev 1318)
@@ -14,6 +14,18 @@
return 0;
}
+
+void get_outer_dim(struct variable * var, char * last_dim)
+{
+ struct dimension_list * dimlist_ptr;
+
+
+ dimlist_ptr = var->dimlist;
+ while (dimlist_ptr->next) dimlist_ptr = dimlist_ptr->next;
+
+ strcpy(last_dim, dimlist_ptr->dim->name_in_file);
+}
+
void split_derived_dim_string(char * dim, char ** p1, char ** p2)
{
char * cp, * cm, * c;
@@ -162,6 +174,7 @@
FILE * fd;
char super_array[1024];
char array_class[1024];
+ char outer_dim[1024];
int i;
int class_start, class_end;
int vtype;
@@ -474,13 +487,13 @@
fortprintf(fd, " allocate(b %% %s %% time_levs(%i))</font>
<font color="black">", group_ptr->name, group_ptr->vlist->var->ntime_levs);
fortprintf(fd, " do i=1,b %% %s %% nTimeLevels</font>
<font color="black">", group_ptr->name);
fortprintf(fd, " allocate(b %% %s %% time_levs(i) %% %s)</font>
<font color="red">", group_ptr->name, group_ptr->name);
- fortprintf(fd, " call mpas_allocate_%s(b %% %s %% time_levs(i) %% %s, &</font>
<font color="blue">", group_ptr->name, group_ptr->name, group_ptr->name);
+ fortprintf(fd, " call mpas_allocate_%s(b, b %% %s %% time_levs(i) %% %s, &</font>
<font color="black">", group_ptr->name, group_ptr->name, group_ptr->name);
fortprintf(fd, "#include \"dim_dummy_args.inc\"</font>
<font color="black">");
fortprintf(fd, " )</font>
<font color="black">");
fortprintf(fd, " end do</font>
<font color="black"></font>
<font color="red">");
}
else {
- fortprintf(fd, " call mpas_allocate_%s(b %% %s, &</font>
<font color="blue">", group_ptr->name, group_ptr->name);
+ fortprintf(fd, " call mpas_allocate_%s(b, b %% %s, &</font>
<font color="black">", group_ptr->name, group_ptr->name);
fortprintf(fd, "#include \"dim_dummy_args.inc\"</font>
<font color="black">");
fortprintf(fd, " )</font>
<font color="black"></font>
<font color="gray">");
}
@@ -512,12 +525,13 @@
fd = fopen("group_alloc_routines.inc", "w");
group_ptr = groups;
while (group_ptr) {
- fortprintf(fd, " subroutine mpas_allocate_%s(%s, &</font>
<font color="blue">", group_ptr->name, group_ptr->name);
+ fortprintf(fd, " subroutine mpas_allocate_%s(b, %s, &</font>
<font color="black">", group_ptr->name, group_ptr->name);
fortprintf(fd, "#include \"dim_dummy_args.inc\"</font>
<font color="black">");
fortprintf(fd, " )</font>
<font color="black">");
fortprintf(fd, "</font>
<font color="black">");
fortprintf(fd, " implicit none</font>
<font color="black">");
fortprintf(fd, "</font>
<font color="blue">");
+ fortprintf(fd, " type (block_type), pointer :: b</font>
<font color="black">");
fortprintf(fd, " type (%s_type), intent(inout) :: %s</font>
<font color="black">", group_ptr->name, group_ptr->name);
fortprintf(fd, "#include \"dim_dummy_decls.inc\"</font>
<font color="black">");
fortprintf(fd, "</font>
<font color="gray">");
@@ -578,6 +592,29 @@
else if (var_ptr->vtype == CHARACTER)
fortprintf(fd, " %s %% %s %% array = \'\'</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array ); /* initialize field to zero */
+ fortprintf(fd, " %s %% %s %% dims(1) = %i</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, i);
+ dimlist_ptr = var_ptr2->dimlist;
+ i = 2;
+ while (dimlist_ptr) {
+ if (!strncmp(dimlist_ptr->dim->name_in_file, "nCells", 1024) ||
+ !strncmp(dimlist_ptr->dim->name_in_file, "nEdges", 1024) ||
+ !strncmp(dimlist_ptr->dim->name_in_file, "nVertices", 1024))
+ if (!dimlist_ptr->dim->namelist_defined) fortprintf(fd, " %s %% %s %% dims(%i) = %s</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, i, dimlist_ptr->dim->name_in_code);
+ else fortprintf(fd, " %s %% %s %% dims(%i) = %s</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, i, dimlist_ptr->dim->name_in_file);
+ else
+ if (dimlist_ptr->dim->namelist_defined) fortprintf(fd, " %s %% %s %% dims(%i) = %s</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, i, dimlist_ptr->dim->name_in_file);
+ else fortprintf(fd, " %s %% %s %% dims(%i) = %s</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array, i, dimlist_ptr->dim->name_in_code);
+ i++;
+ dimlist_ptr = dimlist_ptr->next;
+ }
+ if (var_ptr2->timedim) fortprintf(fd, " %s %% %s %% timeDimension = .true.</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+ else fortprintf(fd, " %s %% %s %% timeDimension = .false.</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+ fortprintf(fd, " nullify(%s %% %s %% prev)</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+ fortprintf(fd, " nullify(%s %% %s %% next)</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+ fortprintf(fd, " nullify(%s %% %s %% sendList)</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+ fortprintf(fd, " nullify(%s %% %s %% recvList)</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+ fortprintf(fd, " nullify(%s %% %s %% copyList)</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+
if (var_ptr2->iostreams & INPUT0)
fortprintf(fd, " %s %% %s %% ioinfo %% input = .true.</font>
<font color="gray">", group_ptr->name, var_ptr2->super_array);
else
@@ -597,6 +634,8 @@
fortprintf(fd, " %s %% %s %% ioinfo %% output = .true.</font>
<font color="black">", group_ptr->name, var_ptr2->super_array);
else
fortprintf(fd, " %s %% %s %% ioinfo %% output = .false.</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+
+ fortprintf(fd, " %s %% %s %% block => b</font>
<font color="black">", group_ptr->name, var_ptr2->super_array);
fortprintf(fd, "</font>
<font color="gray">");
}
else {
@@ -633,7 +672,30 @@
else if (var_ptr->vtype == CHARACTER)
fortprintf(fd, " %s %% %s %% array = \'\'</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code ); /* initialize field to zero */
+ dimlist_ptr = var_ptr->dimlist;
+ i = 1;
+ while (dimlist_ptr) {
+ if (!strncmp(dimlist_ptr->dim->name_in_file, "nCells", 1024) ||
+ !strncmp(dimlist_ptr->dim->name_in_file, "nEdges", 1024) ||
+ !strncmp(dimlist_ptr->dim->name_in_file, "nVertices", 1024))
+ if (!dimlist_ptr->dim->namelist_defined) fortprintf(fd, " %s %% %s %% dims(%i) = %s</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, i, dimlist_ptr->dim->name_in_code);
+ else fortprintf(fd, " %s %% %s %% dims(%i) = %s</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, i, dimlist_ptr->dim->name_in_file);
+ else
+ if (dimlist_ptr->dim->namelist_defined) fortprintf(fd, " %s %% %s %% dims(%i) = %s</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, i, dimlist_ptr->dim->name_in_file);
+ else fortprintf(fd, " %s %% %s %% dims(%i) = %s</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code, i, dimlist_ptr->dim->name_in_code);
+ i++;
+ dimlist_ptr = dimlist_ptr->next;
+ }
}
+
+ if (var_ptr->timedim) fortprintf(fd, " %s %% %s %% timeDimension = .true.</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ else fortprintf(fd, " %s %% %s %% timeDimension = .false.</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ fortprintf(fd, " nullify(%s %% %s %% prev)</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ fortprintf(fd, " nullify(%s %% %s %% next)</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ fortprintf(fd, " nullify(%s %% %s %% sendList)</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ fortprintf(fd, " nullify(%s %% %s %% recvList)</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ fortprintf(fd, " nullify(%s %% %s %% copyList)</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+
if (var_ptr->iostreams & INPUT0)
fortprintf(fd, " %s %% %s %% ioinfo %% input = .true.</font>
<font color="gray">", group_ptr->name, var_ptr->name_in_code);
else
@@ -653,6 +715,8 @@
fortprintf(fd, " %s %% %s %% ioinfo %% output = .true.</font>
<font color="black">", group_ptr->name, var_ptr->name_in_code);
else
fortprintf(fd, " %s %% %s %% ioinfo %% output = .false.</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+
+ fortprintf(fd, " %s %% %s %% block => b</font>
<font color="black">", group_ptr->name, var_ptr->name_in_code);
fortprintf(fd, "</font>
<font color="gray">");
var_list_ptr = var_list_ptr->next;
@@ -778,6 +842,96 @@
group_ptr = group_ptr->next;
}
fclose(fd);
+
+
+ /* Definitions of deallocate subroutines */
+ fd = fopen("field_links.inc", "w");
+ group_ptr = groups;
+ while (group_ptr) {
+ fortprintf(fd, " ! Create links for fields in %s</font>
<font color="blue">", group_ptr->name);
+ var_list_ptr = group_ptr->vlist;
+ while (var_list_ptr) {
+ var_ptr = var_list_ptr->var;
+ if (strncmp(var_ptr->super_array, "-", 1024) != 0) {
+ memcpy(super_array, var_ptr->super_array, 1024);
+ memcpy(array_class, var_ptr->array_class, 1024);
+ while (var_list_ptr && strncmp(super_array, var_list_ptr->var->super_array, 1024) == 0) {
+ var_list_ptr2 = var_list_ptr;
+ var_list_ptr = var_list_ptr->next;
+ }
+ var_ptr2 = var_list_ptr2->var;
+ get_outer_dim(var_ptr2, outer_dim);
+ if (var_ptr2->ntime_levs > 1) {
+ if (strncmp("nCells",outer_dim,1024) == 0) {
+ for(i=1; i<=var_ptr2->ntime_levs; i++) {
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% sendList => b %% parinfo %% cellsToSend</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr2->super_array);
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% recvList => b %% parinfo %% cellsToRecv</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr2->super_array);
+ }
+ }
+ else if (strncmp("nEdges",outer_dim,1024) == 0) {
+ for(i=1; i<=var_ptr2->ntime_levs; i++) {
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% sendList => b %% parinfo %% edgesToSend</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr2->super_array);
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% recvList => b %% parinfo %% edgesToRecv</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr2->super_array);
+ }
+ }
+ else if (strncmp("nVertices",outer_dim,1024) == 0) {
+ for(i=1; i<=var_ptr2->ntime_levs; i++) {
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% sendList => b %% parinfo %% verticesToSend</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr2->super_array);
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% recvList => b %% parinfo %% verticesToRecv</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr2->super_array);
+ }
+ }
+ }
+ else {
+ if (strncmp("nCells",outer_dim,1024) == 0) {
+ fortprintf(fd, " b %% %s %% %s %% sendList => b %% parinfo %% cellsToSend</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+ fortprintf(fd, " b %% %s %% %s %% recvList => b %% parinfo %% cellsToRecv</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+ }
+ }
+ fortprintf(fd, "</font>
<font color="blue">");
+ }
+ else {
+ if (var_ptr->ndims > 0) {
+ get_outer_dim(var_ptr, outer_dim);
+ if (var_ptr->ntime_levs > 1) {
+ for(i=1; i<=var_ptr->ntime_levs; i++) {
+ if (strncmp("nCells",outer_dim,1024) == 0) {
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% sendList => b %% parinfo %% cellsToSend</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr->name_in_code);
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% recvList => b %% parinfo %% cellsToRecv</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr->name_in_code);
+ }
+ else if (strncmp("nEdges",outer_dim,1024) == 0) {
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% sendList => b %% parinfo %% edgesToSend</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr->name_in_code);
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% recvList => b %% parinfo %% edgesToRecv</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr->name_in_code);
+ }
+ else if (strncmp("nVertices",outer_dim,1024) == 0) {
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% sendList => b %% parinfo %% verticesToSend</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr->name_in_code);
+ fortprintf(fd, " b %% %s %% time_levs(%i) %% %s %% %s %% recvList => b %% parinfo %% verticesToRecv</font>
<font color="blue">", group_ptr->name, i, group_ptr->name, var_ptr->name_in_code);
+ }
+ }
+ }
+ else {
+ if (strncmp("nCells",outer_dim,1024) == 0) {
+ fortprintf(fd, " b %% %s %% %s %% sendList => b %% parinfo %% cellsToSend</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ fortprintf(fd, " b %% %s %% %s %% recvList => b %% parinfo %% cellsToRecv</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ }
+ else if (strncmp("nEdges",outer_dim,1024) == 0) {
+ fortprintf(fd, " b %% %s %% %s %% sendList => b %% parinfo %% edgesToSend</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ fortprintf(fd, " b %% %s %% %s %% recvList => b %% parinfo %% edgesToRecv</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ }
+ else if (strncmp("nVertices",outer_dim,1024) == 0) {
+ fortprintf(fd, " b %% %s %% %s %% sendList => b %% parinfo %% verticesToSend</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ fortprintf(fd, " b %% %s %% %s %% recvList => b %% parinfo %% verticesToRecv</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ }
+ }
+ fortprintf(fd, "</font>
<font color="blue">");
+ }
+ var_list_ptr = var_list_ptr->next;
+ }
+ }
+
+ fortprintf(fd, "</font>
<font color="blue">");
+ group_ptr = group_ptr->next;
+ }
+ fclose(fd);
}
</font>
</pre>