979 real (kind=dbl_kind),
dimension(ilo:ihi,jlo:jhi),
intent(in) :: &
984 real (kind=dbl_kind),
dimension(ilo:ihi,jlo:jhi),
intent(inout) :: &
990 integer (kind=int_kind) :: &
997 integer (kind=int_kind),
dimension(1:(ihi-ilo+1)*(jhi-jlo+1)) :: &
1000 real (kind=dbl_kind),
dimension (imt_local,jmt_local) :: &
1001 vice_init, vice_final &
1002 , eice_init, eice_final
1004 real (kind=dbl_kind),
dimension (imt_local,jmt_local,ncat) :: &
1010 real (kind=dbl_kind),
dimension (imt_local,jmt_local,ntilay) :: &
1013 real (kind=dbl_kind),
dimension (ilo:ihi,jlo:jhi) :: &
1025 real (kind=dbl_kind),
dimension (ilo:ihi,jlo:jhi,nilyr) :: &
1028 real (kind=dbl_kind) :: &
1034 character (len=char_len) :: &
1037 logical (kind=log_kind) :: &
1046 if (l_conservation_check)
then 1047 call column_sum (
ncat,
vicen, vice_init)
1063 - apartic(i,j,0)*closing_gross(i,j)*dyn_dt &
1064 + opning(i,j)*dyn_dt
1080 write (nu_diag,*)
' ' 1081 write (nu_diag,*)
'Ridging error: aice0 < 0' 1082 write (nu_diag,*)
'istep1, my_task, i, j:', &
1085 write (nu_diag,*)
'aice0:',
aice0(i,j)
1097 aicen_init(:,:,:) =
aicen(:,:,:)
1098 vicen_init(:,:,:) =
vicen(:,:,:)
1099 vsnon_init(:,:,:) =
vsnon(:,:,:)
1100 aicen_init(:,:,:) =
aicen(:,:,:)
1101 esnon_init(:,:,:) =
esnon(:,:,:)
1102 eicen_init(:,:,:) =
eicen(:,:,:)
1118 if (aicen_init(i,j,n1) >
puny .and. apartic(i,j,n1) >
c0i &
1119 .and. closing_gross(i,j) >
c0i)
then 1127 large_ardg = .false.
1141 ardg1(i,j) = apartic(i,j,n1)*closing_gross(i,j)*dyn_dt
1143 if (ardg1(i,j) > aicen_init(i,j,n1) +
puny)
then 1146 ardg1(i,j) = min(ardg1(i,j),aicen_init(i,j,n1))
1149 ardg2(i,j) = ardg1(i,j) / krdg(i,j,n1)
1150 afrac(i,j) = ardg1(i,j) / aicen_init(i,j,n1)
1157 virdg(i,j) = vicen_init(i,j,n1) * afrac(i,j)
1158 vsrdg(i,j) = vsnon_init(i,j,n1) * afrac(i,j)
1159 esrdg(i,j) = esnon_init(i,j,n1) * afrac(i,j)
1170 dardg1dt(i,j) = dardg1dt(i,j) + ardg1(i,j)
1171 dardg2dt(i,j) = dardg2dt(i,j) + ardg2(i,j)
1172 dvirdgdt(i,j) = dvirdgdt(i,j) + virdg(i,j)
1173 opening(i,j) = opening(i,j) + opning(i,j)*dyn_dt
1181 msnow_mlt(i,j) = msnow_mlt(i,j) &
1182 +
rhos*vsrdg(i,j)*(
c1i-fsnowrdg)
1183 esnow_mlt(i,j) = esnow_mlt(i,j) &
1184 + esrdg(i,j)*(
c1i-fsnowrdg)
1191 dhr(i,j) = hrmax(i,j,n1) - hrmin(i,j,n1)
1192 dhr2(i,j) = hrmax(i,j,n1) * hrmax(i,j,n1) &
1193 - hrmin(i,j,n1) * hrmin(i,j,n1)
1209 eirdg(i,j,k) = eicen_init(i,j,ilyr1(n1)+k-1) * afrac(i,j)
1210 eicen(i,j,ilyr1(n1)+k-1) =
eicen(i,j,ilyr1(n1)+k-1) &
1215 if (large_ardg)
then 1219 if (ardg1(i,j) > aicen_init(i,j,n1) +
puny)
then 1220 write (nu_diag,*)
'' 1221 write (nu_diag,*)
'ardg > aicen' 1222 write (nu_diag,*)
'istep1, my_task, i, j, n:', &
1224 write (nu_diag,*)
'ardg, aicen_init:', &
1225 ardg1(i,j), aicen_init(i,j,n1)
1248 if (hrmin(i,j,n1) >= hin_max(n2) .or. &
1249 hrmax(i,j,n1) <= hin_max(n2-1))
then 1253 hl = max(hrmin(i,j,n1), hin_max(n2-1))
1254 hr = min(hrmax(i,j,n1), hin_max(n2))
1258 farea(i,j) = (hr-hl) / dhr(i,j)
1259 fvol(i,j) = (hr*hr - hl*hl) / dhr2(i,j)
1277 hexp = hrexp(i,j,n1)
1279 if (hi1 >= hin_max(n2))
then 1283 hl = max(hi1, hin_max(n2-1))
1285 expl = exp(-(hl-hi1)/hexp)
1286 expr = exp(-(hr-hi1)/hexp)
1287 farea(i,j) = expl - expr
1288 fvol(i,j) = ((hl + hexp)*expl &
1289 - (hr + hexp)*expr) / (hi1 + hexp)
1300 hexp = hrexp(i,j,n1)
1302 hl = max(hi1, hin_max(n2-1))
1303 expl = exp(-(hl-hi1)/hexp)
1305 fvol(i,j) = (hl + hexp)*expl / (hi1 + hexp)
1324 aicen(i,j,n2) =
aicen(i,j,n2) + farea(i,j)*ardg2(i,j)
1325 vicen(i,j,n2) =
vicen(i,j,n2) + fvol(i,j) *virdg(i,j)
1327 + fvol(i,j)*vsrdg(i,j)*fsnowrdg
1329 + fvol(i,j)*esrdg(i,j)*fsnowrdg
1343 eicen(i,j,ilyr1(n2)+k-1) =
eicen(i,j,ilyr1(n2)+k-1) &
1344 + fvol(i,j)*eirdg(i,j,k)
1355 if (l_conservation_check)
then 1357 call column_sum (
ncat,
vicen, vice_final)
1358 fieldid =
'vice, ridging' 1359 call column_conservation_check (vice_init, vice_final, &
1363 fieldid =
'eice, ridging' 1364 call column_conservation_check (eice_init, eice_final, &
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
real(kind=dbl_kind), parameter rhos
real(kind=dbl_kind), parameter lfresh
integer(kind=int_kind) krdg_redist
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 vicen
real(kind=dbl_kind), dimension(:,:,:), allocatable, target, save eicen
real(kind=dbl_kind), dimension(:,:), allocatable, target, save aice0
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), parameter rhoi
integer(kind=int_kind), parameter ntilay
real(kind=dbl_kind), dimension(:,:,:), allocatable, target, save vsnon