<p><b>mpetersen@lanl.gov</b> 2010-05-06 14:48:16 -0600 (Thu, 06 May 2010)</p><p>Merge trunk to branch lateral_boundary_conditions using<br>
svn merge -r 160:256 https://svn-mpas-model.cgd.ucar.edu/trunk/mpas<br>
<br>
I accepted the trunk version where conflicts existed, except for <br>
src/registry/gen_inc.c, for which a resolved version was<br>
provided by Michael.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/lateral_boundary_conditions/src/core_hyd_atmos/Makefile
===================================================================
--- branches/lateral_boundary_conditions/src/core_hyd_atmos/Makefile        2010-05-05 23:04:41 UTC (rev 256)
+++ branches/lateral_boundary_conditions/src/core_hyd_atmos/Makefile        2010-05-06 20:48:16 UTC (rev 257)
@@ -19,10 +19,9 @@
 mpas_interface.o: module_advection.o module_test_cases.o module_time_integration.o
 
 clean:
-        $(RM) *.o *.mod libdycore.a
+        $(RM) *.o *.mod *.f90 libdycore.a
 
 .F.o:
         $(RM) $@ $*.mod
         $(CPP) $(CPPFLAGS) $(CPPINCLUDES) $&lt; &gt; $*.f90
         $(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES) -I../framework -I../operators
-        $(RM) $*.f90

Modified: branches/lateral_boundary_conditions/src/core_ocean/Makefile
===================================================================
--- branches/lateral_boundary_conditions/src/core_ocean/Makefile        2010-05-05 23:04:41 UTC (rev 256)
+++ branches/lateral_boundary_conditions/src/core_ocean/Makefile        2010-05-06 20:48:16 UTC (rev 257)
@@ -19,10 +19,9 @@
 mpas_interface.o: module_global_diagnostics.o module_test_cases.o module_time_integration.o
 
 clean:
-        $(RM) *.o *.mod libdycore.a
+        $(RM) *.o *.mod *.f90 libdycore.a
 
 .F.o:
         $(RM) $@ $*.mod
         $(CPP) $(CPPFLAGS) $(CPPINCLUDES) $&lt; &gt; $*.f90
         $(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES) -I../framework -I../operators
-        $(RM) $*.f90

Modified: branches/lateral_boundary_conditions/src/core_ocean/module_time_integration.F
===================================================================
--- branches/lateral_boundary_conditions/src/core_ocean/module_time_integration.F        2010-05-05 23:04:41 UTC (rev 256)
+++ branches/lateral_boundary_conditions/src/core_ocean/module_time_integration.F        2010-05-06 20:48:16 UTC (rev 257)
@@ -38,17 +38,17 @@
          stop
       end if
 
-   !  block =&gt; domain % blocklist
-   !  do while (associated(block))
-   !     block % time_levs(2) % state % xtime % scalar = block % time_levs(1) % state % xtime % scalar + dt
+     block =&gt; domain % blocklist
+     do while (associated(block))
+        block % time_levs(2) % state % xtime % scalar = block % time_levs(1) % state % xtime % scalar + dt
    !     ! mrp 100310  I added this to avoid running with NaNs
    !     if (isNaN(sum(block % time_levs(2) % state % u % array))) then
    !        print *, 'Stopping: NaN detected'
    !        call MPI_abort(MPI_COMM_WORLD,errorcode,ierr)
    !     endif
    !     ! mrp 100310 end
-   !     block =&gt; block % next
-   !  end do
+        block =&gt; block % next
+     end do
 
    end subroutine timestep
 

Modified: branches/lateral_boundary_conditions/src/core_sw/Makefile
===================================================================
--- branches/lateral_boundary_conditions/src/core_sw/Makefile        2010-05-05 23:04:41 UTC (rev 256)
+++ branches/lateral_boundary_conditions/src/core_sw/Makefile        2010-05-06 20:48:16 UTC (rev 257)
@@ -16,10 +16,9 @@
 mpas_interface.o: module_test_cases.o module_time_integration.o 
 
 clean:
-        $(RM) *.o *.mod libdycore.a
+        $(RM) *.o *.mod *.f90 libdycore.a
 
 .F.o:
         $(RM) $@ $*.mod
         $(CPP) $(CPPFLAGS) $(CPPINCLUDES) $&lt; &gt; $*.f90
         $(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES) -I../framework -I../operators
-        $(RM) $*.f90

Modified: branches/lateral_boundary_conditions/src/driver/Makefile
===================================================================
--- branches/lateral_boundary_conditions/src/driver/Makefile        2010-05-05 23:04:41 UTC (rev 256)
+++ branches/lateral_boundary_conditions/src/driver/Makefile        2010-05-06 20:48:16 UTC (rev 257)
@@ -10,10 +10,9 @@
 mpas.o: module_subdriver.o
 
 clean:
-        $(RM) *.o *.mod
+        $(RM) *.o *.mod *.f90
 
 .F.o:
         $(RM) $@ $*.mod
         $(CPP) $(CPPFLAGS) $(CPPINCLUDES) $&lt; &gt; $*.f90
         $(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES) -I../framework -I../core_$(CORE)
-        $(RM) $*.f90

Modified: branches/lateral_boundary_conditions/src/framework/Makefile
===================================================================
--- branches/lateral_boundary_conditions/src/framework/Makefile        2010-05-05 23:04:41 UTC (rev 256)
+++ branches/lateral_boundary_conditions/src/framework/Makefile        2010-05-06 20:48:16 UTC (rev 257)
@@ -35,13 +35,12 @@
 module_io_output.o: module_grid_types.o module_dmpar.o module_sort.o module_configure.o
 
 clean:
-        $(RM) *.o *.mod libframework.a
+        $(RM) *.o *.mod *.f90 libframework.a
 
 .F.o:
         $(RM) $@ $*.mod
         $(CPP) $(CPPFLAGS) $(CPPINCLUDES) $&lt; &gt; $*.f90
         $(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES)
-        $(RM) $*.f90
 
 .c.o:
         $(CC) $(CFLAGS) $(CPPFLAGS) $(CPPINCLUDES) -c $&lt;

Modified: branches/lateral_boundary_conditions/src/framework/module_io_input.F
===================================================================
--- branches/lateral_boundary_conditions/src/framework/module_io_input.F        2010-05-05 23:04:41 UTC (rev 256)
+++ branches/lateral_boundary_conditions/src/framework/module_io_input.F        2010-05-06 20:48:16 UTC (rev 257)
@@ -21,6 +21,7 @@
 
 
    interface io_input_field
+      module procedure io_input_field0dReal
       module procedure io_input_field1dReal
       module procedure io_input_field2dReal
       module procedure io_input_field3dReal
@@ -1076,6 +1077,33 @@
    end subroutine io_input_get_dimension
 
 
+   subroutine io_input_field0dReal(input_obj, field)

+      implicit none
+
+      type (io_input_object), intent(in) :: input_obj      
+      type (field0dReal), intent(inout) :: field

+      include 'netcdf.inc'

+      integer :: nferr
+      integer :: varID
+      integer, dimension(1) :: start1, count1

+      start1(1) = 1
+      count1(1) = 1
+
+#include &quot;input_field0dreal.inc&quot;
+
+#if (RKIND == 8)
+      nferr = nf_get_vara_double(input_obj % rd_ncid, varID, start1, count1, field % scalar)
+#else
+      nferr = nf_get_vara_real(input_obj % rd_ncid, varID, start1, count1, field % scalar)
+#endif

+   end subroutine io_input_field0dReal
+
+
    subroutine io_input_field1dReal(input_obj, field)
  
       implicit none

Modified: branches/lateral_boundary_conditions/src/framework/module_io_output.F
===================================================================
--- branches/lateral_boundary_conditions/src/framework/module_io_output.F        2010-05-05 23:04:41 UTC (rev 256)
+++ branches/lateral_boundary_conditions/src/framework/module_io_output.F        2010-05-06 20:48:16 UTC (rev 257)
@@ -27,6 +27,7 @@
 
 
    interface io_output_field
+      module procedure io_output_field0dReal
       module procedure io_output_field1dReal
       module procedure io_output_field2dReal
       module procedure io_output_field3dReal
@@ -340,6 +341,35 @@
    end subroutine io_output_init
 
 
+   subroutine io_output_field0dReal(output_obj, field)
+
+      implicit none
+
+      type (io_output_object), intent(in) :: output_obj
+      type (field0dReal), intent(inout) :: field
+
+      include 'netcdf.inc'
+
+      integer :: nferr
+      integer :: varID
+      integer, dimension(1) :: start1, count1
+
+      start1(1) = 1
+      count1(1) = 1
+
+#include &quot;output_field0dreal.inc&quot;
+
+#if (RKIND == 8)
+      nferr = nf_put_vara_double(output_obj % wr_ncid, varID, start1, count1, field % scalar)
+#else
+      nferr = nf_put_vara_real(output_obj % wr_ncid, varID, start1, count1, field % scalar)
+#endif

+      nferr = nf_sync(output_obj % wr_ncid)
+
+   end subroutine io_output_field0dReal
+
+
    subroutine io_output_field1dReal(output_obj, field)
 
       implicit none

Modified: branches/lateral_boundary_conditions/src/framework/module_zoltan_interface.F
===================================================================
--- branches/lateral_boundary_conditions/src/framework/module_zoltan_interface.F        2010-05-05 23:04:41 UTC (rev 256)
+++ branches/lateral_boundary_conditions/src/framework/module_zoltan_interface.F        2010-05-06 20:48:16 UTC (rev 257)
@@ -1,9 +1,10 @@
 module zoltan_interface
    use zoltan
-   use mpi
 
    implicit none
 
+   include 'mpif.h'
+
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    !! Data for reordering cells
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Modified: branches/lateral_boundary_conditions/src/operators/Makefile
===================================================================
--- branches/lateral_boundary_conditions/src/operators/Makefile        2010-05-05 23:04:41 UTC (rev 256)
+++ branches/lateral_boundary_conditions/src/operators/Makefile        2010-05-06 20:48:16 UTC (rev 257)
@@ -10,10 +10,9 @@
 module_vector_reconstruction.o:
 
 clean:
-        $(RM) *.o *.mod libops.a
+        $(RM) *.o *.mod *.f90 libops.a
 
 .F.o:
         $(RM) $@ $*.mod
         $(CPP) $(CPPFLAGS) $(CPPINCLUDES) $&lt; &gt; $*.f90
         $(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES) -I../framework
-        $(RM) $*.f90

Modified: branches/lateral_boundary_conditions/src/registry/gen_inc.c
===================================================================
--- branches/lateral_boundary_conditions/src/registry/gen_inc.c        2010-05-05 23:04:41 UTC (rev 256)
+++ branches/lateral_boundary_conditions/src/registry/gen_inc.c        2010-05-06 20:48:16 UTC (rev 257)
@@ -424,26 +424,28 @@
          else {
             fortprintf(fd, &quot;      allocate(g %% %s)</font>
<font color="black">&quot;, var_ptr-&gt;name_in_code);
             fortprintf(fd, &quot;      allocate(g %% %s %% ioinfo)</font>
<font color="red">&quot;, var_ptr-&gt;name_in_code);
-            fortprintf(fd, &quot;      allocate(g %% %s %% array(&quot;, var_ptr-&gt;name_in_code);
-            dimlist_ptr = var_ptr-&gt;dimlist;
-            if (!strncmp(dimlist_ptr-&gt;dim-&gt;name_in_file, &quot;nCells&quot;, 1024) ||
-                !strncmp(dimlist_ptr-&gt;dim-&gt;name_in_file, &quot;nEdges&quot;, 1024) ||
-                !strncmp(dimlist_ptr-&gt;dim-&gt;name_in_file, &quot;nVertices&quot;, 1024))
-               fortprintf(fd, &quot;%s + 1&quot;, dimlist_ptr-&gt;dim-&gt;name_in_code);
-            else
-               fortprintf(fd, &quot;%s&quot;, dimlist_ptr-&gt;dim-&gt;name_in_code);
-            dimlist_ptr = dimlist_ptr-&gt;next;
-            while (dimlist_ptr) {
+            if (var_ptr-&gt;ndims &gt; 0) {
+               fortprintf(fd, &quot;      allocate(g %% %s %% array(&quot;, var_ptr-&gt;name_in_code);
+               dimlist_ptr = var_ptr-&gt;dimlist;
                if (!strncmp(dimlist_ptr-&gt;dim-&gt;name_in_file, &quot;nCells&quot;, 1024) ||
                    !strncmp(dimlist_ptr-&gt;dim-&gt;name_in_file, &quot;nEdges&quot;, 1024) ||
                    !strncmp(dimlist_ptr-&gt;dim-&gt;name_in_file, &quot;nVertices&quot;, 1024))
-                  fortprintf(fd, &quot;, %s + 1&quot;, dimlist_ptr-&gt;dim-&gt;name_in_code);
+                  fortprintf(fd, &quot;%s + 1&quot;, dimlist_ptr-&gt;dim-&gt;name_in_code);
                else
-                  fortprintf(fd, &quot;, %s&quot;, dimlist_ptr-&gt;dim-&gt;name_in_code);
+                  fortprintf(fd, &quot;%s&quot;, dimlist_ptr-&gt;dim-&gt;name_in_code);
                dimlist_ptr = dimlist_ptr-&gt;next;
+               while (dimlist_ptr) {
+                  if (!strncmp(dimlist_ptr-&gt;dim-&gt;name_in_file, &quot;nCells&quot;, 1024) ||
+                      !strncmp(dimlist_ptr-&gt;dim-&gt;name_in_file, &quot;nEdges&quot;, 1024) ||
+                      !strncmp(dimlist_ptr-&gt;dim-&gt;name_in_file, &quot;nVertices&quot;, 1024))
+                     fortprintf(fd, &quot;, %s + 1&quot;, dimlist_ptr-&gt;dim-&gt;name_in_code);
+                  else
+                     fortprintf(fd, &quot;, %s&quot;, dimlist_ptr-&gt;dim-&gt;name_in_code);
+                  dimlist_ptr = dimlist_ptr-&gt;next;
+               }
+               fortprintf(fd, &quot;))</font>
<font color="red">&quot;);
+   
             }
-            fortprintf(fd, &quot;))</font>
<font color="red">&quot;);
-
             if (var_ptr-&gt;iostreams &amp; INPUT0) 
                fortprintf(fd, &quot;      g %% %s %% ioinfo %% input = .true.</font>
<font color="gray">&quot;, var_ptr-&gt;name_in_code);
             else
@@ -493,9 +495,15 @@
             fortprintf(fd, &quot;      deallocate(g %% %s)</font>
<font color="black"></font>
<font color="red">&quot;, var_ptr2-&gt;super_array);
          }
          else {
-            fortprintf(fd, &quot;      deallocate(g %% %s %% array)</font>
<font color="red">&quot;, var_ptr-&gt;name_in_code);
-            fortprintf(fd, &quot;      deallocate(g %% %s %% ioinfo)</font>
<font color="red">&quot;, var_ptr-&gt;name_in_code);
-            fortprintf(fd, &quot;      deallocate(g %% %s)</font>
<font color="black"></font>
<font color="blue">&quot;, var_ptr-&gt;name_in_code);
+            if (var_ptr-&gt;ndims &gt; 0) {
+               fortprintf(fd, &quot;      deallocate(g %% %s %% array)</font>
<font color="blue">&quot;, var_ptr-&gt;name_in_code);
+               fortprintf(fd, &quot;      deallocate(g %% %s %% ioinfo)</font>
<font color="blue">&quot;, var_ptr-&gt;name_in_code);
+               fortprintf(fd, &quot;      deallocate(g %% %s)</font>
<font color="black"></font>
<font color="blue">&quot;, var_ptr-&gt;name_in_code);
+            }
+            else {
+               fortprintf(fd, &quot;      deallocate(g %% %s %% ioinfo)</font>
<font color="blue">&quot;, var_ptr-&gt;name_in_code);
+               fortprintf(fd, &quot;      deallocate(g %% %s)</font>
<font color="black"></font>
<font color="gray">&quot;, var_ptr-&gt;name_in_code);
+            }
             var_ptr = var_ptr-&gt;next;
          }
       }
@@ -1066,7 +1074,10 @@
             fortprintf(fd, &quot;      deallocate(super_%s%id)</font>
<font color="red">&quot;, vtype, var_ptr-&gt;ndims);
       }
       else {
-         fortprintf(fd, &quot;      block %% time_levs(1) %% state %% %s %% scalar = %s%id %% scalar</font>
<font color="blue">&quot;, var_ptr-&gt;name_in_code, vtype, var_ptr-&gt;ndims);
+         if (var_ptr-&gt;timedim) 
+            fortprintf(fd, &quot;      block %% time_levs(1) %% state %% %s %% scalar = %s%id %% scalar</font>
<font color="blue">&quot;, var_ptr-&gt;name_in_code, vtype, var_ptr-&gt;ndims);
+         else
+            fortprintf(fd, &quot;      block %% mesh %% %s %% scalar = %s%id %% scalar</font>
<font color="black">&quot;, var_ptr-&gt;name_in_code, vtype, var_ptr-&gt;ndims);
       }
      
       fortprintf(fd, &quot;      end if</font>
<font color="black"></font>
<font color="gray">&quot;);
@@ -1126,10 +1137,10 @@
    
    
    /*
-    *  Generate code to read 1d, 2d, 3d time-invariant fields
+    *  Generate code to read 0d, 1d, 2d, 3d time-invariant fields
     */
    for(j=0; j&lt;2; j++) {
-      for(i=1; i&lt;=3; i++) {
+      for(i=0; i&lt;=3; i++) {
          if (j == 0) {
             sprintf(fname, &quot;input_field%idinteger.inc&quot;, i);
             ivtype = INTEGER;
@@ -1537,7 +1548,10 @@
       }
       else {
          fortprintf(fd, &quot;      %s%id %% ioinfo %% fieldName = \'%s\'</font>
<font color="red">&quot;, vtype, var_ptr-&gt;ndims, var_ptr-&gt;name_in_file);
-         fortprintf(fd, &quot;      %s%id %% scalar = domain %% blocklist %% time_levs(1) %% state %% %s %% scalar</font>
<font color="blue">&quot;, vtype, var_ptr-&gt;ndims, var_ptr-&gt;name_in_code);
+         if (var_ptr-&gt;timedim) 
+            fortprintf(fd, &quot;      %s%id %% scalar = domain %% blocklist %% time_levs(1) %% state %% %s %% scalar</font>
<font color="blue">&quot;, vtype, var_ptr-&gt;ndims, var_ptr-&gt;name_in_code);
+         else
+            fortprintf(fd, &quot;      %s%id %% scalar = domain %% blocklist %% mesh %% %s %% scalar</font>
<font color="gray">&quot;, vtype, var_ptr-&gt;ndims, var_ptr-&gt;name_in_code);
       }
 
       if (var_ptr-&gt;timedim)
@@ -1558,10 +1572,10 @@
    
    
    /*
-    *  Generate code to write 1d, 2d, 3d time-invariant fields
+    *  Generate code to write 0d, 1d, 2d, 3d time-invariant fields
     */
    for(j=0; j&lt;2; j++) {
-      for(i=1; i&lt;=3; i++) {
+      for(i=0; i&lt;=3; i++) {
          if (j == 0) {
             sprintf(fname, &quot;output_field%idinteger.inc&quot;, i);
             ivtype = INTEGER;

</font>
</pre>