45 |
#ifdef ALLOW_THSICE |
#ifdef ALLOW_THSICE |
46 |
C !LOCAL VARIABLES: |
C !LOCAL VARIABLES: |
47 |
C === Local variables === |
C === Local variables === |
48 |
|
C snowAge :: snow age (s) |
49 |
|
C albedo :: surface albedo [0-1] |
50 |
|
C fSWabs :: net Short-Wave (+ = down) at surface (W m-2) |
51 |
C Fbot :: the oceanic heat flux already incorporated (ice_therm) |
C Fbot :: the oceanic heat flux already incorporated (ice_therm) |
52 |
C flxAtm :: net heat flux from the atmosphere ( >0 downward) |
C flxAtm :: net heat flux from the atmosphere ( >0 downward) |
53 |
C evpAtm :: evaporation to the atmosphere |
C evpAtm :: evaporation to the atmosphere |
56 |
C ffresh :: fresh-water flux from the ice to the ocean |
C ffresh :: fresh-water flux from the ice to the ocean |
57 |
C fsalt :: mass salt flux to the ocean |
C fsalt :: mass salt flux to the ocean |
58 |
INTEGER i,j |
INTEGER i,j |
59 |
_RL fswdown, qleft, qNewIce |
_RL snowAge |
60 |
|
_RL albedo |
61 |
|
_RL fSWabs |
62 |
|
_RL qleft, qNewIce |
63 |
_RL fsalt |
_RL fsalt |
64 |
_RL ffresh |
_RL ffresh |
65 |
_RL Tf, cphm, frzmlt |
_RL Tf, cphm, frzmlt |
80 |
|
|
81 |
Tf = -mu_Tf*salt(i,j,1,bi,bj) |
Tf = -mu_Tf*salt(i,j,1,bi,bj) |
82 |
cphm = cpwater*rhosw*drF(1)*hFacC(i,j,1,bi,bj) |
cphm = cpwater*rhosw*drF(1)*hFacC(i,j,1,bi,bj) |
83 |
frzmlt = (Tf-theta(i,j,1,bi,bj))*cphm/thSIce_deltaT |
oceTs = theta(i,j,1,bi,bj) |
84 |
|
frzmlt = (Tf-oceTs)*cphm/thSIce_deltaT |
85 |
|
compact= iceMask(i,j,bi,bj) |
86 |
|
hIce = iceHeight(i,j,bi,bj) |
87 |
|
hSnow = snowHeight(i,j,bi,bj) |
88 |
Fbot = 0. _d 0 |
Fbot = 0. _d 0 |
|
compact= 0. _d 0 |
|
89 |
snow(i,j,bi,bj) = 0. _d 0 |
snow(i,j,bi,bj) = 0. _d 0 |
90 |
saltFlux(i,j,bi,bj) = 0. _d 0 |
saltFlux(i,j,bi,bj) = 0. _d 0 |
91 |
|
|
92 |
IF (dBug.AND.(frzmlt.GT.0. .OR.iceMask(i,j,bi,bj).GT.0.)) THEN |
IF (dBug .AND. (frzmlt.GT.0. .OR. compact.GT.0.) ) THEN |
93 |
WRITE(6,1010) 'ThSI_FWD:-0- iceMask,hIc,hSn,Qnet=', |
WRITE(6,1010) 'ThSI_FWD:-0- iceMask,hIc,hSn,Qnet=', |
94 |
& iceMask(i,j,bi,bj),iceHeight(i,j,bi,bj), |
& compact, hIce, hSnow, Qnet(i,j,bi,bj) |
|
& snowHeight(i,j,bi,bj), Qnet(i,j,bi,bj) |
|
95 |
WRITE(6,1010) 'ThSI_FWD: ocTs,Tf,frzmlt=', |
WRITE(6,1010) 'ThSI_FWD: ocTs,Tf,frzmlt=', |
96 |
& theta(i,j,1,bi,bj),Tf,frzmlt |
& oceTs,Tf,frzmlt |
97 |
ENDIF |
ENDIF |
98 |
|
|
99 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
101 |
C can only reduce the ice-fraction but not increase it. |
C can only reduce the ice-fraction but not increase it. |
102 |
C------- |
C------- |
103 |
IF (iceMask(i,j,bi,bj).GT.0. _d 0) THEN |
IF (iceMask(i,j,bi,bj).GT.0. _d 0) THEN |
|
fswdown = solar(i,j,bi,bj) |
|
104 |
oceHs = hfacC(i,j,1,bi,bj)*drF(1) |
oceHs = hfacC(i,j,1,bi,bj)*drF(1) |
|
oceTs = theta(i,j,1,bi,bj) |
|
105 |
oceSs = salt (i,j,1,bi,bj) |
oceSs = salt (i,j,1,bi,bj) |
106 |
oceV2s = ( uvel(i,j,1,bi,bj)*uvel(i,j,1,bi,bj) |
oceV2s = ( uvel(i,j,1,bi,bj)*uvel(i,j,1,bi,bj) |
107 |
& + uvel(i+1,j,1,bi,bj)*uvel(i+1,j,1,bi,bj) |
& + uvel(i+1,j,1,bi,bj)*uvel(i+1,j,1,bi,bj) |
108 |
& + vvel(i,j+1,1,bi,bj)*vvel(i,j+1,1,bi,bj) |
& + vvel(i,j+1,1,bi,bj)*vvel(i,j+1,1,bi,bj) |
109 |
& + vvel(i,j,1,bi,bj)*vvel(i,j,1,bi,bj) )*0.5 _d 0 |
& + vvel(i,j,1,bi,bj)*vvel(i,j,1,bi,bj) )*0.5 _d 0 |
110 |
compact = iceMask(i,j,bi,bj) |
snowAge = sage(i,j,bi,bj) |
111 |
hIce = iceHeight(i,j,bi,bj) |
c snowAge = thSIce_deltaT |
|
hSnow = snowHeight(i,j,bi,bj) |
|
112 |
Tsf = Tsrf(i,j,bi,bj) |
Tsf = Tsrf(i,j,bi,bj) |
113 |
Tice(1) = Tice1(i,j,bi,bj) |
Tice(1) = Tice1(i,j,bi,bj) |
114 |
Tice(2) = Tice2(i,j,bi,bj) |
Tice(2) = Tice2(i,j,bi,bj) |
115 |
qicen(1)= Qice1(i,j,bi,bj) |
qicen(1)= Qice1(i,j,bi,bj) |
116 |
qicen(2)= Qice2(i,j,bi,bj) |
qicen(2)= Qice2(i,j,bi,bj) |
117 |
|
CALL THSICE_ALBEDO(hIce,hSnow,Tsf,snowAge,albedo) |
118 |
|
fSWabs = solar(i,j,bi,bj)*(1. _d 0 - albedo) |
119 |
CALL THSICE_THERM( |
CALL THSICE_THERM( |
120 |
I fswdown, oceHs, oceV2s, oceSs, oceTs, |
I fSWabs, oceHs, oceV2s, oceSs, oceTs, |
121 |
U compact, hIce, hSnow, Tsf, Tice, qicen, |
U compact, hIce, hSnow, Tsf, Tice, qicen, |
122 |
O qleft, ffresh, fsalt, Fbot, |
O qleft, ffresh, fsalt, Fbot, |
123 |
O flxAtm, evpAtm, |
O flxAtm, evpAtm, |
144 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
145 |
|
|
146 |
C-- Update Sea-Ice state : |
C-- Update Sea-Ice state : |
|
c theta(i,j,1,bi,bj) = oceTs |
|
147 |
c iceMask(i,j,bi,bj)=compact |
c iceMask(i,j,bi,bj)=compact |
148 |
iceheight(i,j,bi,bj) = hIce |
iceheight(i,j,bi,bj) = hIce |
149 |
snowheight(i,j,bi,bj)= hSnow |
snowheight(i,j,bi,bj)= hSnow |
166 |
ICE_FWfx_AVE(i,j,bi,bj) = ICE_FWfx_AVE(i,j,bi,bj) |
ICE_FWfx_AVE(i,j,bi,bj) = ICE_FWfx_AVE(i,j,bi,bj) |
167 |
& + ( iceFrac*frwAtm + openFrac*EmPmR(i,j,bi,bj) |
& + ( iceFrac*frwAtm + openFrac*EmPmR(i,j,bi,bj) |
168 |
& )*thSIce_deltaT |
& )*thSIce_deltaT |
169 |
|
ICE_albedo_AVE(i,j,bi,bj) = ICE_albedo_AVE(i,j,bi,bj) |
170 |
|
& + iceFrac*albedo*thSIce_deltaT |
171 |
#endif /*ALLOW_TIMEAVE*/ |
#endif /*ALLOW_TIMEAVE*/ |
172 |
Qnet(i,j,bi,bj)=-iceFrac*qleft + openFrac*Qnet(i,j,bi,bj) |
Qnet(i,j,bi,bj)=-iceFrac*qleft + openFrac*Qnet(i,j,bi,bj) |
173 |
EmPmR(i,j,bi,bj)=iceFrac*ffresh+openFrac*EmPmR(i,j,bi,bj) |
EmPmR(i,j,bi,bj)=iceFrac*ffresh+openFrac*EmPmR(i,j,bi,bj) |
203 |
qicen(2)= -cpice *Tf + Lfresh |
qicen(2)= -cpice *Tf + Lfresh |
204 |
ENDIF |
ENDIF |
205 |
qicAv = rhoi*(qicen(1)+qicen(2))*0.5 _d 0 |
qicAv = rhoi*(qicen(1)+qicen(2))*0.5 _d 0 |
|
oceTs = theta(i,j,1,bi,bj) |
|
|
hIce = iceHeight(i,j,bi,bj) |
|
|
hSnow = snowHeight(i,j,bi,bj) |
|
206 |
CALL THSICE_START( myThid, |
CALL THSICE_START( myThid, |
207 |
I esurp, qicAv, Tf, |
I esurp, qicAv, Tf, |
208 |
O qNewIce, ffresh, fsalt, |
O qNewIce, ffresh, fsalt, |
226 |
Tice2(i,j,bi,bj) = Tf |
Tice2(i,j,bi,bj) = Tf |
227 |
Qice1(i,j,bi,bj) = qicen(1) |
Qice1(i,j,bi,bj) = qicen(1) |
228 |
Qice2(i,j,bi,bj) = qicen(2) |
Qice2(i,j,bi,bj) = qicen(2) |
|
c theta(i,j,1,bi,bj)= oceTs |
|
229 |
ENDIF |
ENDIF |
230 |
iceheight(i,j,bi,bj) = hIce |
iceheight(i,j,bi,bj) = hIce |
231 |
snowheight(i,j,bi,bj)= hSnow |
snowheight(i,j,bi,bj)= hSnow |
241 |
|
|
242 |
IF ( compact .GT. 0. _d 0 ) THEN |
IF ( compact .GT. 0. _d 0 ) THEN |
243 |
iceMask(i,j,bi,bj)=compact |
iceMask(i,j,bi,bj)=compact |
244 |
|
IF ( hSnow .EQ. 0. _d 0 ) sage(i,j,bi,bj) = 0. _d 0 |
245 |
ELSE |
ELSE |
246 |
iceMask(i,j,bi,bj) = 0. _d 0 |
iceMask(i,j,bi,bj) = 0. _d 0 |
247 |
iceHeight(i,j,bi,bj)= 0. _d 0 |
iceHeight(i,j,bi,bj)= 0. _d 0 |
248 |
snowHeight(i,j,bi,bj)=0. _d 0 |
snowHeight(i,j,bi,bj)=0. _d 0 |
249 |
Tsrf(i,j,bi,bj)=theta(i,j,1,bi,bj) |
sage(i,j,bi,bj) = 0. _d 0 |
250 |
|
Tsrf(i,j,bi,bj) = oceTs |
251 |
Tice1(i,j,bi,bj) = 0. _d 0 |
Tice1(i,j,bi,bj) = 0. _d 0 |
252 |
Tice2(i,j,bi,bj) = 0. _d 0 |
Tice2(i,j,bi,bj) = 0. _d 0 |
253 |
Qice1(i,j,bi,bj) = 0. _d 0 |
Qice1(i,j,bi,bj) = 0. _d 0 |