<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, "grid", 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, " %s %% %s %% ioinfo %% sfc = .false.</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+ if (var_ptr2->iostreams & GRID0)
+ fortprintf(fd, " %s %% %s %% ioinfo %% grid = .true.</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+ else
+ fortprintf(fd, " %s %% %s %% ioinfo %% grid = .false.</font>
<font color="blue">", group_ptr->name, var_ptr2->super_array);
+
if (var_ptr2->iostreams & RESTART0)
fortprintf(fd, " %s %% %s %% ioinfo %% restart = .true.</font>
<font color="gray">", group_ptr->name, var_ptr2->super_array);
else
@@ -889,6 +894,11 @@
else
fortprintf(fd, " %s %% %s %% ioinfo %% sfc = .false.</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ if (var_ptr->iostreams & GRID0)
+ fortprintf(fd, " %s %% %s %% ioinfo %% grid = .true.</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+ else
+ fortprintf(fd, " %s %% %s %% ioinfo %% grid = .false.</font>
<font color="blue">", group_ptr->name, var_ptr->name_in_code);
+
if (var_ptr->iostreams & RESTART0)
fortprintf(fd, " %s %% %s %% ioinfo %% restart = .true.</font>
<font color="gray">", group_ptr->name, var_ptr->name_in_code);
else
@@ -1823,11 +1833,13 @@
if (strncmp(var_ptr->super_array, "-", 1024) != 0) {
fortprintf(fd, " if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &</font>
<font color="black">", struct_deref, var_ptr->super_array);
fortprintf(fd, " (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC) .or. &</font>
<font color="blue">", struct_deref, var_ptr->super_array);
+ fortprintf(fd, " (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID .or. &</font>
<font color="black">", struct_deref, var_ptr->super_array);
fortprintf(fd, " (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART)) then</font>
<font color="black">", struct_deref, var_ptr->super_array);
}
else {
fortprintf(fd, " if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd, " (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC) .or. &</font>
<font color="blue">", struct_deref, var_ptr->name_in_code);
+ fortprintf(fd, " (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd, " (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART)) then</font>
<font color="gray">", struct_deref, var_ptr->name_in_code);
}
while (dimlist_ptr) {
@@ -2086,6 +2098,7 @@
if (strncmp(var_ptr->super_array, "-", 1024) != 0) {
fortprintf(fd, " if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &</font>
<font color="black">", struct_deref, var_ptr->super_array);
fortprintf(fd, " (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART) .or. &</font>
<font color="blue">", struct_deref, var_ptr->super_array);
+ fortprintf(fd, " (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID) .or. &</font>
<font color="black">", struct_deref, var_ptr->super_array);
fortprintf(fd, " (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC)) then</font>
<font color="black">", struct_deref, var_ptr->super_array);
memcpy(super_array, var_ptr->super_array, 1024);
/* fortprintf(fd, " write(0,*) \'adding input field %s\'</font>
<font color="gray">", var_ptr->super_array); */
@@ -2097,6 +2110,7 @@
else {
fortprintf(fd, " if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd, " (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART) .or. &</font>
<font color="blue">", struct_deref, var_ptr->name_in_code);
+ fortprintf(fd, " (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd, " (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC)) then</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
/* fortprintf(fd, " write(0,*) \'adding input field %s\'</font>
<font color="black">", var_ptr->name_in_code); */
fortprintf(fd, " call MPAS_streamAddField(input_obj %% io_stream, %s %% %s, nferr)</font>
<font color="gray">", struct_deref, var_ptr->name_in_code);
@@ -2142,6 +2156,7 @@
if (strncmp(var_ptr->super_array, "-", 1024) != 0) {
fortprintf(fd, " if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &</font>
<font color="black">", struct_deref, var_ptr->super_array);
fortprintf(fd, " (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART) .or. &</font>
<font color="blue">", struct_deref, var_ptr->super_array);
+ fortprintf(fd, " (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID) .or. &</font>
<font color="black">", struct_deref, var_ptr->super_array);
fortprintf(fd, " (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC)) then</font>
<font color="black">", struct_deref, var_ptr->super_array);
memcpy(super_array, var_ptr->super_array, 1024);
/* fortprintf(fd, " write(0,*) \'exchange halo for %s\'</font>
<font color="gray">", var_ptr->super_array); */
@@ -2153,6 +2168,7 @@
else {
fortprintf(fd, " if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd, " (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART) .or. &</font>
<font color="blue">", struct_deref, var_ptr->name_in_code);
+ fortprintf(fd, " (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd, " (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC)) then</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
/* fortprintf(fd, " write(0,*) \'exchange halo for %s\'</font>
<font color="black">", var_ptr->name_in_code); */
fortprintf(fd, " call mpas_dmpar_exch_halo_field(%s %% %s)</font>
<font color="gray">", struct_deref, var_ptr->name_in_code);
@@ -2163,6 +2179,7 @@
} else {
fortprintf(fd2, " if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd2, " (%s %% %s %% ioinfo %% restart .and. input_obj %% stream == STREAM_RESTART) .or. &</font>
<font color="blue">", struct_deref, var_ptr->name_in_code);
+ fortprintf(fd2, " (%s %% %s %% ioinfo %% grid .and. input_obj %% stream == STREAM_GRID) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd2, " (%s %% %s %% ioinfo %% sfc .and. input_obj %% stream == STREAM_SFC)) then</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
                                 fortprintf(fd2, " call mpas_dmpar_copy_field(%s %% %s)</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd2, " end if</font>
<font color="black"></font>
<font color="gray">");
@@ -2463,6 +2480,7 @@
if (var_ptr->iostreams & RESTART0) fortprintf(fd, " .or. output_obj %% stream == RESTART &</font>
<font color="black">");
if (var_ptr->iostreams & OUTPUT0) fortprintf(fd, " .or. output_obj %% stream == OUTPUT &</font>
<font color="black">");
if (var_ptr->iostreams & SFC0) fortprintf(fd, " .or. output_obj %% stream == SFC &</font>
<font color="blue">");
+ if (var_ptr->iostreams & GRID0) fortprintf(fd, " .or. output_obj %% stream == GRID &</font>
<font color="black">");
fortprintf(fd, " ) then</font>
<font color="gray">");
dimlist_ptr = var_ptr->dimlist;
i = 1;
@@ -2531,6 +2549,7 @@
if (strncmp(var_ptr->super_array, "-", 1024) != 0) {
fortprintf(fd, " if ((%s %% %s %% ioinfo %% output .and. output_obj %% stream == OUTPUT) .or. &</font>
<font color="black">", struct_deref, var_ptr->super_array);
fortprintf(fd, " (%s %% %s %% ioinfo %% restart .and. output_obj %% stream == RESTART) .or. &</font>
<font color="blue">", struct_deref, var_ptr->super_array);
+ fortprintf(fd, " (%s %% %s %% ioinfo %% grid .and. output_obj %% stream == GRID) .or. &</font>
<font color="black">", struct_deref, var_ptr->super_array);
fortprintf(fd, " (%s %% %s %% ioinfo %% sfc .and. output_obj %% stream == SFC)) then</font>
<font color="black">", struct_deref, var_ptr->super_array);
memcpy(super_array, var_ptr->super_array, 1024);
fortprintf(fd, " call MPAS_streamAddField(output_obj %% io_stream, %s %% %s, ierr)</font>
<font color="gray">", struct_deref, super_array);
@@ -2541,6 +2560,7 @@
else {
fortprintf(fd, " if ((%s %% %s %% ioinfo %% output .and. output_obj %% stream == OUTPUT) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd, " (%s %% %s %% ioinfo %% restart .and. output_obj %% stream == RESTART) .or. &</font>
<font color="blue">", struct_deref, var_ptr->name_in_code);
+ fortprintf(fd, " (%s %% %s %% ioinfo %% grid .and. output_obj %% stream == GRID) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd, " (%s %% %s %% ioinfo %% sfc .and. output_obj %% stream == SFC)) then</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd, " call MPAS_streamAddField(output_obj %% io_stream, %s %% %s, ierr)</font>
<font color="gray">", struct_deref, var_ptr->name_in_code);
}
@@ -2604,11 +2624,13 @@
if (strncmp(var_ptr->super_array, "-", 1024) != 0) {
fortprintf(fd, " if ((%s %% %s %% ioinfo %% output .and. output_obj %% stream == OUTPUT) .or. &</font>
<font color="black">", struct_deref, var_ptr->super_array);
fortprintf(fd, " (%s %% %s %% ioinfo %% restart .and. output_obj %% stream == RESTART) .or. &</font>
<font color="blue">", struct_deref, var_ptr->super_array);
+ fortprintf(fd, " (%s %% %s %% ioinfo %% grid .and. output_obj %% stream == GRID) .or. &</font>
<font color="black">", struct_deref, var_ptr->super_array);
fortprintf(fd, " (%s %% %s %% ioinfo %% sfc .and. output_obj %% stream == SFC)) then</font>
<font color="black">", struct_deref, var_ptr->super_array);
}
else {
fortprintf(fd, " if ((%s %% %s %% ioinfo %% output .and. output_obj %% stream == OUTPUT) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd, " (%s %% %s %% ioinfo %% restart .and. output_obj %% stream == RESTART) .or. &</font>
<font color="blue">", struct_deref, var_ptr->name_in_code);
+ fortprintf(fd, " (%s %% %s %% ioinfo %% grid .and. output_obj %% stream == GRID) .or. &</font>
<font color="black">", struct_deref, var_ptr->name_in_code);
fortprintf(fd, " (%s %% %s %% ioinfo %% sfc .and. output_obj %% stream == SFC)) then</font>
<font color="gray">", struct_deref, var_ptr->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->iostreams |= INPUT0;
if (strchr(word, (int)'s')) var_ptr->iostreams |= SFC0;
+ if (strchr(word, (int)'g')) var_ptr->iostreams |= GRID0;
if (strchr(word, (int)'r')) var_ptr->iostreams |= RESTART0;
if (strchr(word, (int)'o')) var_ptr->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->next = NULL;
#define NEW_DIMENSION(X) X = (struct dimension *)malloc(sizeof(struct dimension)); X->next = NULL;
</font>
</pre>