diff --git a/model/dyn_core.F90 b/model/dyn_core.F90 index 2e6173f72..7806df52e 100644 --- a/model/dyn_core.F90 +++ b/model/dyn_core.F90 @@ -561,13 +561,13 @@ subroutine dyn_core(npx, npy, npz, ng, sphum, nq, bdt, n_map, n_split, zvir, cp, isd, ied, jsd, jed, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) #ifndef SW_DYNAMICS call regional_boundary_update(ptc, 'pt', & isd, ied, jsd, jed, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) #endif endif if ( hydrostatic ) then @@ -727,12 +727,12 @@ subroutine dyn_core(npx, npy, npz, ng, sphum, nq, bdt, n_map, n_split, zvir, cp, isd, ied, jsd, jed+1, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) call regional_boundary_update(uc, 'uc', & isd, ied+1, jsd, jed, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) call mpp_update_domains(uc, vc, domain, gridtype=CGRID_NE) !!! Currently divgd is always 0.0 in the regional domain boundary area. reg_bc_update_time=current_time_in_seconds+bdt*(n_map-1)+(it-1)*dt @@ -740,7 +740,7 @@ subroutine dyn_core(npx, npy, npz, ng, sphum, nq, bdt, n_map, n_split, zvir, cp, isd, ied+1, jsd, jed+1, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) endif if ( flagstruct%inline_q ) then @@ -758,7 +758,7 @@ subroutine dyn_core(npx, npy, npz, ng, sphum, nq, bdt, n_map, n_split, zvir, cp, isd, ied, jsd, jed, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) enddo endif @@ -996,20 +996,20 @@ subroutine dyn_core(npx, npy, npz, ng, sphum, nq, bdt, n_map, n_split, zvir, cp, isd, ied, jsd, jed, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) #ifndef SW_DYNAMICS call regional_boundary_update(pt, 'pt', & isd, ied, jsd, jed, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) #ifdef USE_COND call regional_boundary_update(q_con, 'q_con', & isd, ied, jsd, jed, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) #endif #endif @@ -1329,14 +1329,14 @@ subroutine dyn_core(npx, npy, npz, ng, sphum, nq, bdt, n_map, n_split, zvir, cp, if (flagstruct%regional) then + reg_bc_update_time=current_time_in_seconds+bdt*(n_map-1)+it*dt #ifndef SW_DYNAMICS if (.not. hydrostatic) then - reg_bc_update_time=current_time_in_seconds+bdt*(n_map-1)+it*dt call regional_boundary_update(w, 'w', & isd, ied, jsd, jed, ubound(w,3), & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) endif #endif SW_DYNAMICS @@ -1344,12 +1344,12 @@ subroutine dyn_core(npx, npy, npz, ng, sphum, nq, bdt, n_map, n_split, zvir, cp, isd, ied, jsd, jed+1, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) call regional_boundary_update(v, 'v', & isd, ied+1, jsd, jed, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,it ) call mpp_update_domains(u, v, domain, gridtype=DGRID_NE) diff --git a/model/fv_dynamics.F90 b/model/fv_dynamics.F90 index c7f8d37fc..0523ccbe5 100644 --- a/model/fv_dynamics.F90 +++ b/model/fv_dynamics.F90 @@ -799,7 +799,7 @@ subroutine fv_dynamics(npx, npy, npz, nq_tot, ng, bdt, consv_te, fill, isd, ied, jsd, jed, npz, & is, ie, js, je, & isd, ied, jsd, jed, & - reg_bc_update_time ) + reg_bc_update_time,1 ) endif #endif diff --git a/model/fv_regional_bc.F90 b/model/fv_regional_bc.F90 index ccdba5fbf..1d83443b8 100644 --- a/model/fv_regional_bc.F90 +++ b/model/fv_regional_bc.F90 @@ -4298,7 +4298,7 @@ subroutine regional_boundary_update(array & ,is,ie,js,je & ,isd,ied,jsd,jed & ,fcst_time & - ,index4 ) + ,it,index4 ) ! !--------------------------------------------------------------------- !*** Select the given variable's boundary data at the two @@ -4316,7 +4316,8 @@ subroutine regional_boundary_update(array & integer,intent(in) :: lbnd_x,ubnd_x,lbnd_y,ubnd_y,ubnd_z !<-- Dimensions of full prognostic array to be updated. ! integer,intent(in) :: is,ie,js,je & !<-- Compute limits - ,isd,ied,jsd,jed !<-- Memory limits + ,isd,ied,jsd,jed & !<-- Memory limits + ,it !<-- Acoustic step ! integer,intent(in),optional :: index4 !<-- Index for the 4-D tracer array. ! @@ -4572,7 +4573,7 @@ subroutine regional_boundary_update(array & ,fcst_time & ,bc_update_interval & ,i1_blend,i2_blend,j1_blend,j2_blend & - ,i_bc,j_bc,nside,bc_vbl_name,blend ) + ,i_bc,j_bc,nside,bc_vbl_name,blend,it ) endif ! !--------------------------------------------------------------------- @@ -4702,7 +4703,7 @@ subroutine bc_time_interpolation(array & ,fcst_time & ,bc_update_interval & ,i1_blend,i2_blend,j1_blend,j2_blend & - ,i_bc,j_bc,nside,bc_vbl_name,blend ) + ,i_bc,j_bc,nside,bc_vbl_name,blend,it ) !--------------------------------------------------------------------- !*** Update the boundary region of the input array at the given @@ -4727,7 +4728,7 @@ subroutine bc_time_interpolation(array & ! integer,intent(in) :: is,ie,js,je !<-- Min/Max index limits on task's computational subdomain ! - integer,intent(in) :: bc_update_interval !<-- Time (hours) between BC data states + integer,intent(in) :: bc_update_interval,it !<-- Time (hours) between BC data states, acoustic step ! real,intent(in) :: fcst_time !<-- Current forecast time (sec) ! @@ -4764,6 +4765,19 @@ subroutine bc_time_interpolation(array & ! fraction_interval=mod(fcst_time,(bc_update_interval*3600.)) & /(bc_update_interval*3600.) + +!--------------------------------------------------------------------- +!*** Special check for final acoustic step prior to new boundary information +!*** being ingested. +!--------------------------------------------------------------------- + + if (fraction_interval .eq. 0.0 .and. it .gt. 1) then + fraction_interval=1.0 + if (is_master()) then + write(0,*) 'reset of fraction_interval ', trim(bc_vbl_name),it, fcst_time + endif + endif + ! !--------------------------------------------------------------------- ! diff --git a/model/fv_tracer2d.F90 b/model/fv_tracer2d.F90 index 9039839bb..a47c24179 100644 --- a/model/fv_tracer2d.F90 +++ b/model/fv_tracer2d.F90 @@ -764,7 +764,7 @@ subroutine tracer_2d_nested(q, dp1, mfx, mfy, cx, cy, gridstruct, bd, domain, np is, ie, js, je, & isd, ied, jsd, jed, & reg_bc_update_time, & - iq ) + it, iq ) enddo endif