<p><b>duda</b> 2012-10-03 16:56:04 -0600 (Wed, 03 Oct 2012)</p><p>BRANCH COMMIT<br>
<br>
Add new I/O stream, &quot;grid&quot;, for grid and other 2d fields.<br>
<br>
<br>
M    src/registry/registry_types.h<br>
M    src/registry/gen_inc.c<br>
M    src/registry/parse.c<br>
M    src/framework/mpas_io_input.F<br>
M    src/framework/mpas_io_output.F<br>
M    src/framework/mpas_grid_types.F<br>
</p><hr noshade><pre><font color="gray">Modified: branches/asd_io_work/src/framework/mpas_grid_types.F
===================================================================
--- branches/asd_io_work/src/framework/mpas_grid_types.F        2012-10-03 21:38:57 UTC (rev 2179)
+++ branches/asd_io_work/src/framework/mpas_grid_types.F        2012-10-03 22:56:04 UTC (rev 2180)
@@ -16,6 +16,7 @@
       integer, dimension(4) :: count
       logical :: input
       logical :: sfc
+      logical :: grid
       logical :: restart
       logical :: output
    end type io_info

Modified: branches/asd_io_work/src/framework/mpas_io_input.F
===================================================================
--- branches/asd_io_work/src/framework/mpas_io_input.F        2012-10-03 21:38:57 UTC (rev 2179)
+++ branches/asd_io_work/src/framework/mpas_io_input.F        2012-10-03 22:56:04 UTC (rev 2180)
@@ -14,7 +14,7 @@
    use mpas_zoltan_interface
 #endif
 
-   integer, parameter :: STREAM_INPUT=1, STREAM_SFC=2, STREAM_RESTART=3
+   integer, parameter :: STREAM_INPUT=1, STREAM_SFC=2, STREAM_RESTART=3, STREAM_GRID=4
 
    type io_input_object
       character (len=StrKIND) :: filename
@@ -123,6 +123,8 @@
           write(0,*) 'Error opening input file ''', trim(input_obj % filename), ''''
         else if (input_obj % stream == STREAM_SFC) then
           write(0,*) 'Error opening sfc file ''', trim(input_obj % filename), ''''
+        else if (input_obj % stream == STREAM_GRID) then
+          write(0,*) 'Error opening grid file ''', trim(input_obj % filename), ''''
         end if
         write(0,*) ' '
         call mpas_dmpar_abort(domain % dminfo)
@@ -540,6 +542,8 @@
             write(0,*) 'Error opening input file ''', trim(input_obj % filename), ''''
          else if (input_obj % stream == STREAM_SFC) then
             write(0,*) 'Error opening sfc file ''', trim(input_obj % filename), ''''
+         else if (input_obj % stream == STREAM_GRID) then
+            write(0,*) 'Error opening grid file ''', trim(input_obj % filename), ''''
          end if
          write(0,*) ' '
          call mpas_dmpar_abort(dminfo)

Modified: branches/asd_io_work/src/framework/mpas_io_output.F
===================================================================
--- branches/asd_io_work/src/framework/mpas_io_output.F        2012-10-03 21:38:57 UTC (rev 2179)
+++ branches/asd_io_work/src/framework/mpas_io_output.F        2012-10-03 22:56:04 UTC (rev 2180)
@@ -9,6 +9,7 @@
    integer, parameter :: OUTPUT = 1
    integer, parameter :: RESTART = 2
    integer, parameter :: SFC = 3
+   integer, parameter :: GRID = 4
  
    type io_output_object
       character (len=StrKIND) :: filename
@@ -56,6 +57,9 @@
       else if (trim(stream) == 'SFC') then
          ! Keep filename as whatever was set by the user
          output_obj % stream = SFC
+      else if (trim(stream) == 'GRID') then
+         ! Keep filename as whatever was set by the user
+         output_obj % stream = GRID
       end if
 
       ! For now, we assume that a domain consists only of one block,

Modified: branches/asd_io_work/src/registry/gen_inc.c
===================================================================
--- branches/asd_io_work/src/registry/gen_inc.c        2012-10-03 21:38:57 UTC (rev 2179)
+++ branches/asd_io_work/src/registry/gen_inc.c        2012-10-03 22:56:04 UTC (rev 2180)
@@ -794,6 +794,11 @@
             else
                fortprintf(fd, &quot;      %s %% %s %% ioinfo %% sfc = .false.</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array);
 
+            if (var_ptr2-&gt;iostreams &amp; GRID0) 
+               fortprintf(fd, &quot;      %s %% %s %% ioinfo %% grid = .true.</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array);
+            else
+               fortprintf(fd, &quot;      %s %% %s %% ioinfo %% grid = .false.</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array);
+
             if (var_ptr2-&gt;iostreams &amp; RESTART0) 
                fortprintf(fd, &quot;      %s %% %s %% ioinfo %% restart = .true.</font>
<font color="gray">&quot;, group_ptr-&gt;name, var_ptr2-&gt;super_array);
             else
@@ -889,6 +894,11 @@
             else
                fortprintf(fd, &quot;      %s %% %s %% ioinfo %% sfc = .false.</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code);
 
+            if (var_ptr-&gt;iostreams &amp; GRID0) 
+               fortprintf(fd, &quot;      %s %% %s %% ioinfo %% grid = .true.</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code);
+            else
+               fortprintf(fd, &quot;      %s %% %s %% ioinfo %% grid = .false.</font>
<font color="blue">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code);
+
             if (var_ptr-&gt;iostreams &amp; RESTART0) 
                fortprintf(fd, &quot;      %s %% %s %% ioinfo %% restart = .true.</font>
<font color="gray">&quot;, group_ptr-&gt;name, var_ptr-&gt;name_in_code);
             else
@@ -1823,11 +1833,13 @@
          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="black">&quot;, struct_deref, var_ptr-&gt;super_array);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC) .or. &amp;</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;super_array);
+            fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART)) then</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
          }
          else {
             fortprintf(fd, &quot;      if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC) .or. &amp;</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;name_in_code);
+            fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART)) then</font>
<font color="gray">&quot;, struct_deref, var_ptr-&gt;name_in_code);
          }
          while (dimlist_ptr) {
@@ -2086,6 +2098,7 @@
          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="black">&quot;, struct_deref, var_ptr-&gt;super_array);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART) .or. &amp;</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;super_array);
+            fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC)) then</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
             memcpy(super_array, var_ptr-&gt;super_array, 1024);
 /*            fortprintf(fd, &quot;         write(0,*) \'adding input field %s\'</font>
<font color="gray">&quot;, var_ptr-&gt;super_array); */
@@ -2097,6 +2110,7 @@
          else {
             fortprintf(fd, &quot;      if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
             fortprintf(fd, &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(fd, &quot;          (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC)) then</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
 /*            fortprintf(fd, &quot;         write(0,*) \'adding input field %s\'</font>
<font color="black">&quot;, var_ptr-&gt;name_in_code); */
             fortprintf(fd, &quot;         call MPAS_streamAddField(input_obj %% io_stream, %s %% %s, nferr)</font>
<font color="gray">&quot;, struct_deref, var_ptr-&gt;name_in_code);
@@ -2142,6 +2156,7 @@
                   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="black">&quot;, struct_deref, var_ptr-&gt;super_array);
                      fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART) .or. &amp;</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;super_array);
+                     fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
                      fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC)) then</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
                      memcpy(super_array, var_ptr-&gt;super_array, 1024);
 /*                     fortprintf(fd, &quot;         write(0,*) \'exchange halo for %s\'</font>
<font color="gray">&quot;, var_ptr-&gt;super_array); */
@@ -2153,6 +2168,7 @@
                   else {
                      fortprintf(fd, &quot;      if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
                      fortprintf(fd, &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(fd, &quot;          (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
                      fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC)) then</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
 /*                     fortprintf(fd, &quot;         write(0,*) \'exchange halo for %s\'</font>
<font color="black">&quot;, var_ptr-&gt;name_in_code); */
                      fortprintf(fd, &quot;         call mpas_dmpar_exch_halo_field(%s %% %s)</font>
<font color="gray">&quot;, struct_deref, var_ptr-&gt;name_in_code);
@@ -2163,6 +2179,7 @@
                } else {
                   fortprintf(fd2, &quot;      if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &amp;</font>
<font color="black">&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 %% grid .and. input_obj %% stream == STREAM_GRID) .or. &amp;</font>
<font color="black">&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="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
                                   fortprintf(fd2, &quot;          call mpas_dmpar_copy_field(%s %% %s)</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
                   fortprintf(fd2, &quot;      end if</font>
<font color="black"></font>
<font color="gray">&quot;);
@@ -2463,6 +2480,7 @@
       if (var_ptr-&gt;iostreams &amp; RESTART0) fortprintf(fd, &quot;          .or. output_obj %% stream == RESTART &amp;</font>
<font color="black">&quot;);
       if (var_ptr-&gt;iostreams &amp; OUTPUT0)  fortprintf(fd, &quot;          .or. output_obj %% stream == OUTPUT &amp;</font>
<font color="black">&quot;);
       if (var_ptr-&gt;iostreams &amp; SFC0)     fortprintf(fd, &quot;          .or. output_obj %% stream == SFC &amp;</font>
<font color="blue">&quot;);
+      if (var_ptr-&gt;iostreams &amp; GRID0)    fortprintf(fd, &quot;          .or. output_obj %% stream == GRID &amp;</font>
<font color="black">&quot;);
       fortprintf(fd, &quot;      ) then</font>
<font color="gray">&quot;);
       dimlist_ptr = var_ptr-&gt;dimlist;
       i = 1;
@@ -2531,6 +2549,7 @@
          if (strncmp(var_ptr-&gt;super_array, &quot;-&quot;, 1024) != 0) {
             fortprintf(fd, &quot;      if ((%s %% %s %% ioinfo %% output .and. output_obj %% stream == OUTPUT) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% restart .and. output_obj %% stream == RESTART) .or. &amp;</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;super_array);
+            fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% grid .and. output_obj %% stream == GRID) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% sfc .and. output_obj %% stream == SFC)) then</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
             memcpy(super_array, var_ptr-&gt;super_array, 1024);
             fortprintf(fd, &quot;         call MPAS_streamAddField(output_obj %% io_stream, %s %% %s, ierr)</font>
<font color="gray">&quot;, struct_deref, super_array);
@@ -2541,6 +2560,7 @@
          else {
             fortprintf(fd, &quot;      if ((%s %% %s %% ioinfo %% output .and. output_obj %% stream == OUTPUT) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% restart .and. output_obj %% stream == RESTART) .or. &amp;</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;name_in_code);
+            fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% grid .and. output_obj %% stream == GRID) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% sfc .and. output_obj %% stream == SFC)) then</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
             fortprintf(fd, &quot;         call MPAS_streamAddField(output_obj %% io_stream, %s %% %s, ierr)</font>
<font color="gray">&quot;, struct_deref, var_ptr-&gt;name_in_code);
          }
@@ -2604,11 +2624,13 @@
          if (strncmp(var_ptr-&gt;super_array, &quot;-&quot;, 1024) != 0) {
             fortprintf(fd, &quot;      if ((%s %% %s %% ioinfo %% output .and. output_obj %% stream == OUTPUT) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% restart .and. output_obj %% stream == RESTART) .or. &amp;</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;super_array);
+            fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% grid .and. output_obj %% stream == GRID) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% sfc .and. output_obj %% stream == SFC)) then</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;super_array);
          }
          else {
             fortprintf(fd, &quot;      if ((%s %% %s %% ioinfo %% output .and. output_obj %% stream == OUTPUT) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% restart .and. output_obj %% stream == RESTART) .or. &amp;</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;name_in_code);
+            fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% grid .and. output_obj %% stream == GRID) .or. &amp;</font>
<font color="black">&quot;, struct_deref, var_ptr-&gt;name_in_code);
             fortprintf(fd, &quot;          (%s %% %s %% ioinfo %% sfc .and. output_obj %% stream == SFC)) then</font>
<font color="gray">&quot;, struct_deref, var_ptr-&gt;name_in_code);
          }
    

Modified: branches/asd_io_work/src/registry/parse.c
===================================================================
--- branches/asd_io_work/src/registry/parse.c        2012-10-03 21:38:57 UTC (rev 2179)
+++ branches/asd_io_work/src/registry/parse.c        2012-10-03 22:56:04 UTC (rev 2180)
@@ -196,6 +196,7 @@
          getword(regfile, word);
          if (strchr(word, (int)'i')) var_ptr-&gt;iostreams |= INPUT0;
          if (strchr(word, (int)'s')) var_ptr-&gt;iostreams |= SFC0;
+         if (strchr(word, (int)'g')) var_ptr-&gt;iostreams |= GRID0;
          if (strchr(word, (int)'r')) var_ptr-&gt;iostreams |= RESTART0;
          if (strchr(word, (int)'o')) var_ptr-&gt;iostreams |= OUTPUT0;
 

Modified: branches/asd_io_work/src/registry/registry_types.h
===================================================================
--- branches/asd_io_work/src/registry/registry_types.h        2012-10-03 21:38:57 UTC (rev 2179)
+++ branches/asd_io_work/src/registry/registry_types.h        2012-10-03 22:56:04 UTC (rev 2180)
@@ -10,6 +10,7 @@
 #define RESTART0  0x00000002
 #define OUTPUT0   0x00000004
 #define SFC0      0x00000008
+#define GRID0     0x00000010
 
 #define NEW_NAMELIST(X) X = (struct namelist *)malloc(sizeof(struct namelist)); X-&gt;next = NULL;
 #define NEW_DIMENSION(X) X = (struct dimension *)malloc(sizeof(struct dimension)); X-&gt;next = NULL;

</font>
</pre>