<p><b>mpetersen@lanl.gov</b> 2012-06-06 10:32:21 -0600 (Wed, 06 Jun 2012)</p><p>BRANCH COMMIT: Bug fix. A boundary update is required on the velocity and tracer fields in RK4 after implicit vertical mixing. Otherwise, it leads to lack of volume conservation.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/vol_cons_RK_imp_mix/src/core_ocean/mpas_ocn_time_integration_rk4.F
===================================================================
--- branches/ocean_projects/vol_cons_RK_imp_mix/src/core_ocean/mpas_ocn_time_integration_rk4.F        2012-06-06 15:18:54 UTC (rev 1965)
+++ branches/ocean_projects/vol_cons_RK_imp_mix/src/core_ocean/mpas_ocn_time_integration_rk4.F        2012-06-06 16:32:21 UTC (rev 1966)
@@ -316,6 +316,22 @@
call mpas_timer_stop("RK4-implicit vert mix")
end if
+ block => block % next
+ end do
+
+ ! Update halo on u and tracers, which weres just updated for implicit vertical mixing. If not done,
+ ! this leads to lack of volume conservation. It is required because halo updates in RK4 are only
+ ! conducted on tendencies, not on the velocity and tracer fields. So this update is required to
+ ! communicate the change due to implicit vertical mixing across the boundary.
+
+ if (config_implicit_vertical_mix) then
+ call mpas_dmpar_exch_halo_field(domain % blocklist % state % time_levs(2) % state % u)
+ call mpas_dmpar_exch_halo_field(domain % blocklist % state % time_levs(2) % state % tracers)
+ end if
+
+ block => domain % blocklist
+ do while (associated(block))
+
if (config_test_case == 1) then ! For case 1, wind field should be fixed
block % state % time_levs(2) % state % u % array(:,:) = block % state % time_levs(1) % state % u % array(:,:)
end if
</font>
</pre>