/[MITgcm]/MITgcm/pkg/seaice/budget.F
ViewVC logotype

Contents of /MITgcm/pkg/seaice/budget.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download)
Tue Nov 12 20:47:27 2002 UTC (21 years, 7 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint47, checkpoint47a_post, checkpoint46n_post
Changes since 1.1: +216 -0 lines
Merging from release1_p8 branch:
o New package: pkg/seaice
  Sea ice model by D. Menemenlis (JPL) and Jinlun Zhang (Seattle).
  The sea-ice code is based on Hibler (1979-1980).
  Two sea-ice dynamic solvers, ADI and LSR, are included.
  In addition to computing prognostic sea-ice variables and diagnosing
  the forcing/external data fields that drive the ocean model,
  SEAICE_MODEL also sets theta to the freezing point under sea-ice.
  The implied surface heat flux is then stored in variable
  surfaceTendencyTice, which is needed by KPP package (kpp_calc.F and
  kpp_transport_t.F) to diagnose surface buoyancy fluxes and for the
  non-local transport term.  Because this call precedes model
  thermodynamics, temperature under sea-ice may not be "exactly" at
  the freezing point by the time theta is dumped or time-averaged.

1 C $Header:
2
3 #include "SEAICE_OPTIONS.h"
4
5 CStartOfInterface
6 SUBROUTINE BUDGET(UG, TICE, HICE1, FICE1, KOPEN, bi, bj)
7 C /==========================================================\
8 C | SUBROUTINE budget |
9 C | o Calculate ice growth rate |
10 C |==========================================================|
11 C \==========================================================/
12 IMPLICIT NONE
13
14 C === Global variables ===
15 #include "SIZE.h"
16 #include "EEPARAMS.h"
17 #include "SEAICE_PARAMS.h"
18 #include "SEAICE_FFIELDS.h"
19
20 C Subset of variables from SEAICE.h
21 _RL HEFF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,3,nSx,nSy)
22 _RL HSNOW (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
23 _RL QNETO (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
24 _RL QNETI (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
25 _RL QSWO (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
26 _RL QSWI (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
27 COMMON/TRANS/HEFF,HSNOW
28 COMMON/QFLUX/QNETO,QNETI,QSWO,QSWI
29
30 C === Routine arguments ===
31 _RL UG (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
32 _RL TICE (1-OLx:sNx+OLx, 1-OLy:sNy+OLy, nSx,nSy)
33 _RL HICE1 (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
34 _RL FICE1 (1-OLx:sNx+OLx, 1-OLy:sNy+OLy, nSx,nSy)
35 INTEGER KOPEN
36 INTEGER bi, bj
37 CEndOfInterface
38
39 #ifdef ALLOW_SEAICE
40
41 C === Local variables ===
42 C i,j,k,bi,bj - Loop counters
43
44 INTEGER i, j
45 INTEGER ITER
46 _RL QS1, C1, C2, C3, C4, C5, TB, D1, D1W, D1I, D3
47 _RL TMELT, TMELTP, XKI, XKS, HCUT, ASNOW, XIO
48
49 _RL HICE (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
50 _RL ALB (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
51 _RL A1 (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
52 _RL A2 (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
53 _RL A3 (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
54 _RL B (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
55
56 C IF KOPEN LT 0 THAN DO OPEN WATER BUDGET
57 C NOW DEFINE ASSORTED CONSTANTS
58 C SATURATION VAPOR PRESSURE CONSTANT
59 QS1=0.622D+00/1013.0D+00
60 C MAYKUTS CONSTANTS FOR SAT. VAP. PRESSURE TEMP. POLYNOMIAL
61 C1=2.7798202D-06
62 C2=-2.6913393D-03
63 C3=0.97920849D+00
64 C4=-158.63779D+00
65 C5=9653.1925D+00
66 C FREEZING TEMPERATURE OF SEAWATER
67 TB=271.2D+00
68 C SENSIBLE HEAT CONSTANT
69 D1=SEAICE_sensHeat
70 C WATER LATENT HEAT CONSTANT
71 D1W=SEAICE_latentWater
72 C ICE LATENT HEAT CONSTANT
73 D1I=SEAICE_latentIce
74 C STEFAN BOLTZMAN CONSTANT TIMES 0.97 EMISSIVITY
75 D3=SEAICE_emissivity
76 C MELTING TEMPERATURE OF ICE
77 TMELT=273.16D+00
78 TMELTP=273.159D+00
79 C ICE CONDUCTIVITY
80 XKI=SEAICE_iceConduct
81 C SNOW CONDUCTIVITY
82 XKS=SEAICE_snowConduct
83 C CUTOFF SNOW THICKNESS
84 HCUT=SEAICE_snowThick
85 C PENETRATION SHORTWAVE RADIATION FACTOR
86 XIO=SEAICE_shortwave
87
88 DO J=1,sNy
89 DO I=1,sNx
90 TICE(I,J,bi,bj)=MIN(273.16+MAX_TICE,TICE(I,J,bi,bj))
91 TAIR(I,J,bi,bj)=MAX(273.16+MIN_TAIR,TAIR(I,J,bi,bj))
92 FLO(I,J,bi,bj)=MAX(MIN_FLO,FLO(I,J,bi,bj))
93 ENDDO
94 ENDDO
95
96 C NOW DECIDE IF OPEN WATER OR ICE
97 IF(KOPEN.LE.0) THEN
98
99 C NOW DETERMINE OPEN WATER HEAT BUD. ASSUMING TICE=WATER TEMP.
100 C WATER ALBEDO IS ASSUMED TO BE 0.1
101 DO J=1,sNy
102 DO I=1,sNx
103 ALB(I,J)=SEAICE_waterAlbedo
104 A1(I,J)=(1.0-ALB(I,J))*FSH(I,J,bi,bj)+FLO(I,J,bi,bj)
105 & +D1*UG(I,J)*TAIR(I,J,bi,bj)+D1W*UG(I,J)*QA(I,J,bi,bj)
106 B(I,J)=QS1*6.11D+00*EXP(17.2694D+00*(TICE(I,J,bi,bj)-TMELT)
107 & /(TICE(I,J,bi,bj)-TMELT+237.3D+00))
108 A2(I,J)=-D1*UG(I,J)*TICE(I,J,bi,bj)-D1W*UG(I,J)*B(I,J)
109 & -D3*(TICE(I,J,bi,bj)**4)
110 FICE1(I,J,bi,bj)=-A1(I,J)-A2(I,J)
111 QSWO(I,J,bi,bj)=-(1.0-ALB(I,J))*FSH(I,J,bi,bj)
112 QNETO(I,J,bi,bj)=FICE1(I,J,bi,bj)-QSWO(I,J,bi,bj)
113 ENDDO
114 ENDDO
115
116 ELSE
117
118 C COME HERE IF ICE COVER
119 C FIRST PUT MINIMUM ON ICE THICKNESS
120 DO J=1,sNy
121 DO I=1,sNx
122 HICE(I,J)=MAX(HICE1(I,J),0.05D+00)
123 HICE(I,J)=MIN(HICE(I,J),9.0D+00)
124 ENDDO
125 ENDDO
126 C NOW DECIDE ON ALBEDO
127 DO J=1,sNy
128 DO I=1,sNx
129 ALB(I,J)=0.75E+00
130 IF(TICE(I,J,bi,bj).GT.TMELTP) ALB(I,J)=SEAICE_albedo
131 ASNOW=SEAICE_drySnowAlb
132 IF(TICE(I,J,bi,bj).GT.TMELTP) ASNOW=SEAICE_wetSnowAlb
133 IF(HSNOW(I,J,bi,bj).GT.HCUT) THEN
134 ALB(I,J)=ASNOW
135 ELSE
136 ALB(I,J)=ALB(I,J)+(HSNOW(I,J,bi,bj)/HCUT)*(ASNOW-ALB(I,J))
137 IF(ALB(I,J).GT.ASNOW) ALB(I,J)=ASNOW
138 END IF
139 ENDDO
140 ENDDO
141 C NOW DETERMINE FIXED FORCING TERM IN HEAT BUDGET
142 DO J=1,sNy
143 DO I=1,sNx
144 IF(HSNOW(I,J,bi,bj).GT.0.0) THEN
145 C NO SW PENETRATION WITH SNOW
146 A1(I,J)=(1.0-ALB(I,J))*FSH(I,J,bi,bj)+FLO(I,J,bi,bj)
147 & +D1*UG(I,J)*TAIR(I,J,bi,bj)+D1I*UG(I,J)*QA(I,J,bi,bj)
148 ELSE
149 C SW PENETRATION UNDER ICE
150 A1(I,J)=(1.0-ALB(I,J))*FSH(I,J,bi,bj)
151 & *(1.0-XIO*EXP(-1.5*HICE(I,J)))+FLO(I,J,bi,bj)
152 & +D1*UG(I,J)*TAIR(I,J,bi,bj)+D1I*UG(I,J)*QA(I,J,bi,bj)
153 ENDIF
154 ENDDO
155 ENDDO
156 C NOW COMPUTE OTHER TERMS IN HEAT BUDGET
157 C COME HERE AT START OF ITERATION
158 DO ITER=1,IMAX_TICE
159
160 DO J=1,sNy
161 DO I=1,sNx
162 B(I,J)=QS1*(C1*TICE(I,J,bi,bj)**4+C2*TICE(I,J,bi,bj)**3
163 ? +C3*TICE(I,J,bi,bj)**2+C4*TICE(I,J,bi,bj)+C5)
164 A2(I,J)=-D1*UG(I,J)*TICE(I,J,bi,bj)-D1I*UG(I,J)*B(I,J)
165 ? -D3*(TICE(I,J,bi,bj)**4)
166 B(I,J)=XKS/(HSNOW(I,J,bi,bj)/HICE(I,J)+XKS/XKI)/HICE(I,J)
167 A3(I,J)=4.0D+00*D3*(TICE(I,J,bi,bj)**3)+B(I,J)+D1*UG(I,J)
168 B(I,J)=B(I,J)*(TB-TICE(I,J,bi,bj))
169 cdm
170 cdm if(TICE(I,J,bi,bj).le.206.)
171 cdm & print '(A,3i4,f12.2)','### ITER,I,J,TICE',
172 cdm & ITER,I,J,TICE(I,J,bi,bj)
173 cdm
174 ENDDO
175 ENDDO
176 C NOW DECIDE IF IT IS TIME TO ESTIMATE GROWTH RATES
177 C NOW DETERMINE NEW ICE TEMPERATURE
178 DO J=1,sNy
179 DO I=1,sNx
180 TICE(I,J,bi,bj)=TICE(I,J,bi,bj)
181 & +(A1(I,J)+A2(I,J)+B(I,J))/A3(I,J)
182 TICE(I,J,bi,bj)=MAX(273.16+MIN_TICE,TICE(I,J,bi,bj))
183 ENDDO
184 ENDDO
185 C NOW DECIDE IF ITERATIONS ARE COMPLETE
186 C NOW SET ICE TEMP TO MIN OF TMELT/ITERATION RESULT
187 c IF(ITER.EQ.IMAX_TICE) THEN
188 DO J=1,sNy
189 DO I=1,sNx
190 TICE(I,J,bi,bj)=MIN(TICE(I,J,bi,bj),TMELT)
191 ENDDO
192 ENDDO
193 c ENDIF
194
195 ENDDO
196
197 DO J=1,sNy
198 DO I=1,sNx
199 FICE1(I,J,bi,bj)=-A1(I,J)-A2(I,J)
200 IF(HSNOW(I,J,bi,bj).GT.0.0) THEN
201 C NO SW PENETRATION WITH SNOW
202 QSWI(I,J,bi,bj)=0.0
203 ELSE
204 C SW PENETRATION UNDER ICE
205 QSWI(I,J,bi,bj)=-(1.0-ALB(I,J))*FSH(I,J,bi,bj)
206 & *XIO*EXP(-1.5*HICE(I,J))
207 ENDIF
208 ENDDO
209 ENDDO
210
211 END IF
212
213 #endif ALLOW_SEAICE
214
215 RETURN
216 END

  ViewVC Help
Powered by ViewVC 1.1.22