<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) &
- = 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) &
+ = 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(:,:) &
= 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) &
- ! = block % state % time_levs(1) % state % u % array(:,iEdge) &
- ! - 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) &
+ = block % state % time_levs(1) % state % u % array(:,iEdge) &
+ - block % state % time_levs(1) % state % uBtr % array(iEdge)
block % state % time_levs(2) % state % u % array(:,iEdge) &
= 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) &
- 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>