<p><b>mpetersen@lanl.gov</b> 2011-06-07 14:36:07 -0600 (Tue, 07 Jun 2011)</p><p>Fixed error in u computation at end of Higdon method.<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-07 19:04:07 UTC (rev 880)
+++ branches/ocean_projects/timesplitting_mrp/src/core_ocean/module_mpas_core.F        2011-06-07 20:36:07 UTC (rev 881)
@@ -83,9 +83,8 @@
call compute_mesh_scaling(mesh)
call rbfInterp_initialize(mesh)
-! mrp temp
-! call init_reconstruct(mesh)
-! call reconstruct(block % state % time_levs(1) % state, mesh)
+ call init_reconstruct(mesh)
+ call reconstruct(block % state % time_levs(1) % state, mesh)
! initialize velocities and tracers on land to be -1e34
! The reconstructed velocity on land will have values not exactly
@@ -148,9 +147,10 @@
! Eventually, dt should be domain specific
dt = config_dt
ntimesteps = config_ntimesteps
+
+! mrp temp remove first output frame
+! call write_output_frame(output_obj, output_frame, domain)
- call write_output_frame(output_obj, output_frame, domain)
-
! During integration, time level 1 stores the model state at the beginning of the
! time step, and time level 2 stores the state advanced dt in time by timestep(...)
do itimestep = 1,ntimesteps
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-07 19:04:07 UTC (rev 880)
+++ branches/ocean_projects/timesplitting_mrp/src/core_ocean/module_time_integration.F        2011-06-07 20:36:07 UTC (rev 881)
@@ -1234,12 +1234,27 @@
! u_{n+1} = uBtr_{n+1} + 2*uBcl_{n+1/2} - uBcl_n
do iEdge=1,block % mesh % nEdges
- block % state % time_levs(2) % state % u % array(:,iEdge) &
+ do k=1,block % mesh % maxLevelEdgeTop % array(iEdge)
+ block % state % time_levs(2) % state % u % array(k,iEdge) &
= block % state % time_levs(oldBtrSubcycleTime) % state % uBtrSubcycle % array(iEdge) &
- +2*block % state % time_levs(2) % state % uBcl % array(:,iEdge) &
- - block % state % time_levs(1) % state % uBcl % array(:,iEdge)
- end do
+ +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
+ enddo
+ enddo ! iEdges
+
+
+! do iEdge=1,block % mesh % nEdges
+! block % state % time_levs(2) % state % u % array(:,iEdge) &
+! = block % state % time_levs(oldBtrSubcycleTime) % state % uBtrSubcycle % array(iEdge) &
+! +2*block % state % time_levs(2) % state % uBcl % array(:,iEdge) &
+! - block % state % time_levs(1) % state % uBcl % array(:,iEdge)
+! end do
+
if (trim(config_time_integration) == 'higdon_split') then
do iCell=1,block % mesh % nCells
! SSH for the next step is from the end of the barotropic subcycle.
@@ -1260,16 +1275,6 @@
end do ! iCell
end if ! higdon_split
- do iCell=1,block % mesh % nCells
- do k=1,block % mesh % maxLevelCell % array(iCell)
- block % state % time_levs(2) % state % u % array(k,iCell) &
- = block % state % time_levs(oldBtrSubcycleTime) % state % uBtrSubcycle % array(iCell) &
- +2*block % state % time_levs(2) % state % uBcl % array(k,iCell) &
- - block % state % time_levs(1) % state % uBcl % array(k,iCell)
- enddo
-
- enddo ! iCell
-
u => block % state % time_levs(2) % state % u % array
tracers => block % state % time_levs(2) % state % tracers % array
h => block % state % time_levs(2) % state % h % array
@@ -1366,8 +1371,7 @@
call compute_solve_diagnostics(dt, block % state % time_levs(2) % state, block % mesh)
-! mrp temp
-! call reconstruct(block % state % time_levs(2) % state, block % mesh)
+ call reconstruct(block % state % time_levs(2) % state, block % mesh)
block => block % next
end do
</font>
</pre>