<p><b>croesch@ucar.edu</b> 2011-12-15 15:44:25 -0700 (Thu, 15 Dec 2011)</p><p>BRANCH COMMIT<br>
<br>
Update exchange lists in mpas_atm_time_integration and mpas_atmphys_todynamics, merge trunk updates into halo branch<br>
<br>
_M .<br>
M src/core_init_nhyd_atmos/mpas_init_atm_test_cases.F<br>
M src/core_init_nhyd_atmos/Registry<br>
M src/core_sw/mpas_sw_time_integration.F<br>
M src/core_atmos_physics/mpas_atmphys_date_time.F<br>
M src/core_atmos_physics/mpas_atmphys_init.F<br>
M src/core_atmos_physics/mpas_atmphys_driver_lsm.F<br>
M src/core_atmos_physics/mpas_atmphys_todynamics.F<br>
M src/core_atmos_physics/mpas_atmphys_landuse.F<br>
M src/core_nhyd_atmos/mpas_atm_time_integration.F<br>
M src/core_nhyd_atmos/Registry<br>
M src/core_ocean/mpas_ocn_tracer_hmix_del4.F<br>
M src/core_ocean/mpas_ocn_tracer_vadv_stencil.F<br>
M src/core_ocean/mpas_ocn_vel_hmix_del4.F<br>
M src/core_ocean/mpas_ocn_tracer_vadv_stencil2.F<br>
M src/core_ocean/mpas_ocn_tracer_vadv_stencil3.F<br>
M src/core_ocean/mpas_ocn_tracer_vadv_stencil4.F<br>
M src/core_ocean/Registry<br>
M src/core_ocean/mpas_ocn_tracer_vadv_spline2.F<br>
M src/core_ocean/mpas_ocn_tracer_vadv_spline3.F<br>
M src/core_ocean/mpas_ocn_vel_vadv.F<br>
M src/core_ocean/mpas_ocn_tracer_vadv_spline.F<br>
</p><hr noshade><pre><font color="gray">
Property changes on: branches/halo
___________________________________________________________________
Modified: svn:mergeinfo
- /branches/ocean_projects/imp_vert_mix_mrp:754-986
/branches/ocean_projects/split_explicit_mrp:1134-1138
/branches/ocean_projects/split_explicit_timestepping:1044-1097
/branches/ocean_projects/vert_adv_mrp:704-745
/branches/source_renaming:1082-1113
/branches/time_manager:924-962
+ /branches/ocean_projects/imp_vert_mix_mrp:754-986
/branches/ocean_projects/split_explicit_mrp:1134-1138
/branches/ocean_projects/split_explicit_timestepping:1044-1097
/branches/ocean_projects/vert_adv_mrp:704-745
/branches/source_renaming:1082-1113
/branches/time_manager:924-962
/trunk/mpas:1193-1257
Modified: branches/halo/src/core_atmos_physics/mpas_atmphys_date_time.F
===================================================================
--- branches/halo/src/core_atmos_physics/mpas_atmphys_date_time.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_atmos_physics/mpas_atmphys_date_time.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -3,8 +3,7 @@
implicit none
private
- public:: get_current_date, &
- get_julgmt, &
+ public:: get_julgmt, &
monthly_interp_to_date, &
monthly_min_max
@@ -13,17 +12,6 @@
contains
!=============================================================================================
- subroutine get_current_date
-!=============================================================================================
-
-!temporary subroutine to provide the date at which the forecast begins.right now, that date is
-!hard-wired. This will change when the time manager is in place.
-
- current_date = '2010-10-23_00'
-
- end subroutine get_current_date
-
-!=============================================================================================
subroutine get_julgmt(date_str,julyr,julday,gmt)
!=============================================================================================
Modified: branches/halo/src/core_atmos_physics/mpas_atmphys_driver_lsm.F
===================================================================
--- branches/halo/src/core_atmos_physics/mpas_atmphys_driver_lsm.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_atmos_physics/mpas_atmphys_driver_lsm.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -18,10 +18,10 @@
deallocate_lsm, &
driver_lsm
- logical,parameter:: rdxmaxalb = .true. !use snow albedo from geogrid;false use table values
- logical,parameter:: myj = .false. !true if using Mellor-Yamada PBL scheme.
- logical,parameter:: frpcpn = .false.
- logical,parameter:: rdlai2d = .false.
+ logical,parameter:: rdmaxalb = .false. !use snow albedo from geogrid;false use table values
+ logical,parameter:: myj = .false. !true if using Mellor-Yamada PBL scheme.
+ logical,parameter:: frpcpn = .false.
+ logical,parameter:: rdlai2d = .false.
!urban physics: since MPAS does not plan to run the urban physics option, the two options
!below are defined locally:
Modified: branches/halo/src/core_atmos_physics/mpas_atmphys_init.F
===================================================================
--- branches/halo/src/core_atmos_physics/mpas_atmphys_init.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_atmos_physics/mpas_atmphys_init.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -73,8 +73,7 @@
!initialization of global surface properties. set here for now, but may be moved when time
!manager is implemented:
- if(.not. config_do_restart) &
- call landuse_init_forMPAS(dminfo,julday,mesh,diag_physics,sfc_input)
+ call landuse_init_forMPAS(dminfo,julday,mesh,diag_physics,sfc_input)
!initialization of parameterized deep convective processes:
if(config_conv_deep_scheme .ne. 'off') &
Modified: branches/halo/src/core_atmos_physics/mpas_atmphys_landuse.F
===================================================================
--- branches/halo/src/core_atmos_physics/mpas_atmphys_landuse.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_atmos_physics/mpas_atmphys_landuse.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -6,7 +6,8 @@
module mpas_atmphys_landuse
use mpas_configure,only: input_landuse_data, &
config_sfc_albedo, &
- config_frac_seaice
+ config_frac_seaice, &
+ config_do_restart
use mpas_dmpar
use mpas_grid_types
@@ -184,6 +185,11 @@
DM_BCAST_MACRO(scfx)
write(0,*) '--- isice =',isice
write(0,*) '--- iswater =',iswater
+ if(config_do_restart) then
+ write(0,*) '--- config_do_restart =', config_do_restart
+ write(0,*) '--- skip the end of landuse_init_forMPAS'
+ return
+ endif
!defines the surface properties over the entire domain:
do iCell = 1, nCells
Modified: branches/halo/src/core_atmos_physics/mpas_atmphys_todynamics.F
===================================================================
--- branches/halo/src/core_atmos_physics/mpas_atmphys_todynamics.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_atmos_physics/mpas_atmphys_todynamics.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -12,7 +12,7 @@
contains
!=============================================================================================
- subroutine physics_addtend(dminfo,cellsToSend,cellsToRecv,mesh,state,diag,tend, &
+ subroutine physics_addtend(dminfo,parinfo,mesh,state,diag,tend, &
tend_physics,mass,mass_edge)
!=============================================================================================
@@ -20,7 +20,7 @@
!----------------
type(dm_info), intent(in):: dminfo
type(mesh_type),intent(in):: mesh
- type(exchange_list),pointer:: cellsToSend,cellsToRecv
+ type(parallel_info),pointer:: parinfo
type(state_type),intent(in):: state
type(diag_type),intent(in):: diag
@@ -90,7 +90,7 @@
if(config_pbl_scheme .ne. 'off') then
allocate(rublten_Edge(nVertLevels,nEdges))
rublten_Edge(:,:) = 0.
- call tend_toEdges(dminfo,CellsToSend,CellsToRecv,mesh,rublten,rvblten,rublten_Edge)
+ call tend_toEdges(dminfo,parinfo,mesh,rublten,rvblten,rublten_Edge)
do i = 1, nEdgesSolve
do k = 1, nVertLevels
tend_u(k,i)=tend_u(k,i)+rublten_Edge(k,i)*mass_edge(k,i)
@@ -184,14 +184,14 @@
end subroutine physics_addtend
!=============================================================================================
- subroutine tend_toEdges(dminfo,cellsToSend,cellsToRecv,mesh,Ux_tend,Uy_tend,U_tend)
+ subroutine tend_toEdges(dminfo,parinfo,mesh,Ux_tend,Uy_tend,U_tend)
!=============================================================================================
!input arguments:
!----------------
type(dm_info),intent(in):: dminfo
type(mesh_type),intent(in):: mesh
- type(exchange_list),intent(in),pointer:: cellsToSend,cellsToRecv
+ type(parallel_info),pointer:: parinfo
real(kind=RKIND),intent(in),dimension(:,:):: Ux_tend,Uy_tend
@@ -232,9 +232,9 @@
enddo
call mpas_dmpar_exch_halo_field2d_real( &
- dminfo,Ux_tend_halo,nVertLevels,nCells,cellsToSend,cellsToRecv)
+ dminfo,Ux_tend_halo,nVertLevels,nCells,parinfo % halo1CellsToSend,parinfo % halo1CellsToRecv)
call mpas_dmpar_exch_halo_field2d_real( &
- dminfo,Uy_tend_halo,nVertLevels,nCells,cellsToSend,cellsToRecv)
+ dminfo,Uy_tend_halo,nVertLevels,nCells,parinfo % halo1CellsToSend,parinfo % halo1CellsToRecv)
U_tend(:,:) = 0.0
do iCell = 1, nCells
Modified: branches/halo/src/core_init_nhyd_atmos/Registry
===================================================================
--- branches/halo/src/core_init_nhyd_atmos/Registry        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_init_nhyd_atmos/Registry        2011-12-15 22:44:25 UTC (rev 1258)
@@ -110,7 +110,7 @@
var persistent real fEdge ( nEdges ) 0 io fEdge mesh - -
var persistent real fVertex ( nVertices ) 0 io fVertex mesh - -
-var persistent real densityFunction ( nCells ) 0 iro densityFunction mesh - -
+var persistent real meshDensity ( nCells ) 0 iro meshDensity mesh - -
# some solver scalar coefficients
Modified: branches/halo/src/core_init_nhyd_atmos/mpas_init_atm_test_cases.F
===================================================================
--- branches/halo/src/core_init_nhyd_atmos/mpas_init_atm_test_cases.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_init_nhyd_atmos/mpas_init_atm_test_cases.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -2069,7 +2069,7 @@
real (kind=RKIND), dimension(:,:), pointer :: sorted_arr
real(kind=RKIND), dimension(:), pointer :: hs, hs1
- real(kind=RKIND) :: hm, zh, dzmin, dzmina, dzminf, sm
+ real(kind=RKIND) :: hm, zh, dzmin, dzmina, dzmina_global, dzminf, sm
integer :: nsmterrain, kz, sfc_k
logical :: hybrid, smooth
@@ -3045,10 +3045,11 @@
! dzmina = minval(hs(:)-hx(k-1,:))
dzmina = minval(zw(k)+ah(k)*hs(:)-zw(k-1)-ah(k-1)*hx(k-1,:))
+ call mpas_dmpar_min_real(dminfo, dzmina, dzmina_global)
! write(0,*) ' k,i, dzmina, dzmin, zw(k)-zw(k-1) ', k,i, dzmina, dzmin, zw(k)-zw(k-1)
- if (dzmina >= dzmin*(zw(k)-zw(k-1))) then
+ if (dzmina_global >= dzmin*(zw(k)-zw(k-1))) then
hx(k,:)=hs(:)
- dzminf = dzmina
+ dzminf = dzmina_global
else
exit
end if
Modified: branches/halo/src/core_nhyd_atmos/Registry
===================================================================
--- branches/halo/src/core_nhyd_atmos/Registry        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_nhyd_atmos/Registry        2011-12-15 22:44:25 UTC (rev 1258)
@@ -121,7 +121,7 @@
var persistent real fEdge ( nEdges ) 0 iro fEdge mesh - -
var persistent real fVertex ( nVertices ) 0 iro fVertex mesh - -
-var persistent real densityFunction ( nCells ) 0 iro meshDensity mesh - -
+var persistent real meshDensity ( nCells ) 0 iro meshDensity mesh - -
var persistent real meshScalingDel2 ( nEdges ) 0 ro meshScalingDel2 mesh - -
var persistent real meshScalingDel4 ( nEdges ) 0 ro meshScalingDel4 mesh - -
Modified: branches/halo/src/core_nhyd_atmos/mpas_atm_time_integration.F
===================================================================
--- branches/halo/src/core_nhyd_atmos/mpas_atm_time_integration.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_nhyd_atmos/mpas_atm_time_integration.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -190,7 +190,7 @@
if (debug) write(0,*) ' add physics tendencies '
block => domain % blocklist
do while (associated(block))
- call physics_addtend( domain % dminfo , block % parinfo % allCellsToSend, block % parinfo % allCellsToRecv, &
+ call physics_addtend( domain % dminfo , block % parinfo, &
block % mesh , block % state % time_levs(2) % state, block % diag, block % tend, &
block % tend_physics , block % state % time_levs(2) % state % rho_zz % array(:,:), &
block % diag % rho_edge % array(:,:) )
@@ -206,7 +206,7 @@
block => domain % blocklist
do while (associated(block))
-! tend_u
+! tend_u ! WCS_halo_opt_1 - only own-cell edges (include own-cell perimeter)
call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % tend % u % array(:,:), &
block % mesh % nVertLevels, block % mesh % nEdges, &
block % parinfo % ownCellBoundedEdgesToSend, block % parinfo % ownCellBoundedEdgesToRecv)
@@ -240,7 +240,9 @@
block => domain % blocklist
do while (associated(block))
-! rtheta_pp
+! rtheta_pp ! WCS_halo_opt_1 - just first halo row
+ ! WCS_halo_opt_2 - communicate this only if (small_step < number_sub_steps(rk_step))
+ ! we pick up the 2-halo-row communication after the acoustic step is complete in the next step
call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % diag % rtheta_pp % array(:,:), &
block % mesh % nVertLevels, block % mesh % nCells, &
block % parinfo % halo1CellsToSend, block % parinfo % halo1CellsToRecv)
@@ -275,16 +277,16 @@
call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % diag % rho_pp % array(:,:), &
block % mesh % nVertLevels, block % mesh % nCells, &
block % parinfo % allCellsToSend, block % parinfo % allCellsToRecv)
+
+ ! the second layer of halo cells must be exchanged before calling atm_recover_large_step_variables
+ call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % diag % rtheta_pp % array(:,:), &
+ block % mesh % nVertLevels, block % mesh % nCells, &
+ block % parinfo % halo2CellsToSend, block % parinfo % halo2CellsToRecv)
+
block => block % next
end do
block => domain % blocklist
-
- ! the second layer of halo cells must be exchanged before calling atm_recover_large_step_variables
- call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % diag % rtheta_pp % array(:,:), &
- block % mesh % nVertLevels, block % mesh % nCells, &
- block % parinfo % halo2CellsToSend, block % parinfo % halo2CellsToRecv)
-
do while (associated(block))
call atm_recover_large_step_variables( block % state % time_levs(2) % state, &
block % diag, block % tend, block % mesh, &
@@ -325,7 +327,7 @@
block % state % time_levs(1) % state, block % state % time_levs(2) % state, &
block % diag, &
block % mesh, rk_timestep(rk_step), rk_step, 3, &
- domain % dminfo, block % parinfo % allCellsToSend, block % parinfo % allCellsToRecv )
+ domain % dminfo, block % parinfo )
end if
block => block % next
end do
@@ -385,9 +387,13 @@
! **** this will always be needed - perhaps we can cover this with compute_solve_diagnostics
! scalars
- call mpas_dmpar_exch_halo_field3d_real(domain % dminfo, block % state % time_levs(2) % state % scalars % array(:,:,:), &
- block % state % time_levs(2) % state % num_scalars, block % mesh % nVertLevels, block % mesh % nCells, &
- block % parinfo % allCellsToSend, block % parinfo % allCellsToRecv)
+! WCS_halo_opt_2 - communicate this only if (rk_step < 3) (this is not needed for micro, and scalars get communicated beginning of next timestep)
+
+ if(rk_step < 3) then
+ call mpas_dmpar_exch_halo_field3d_real(domain % dminfo, block % state % time_levs(2) % state % scalars % array(:,:,:), &
+ block % state % time_levs(2) % state % num_scalars, block % mesh % nVertLevels, block % mesh % nCells, &
+ block % parinfo % allCellsToSend, block % parinfo % allCellsToRecv)
+ end if
block => block % next
end do
@@ -1414,7 +1420,7 @@
!---------------------------
- subroutine atm_advance_scalars_mono( tend, s_old, s_new, diag, grid, dt, rk_step, rk_order, dminfo, cellsToSend, cellsToRecv)
+ subroutine atm_advance_scalars_mono( tend, s_old, s_new, diag, grid, dt, rk_step, rk_order, dminfo, parinfo)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! Input: s - current model state
@@ -1431,7 +1437,7 @@
integer, intent(in) :: rk_step, rk_order
type (dm_info), intent(in) :: dminfo
- type (exchange_list), pointer :: cellsToSend, cellsToRecv
+ type (parallel_info), pointer :: parinfo
integer :: i, iCell, iEdge, k, iScalar, cell1, cell2
@@ -1543,7 +1549,7 @@
s_old % num_scalars, &
grid % nVertLevels, &
grid % nCells, &
- cellsToSend, cellsToRecv )
+ parinfo % allCellsToSend, parinfo % allCellsToRecv )
!
! Runge Kutta integration, so we compute fluxes from scalar_new values, update starts from scalar_old
@@ -1714,16 +1720,18 @@
!
! communicate scale factors here
!
+! WCS_halo_opt_2 - communicate only first halo row in these next two exchanges
+!
call mpas_dmpar_exch_halo_field2d_real( dminfo, &
scale_in(:,:), &
grid % nVertLevels, &
grid % nCells, &
- cellsToSend, cellsToRecv )
+ parinfo % halo1CellsToSend, parinfo % halo1CellsToRecv )
call mpas_dmpar_exch_halo_field2d_real( dminfo, &
scale_out(:,:), &
grid % nVertLevels, &
grid % nCells, &
- cellsToSend, cellsToRecv )
+ parinfo % halo1CellsToSend, parinfo % halo1CellsToRecv )
!
! rescale the fluxes
!
Modified: branches/halo/src/core_ocean/Registry
===================================================================
--- branches/halo/src/core_ocean/Registry        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/Registry        2011-12-15 22:44:25 UTC (rev 1258)
@@ -193,7 +193,6 @@
var persistent real temperature ( nVertLevels nCells Time ) 2 iro temperature state tracers dynamics
var persistent real salinity ( nVertLevels nCells Time ) 2 iro salinity state tracers dynamics
var persistent real tracer1 ( nVertLevels nCells Time ) 2 iro tracer1 state tracers testing
-var persistent real tracer2 ( nVertLevels nCells Time ) 2 iro tracer2 state tracers testing
# Tendency variables: neither read nor written to any files
var persistent real tend_u ( nVertLevels nEdges Time ) 1 - u tend - -
@@ -202,7 +201,6 @@
var persistent real tend_temperature ( nVertLevels nCells Time ) 1 - temperature tend tracers dynamics
var persistent real tend_salinity ( nVertLevels nCells Time ) 1 - salinity tend tracers dynamics
var persistent real tend_tracer1 ( nVertLevels nCells Time ) 1 - tracer1 tend tracers testing
-var persistent real tend_tracer2 ( nVertLevels nCells Time ) 1 - tracer2 tend tracers testing
# state variables for Split Explicit timesplitting
var persistent real uBtr ( nEdges Time ) 2 - uBtr state - -
Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_hmix_del4.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_hmix_del4.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_hmix_del4.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -212,6 +212,7 @@
end do
deallocate(delsq_tracer)
+ deallocate(boundaryMask)
call mpas_timer_stop("compute_scalar_tend-horiz diff 4")
!--------------------------------------------------------------------
Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -163,6 +163,8 @@
integer :: err1, err2
+ err = 0
+
splineOn = .false.
if(config_vert_tracer_adv.eq.'spline') then
Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline2.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline2.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline2.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -139,6 +139,7 @@
allocate(tracerTop(num_tracers,nVertLevels+1,nCells))
do iCell=1,nCellsSolve
+ tracerTop(:,1,iCell) = tracers(:,1,iCell)
do k=2,maxLevelCell(iCell)
do iTracer=1,num_tracers
! Note hRatio on the k side is multiplied by tracer at k-1
@@ -148,6 +149,7 @@
+ hRatioZLevelKm1(k)*tracers(iTracer,k ,iCell)
end do
end do
+ tracerTop(:,maxLevelCell(iCell)+1,iCell) = tracers(:,maxLevelCell(iCell),iCell)
end do
do iCell=1,nCellsSolve
Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline3.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline3.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline3.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -172,8 +172,9 @@
posZMidZLevel, tracersIn, tracer2ndDer, maxLevelCell(iCell), &
posZTopZLevel, tracersOut, maxLevelCell(iCell)-1 )
+ tracerTop(itracer,1,iCell) = tracers(iTracer,1,iCell)
tracerTop(iTracer,2:maxLevelCell(iCell),iCell) = tracersOut(1:maxLevelCell(iCell)-1)
-
+ tracerTop(itracer,maxLevelCell(iCell)+1,iCell) = tracers(iTracer,maxLevelCell(iCell),iCell)
end do
end do
Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -126,8 +126,8 @@
if(.not. stencilOn) return
call ocn_tracer_vadv_stencil2_tend(grid, wTop, tracers, tend, err1)
- call ocn_tracer_vadv_stencil3_tend(grid, wTop, tracers, tend, err1)
- call ocn_tracer_vadv_stencil4_tend(grid, wTop, tracers, tend, err1)
+ call ocn_tracer_vadv_stencil3_tend(grid, wTop, tracers, tend, err2)
+ call ocn_tracer_vadv_stencil4_tend(grid, wTop, tracers, tend, err3)
err = ior(err1, ior(err2, err3))
Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil2.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil2.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil2.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -138,6 +138,7 @@
! Compute tracerTop using centered stencil, a simple average.
do iCell=1,nCellsSolve
+ tracerTop(:,1,iCell) = tracers(:,1,iCell)
do k=2,maxLevelCell(iCell)
do iTracer=1,num_tracers
tracerTop(iTracer,k,iCell) = &
@@ -145,6 +146,7 @@
+tracers(iTracer,k ,iCell))/2.0
end do
end do
+ tracerTop(:,maxLevelCell(iCell)+1,iCell) = tracers(:,maxLevelCell(iCell),iCell)
end do
do iCell=1,nCellsSolve
Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil3.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil3.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil3.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -145,6 +145,7 @@
! namelist, if desired.
flux3Coef = 1.0
do iCell=1,nCellsSolve
+ tracerTop(:,1,iCell) = tracers(:,1,iCell)
k=2
do iTracer=1,num_tracers
tracerTop(iTracer,k,iCell) = &
@@ -168,6 +169,7 @@
hRatioZLevelK(k) *tracers(iTracer,k-1,iCell) &
+ hRatioZLevelKm1(k)*tracers(iTracer,k ,iCell)
end do
+ tracerTop(:,maxLevelCell(iCell)+1,iCell) = tracers(:,maxLevelCell(iCell),iCell)
end do
do iCell=1,nCellsSolve
Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil4.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil4.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil4.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -141,6 +141,7 @@
! Compute tracerTop using 4rd order stencil [-1 7 7 -1]
do iCell=1,nCellsSolve
+ tracerTop(:,1,iCell) = tracers(:,1,iCell)
k=2
do iTracer=1,num_tracers
tracerTop(iTracer,k,iCell) = &
@@ -163,6 +164,7 @@
hRatioZLevelK(k) *tracers(iTracer,k-1,iCell) &
+ hRatioZLevelKm1(k)*tracers(iTracer,k ,iCell)
end do
+ tracerTop(:,maxLevelCell(iCell)+1,iCell) = tracers(:,maxLevelCell(iCell),iCell)
end do
do iCell=1,nCellsSolve
Modified: branches/halo/src/core_ocean/mpas_ocn_vel_hmix_del4.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_vel_hmix_del4.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_vel_hmix_del4.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -157,6 +157,9 @@
allocate(delsq_vorticity(nVertLevels, nVertices+1))
delsq_u(:,:) = 0.0
+ delsq_circulation(:,:) = 0.0
+ delsq_vorticity(:,:) = 0.0
+ delsq_divergence(:,:) = 0.0
! Compute </font>
<font color="black">abla^2 u = </font>
<font color="black">abla divergence + k \times </font>
<font color="gray">abla vorticity
do iEdge=1,grid % nEdges
@@ -176,7 +179,6 @@
end do
! vorticity using </font>
<font color="gray">abla^2 u
- delsq_circulation(:,:) = 0.0
do iEdge=1,nEdges
vertex1 = verticesOnEdge(1,iEdge)
vertex2 = verticesOnEdge(2,iEdge)
@@ -195,7 +197,6 @@
end do
! Divergence using </font>
<font color="gray">abla^2 u
- delsq_divergence(:,:) = 0.0
do iEdge=1,nEdges
cell1 = cellsOnEdge(1,iEdge)
cell2 = cellsOnEdge(2,iEdge)
Modified: branches/halo/src/core_ocean/mpas_ocn_vel_vadv.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_vel_vadv.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_vel_vadv.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -123,7 +123,7 @@
zMidZLevel => grid % zMidZLevel % array
allocate(w_dudzTopEdge(nVertLevels+1))
- w_dudzTopEdge(1) = 0.0
+ w_dudzTopEdge = 0.0
do iEdge=1,nEdgesSolve
cell1 = cellsOnEdge(1,iEdge)
cell2 = cellsOnEdge(2,iEdge)
Modified: branches/halo/src/core_sw/mpas_sw_time_integration.F
===================================================================
--- branches/halo/src/core_sw/mpas_sw_time_integration.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_sw/mpas_sw_time_integration.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -123,10 +123,10 @@
block % parinfo % edgesToSend, block % parinfo % edgesToRecv)
if (config_h_mom_eddy_visc4 > 0.0) then
- call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % state % time_levs(2) % state % divergence % array(:,:), &
+ call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, provis % divergence % array(:,:), &
block % mesh % nVertLevels, block % mesh % nCells, &
block % parinfo % cellsToSend, block % parinfo % cellsToRecv)
- call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % state % time_levs(2) % state % vorticity % array(:,:), &
+ call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, provis % vorticity % array(:,:), &
block % mesh % nVertLevels, block % mesh % nVertices, &
block % parinfo % verticesToSend, block % parinfo % verticesToRecv)
end if
</font>
</pre>