132 integer,
parameter ::
nices = 15
212 integer,
allocatable ::
ievp(:)
213 integer,
allocatable ::
nevp(:)
278 real(
r8),
pointer :: fi(:,:,:)
279 real(
r8),
pointer :: si(:,:,:,:)
291 real(
r8),
pointer :: ice_west (:)
292 real(
r8),
pointer :: ice_east (:)
293 real(
r8),
pointer :: ice_south(:)
294 real(
r8),
pointer :: ice_north(:)
296 real(
r8),
pointer :: iceg_west (:,:)
297 real(
r8),
pointer :: iceg_east (:,:)
298 real(
r8),
pointer :: iceg_south(:,:)
299 real(
r8),
pointer :: iceg_north(:,:)
315 real(
r8),
pointer :: var(:,:)
339 logical,
intent(in) :: ice_kernel
341 integer,
intent(in) :: ng, lbi, ubi, lbj, ubj
347 real(
r8) :: size2d, xsize, ysize
349 size2d=real((ubi-lbi+1)*(ubj-lbj+1),
r8)
350 xsize =real(ubi-lbi,
r8)
351 ysize =real(ubj-lbj,
r8)
358 IF (.not.ice_kernel)
THEN
367 IF (.not.
allocated(
ievp)) &
370 IF (.not.
allocated(
nevp)) &
373 IF (.not.
allocated(
dtice)) &
376 IF (.not.
allocated(
dtevp)) &
379 IF (.not.
allocated(
airrho)) &
382 IF (.not.
allocated(
icerho)) &
391 IF (.not.
allocated(
cd_ai)) &
394 IF (.not.
allocated(
cd_io)) &
400 IF (.not.
allocated(
pstar)) &
403 IF (.not.
allocated(
min_ai)) &
406 IF (.not.
allocated(
max_ai)) &
409 IF (.not.
allocated(
min_hi)) &
439 allocate (
ice(ng) % Si(lbi:ubi,lbj:ubj,2,
nices) )
442 allocate (
ice(ng) % Fi(lbi:ubi,lbj:ubj,
nicef) )
457 allocate (
ice_lobc(i,ng) % ice_west(lbj:ubj) )
460 allocate (
ice_lobc(i,ng) % iceG_west(lbj:ubj,2) )
465 allocate (
ice_lobc(i,ng) % ice_east(lbj:ubj) )
468 allocate (
ice_lobc(i,ng) % iceG_east(lbj:ubj,2) )
473 allocate (
ice_lobc(i,ng) % ice_south(lbi:ubi) )
476 allocate (
ice_lobc(i,ng) % iceG_south(lbi:ubi,2) )
481 allocate (
ice_lobc(i,ng) % ice_north(lbi:ubi) )
484 allocate (
ice_lobc(i,ng) % iceG_north(lbi:ubi,2) )
507 IF (
ifice(i).gt.0)
THEN
509 allocate (
ice_favg(i,ng) % var(lbi:ubi,lbj:ubj) )
519 IF (
isice(i).gt.0)
THEN
521 allocate (
ice_savg(i,ng) % var(lbi:ubi,lbj:ubj) )
542#ifdef SUBOBJECT_DEALLOCATION
551 integer,
intent(in) :: ng
555#ifdef SUBOBJECT_DEALLOCATION
559 character (len=*),
parameter :: myfile = &
560 & __FILE__//
", deallocate_ice"
562#ifdef SUBOBJECT_DEALLOCATION
573 & __line__,
'ICE(ng)%Si'))
RETURN
576 & __line__,
'ICE(ng)%Fi'))
RETURN
583 & __line__,
'ICE_LOBC(i,ng)%ice_west'))
RETURN
585 & __line__,
'ICE_LOBC(i,ng)%iceG_west'))
RETURN
590 & __line__,
'ICE_LOBC(i,ng)%ice_west'))
RETURN
592 & __line__,
'ICE_LOBC(i,ng)%iceG_west'))
RETURN
597 & __line__,
'ICE_LOBC(i,ng)%ice_south'))
RETURN
599 & __line__,
'ICE_LOBC(i,ng)%iceG_south'))
RETURN
604 & __line__,
'ICE_LOBC(i,ng)%ice_north'))
RETURN
606 & __line__,
'ICE_LOBC(i,ng)%iceG_north'))
RETURN
619 & __line__,
'ICE_FAVG(i,ng)%var'))
RETURN
626 & __line__,
'ICE_SAVG(i,ng)%var'))
RETURN
636 IF (
allocated(
ice))
deallocate (
ice )
663 integer,
intent(in) :: ng, tile, model
667 integer :: i, j, nf, ns
668 integer :: imin, imax, jmin, jmax
670 real(
r8),
parameter :: inival = 0.0_r8
677 IF (
domain(ng)%Western_Edge(tile))
THEN
682 IF (
domain(ng)%Eastern_Edge(tile))
THEN
687 IF (
domain(ng)%Southern_Edge(tile))
THEN
692 IF (
domain(ng)%Northern_Edge(tile))
THEN
711 ice(ng) % Si(i,j,1,ns) = inival
712 ice(ng) % Si(i,j,2,ns) = inival
716 ice(ng) % Fi(i,j,nf) = inival
725 IF ((model.eq.0).or.(model.eq.
inlm))
THEN
728 IF (
domain(ng)%NorthWest_Test(tile))
THEN
735 IF (
domain(ng)%SouthEast_Test(tile))
THEN
742 IF (
domain(ng)%SouthWest_Test(tile))
THEN
745 ice_lobc(i,ng) % iceG_south = inival
749 IF (
domain(ng)%NorthEast_Test(tile))
THEN
752 ice_lobc(i,ng) % iceG_north = inival
768 IF (
ifice(nf).gt.0)
THEN
782 IF (
isice(ns).gt.0)
THEN
integer, parameter isvice
integer, dimension(:), allocatable dtice
real(r8), dimension(:), allocatable pstar
real(r8), dimension(:), allocatable min_hi
integer, dimension(:), allocatable ievp
integer, parameter ishage
integer, parameter isino3
integer, parameter iciomf
integer, parameter icpice
integer, parameter icw_ro
integer, parameter icwdiv
integer, parameter icqcon
integer, dimension(:), allocatable dtevp
real(r8), dimension(:), allocatable ellip_sq
integer, dimension(nicef) ifice
integer, parameter ics0mk
integer, dimension(4, nices) iceobc
integer, parameter isenth
integer, parameter ichsse
integer, parameter icuavg
real(r8), dimension(:), allocatable airrho
integer, parameter icsvis
integer, parameter icbvis
integer, parameter icw_ao
integer, parameter isisxx
real(r8), dimension(:), allocatable icerho
real(r8), dimension(:), allocatable zetamax
type(t_ice_lobc), dimension(:,:), allocatable ice_lobc
real(r8), dimension(:), allocatable zetamin
integer, parameter ishsno
real(r8), dimension(:), allocatable snowwetrho
type(t_ice), dimension(:), allocatable ice
integer, dimension(:), allocatable nevp
real(r8), dimension(:), allocatable snowdryrho
integer, parameter icvavg
integer, parameter istice
integer, parameter iciomt
subroutine, public deallocate_ice(ng)
integer, parameter isiphy
real(r8), dimension(:), allocatable max_hmelt
integer, dimension(nices) ibice
integer, parameter isisxy
real(r8), dimension(:), allocatable min_ai
integer, parameter iciovs
integer, parameter isuevp
integer, parameter isilog
integer, parameter ishmel
integer, parameter icpgrd
integer, parameter iciofv
integer, dimension(nices) isice
integer, parameter icaius
integer, parameter icw_fr
integer, parameter icqrhs
integer, parameter isiage
integer, parameter isaice
integer, parameter isvevp
integer, parameter ict0mk
real(r8), dimension(:), allocatable max_ai
subroutine, public initialize_ice(ng, tile, model)
integer, parameter isinh4
integer, parameter isuice
type(t_ice_avg), dimension(:,:), allocatable ice_savg
real(r8), dimension(:), allocatable cd_io
real(r8), dimension(:), allocatable astrength
subroutine, public allocate_ice(ng, lbi, ubi, lbj, ubj, ice_kernel)
type(t_ice_avg), dimension(:,:), allocatable ice_favg
integer, parameter ishice
integer, parameter icw_io
logical, dimension(:,:), allocatable licesavg
integer, parameter icisst
integer, parameter icaivs
integer, parameter isisyy
logical, dimension(:,:), allocatable licefavg
real(r8), dimension(:), allocatable stressang
integer, parameter icw_ai
real(r8), dimension(:), allocatable cd_ai
type(t_bounds), dimension(:), allocatable bounds
real(r8), dimension(:), allocatable dmem
type(t_lbc), dimension(:,:,:), allocatable lbc
type(t_domain), dimension(:), allocatable domain
integer, parameter isouth
integer, parameter inorth