Skip to content

Commit

Permalink
Attempt at integrating fixes on top of dev/emc branch. (NOAA-EMC#173)
Browse files Browse the repository at this point in the history
  • Loading branch information
MatthewPyle-NOAA authored Feb 25, 2022
1 parent 348cee7 commit 7ce7aa9
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 20 deletions.
26 changes: 13 additions & 13 deletions model/dyn_core.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -727,20 +727,20 @@ 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
call regional_boundary_update(divgd, 'divgd', &
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
Expand All @@ -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

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -1329,27 +1329,27 @@ 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

call regional_boundary_update(u, 'u', &
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)

Expand Down
2 changes: 1 addition & 1 deletion model/fv_dynamics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
24 changes: 19 additions & 5 deletions model/fv_regional_bc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
!
Expand Down Expand Up @@ -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
!
!---------------------------------------------------------------------
Expand Down Expand Up @@ -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
Expand All @@ -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)
!
Expand Down Expand Up @@ -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

!
!---------------------------------------------------------------------
!
Expand Down
2 changes: 1 addition & 1 deletion model/fv_tracer2d.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit 7ce7aa9

Please sign in to comment.