diff --git a/cicecore/cicedynB/dynamics/ice_dyn_evp.F90 b/cicecore/cicedynB/dynamics/ice_dyn_evp.F90 index 377f1205d..ddbc91f1c 100644 --- a/cicecore/cicedynB/dynamics/ice_dyn_evp.F90 +++ b/cicecore/cicedynB/dynamics/ice_dyn_evp.F90 @@ -493,7 +493,7 @@ subroutine evp (dt) uocnE (:,:,iblk), vocnE (:,:,iblk), & strairxE (:,:,iblk), strairyE (:,:,iblk), & ss_tltxE (:,:,iblk), ss_tltyE (:,:,iblk), & - icetmask (:,:,iblk), icenmask (:,:,iblk), & + icetmask (:,:,iblk), iceemask (:,:,iblk), & fmE (:,:,iblk), dt, & strtltxE (:,:,iblk), strtltyE (:,:,iblk), & strocnxE (:,:,iblk), strocnyE (:,:,iblk), & @@ -520,16 +520,6 @@ subroutine evp (dt) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__, line=__LINE__) - call ice_timer_start(timer_bound) - call ice_HaloUpdate (strength, halo_info, & - field_loc_center, field_type_scalar) - ! velocities may have changed in dyn_prep2 - call stack_velocity_field(uvel, vvel, fld2) - call ice_HaloUpdate (fld2, halo_info, & - field_loc_NEcorner, field_type_vector) - call unstack_velocity_field(fld2, uvel, vvel) - call ice_timer_stop(timer_bound) - if (grid_ice == 'CD') then call ice_timer_start(timer_bound) @@ -545,8 +535,21 @@ subroutine evp (dt) call unstack_velocity_field(fld2, uvelE, vvelE) call ice_timer_stop(timer_bound) + call grid_average_X2Y('S',uvelE,'E',uvel,'U') + call grid_average_X2Y('S',vvelN,'N',vvel,'U') endif + call ice_timer_start(timer_bound) + call ice_HaloUpdate (strength, halo_info, & + field_loc_center, field_type_scalar) + + ! velocities may have changed in dyn_prep2 + call stack_velocity_field(uvel, vvel, fld2) + call ice_HaloUpdate (fld2, halo_info, & + field_loc_NEcorner, field_type_vector) + call unstack_velocity_field(fld2, uvel, vvel) + call ice_timer_stop(timer_bound) + if (maskhalo_dyn) then call ice_timer_start(timer_bound) halomask = 0 @@ -658,13 +661,6 @@ subroutine evp (dt) do ksub = 1,ndte ! subcycling - ! shift velocity components from CD grid locations (N, E) to B grid location (U) for stress_U - - if (grid_ice == 'CD') then - call grid_average_X2Y('S',uvelE,'E',uvel,'U') - call grid_average_X2Y('S',vvelN,'N',vvel,'U') - endif - !----------------------------------------------------------------- ! stress tensor equation, total surface stress !----------------------------------------------------------------- @@ -806,35 +802,36 @@ subroutine evp (dt) enddo !$TCXOMP END PARALLEL DO - call stack_velocity_field(uvel, vvel, fld2) - call ice_timer_start(timer_bound) - if (maskhalo_dyn) then - call ice_HaloUpdate (fld2, halo_info_mask, & - field_loc_NEcorner, field_type_vector) - else - call ice_HaloUpdate (fld2, halo_info, & - field_loc_NEcorner, field_type_vector) - endif - call ice_timer_stop(timer_bound) - call unstack_velocity_field(fld2, uvel, vvel) - if (grid_ice == 'CD') then call ice_timer_start(timer_bound) - ! velocities may have changed in dyn_prep2 call stack_velocity_field(uvelN, vvelN, fld2) call ice_HaloUpdate (fld2, halo_info, & field_loc_Nface, field_type_vector) call unstack_velocity_field(fld2, uvelN, vvelN) - ! velocities may have changed in dyn_prep2 call stack_velocity_field(uvelE, vvelE, fld2) call ice_HaloUpdate (fld2, halo_info, & field_loc_Eface, field_type_vector) call unstack_velocity_field(fld2, uvelE, vvelE) call ice_timer_stop(timer_bound) + call grid_average_X2Y('S',uvelE,'E',uvel,'U') + call grid_average_X2Y('S',vvelN,'N',vvel,'U') + endif + call ice_timer_start(timer_bound) + call stack_velocity_field(uvel, vvel, fld2) + if (maskhalo_dyn) then + call ice_HaloUpdate (fld2, halo_info_mask, & + field_loc_NEcorner, field_type_vector) + else + call ice_HaloUpdate (fld2, halo_info, & + field_loc_NEcorner, field_type_vector) + endif + call unstack_velocity_field(fld2, uvel, vvel) + call ice_timer_stop(timer_bound) + enddo ! subcycling endif ! evp_algorithm @@ -992,12 +989,6 @@ subroutine evp (dt) call grid_average_X2Y('F',work1,'U',strocnxT,'T') ! shift call grid_average_X2Y('F',work2,'U',strocnyT,'T') -! shift velocity components from CD grid locations (N, E) to B grid location (U) for transport - if (grid_ice == 'CD') then - call grid_average_X2Y('S',uvelE,'E',uvel,'U') - call grid_average_X2Y('S',vvelN,'N',vvel,'U') - endif - call ice_timer_stop(timer_dynamics) ! dynamics end subroutine evp @@ -1533,7 +1524,7 @@ subroutine stress_U (nx_block, ny_block, & ratiodyE , & ! -dyE(i,j+1)/dyE(i,j) factor for BCs across coastline ratiodyEr, & ! -dyE(i,j)/dyE(i,j+1) factor for BCs across coastline epm , & ! E-cell mask - npm , & ! E-cell mask + npm , & ! N-cell mask hm , & ! T-cell mask uvm , & ! U-cell mask zetax2T , & ! 2*zeta at the T point @@ -1714,7 +1705,6 @@ subroutine div_stress (nx_block, ny_block, & case default call abort_ice(subname // ' unknown grid_location: ' // grid_location) end select - enddo ! ij diff --git a/cicecore/cicedynB/dynamics/ice_dyn_shared.F90 b/cicecore/cicedynB/dynamics/ice_dyn_shared.F90 index bc0c25f75..57d951be0 100755 --- a/cicecore/cicedynB/dynamics/ice_dyn_shared.F90 +++ b/cicecore/cicedynB/dynamics/ice_dyn_shared.F90 @@ -1770,7 +1770,7 @@ subroutine strain_rates_U (nx_block, ny_block, & ratiodyE , & ! -dyE(i,j+1)/dyE(i,j) for BCs ratiodyEr, & ! -dyE(i,j)/dyE(i,j+1) for BCs epm , & ! E-cell mask - npm , & ! E-cell mask + npm , & ! N-cell mask uvm ! U-cell mask