Skip to content

Commit

Permalink
Revert "deprecate upwind advection (#508)" (#535)
Browse files Browse the repository at this point in the history
* Revert "deprecate upwind advection (#508)"

This reverts commit 164fcfc.

* Deprecate ktransport and update advection="none" implementation

Update documentation as needed
ktransport still exists as a namelist only
ktransport<=0 will override the advection setting, set
  advection='none', and print out a warning message
advection can only be set to remap, upwind, or none

* update documentation

* update documentation

* un-deprecate ktransport in update and deprecate advection=none

advection valid options are only remap and upwind
ktransport turns on/off advection via advection=none internally

* update documentation

* update documentation
  • Loading branch information
apcraig authored Dec 3, 2020
1 parent 066070e commit e14b6a2
Show file tree
Hide file tree
Showing 8 changed files with 121 additions and 110 deletions.
1 change: 0 additions & 1 deletion cicecore/cicedynB/dynamics/ice_dyn_shared.F90
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ module ice_dyn_shared
integer (kind=int_kind), public :: &
kdyn , & ! type of dynamics ( -1, 0 = off, 1 = evp, 2 = eap )
kridge , & ! set to "-1" to turn off ridging
ktransport , & ! set to "-1" to turn off transport
ndte ! number of subcycles: ndte=dt/dte

character (len=char_len), public :: &
Expand Down
142 changes: 68 additions & 74 deletions cicecore/cicedynB/dynamics/ice_transport_driver.F90
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
!=======================================================================
!
!deprecate upwind Drivers for remapping and upwind ice transport
! Drivers for incremental remapping ice transport
! Drivers for remapping and upwind ice transport
!
! authors: Elizabeth C. Hunke and William H. Lipscomb, LANL
!
Expand All @@ -10,7 +9,6 @@
! 2006: Incorporated remap transport driver and renamed from
! ice_transport_upwind.
! 2011: ECH moved edgearea arrays into ice_transport_remap.F90
! 2020: deprecated upwind transport

module ice_transport_driver

Expand All @@ -30,13 +28,12 @@ module ice_transport_driver

implicit none
private
public :: init_transport, transport_remap!deprecate upwind:, transport_upwind
public :: init_transport, transport_remap, transport_upwind

character (len=char_len), public :: &
advection ! type of advection scheme used
!deprecate upwind ! 'upwind' => 1st order donor cell scheme
! 'upwind' => 1st order donor cell scheme
! 'remap' => remapping scheme
! 'none' => advection off (ktransport = -1 also turns it off)

logical, parameter :: & ! if true, prescribe area flux across each edge
l_fixed_area = .false.
Expand Down Expand Up @@ -72,9 +69,8 @@ module ice_transport_driver
!=======================================================================
!
! This subroutine is a wrapper for init_remap, which initializes the
! remapping transport scheme.
!deprecate upwind If the model is run with upwind
!deprecate upwind! transport, no initializations are necessary.
! remapping transport scheme. If the model is run with upwind
! transport, no initializations are necessary.
!
! authors William H. Lipscomb, LANL

Expand Down Expand Up @@ -684,12 +680,11 @@ subroutine transport_remap (dt)
end subroutine transport_remap

!=======================================================================
!deprecate upwind!
!
! Computes the transport equations for one timestep using upwind. Sets
! several fields into a work array and passes it to upwind routine.

!deprecate upwind
subroutine transport_upwind_deprecated (dt)
subroutine transport_upwind (dt)

use ice_boundary, only: ice_HaloUpdate
use ice_blocks, only: nx_block, ny_block, block, get_block, nx_block, ny_block
Expand Down Expand Up @@ -774,52 +769,52 @@ subroutine transport_upwind_deprecated (dt)
field_loc_Nface, field_type_vector)
call ice_timer_stop(timer_bound)

!deprecate upwind !$OMP PARALLEL DO PRIVATE(iblk,ilo,ihi,jlo,jhi,this_block)
!deprecate upwind do iblk = 1, nblocks
!deprecate upwind this_block = get_block(blocks_ice(iblk),iblk)
!deprecate upwind ilo = this_block%ilo
!deprecate upwind ihi = this_block%ihi
!deprecate upwind jlo = this_block%jlo
!deprecate upwind jhi = this_block%jhi
!$OMP PARALLEL DO PRIVATE(iblk,ilo,ihi,jlo,jhi,this_block)
do iblk = 1, nblocks
this_block = get_block(blocks_ice(iblk),iblk)
ilo = this_block%ilo
ihi = this_block%ihi
jlo = this_block%jlo
jhi = this_block%jhi


!-----------------------------------------------------------------
! fill work arrays with fields to be advected
!-----------------------------------------------------------------

!deprecate upwind
!deprecate upwind call state_to_work (nx_block, ny_block, &
!deprecate upwind ntrcr, &
!deprecate upwind narr, trcr_depend, &
!deprecate upwind aicen (:,:, :,iblk), trcrn (:,:,:,:,iblk), &
!deprecate upwind vicen (:,:, :,iblk), vsnon (:,:, :,iblk), &
!deprecate upwind aice0 (:,:, iblk), works (:,:, :,iblk))
call state_to_work (nx_block, ny_block, &
ntrcr, &
narr, trcr_depend, &
aicen (:,:, :,iblk), trcrn (:,:,:,:,iblk), &
vicen (:,:, :,iblk), vsnon (:,:, :,iblk), &
aice0 (:,:, iblk), works (:,:, :,iblk))

!-----------------------------------------------------------------
! advect
!-----------------------------------------------------------------

!deprecate upwind call upwind_field (nx_block, ny_block, &
!deprecate upwind ilo, ihi, jlo, jhi, &
!deprecate upwind dt, &
!deprecate upwind narr, works(:,:,:,iblk), &
!deprecate upwind uee(:,:,iblk), vnn (:,:,iblk), &
!deprecate upwind HTE(:,:,iblk), HTN (:,:,iblk), &
!deprecate upwind tarea(:,:,iblk))
call upwind_field (nx_block, ny_block, &
ilo, ihi, jlo, jhi, &
dt, &
narr, works(:,:,:,iblk), &
uee(:,:,iblk), vnn (:,:,iblk), &
HTE(:,:,iblk), HTN (:,:,iblk), &
tarea(:,:,iblk))

!-----------------------------------------------------------------
! convert work arrays back to state variables
!-----------------------------------------------------------------

!deprecate upwind call work_to_state (nx_block, ny_block, &
!deprecate upwind ntrcr, narr, &
!deprecate upwind trcr_depend(:), trcr_base(:,:), &
!deprecate upwind n_trcr_strata(:), nt_strata(:,:), &
!deprecate upwind aicen(:,:, :,iblk), trcrn (:,:,:,:,iblk), &
!deprecate upwind vicen(:,:, :,iblk), vsnon (:,:, :,iblk), &
!deprecate upwind aice0(:,:, iblk), works (:,:, :,iblk))
call work_to_state (nx_block, ny_block, &
ntrcr, narr, &
trcr_depend(:), trcr_base(:,:), &
n_trcr_strata(:), nt_strata(:,:), &
aicen(:,:, :,iblk), trcrn (:,:,:,:,iblk), &
vicen(:,:, :,iblk), vsnon (:,:, :,iblk), &
aice0(:,:, iblk), works (:,:, :,iblk))

!deprecate upwind enddo ! iblk
!deprecate upwind !$OMP END PARALLEL DO
enddo ! iblk
!$OMP END PARALLEL DO

deallocate (works)

Expand All @@ -837,8 +832,7 @@ subroutine transport_upwind_deprecated (dt)

call ice_timer_stop(timer_advect) ! advection

end subroutine transport_upwind_deprecated
!deprecate upwind
end subroutine transport_upwind

!=======================================================================
! The next few subroutines (through check_monotonicity) are called
Expand Down Expand Up @@ -1461,12 +1455,12 @@ subroutine check_monotonicity (nx_block, ny_block, &
end subroutine check_monotonicity

!=======================================================================
!deprecate upwind! The remaining subroutines are called by transport_upwind.
! The remaining subroutines are called by transport_upwind.
!=======================================================================
!
! Fill work array with state variables in preparation for upwind transport
!deprecate upwind
subroutine state_to_work_deprecated (nx_block, ny_block, &

subroutine state_to_work (nx_block, ny_block, &
ntrcr, &
narr, trcr_depend, &
aicen, trcrn, &
Expand Down Expand Up @@ -1607,13 +1601,13 @@ subroutine state_to_work_deprecated (nx_block, ny_block, &
if (narr /= narrays) write(nu_diag,*) &
"Wrong number of arrays in transport bound call"

end subroutine state_to_work_deprecated
end subroutine state_to_work

!=======================================================================
!
! Convert work array back to state variables
!deprecate upwind
subroutine work_to_state_deprecated (nx_block, ny_block, &

subroutine work_to_state (nx_block, ny_block, &
ntrcr, narr, &
trcr_depend, &
trcr_base, &
Expand Down Expand Up @@ -1721,13 +1715,13 @@ subroutine work_to_state_deprecated (nx_block, ny_block, &
if (icepack_warnings_aborted()) call abort_ice(error_message=subname, &
file=__FILE__, line=__LINE__)

end subroutine work_to_state_deprecated
end subroutine work_to_state

!=======================================================================
!
! upwind transport algorithm
!deprecate upwind
subroutine upwind_field_deprecated (nx_block, ny_block, &

subroutine upwind_field (nx_block, ny_block, &
ilo, ihi, jlo, jhi, &
dt, &
narrays, phi, &
Expand Down Expand Up @@ -1770,40 +1764,40 @@ subroutine upwind_field_deprecated (nx_block, ny_block, &

do n = 1, narrays

!deprecate upwind do j = 1, jhi
!deprecate upwind do i = 1, ihi
!deprecate upwind worka(i,j)= &
!deprecate upwind upwind(phi(i,j,n),phi(i+1,j,n),uee(i,j),HTE(i,j),dt)
!deprecate upwind workb(i,j)= &
!deprecate upwind upwind(phi(i,j,n),phi(i,j+1,n),vnn(i,j),HTN(i,j),dt)
!deprecate upwind enddo
!deprecate upwind enddo

!deprecate upwind do j = jlo, jhi
!deprecate upwind do i = ilo, ihi
!deprecate upwind phi(i,j,n) = phi(i,j,n) - ( worka(i,j)-worka(i-1,j) &
!deprecate upwind + workb(i,j)-workb(i,j-1) ) &
!deprecate upwind / tarea(i,j)
!deprecate upwind enddo
!deprecate upwind enddo
do j = 1, jhi
do i = 1, ihi
worka(i,j)= &
upwind(phi(i,j,n),phi(i+1,j,n),uee(i,j),HTE(i,j),dt)
workb(i,j)= &
upwind(phi(i,j,n),phi(i,j+1,n),vnn(i,j),HTN(i,j),dt)
enddo
enddo

do j = jlo, jhi
do i = ilo, ihi
phi(i,j,n) = phi(i,j,n) - ( worka(i,j)-worka(i-1,j) &
+ workb(i,j)-workb(i,j-1) ) &
/ tarea(i,j)
enddo
enddo

enddo ! narrays

end subroutine upwind_field_deprecated
end subroutine upwind_field

!=======================================================================

!-------------------------------------------------------------------
! Define upwind function
!-------------------------------------------------------------------

!deprecate upwind real(kind=dbl_kind) function upwind(y1,y2,a,h,dt)
real(kind=dbl_kind) function upwind(y1,y2,a,h,dt)

!deprecate upwind real(kind=dbl_kind), intent(in) :: y1,y2,a,h,dt
real(kind=dbl_kind), intent(in) :: y1,y2,a,h,dt

!deprecate upwind upwind = p5*dt*h*((a+abs(a))*y1+(a-abs(a))*y2)
upwind = p5*dt*h*((a+abs(a))*y1+(a-abs(a))*y2)

!deprecate upwind end function upwind
end function upwind

!=======================================================================

Expand Down
Loading

0 comments on commit e14b6a2

Please sign in to comment.