<p><b>duda</b> 2011-11-28 14:46:55 -0700 (Mon, 28 Nov 2011)</p><p>BRANCH COMMIT<br>
<br>
Generate calls to PIO_initdecomp only for those combinations of dimensions and type<br>
that will actually be written; this can lead to significant time savings.<br>
<br>
Add debugging print statements as fields are being written.<br>
<br>
<br>
M    src/registry/gen_inc.c<br>
</p><hr noshade><pre><font color="gray">Modified: branches/pio/src/registry/gen_inc.c
===================================================================
--- branches/pio/src/registry/gen_inc.c        2011-11-28 16:43:40 UTC (rev 1215)
+++ branches/pio/src/registry/gen_inc.c        2011-11-28 21:46:55 UTC (rev 1216)
@@ -2217,12 +2217,18 @@
             sprintf(temp, &quot;%s_%s&quot;, temp, dimlist_ptr-&gt;dim-&gt;name_in_file);
             dimlist_ptr = dimlist_ptr-&gt;next;
          }
+
+         /* Add type information into symbol name */
+         if (var_ptr-&gt;vtype == INTEGER) 
+            sprintf(temp, &quot;%s_int&quot;, temp);
+         else if (var_ptr-&gt;vtype == REAL) 
+            sprintf(temp, &quot;%s_dbl&quot;, temp);
+         else
+            sprintf(temp, &quot;%s_Unsupported&quot;, temp);
+
          if (!dict_search(dictionary, temp)) {
-/* MGD NEED TO ADD IODESC TYPES FOR EACH FIELD TYPE */
-            fortprintf(fd, &quot;      type (io_desc_t) :: iodesc%s_Dbl</font>
<font color="red">&quot;, temp);
-            fortprintf(fd, &quot;      type (io_desc_t) :: iodesc%s_Int</font>
<font color="red">&quot;, temp);
-            fortprintf(fd2, &quot;      call PIO_freedecomp(output_obj %% pio_iosystem, output_obj %% iodesc%s_Dbl)</font>
<font color="red">&quot;, temp);
-            fortprintf(fd2, &quot;      call PIO_freedecomp(output_obj %% pio_iosystem, output_obj %% iodesc%s_Int)</font>
<font color="blue">&quot;, temp);
+            fortprintf(fd, &quot;      type (io_desc_t) :: iodesc%s</font>
<font color="blue">&quot;, temp);
+            fortprintf(fd2, &quot;      call PIO_freedecomp(output_obj %% pio_iosystem, output_obj %% iodesc%s)</font>
<font color="gray">&quot;, temp);
             dict_insert(dictionary, temp);
          }
       }
@@ -2315,6 +2321,7 @@
          else if (var_ptr-&gt;vtype == REAL) sprintf(vtype, &quot;real&quot;); 
          else if (var_ptr-&gt;vtype == CHARACTER) sprintf(vtype, &quot;char&quot;); 
 
+
          if (strncmp(var_ptr-&gt;super_array, &quot;-&quot;, 1024) != 0) {
             if (var_ptr-&gt;ndims &gt; 0) {
                fortprintf(fd, &quot;         allocate(super_%s%id(&quot;, vtype, var_ptr-&gt;ndims);
@@ -2378,14 +2385,19 @@
                dimlist_ptr = dimlist_ptr-&gt;next;
             }
          }
+if (var_ptr-&gt;vtype == REAL)
+   fortprintf(fd, &quot;write(0,*) \'PIO_write_darray for %s using %s_dbl\'</font>
<font color="blue">&quot;, var_ptr-&gt;name_in_file, temp);
+else
+   fortprintf(fd, &quot;write(0,*) \'PIO_write_darray for %s using %s_int\'</font>
<font color="blue">&quot;, var_ptr-&gt;name_in_file, temp);
+
          if (var_ptr-&gt;timedim) fortprintf(fd, &quot;         call PIO_setframe(output_obj %% pioVarID%s, pio_time)</font>
<font color="gray">&quot;, var_ptr-&gt;name_in_file);
          fortprintf(fd, &quot;         call PIO_write_darray(output_obj %% pio_file, output_obj %% pioVarID%s, &quot;, var_ptr-&gt;name_in_file);
          if (var_ptr-&gt;ndims != 0) {
 /* MGD NEED TO USE CORRECT IODESC FOR THE TYPE OF THIS VARIABLE */
             if (var_ptr-&gt;vtype == REAL)
-               fortprintf(fd, &quot;output_obj %% iodesc%s_Dbl, &quot;, temp);
+               fortprintf(fd, &quot;output_obj %% iodesc%s_dbl, &quot;, temp);
             else
-               fortprintf(fd, &quot;output_obj %% iodesc%s_Int, &quot;, temp);
+               fortprintf(fd, &quot;output_obj %% iodesc%s_int, &quot;, temp);
 
             if (strncmp(var_ptr-&gt;super_array, &quot;-&quot;, 1024) != 0)
                fortprintf(fd, &quot;super_%s%id(&quot;, vtype, var_ptr-&gt;ndims);
@@ -2471,6 +2483,16 @@
             i++;
             dimlist_ptr = dimlist_ptr-&gt;next;
          }
+
+         /* Add type information into symbol name */
+         if (var_ptr-&gt;vtype == INTEGER) 
+            sprintf(temp, &quot;%s_int&quot;, temp);
+         else if (var_ptr-&gt;vtype == REAL) 
+            sprintf(temp, &quot;%s_dbl&quot;, temp);
+         else
+            sprintf(temp, &quot;%s_Unsupported&quot;, temp);
+         
+
          if (!dict_search(dictionary, temp)) {
             fortprintf(fd, &quot;!!!!! %s</font>
<font color="gray">&quot;, temp);
             dimlist_ptr = var_ptr-&gt;dimlist;
@@ -2551,11 +2573,13 @@
                dimlist_ptr = dimlist_ptr-&gt;next;
             }
 
-/* MGD NEED TO ADD MORE CODE HERE TO CREATE DECOMPS FOR EACH TYPE */
-            fortprintf(fd, &quot;         write(0,*) \'Calling PIO_initdecomp for %s_Dbl\'</font>
<font color="red">&quot;, temp);
-            fortprintf(fd, &quot;         call PIO_initdecomp(output_obj %% pio_iosystem, PIO_DOUBLE, dimids(1:%i), compdof, output_obj %% iodesc%s_Dbl)</font>
<font color="red">&quot;, var_ptr-&gt;ndims, temp);
-            fortprintf(fd, &quot;         write(0,*) \'Calling PIO_initdecomp for %s_Int\'</font>
<font color="red">&quot;, temp);
-            fortprintf(fd, &quot;         call PIO_initdecomp(output_obj %% pio_iosystem, PIO_INT, dimids(1:%i), compdof, output_obj %% iodesc%s_Int)</font>
<font color="blue">&quot;, var_ptr-&gt;ndims, temp);
+            fortprintf(fd, &quot;         write(0,*) \'Calling PIO_initdecomp for %s\'</font>
<font color="blue">&quot;, temp);
+            if (var_ptr-&gt;vtype == INTEGER) 
+               fortprintf(fd, &quot;         call PIO_initdecomp(output_obj %% pio_iosystem, PIO_INT, dimids(1:%i), compdof, output_obj %% iodesc%s)</font>
<font color="blue">&quot;, var_ptr-&gt;ndims, temp);
+            else if (var_ptr-&gt;vtype == REAL) 
+               fortprintf(fd, &quot;         call PIO_initdecomp(output_obj %% pio_iosystem, PIO_DOUBLE, dimids(1:%i), compdof, output_obj %% iodesc%s)</font>
<font color="blue">&quot;, var_ptr-&gt;ndims, temp);
+            else
+               fortprintf(fd, &quot;         call PIO_initdecomp(output_obj %% pio_iosystem, PIO_INT, dimids(1:%i), compdof, output_obj %% iodesc%s)</font>
<font color="black">&quot;, var_ptr-&gt;ndims, temp);
 
             fortprintf(fd, &quot;         deallocate(compdof)</font>
<font color="black">&quot;);
             fortprintf(fd, &quot;</font>
<font color="black">&quot;);

</font>
</pre>