Skip to content

Commit

Permalink
Revert "Corrects thin ice/snow treatment of enthalpy and other tracers (
Browse files Browse the repository at this point in the history
CICE-Consortium#454)"

This reverts commit 23b6c12.
  • Loading branch information
phil-blain committed Feb 6, 2024
1 parent 25d24b1 commit e9cdab2
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 50 deletions.
72 changes: 26 additions & 46 deletions columnphysics/icepack_therm_shared.F90
Original file line number Diff line number Diff line change
Expand Up @@ -523,8 +523,7 @@ subroutine adjust_enthalpy (nlyr, &
hovlp ! overlap between old and new layers (m)

real (kind=dbl_kind) :: &
rhlyr, & ! 1./hlyr
qtot ! total h*q in the column
rhlyr ! 1./hlyr

real (kind=dbl_kind), dimension (nlyr) :: &
hq ! h * q for a layer
Expand All @@ -536,55 +535,36 @@ subroutine adjust_enthalpy (nlyr, &
!-----------------------------------------------------------------

rhlyr = c0
if (hn > puny) then
rhlyr = c1 / hlyr

!-----------------------------------------------------------------
! Compute h*q for new layers (k2) given overlap with old layers (k1)
!-----------------------------------------------------------------

do k2 = 1, nlyr
hq(k2) = c0
enddo ! k
k1 = 1
k2 = 1
do while (k1 <= nlyr .and. k2 <= nlyr)
hovlp = min (z1(k1+1), z2(k2+1)) &
- max (z1(k1), z2(k2))
hovlp = max (hovlp, c0)
hq(k2) = hq(k2) + hovlp*qn(k1)
if (z1(k1+1) > z2(k2+1)) then
k2 = k2 + 1
else
k1 = k1 + 1
endif
enddo ! while

!-----------------------------------------------------------------
! Compute new enthalpies.
!-----------------------------------------------------------------
if (hn > puny) rhlyr = c1 / hlyr

do k = 1, nlyr
qn(k) = hq(k) * rhlyr
enddo ! k

else
!-----------------------------------------------------------------
! Compute h*q for new layers (k2) given overlap with old layers (k1)
!-----------------------------------------------------------------

qtot = c0
do k = 1, nlyr
qtot = qtot + qn(k) * (z1(k+1)-z1(k))
enddo
if (hn > c0) then
do k = 1, nlyr
qn(k) = qtot/hn
enddo
do k2 = 1, nlyr
hq(k2) = c0
enddo ! k
k1 = 1
k2 = 1
do while (k1 <= nlyr .and. k2 <= nlyr)
hovlp = min (z1(k1+1), z2(k2+1)) &
- max (z1(k1), z2(k2))
hovlp = max (hovlp, c0)
hq(k2) = hq(k2) + hovlp*qn(k1)
if (z1(k1+1) > z2(k2+1)) then
k2 = k2 + 1
else
do k = 1, nlyr
qn(k) = c0
enddo
k1 = k1 + 1
endif
enddo ! while

endif
!-----------------------------------------------------------------
! Compute new enthalpies.
!-----------------------------------------------------------------

do k = 1, nlyr
qn(k) = hq(k) * rhlyr
enddo ! k

end subroutine adjust_enthalpy

Expand Down
5 changes: 1 addition & 4 deletions columnphysics/icepack_therm_vertical.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1701,7 +1701,7 @@ subroutine thickness_changes (nilyr, nslyr, &
!-----------------------------------------------------------------

if (ktherm == 2) then
if (hsn <= puny .or. hin <= c0) then
if (hsn <= puny) then
do k = 1, nslyr
fhocnn = fhocnn &
+ zqsn(k)*hsn/(real(nslyr,kind=dbl_kind)*dt)
Expand All @@ -1710,11 +1710,8 @@ subroutine thickness_changes (nilyr, nslyr, &
meltsliq = meltsliq + massice(k) ! add to meltponds
smice(k) = rhos
smliq(k) = c0
rsnw(k) = rsnw_fall
endif
enddo
melts = melts + hsn
hsn = c0
hslyr = c0
endif
endif
Expand Down

0 comments on commit e9cdab2

Please sign in to comment.