Sea ice in shallow water (anchor ice)

Discussion about modeling ice with ROMS

Moderators: arango, robertson

Post Reply
Message
Author
Pysh
Posts: 30
Joined: Tue Nov 29, 2011 3:51 pm
Location: Hydrometcenter of Russia

Sea ice in shallow water (anchor ice)

#1 Unread post by Pysh »

Hi

In my experiments (Caspian sea with ice model) there was a following situation: ice thickness was more then depth in the same points. (7 meters ice thickness in points with 2 meters depth). In north part of Caspian sea large area has depth ~ 2 meters and in winter this part becomes covered by an sea-ice. In addition large values of thickness give more later disappearance of the ice in the spring (one month). That is for Caspian sea this problem is serious. Of course full decision of this problem (anchor ice) is rather difficult. May be it should include analog of wet_dry mask for ice to indicate points with sea-ice thickness equal depth with some ice/snow/water density coefficients, disable bottom freezing, ice moving and include some other changes for ice stresses. More over it will be needed to change the thickness of water layer under ice and parameterize the pressure in water under ice for various sea-ice concentrations. Wet_dry mask of water/land distribution should be changed in the points where sea-ice thickness equal depth also. These complexities frighten :) And influence of ice on sea bed (scouring) also ...

Now I've made some simple code corrections, but not sure if I am right
In ice_limit.F
CALL ice_limit_tile (ng, tile, &
& LBi, UBi, LBj, UBj, &
& IminS, ImaxS, JminS, JmaxS, &
& liold(ng), linew(ng), &
# if defined ICE_BIO && defined BERING_10K
& ICE(ng) % IcePhL, &
& ICE(ng) % IceNO3, &
& ICE(ng) % IceNH4, &
& ICE(ng) % IceLog, &
# endif
& ICE(ng) % ui, &
& ICE(ng) % vi, &
& ICE(ng) % ai, &
& ICE(ng) % hi, &
& ICE(ng) % hsn, &
& ICE(ng) % ti, &
& ICE(ng) % enthalpi, &
& ICE(ng) % sfwat, & !S!!!!!!!!!!!!!!!! changed (,)
& GRID(ng) % h & !S!!!!!!!!!!!!!!!! appended .............................................................................................
!
! Imported variable declarations.
!
integer, intent(in) :: ng, tile
integer, intent(in) :: LBi, UBi, LBj, UBj
integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
integer, intent(inout) :: liold, linew
real(r8), intent(in) :: h(LBi:,LBj:) !S!!!!!!!!!!!!!!!! appended
# ifdef ASSUMED_SHAPE
# if defined ICE_BIO && defined BERING_10K
real(r8), intent(inout) :: IcePhL(LBi:,LBj:,:)
real(r8), intent(inout) :: IceNO3(LBi:,LBj:,:)
real(r8), intent(inout) :: IceNH4(LBi:,LBj:,:)
integer, intent(inout) :: IceLog(LBi:,LBj:,:)
# endif

!S!!!!!!!!!!!!!!!!!!!!!!!!!
! real(r8), intent(in) :: ui(LBi:,LBj:,:) !S!!!!!!!!!! old
! real(r8), intent(in) :: vi(LBi:,LBj:,:) !S!!!!!!!!!! old
real(r8), intent(inout) :: ui(LBi:,LBj:,:) !S!!!!!!!!!! new
real(r8), intent(inout) :: vi(LBi:,LBj:,:) !S!!!!!!!!!! new
!S!!!!!!!!!!!!!!!!!!!!!!!!!
real(r8), intent(inout) :: ai(LBi:,LBj:,:)
real(r8), intent(inout) :: hi(LBi:,LBj:,:)
real(r8), intent(inout) :: hsn(LBi:,LBj:,:)
real(r8), intent(inout) :: ti(LBi:,LBj:,:)
real(r8), intent(inout) :: enthalpi(LBi:,LBj:,:)
real(r8), intent(inout) :: sfwat(LBi:,LBj:,:)

# else
# if defined ICE_BIO && defined BERING_10K
real(r8), intent(inout) :: IcePhL(LBi:UBi,LBj:UBj,2)
real(r8), intent(inout) :: IceNO3(LBi:UBi,LBj:UBj,2)
real(r8), intent(inout) :: IceNH4(LBi:UBi,LBj:UBj,2)
integer, intent(inout) :: IceLog(LBi:UBi,LBj:UBj,2)
# endif
!S!!!!!!!!!!!!!!!!!!!!!!!!!
! real(r8), intent(in) :: ui(LBi:UBi,LBj:UBj,2) !S!!!!!!!!!! old
! real(r8), intent(in) :: vi(LBi:UBi,LBj:UBj,2) !S!!!!!!!!!! old
real(r8), intent(inout) :: ui(LBi:UBi,LBj:UBj,2) !S!!!!!!!!!! new
real(r8), intent(inout) :: vi(LBi:UBi,LBj:UBj,2) !S!!!!!!!!!! new
!S!!!!!!!!!!!!!!!!!!!!!!!!!
......................................................................................
#include "set_bounds.h"
!
DO j=Jstr,Jend
DO i=Istr,Iend
ai(i,j,linew) = MIN(ai(i,j,linew),max_a(ng))
ai(i,j,linew) = MAX(ai(i,j,linew),0.0_r8)
hi(i,j,linew) = MAX(hi(i,j,linew),0.0_r8)
hsn(i,j,linew) = MAX(hsn(i,j,linew),0.0_r8)
!S!!!!!!!!!!!!!!!!!!!!!!!!!
hi(i,j,linew) = MIN((400*hsn(i,j,linew)+930*hi(i,j,linew))/1000,ABS(h(i,j))) !S! appended
IF ((400*hsn(i,j,linew)+930*hi(i,j,linew))/1000 .ge. ABS(h(i,j))) THEN !S!!!!!!! appended
ui(i,j,linew) = 0.0_r8 !S!!!!!!!!!!!!!!!! appended
vi(i,j,linew) = 0.0_r8 !S!!!!!!!!!!!!!!!! appended
END IF !S!!!!!!!!!!!!!!!! appended
!S!!!!!!!!!!!!!!!!!!!!!!!!!
sfwat(i,j,linew) = MAX(sfwat(i,j,linew),0.0_r8)
ti(i,j,linew) = MAX(ti(i,j,linew),-70.0_r8)
IF (hi(i,j,linew) .le. min_h(ng)) ai(i,j,linew) = min_a(ng)
IF (ai(i,j,linew) .le. min_a(ng)) THEN
ai(i,j,linew) = min_a(ng)
hi(i,j,linew) = min_h(ng)
sfwat(i,j,linew) = 0.0_r8
hsn(i,j,linew) = 0.0_r8
END IF
END DO
END DO
In file seaice. F I uncomment line CALL ice_limit(ng, TILE)
#ifdef ICE_THERMO
! ----------------------------------------------------------------------
! Compute the ice thermodynamics.
! ----------------------------------------------------------------------
DO ng=1,Ngrids
DO tile=first_tile(ng),last_tile(ng),+1
CALL ice_thermo (ng, TILE)
# ifdef ICE_SMOOTH
CALL ice_smoother(ng, TILE)
# endif
CALL ice_limit(ng, TILE)
END DO
!$OMP BARRIER
END DO
#endif
My corrections are not coordinated with rules of a writing of ROMS code and can disturb some ice physics (mass balance, for example), but I wished to check up idea.

Some fast results are attached

Do not judge strictly
Attachments
Difference of ice velocities
Difference of ice velocities
uvi_diff.png (24.12 KiB) Viewed 5569 times
Ice velocities or experiment without hi limit
Ice velocities or experiment without hi limit
uvi_wo.png (24.72 KiB) Viewed 5569 times
Ice thickness or experiment without hi limit
Ice thickness or experiment without hi limit
hi_wo.png (14.27 KiB) Viewed 5569 times
Ice thickness or experiment with hi limit
Ice thickness or experiment with hi limit
hi_w.png (13.16 KiB) Viewed 5569 times
Ice compactness or experiment without hi limit
Ice compactness or experiment without hi limit
ai_wo.png (19.1 KiB) Viewed 5569 times
Ice compactness or experiment with hi limit
Ice compactness or experiment with hi limit
ai_w.png (19.72 KiB) Viewed 5569 times

User avatar
kate
Posts: 4088
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: Sea ice in shallow water (anchor ice)

#2 Unread post by kate »

Have you seen the ICE_SHOREFAST option? It limits the flow when the ice becomes thick and was designed for the Caspian Sea.

Pysh
Posts: 30
Joined: Tue Nov 29, 2011 3:51 pm
Location: Hydrometcenter of Russia

Re: Sea ice in shallow water (anchor ice)

#3 Unread post by Pysh »

Thank you, Kate

I've calculated Caspian model in your code with ICE_SHOREFAST now only on a month. Results are normal. As I understand in your code thermal flux at the bottom starts to be limited with depth of 'clear' water (under ice) of 1.5 meter and is equal to zero at depth of 'clear' water less than 0.5 meter. And ice velocities starts to be limited with depth of 'clear' water of 5 meters and is equal to zero at depth of 'clear' water less than 1 meter. The backward influence of points with anchor ice a wet_dry mask and parametrization of effective depth of water under ice (when ice compactness is near 1) are not considered. There are some another cpp flags relate to Caspian sea in your code. I'll try it, I believe, some later. Thank you for these possibilities.

Best regards

User avatar
kate
Posts: 4088
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: Sea ice in shallow water (anchor ice)

#4 Unread post by kate »

It is not mine, but rather Paul Budgell's Caspian setup.

Pysh
Posts: 30
Joined: Tue Nov 29, 2011 3:51 pm
Location: Hydrometcenter of Russia

Re: Sea ice in shallow water (anchor ice)

#5 Unread post by Pysh »

Sorry, the big respect and for Paul

Post Reply