<p><b>mpetersen@lanl.gov</b> 2011-06-10 13:03:45 -0600 (Fri, 10 Jun 2011)</p><p>Changed initialization at the beginning of each timestep so that baroclinic mode is recomputed, due to changes from the implicit vertical mixing at the end of the previous timestep.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/timesplitting_mrp/src/core_ocean/module_mpas_core.F
===================================================================
--- branches/ocean_projects/timesplitting_mrp/src/core_ocean/module_mpas_core.F        2011-06-10 18:44:09 UTC (rev 896)
+++ branches/ocean_projects/timesplitting_mrp/src/core_ocean/module_mpas_core.F        2011-06-10 19:03:45 UTC (rev 897)
@@ -347,15 +347,15 @@
 
          elseif (trim(config_time_integration) == 'higdon_split') then
 
-        if (config_filter_btr_mode) then
-      do iCell=1,block % mesh % nCells
-          block % state % time_levs(1) % state % h % array(1,iCell) &amp; 
-        = block % mesh % hZLevel % array(1)
+            if (config_filter_btr_mode) then
+               do iCell=1,block % mesh % nCells
+                  block % state % time_levs(1) % state % h % array(1,iCell) &amp; 
+                = block % mesh % hZLevel % array(1)

+                  block % state % time_levs(1) % state % ssh % array(iCell) = 0.0
+               enddo
+            endif 
 
-          block % state % time_levs(1) % state % ssh % array(iCell) = 0.0
-      enddo
-        endif 
-
             do iEdge=1,block % mesh % nEdges
                cell1 = block % mesh % cellsOnEdge % array(1,iEdge)
                cell2 = block % mesh % cellsOnEdge % array(2,iEdge)
@@ -390,10 +390,11 @@
             enddo
 
         if (config_filter_btr_mode) then
-            block % state % time_levs(1) % state % uBtr % array(:) = 0.0
-
+          ! filter uBtr out of initial condition
             block % state % time_levs(1) % state % u % array(:,:) &amp;
           = block % state % time_levs(1) % state % uBcl % array(:,:)
+
+            block % state % time_levs(1) % state % uBtr % array(:) = 0.0
         endif 
 
          endif

Modified: branches/ocean_projects/timesplitting_mrp/src/core_ocean/module_time_integration.F
===================================================================
--- branches/ocean_projects/timesplitting_mrp/src/core_ocean/module_time_integration.F        2011-06-10 18:44:09 UTC (rev 896)
+++ branches/ocean_projects/timesplitting_mrp/src/core_ocean/module_time_integration.F        2011-06-10 19:03:45 UTC (rev 897)
@@ -402,10 +402,12 @@
 
          do iEdge=1,block % mesh % nEdges
 
-           ! mrp delete soon
-           !   block % state % time_levs(1) % state % uBcl % array(:,iEdge) &amp;
-           ! = block % state % time_levs(1) % state % u % array(:,iEdge) &amp;
-           ! - block % state % time_levs(1) % state % uBtr % array(iEdge)
+            ! The baroclinic velocity needs be recomputed at the beginning of a 
+            ! timestep because the implicit vertical mixing is conducted on the
+            ! total u.  We keep uBcl from the previous timestep.
+              block % state % time_levs(1) % state % uBcl % array(:,iEdge) &amp;
+            = block % state % time_levs(1) % state % u % array(:,iEdge) &amp;
+            - block % state % time_levs(1) % state % uBtr % array(iEdge)
 
               block % state % time_levs(2) % state % u % array(:,iEdge) &amp;
             = block % state % time_levs(1) % state % u % array(:,iEdge)
@@ -1193,6 +1195,7 @@
 !  block % state % time_levs(2) % state % tracers % array(3,1,1:nCells) = domain % dminfo % my_proc_id
 ! printing end
 
+
          ! Recompute final u to go on to next step.
          ! u_{n+1} = uBtr_{n+1} + uBcl_{n+1} 
          ! Right now uBclNew is at time n+1/2, so back compute to get uBcl at time n+1
@@ -1207,6 +1210,7 @@
             +2*block % state % time_levs(2) % state % uBcl % array(k,iEdge) &amp;
             -  block % state % time_levs(1) % state % uBcl % array(k,iEdge)
             enddo
+
             ! mrp 110607 zero out velocity below land edges. efficiency: this may not be required.
             do k=block % mesh % maxLevelEdgeTop % array(iEdge) + 1, block % mesh % nVertLevels
                block % state % time_levs(2) % state % u % array(k,iEdge) = 0.0

</font>
</pre>