89 |
INTEGER k |
INTEGER k |
90 |
|
|
91 |
_RL rnlyr ! maximum number of ice layers (real value) |
_RL rnlyr ! maximum number of ice layers (real value) |
|
_RL fswocn ! SW passed through ice to ocean (W m-2) |
|
92 |
C evap :: evaporation over snow/ice [kg/m2/s] (>0 if evaporate) |
C evap :: evaporation over snow/ice [kg/m2/s] (>0 if evaporate) |
93 |
_RL evap |
_RL evap |
94 |
_RL etop ! energy for top melting (J m-2) |
_RL etop ! energy for top melting (J m-2) |
161 |
mwater0 = rhos*hs + rhoi*hi |
mwater0 = rhos*hs + rhoi*hi |
162 |
msalt0 = rhoi*hi*saltice |
msalt0 = rhoi*hi*saltice |
163 |
|
|
164 |
IF (dBug) WRITE(6,1020) 'ThSI_CALC_TH: evpAtm,frzmlt,Fbot=', |
IF (dBug) WRITE(6,1020) 'ThSI_CALC_TH: evpAtm, frzmlt, Fbot =', |
165 |
& evpAtm,frzmlt,Fbot |
& evpAtm, frzmlt, Fbot |
166 |
|
|
167 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
168 |
|
|
314 |
do k = 1, nlyr |
do k = 1, nlyr |
315 |
hi = hi + hnew(k) |
hi = hi + hnew(k) |
316 |
enddo |
enddo |
317 |
IF (dBug) WRITE(6,1020) 'ThSI_CALC_TH: top,bot: etop,ebot,hs,hi=', |
IF (dBug) WRITE(6,1020) 'ThSI_CALC_TH: etop, ebot, hi, hs =', |
318 |
& etop,ebot,hs,hi |
& etop, ebot, hi, hs |
319 |
|
|
320 |
C If hi < himin, melt the ice. |
C If hi < himin, melt the ice. |
321 |
if ( hi.lt.himin .AND. (hi+hs).gt.0. _d 0 ) then |
if ( hi.lt.himin .AND. (hi+hs).gt.0. _d 0 ) then |
464 |
hi = hi + hnew(k) |
hi = hi + hnew(k) |
465 |
enddo |
enddo |
466 |
|
|
467 |
IF (dBug) WRITE(6,1020) 'ThSI_CALC_TH: b-Winton: hnew,qice=', |
IF (dBug) WRITE(6,1020) 'ThSI_CALC_TH: b-Winton: hnew, qice =', |
468 |
& hnew,qicen |
& hnew, qicen |
469 |
|
|
470 |
hlyr = hi/rnlyr |
hlyr = hi/rnlyr |
471 |
CALL THSICE_RESHAPE_LAYERS( |
CALL THSICE_RESHAPE_LAYERS( |
472 |
U qicen, |
U qicen, |
473 |
I hlyr, hnew, myThid ) |
I hlyr, hnew, myThid ) |
474 |
|
|
475 |
IF (dBug) WRITE(6,1020) 'ThSI_CALC_TH: compact,hi,qtot,hs=', |
IF (dBug) WRITE(6,1020) 'ThSI_CALC_TH: compact,hi, qtot, hs =', |
476 |
& compact,hi,(qicen(1)+qicen(2))*0.5, hs |
& compact,hi,(qicen(1)+qicen(2))*0.5, hs |
477 |
|
|
478 |
200 continue |
200 continue |
482 |
if (hi.le.0. _d 0) compact=0. _d 0 |
if (hi.le.0. _d 0) compact=0. _d 0 |
483 |
|
|
484 |
C.. heat fluxes left over for ocean |
C.. heat fluxes left over for ocean |
|
c qleft = fswocn |
|
485 |
qleft = qleft + (Fbot+(esurp+etop+ebot)/dt) |
qleft = qleft + (Fbot+(esurp+etop+ebot)/dt) |
486 |
IF(dBug) WRITE(6,1020)'ThSI_CALC_TH: fswOc,[esurp,etop+ebot]/dt=' |
IF(dBug) WRITE(6,1020)'ThSI_CALC_TH: [esurp,etop+ebot]/dt =' |
487 |
& ,fswocn,esurp/dt,etop/dt,ebot/dt |
& ,esurp/dt,etop/dt,ebot/dt |
488 |
|
|
489 |
C-- Evaporation left to the ocean : |
C-- Evaporation left to the ocean : |
490 |
fresh = fresh - evap |
fresh = fresh - evap |
504 |
c & + snow(i,j,bi,bj)*rhos - evpAtm |
c & + snow(i,j,bi,bj)*rhos - evpAtm |
505 |
fsalt = (msalt0 - rhoi*hi*saltice)/dt |
fsalt = (msalt0 - rhoi*hi*saltice)/dt |
506 |
|
|
507 |
IF (dBug) WRITE(6,1020)'ThSI_CALC_TH: dH2O,Evap[kg],fresh,fsalt', |
IF (dBug) WRITE(6,1020)'ThSI_CALC_TH:dH2O,Ev[kg],fresh,fsalt', |
508 |
& (mwater0-(rhos*hs+rhoi*hi))/dt,evap,fresh,fsalt |
& (mwater0-(rhos*hs+rhoi*hi))/dt,evap,fresh,fsalt |
509 |
IF (dBug) WRITE(6,1020)'ThSI_CALC_TH: Qleft,Fbot,extend/dt=', |
IF (dBug) WRITE(6,1020)'ThSI_CALC_TH: Qleft,Fbot,extend/dt =', |
510 |
& Qleft,Fbot,(etope+ebote)/dt |
& Qleft,Fbot,(etope+ebote)/dt |
511 |
|
|
512 |
C-- note: at this point, compact has not been changed (unless reset to zero) |
C-- note: at this point, compact has not been changed (unless reset to zero) |