895 integer (kind=int_kind),
dimension(ilo:ihi,jlo:jhi,ncat), &
899 real (kind=dbl_kind),
dimension(ilo:ihi,jlo:jhi,ncat), &
904 real (kind=dbl_kind),
dimension(ilo:ihi,jlo:jhi,ncat), &
910 integer (kind=int_kind) :: &
917 real (kind=dbl_kind),
dimension(ilo:ihi,jlo:jhi,ncat) :: &
920 real (kind=dbl_kind) :: &
926 integer (kind=int_kind),
dimension (1:(ihi-ilo+1)*(jhi-jlo+1)) :: &
930 integer (kind=int_kind) :: &
934 logical (kind=log_kind) :: &
937 , daice_greater_aicen &
938 , dvice_greater_vicen
941 real (kind=dbl_kind) ::eps
962 daice_negative = .false.
963 dvice_negative = .false.
964 daice_greater_aicen = .false.
965 dvice_greater_vicen = .false.
970 if (donor(i,j,ni) > 0)
then 973 if (daice(i,j,ni) <
c0i)
then 974 if (daice(i,j,ni) > -
puny*
aicen(i,j,n1))
then 978 daice_negative = .true.
982 if (dvice(i,j,ni) <
c0i)
then 983 if (dvice(i,j,ni) > -
puny*
vicen(i,j,n1))
then 987 dvice_negative = .true.
993 daice(i,j,ni) =
aicen(i,j,n1)
994 dvice(i,j,ni) =
vicen(i,j,n1)
996 daice_greater_aicen = .true.
1002 daice(i,j,ni) =
aicen(i,j,n1)
1003 dvice(i,j,ni) =
vicen(i,j,n1)
1005 dvice_greater_vicen = .true.
1017 if (daice_negative)
then 1020 if (donor(i,j,ni) > 0 .and. &
1021 daice(i,j,ni) <= -
puny*
aicen(i,j,n1))
then 1022 write(nu_diag,*)
my_task,
':',i,j, &
1023 'ITD Neg daice =',daice(i,j,ni),
' boundary',ni
1030 if (dvice_negative)
then 1033 if (donor(i,j,ni) > 0 .and. &
1034 dvice(i,j,ni) <= -
puny*
vicen(i,j,n1))
then 1035 write(nu_diag,*)
my_task,
':',i,j, &
1036 'ITD Neg dvice =',dvice(i,j,ni),
' boundary',ni
1043 if (daice_greater_aicen)
then 1046 if (donor(i,j,ni) > 0)
then 1049 write(nu_diag,*)
my_task,
':',i,j, &
1050 'ITD daice > aicen, cat',n1
1051 write(nu_diag,*)
my_task,
':',i,j, &
1052 'daice =', daice(i,j,ni), &
1053 'aicen =',
aicen(i,j,n1)
1061 if (dvice_greater_vicen)
then 1064 if (donor(i,j,ni) > 0)
then 1067 write(nu_diag,*)
my_task,
':',i,j, &
1068 'ITD dvice > vicen, cat',n1
1069 write(nu_diag,*)
my_task,
':',i,j, &
1070 'dvice =', dvice(i,j,ni), &
1071 'vicen =',
vicen(i,j,n1)
1086 if (daice(i,j,ni) >
c0i)
then 1104 worka(i,j) = dvice(i,j,ni) / (
vicen(i,j,n1)+epsilon(eps))
1113 aicen(i,j,n1) =
aicen(i,j,n1) - daice(i,j,ni)
1114 aicen(i,j,n2) =
aicen(i,j,n2) + daice(i,j,ni)
1115 vicen(i,j,n1) =
vicen(i,j,n1) - dvice(i,j,ni)
1116 vicen(i,j,n2) =
vicen(i,j,n2) + dvice(i,j,ni)
1122 datsf = daice(i,j,ni)*
tsfcn(i,j,n1)
1123 atsfn(i,j,n1) = atsfn(i,j,n1) - datsf
1124 atsfn(i,j,n2) = atsfn(i,j,n2) + datsf
1147 deice =
eicen(i,j,ilyr1(n1)+k-1) *
worka(i,j)
1148 eicen(i,j,ilyr1(n1)+k-1) = &
1149 eicen(i,j,ilyr1(n1)+k-1) - deice
1150 eicen(i,j,ilyr1(n2)+k-1) = &
1151 eicen(i,j,ilyr1(n2)+k-1) + deice
1168 hicen(i,j,ni) =
vicen(i,j,ni) /(
aicen(i,j,ni)+epsilon(eps))
1169 tsfcn(i,j,ni) = atsfn(i,j,ni) /(
aicen(i,j,ni)+epsilon(eps))
real(kind=dbl_kind), dimension(:,:), allocatable, save tf
integer(kind=int_kind), parameter nilyr
real(kind=dbl_kind), dimension(:,:,:), allocatable, target, save esnon
integer(kind=int_kind) ihi
real(kind=dbl_kind), parameter c0i
integer(kind=int_kind) jlo
integer(kind=int_kind) ilo
real(kind=dbl_kind), parameter puny
integer(kind=int_kind) jhi
real(kind=dbl_kind), dimension(:,:,:), allocatable, target, save tsfcn
real(kind=dbl_kind), dimension(:,:), allocatable worka
real(kind=dbl_kind), dimension(:,:,:), allocatable, target, save vicen
real(kind=dbl_kind), dimension(:,:,:), allocatable, target, save eicen
integer(kind=int_kind), parameter ncat
real(kind=dbl_kind), dimension(:,:,:), allocatable, target, save aicen
integer(kind=int_kind), save my_task
real(kind=dbl_kind), parameter c1i
real(kind=dbl_kind), dimension(:,:,:), allocatable, target, save vsnon