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

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

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


Revision 1.9 - (show annotations) (download)
Thu Oct 9 04:19:20 2003 UTC (20 years, 8 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint51k_post, checkpoint51l_post, checkpoint51n_pre, checkpoint51i_post, checkpoint51l_pre, checkpoint51m_post
Branch point for: tg2-branch
Changes since 1.8: +2 -1 lines
 o first check-in for the "branch-genmake2" merge
 o verification suite as run on shelley (gcc 3.2.2):

Wed Oct  8 23:42:29 EDT 2003
                T           S           U           V
G D M    c        m  s        m  s        m  s        m  s
E p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  .
N n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d
2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  .

OPTFILE=NONE

Y Y Y Y 13 16 16 16  0 16 16 16 16 16 16 16 16 13 12  0  0 pass  adjustment.128x64x1
Y Y Y Y 16 16 16 16  0 16 16 16 16 16 16  0  0 16 16  0  0 pass  adjustment.cs-32x32x1
Y Y Y Y 16 16 16 16  0 16 16 16 16 16 16 22  0 16 16 22  0 pass  adjust_nlfs.cs-32x32x1
Y Y Y Y -- 13 13 16 16 13 13 13 13 16 16 16 16 16 16 16 16 N/O   advect_cs
Y Y Y Y -- 22 16 16 16 16 16 16 13 16 16 16 16 16 16 16 16 N/O   advect_xy
Y Y Y Y -- 13 16 13 16 16 16 16 16 16 16 22 16 16 16 16 16 N/O   advect_xz
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass  aim.5l_cs
Y Y Y Y 14 16 16 16 16 16 16 16 16 13 16 16 16 16 16 13 16 pass  aim.5l_Equatorial_Channel
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 13 16 16 13 13 16 pass  aim.5l_LatLon
Y Y Y Y 13 16 16 16 16 16 16 16 16 16 13 12 13 13 16 13 16 pass  exp0
Y Y Y Y 14 16 16 16 16 16 16 16 22 16 16 16 13 16 16 22 16 pass  exp1
Y Y Y Y 13 13 16 13 16 16 16 16 16 13 13 16 16 13 13 13 13 pass  exp2
Y Y Y Y 16 16 16 16 16 16 16 16 22 16 16 16 16 16 16 16 16 pass  exp4
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 22 16 16 16 22 16 pass  exp5
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass  front_relax
Y Y Y Y 14 16 16 13 13 16 16 13 13 16 13 13 16 12 13 13 16 pass  global_ocean.90x40x15
Y Y Y Y 10 16 16 13 13 16 13 16 16 13 13 13 13 16 16 13 16 FAIL  global_ocean.cs32x15
Y Y Y Y  6 11 12 13 13 12 13 16 13  9  9  9  9 10  9  9 11 FAIL  global_ocean_pressure
Y Y Y Y 14 16 16 13 16 16 16 13 13 13 13 13 16 12 16 13 16 pass  global_with_exf
Y Y Y Y 14 16 16 16 16 16 16 16 16 11 13 22 13 16 16  9 16 pass  hs94.128x64x5
Y Y Y Y 13 16 16 16 16 16 16 16 16 11 16 16 16 13 16 22 13 pass  hs94.1x64x5
Y Y Y Y 14 16 16 16 16 16 16 16 16 13 16 13 13 16 16 22 13 pass  hs94.cs-32x32x5
Y Y Y Y 10 10 16 13 13 16 16 16 22 16 13 13 13 13 13 22 13 FAIL  ideal_2D_oce
Y Y Y Y  8 16 16 16 16 16 16 16 16 13 13  8 16 16 16 16 16 FAIL  internal_wave
Y Y Y Y 14 16 16 16 16 16 16 16 16 13 13 22 13 13 13 22 16 pass  inverted_barometer
Y Y Y Y 12 16 16 16 16 16 16 16 16 16 13 12 13 13 13 13 13 FAIL  lab_sea
Y Y Y Y 11 16 16 16 16 16 16 16 13 13 13 12 13 16 13 12 13 FAIL  natl_box
Y Y Y Y 16 16 16 16 16 16 16 16 22 16 16 16 16 16 16 16 16 pass  plume_on_slope
Y Y Y Y 13 16 16 16 16 13 16 16 16 16 16 16 16 13 16 16 16 pass  solid-body.cs-32x32x1

1 C $Header: /u/u3/gcmpack/MITgcm/pkg/seaice/growth.F,v 1.8.2.1 2003/10/02 18:18:34 adcroft Exp $
2 C $Name: $
3
4 #include "SEAICE_OPTIONS.h"
5
6 CStartOfInterface
7 SUBROUTINE growth( myTime, myIter, myThid )
8 C /==========================================================\
9 C | SUBROUTINE growth |
10 C | o Updata ice thickness and snow depth |
11 C |==========================================================|
12 C \==========================================================/
13 IMPLICIT NONE
14
15 C === Global variables ===
16 #include "SIZE.h"
17 #include "EEPARAMS.h"
18 #include "PARAMS.h"
19 #include "DYNVARS.h"
20 #include "GRID.h"
21 #include "FFIELDS.h"
22 #include "SEAICE_PARAMS.h"
23 #include "SEAICE.h"
24 #include "SEAICE_FFIELDS.h"
25 #include "SEAICE_EXTERNAL.h"
26
27 #ifdef ALLOW_AUTODIFF_TAMC
28 # include "tamc.h"
29 #endif
30 C === Routine arguments ===
31 C myTime - Simulation time
32 C myIter - Simulation timestep number
33 C myThid - Thread no. that called this routine.
34 _RL myTime
35 INTEGER myIter, myThid
36 CEndOfInterface
37
38 #ifdef ALLOW_SEAICE
39
40 C === Local variables ===
41 C i,j,bi,bj - Loop counters
42
43 INTEGER i, j, bi, bj
44 _RL TBC, salinity_ice, SDF, Q0, QS
45 _RL theta_old
46
47 _RL GAREA( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
48 _RL GHEFF( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
49 _RL AR ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, nSx, nSy )
50
51 salinity_ice=4.0 _d 0 ! ICE SALINITY
52 TBC=271.2 _d 0-273.16 _d 0 ! FREEZING TEMP. OF SEA WATER
53 SDF=1000.0 _d 0/330.0 _d 0 ! RATIO OF WATER DESITY AND SNOW DENSITY
54 Q0=1.0D-06/302.0 _d +00 ! INVERSE HEAT OF FUSION OF ICE
55 QS=1.1 _d +08 ! HEAT OF FUSION OF SNOW
56
57 DO bj=myByLo(myThid),myByHi(myThid)
58 DO bi=myBxLo(myThid),myBxHi(myThid)
59 c
60 cph(
61 #ifdef ALLOW_AUTODIFF_TAMC
62 act1 = bi - myBxLo(myThid)
63 max1 = myBxHi(myThid) - myBxLo(myThid) + 1
64 act2 = bj - myByLo(myThid)
65 max2 = myByHi(myThid) - myByLo(myThid) + 1
66 act3 = myThid - 1
67 max3 = nTx*nTy
68 act4 = ikey_dynamics - 1
69 iicekey = (act1 + 1) + act2*max1
70 & + act3*max1*max2
71 & + act4*max1*max2*max3
72 #endif /* ALLOW_AUTODIFF_TAMC */
73 c
74 #ifdef ALLOW_AUTODIFF_TAMC
75 CADJ STORE theta(:,:,:,bi,bj)= comlev1_bibj,
76 CADJ & key = iicekey, byte = isbyte
77 CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
78 CADJ & key = iicekey, byte = isbyte
79 CADJ STORE atemp(:,:,bi,bj) = comlev1_bibj,
80 CADJ & key = iicekey, byte = isbyte
81 #endif /* ALLOW_AUTODIFF_TAMC */
82 cph)
83 DO J=1,sNy
84 DO I=1,sNx
85 SEAICE_SALT(I,J,bi,bj)=ZERO
86 WATR(I,J,bi,bj)=ZERO
87 ENDDO
88 ENDDO
89 #ifdef ALLOW_AUTODIFF_TAMC
90 CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
91 CADJ & key = iicekey, byte = isbyte
92 CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj,
93 CADJ & key = iicekey, byte = isbyte
94 #endif /* ALLOW_AUTODIFF_TAMC */
95 DO J=1,sNy
96 DO I=1,sNx
97 AR(I,J,bi,bj)=MIN(AREA(I,J,2,bi,bj),
98 & HEFF(I,J,2,bi,bj)*1.0 _d +04)
99 ENDDO
100 ENDDO
101 #ifdef ALLOW_AUTODIFF_TAMC
102 CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj,
103 CADJ & key = iicekey, byte = isbyte
104 #endif /* ALLOW_AUTODIFF_TAMC */
105 DO J=1,sNy
106 DO I=1,sNx
107 C NOW BALANCE THE HEAT IN OCEAN FIRT LEVEL
108 C Here the units of YNEG are m of sea-ice.
109 C The factor dRf(1)/72.0764, used to convert temperature
110 C change in deg K to m of sea-ice, is approximately:
111 C dRf(1) * (sea water heat capacity = 3996 J/kg/K)
112 C * (density of sea-water = 1026 kg/m^3)
113 C / (latent heat of fusion of sea-ice = 334000 J/kg)
114 C / (density of sea-ice = 910 kg/m^3)
115 YNEG(I,J,bi,bj)=(theta(I,J,1,bi,bj)-TBC)*dRf(1)/72.0764 _d 0
116 IF(YNEG(I,J,bi,bj).LE.ZERO) THEN
117 C SUPERCOOLING, CONVERT TO ICE
118 HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)-YNEG(I,J,bi,bj)
119 SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)-YNEG(I,J,bi,bj)
120 C HERE YNEG IS THE OCEAN TEMP. DIFFERENCE WITH SUPER-COOLING
121 YNEG(I,J,bi,bj)=TBC-theta(I,J,1,bi,bj)
122 theta(I,J,1,bi,bj)=TBC
123 ELSE
124 C NOW CORRECT ICE THICKNESS
125 GHEFF(I,J)=HEFF(I,J,1,bi,bj)
126 HEFF(I,J,3,bi,bj)=HEFF(I,J,1,bi,bj)-YNEG(I,J,bi,bj)
127 HEFF(I,J,1,bi,bj)=MAX(ZERO,HEFF(I,J,3,bi,bj))
128 C NOW CORRECT YNEG
129 YNEG(I,J,bi,bj)=HEFF(I,J,1,bi,bj)-HEFF(I,J,3,bi,bj)
130 SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)
131 & +(HEFF(I,J,1,bi,bj)-GHEFF(I,J))
132 theta_old=theta(I,J,1,bi,bj)
133 theta(I,J,1,bi,bj)=
134 & (YNEG(I,J,bi,bj)*72.0764 _d 0/dRf(1)+TBC)
135 C HERE YNEG IS THE OCEAN TEMP. DIFFERENCE WITH NO SUPER-COOLING
136 YNEG(I,J,bi,bj)=theta(I,J,1,bi,bj)-theta_old
137 ENDIF
138 C surfaceTendencyTice is the equivalent amount of surface heating
139 C implied by above change in surface level temperature (YNEG).
140 C Units are degrees/s (>0 for ocean warming).
141 surfaceTendencyTice(I,J,bi,bj)=YNEG(I,J,bi,bj)/deltaTtracer
142 ENDDO
143 ENDDO
144 c
145 ENDDO
146 ENDDO
147
148 cph(
149 #ifdef ALLOW_AUTODIFF_TAMC
150 CADJ STORE area = comlev1, key = ikey_dynamics
151 CADJ STORE atemp = comlev1, key = ikey_dynamics
152 CADJ STORE heff = comlev1, key = ikey_dynamics
153 CADJ STORE hsnow = comlev1, key = ikey_dynamics
154 CADJ STORE lwdown = comlev1, key = ikey_dynamics
155 CADJ STORE tice = comlev1, key = ikey_dynamics
156 CADJ STORE uwind = comlev1, key = ikey_dynamics
157 CADJ STORE vwind = comlev1, key = ikey_dynamics
158 #endif /* ALLOW_AUTODIFF_TAMC */
159 cph)
160 C GROWTH SUBROUTINE CALCULATES TOTAL GROWTH TENDENCIES,
161 C INCLUDING SNOWFALL
162 CALL GROATB(A22,myThid)
163
164 DO bj=myByLo(myThid),myByHi(myThid)
165 DO bi=myBxLo(myThid),myBxHi(myThid)
166 cph(
167 #ifdef ALLOW_AUTODIFF_TAMC
168 act1 = bi - myBxLo(myThid)
169 max1 = myBxHi(myThid) - myBxLo(myThid) + 1
170 act2 = bj - myByLo(myThid)
171 max2 = myByHi(myThid) - myByLo(myThid) + 1
172 act3 = myThid - 1
173 max3 = nTx*nTy
174 act4 = ikey_dynamics - 1
175 iicekey = (act1 + 1) + act2*max1
176 & + act3*max1*max2
177 & + act4*max1*max2*max3
178 #endif /* ALLOW_AUTODIFF_TAMC */
179 c
180 #ifdef ALLOW_AUTODIFF_TAMC
181 CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
182 CADJ & key = iicekey, byte = isbyte
183 CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj,
184 CADJ & key = iicekey, byte = isbyte
185 CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj,
186 CADJ & key = iicekey, byte = isbyte
187 CADJ STORE fo(:,:,bi,bj) = comlev1_bibj,
188 CADJ & key = iicekey, byte = isbyte
189 CADJ STORE fice(:,:,bi,bj) = comlev1_bibj,
190 CADJ & key = iicekey, byte = isbyte
191 #endif /* ALLOW_AUTODIFF_TAMC */
192 cph)
193 C NOW CALCULATE CORRECTED GROWTH
194 DO J=1,sNy
195 DO I=1,sNx
196 GHEFF(I,J)=-DELTAT*FICE(I,J,bi,bj)
197 GAREA(I,J)=HSNOW(I,J,bi,bj)*QS
198 IF(GHEFF(I,J).GT.ZERO.AND.GHEFF(I,J).LE.GAREA(I,J)) THEN
199 HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)-GHEFF(I,J)/QS
200 C SNOW CONVERTED INTO WATER AND THEN INTO ICE
201 C The factor 0.920 is used to convert m of sea-ice to m of freshwater
202 SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)
203 & -(GHEFF(I,J)/QS)/SDF/0.920 _d 0*AR(I,J,bi,bj)
204 WATR(I,J,bi,bj)=WATR(I,J,bi,bj)
205 & -(GHEFF(I,J)/QS)/SDF/0.920 _d 0*AR(I,J,bi,bj)
206 FICE(I,J,bi,bj)=ZERO
207 ELSE IF(GHEFF(I,J).GT.GAREA(I,J)) THEN
208 FICE(I,J,bi,bj)=-(GHEFF(I,J)-GAREA(I,J))/DELTAT
209 SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)
210 & -HSNOW(I,J,bi,bj)/SDF/0.920 _d 0*AR(I,J,bi,bj)
211 WATR(I,J,bi,bj)=WATR(I,J,bi,bj)
212 & -HSNOW(I,J,bi,bj)/SDF/0.920*AR(I,J,bi,bj)
213 HSNOW(I,J,bi,bj)=0.0
214 END IF
215
216 ENDDO
217 ENDDO
218
219 C NOW GET TOTAL GROWTH RATE
220 DO J=1,sNy
221 DO I=1,sNx
222 FHEFF(I,J,bi,bj)=FICE(I,J,bi,bj)*AR(I,J,bi,bj)
223 & +(ONE-AR(I,J,bi,bj))*FO(I,J,bi,bj)
224 ENDDO
225 ENDDO
226
227
228 C NOW UPDATE AREA
229 DO J=1,sNy
230 DO I=1,sNx
231 GHEFF(I,J)=-DELTAT*FHEFF(I,J,bi,bj)*Q0
232 GAREA(I,J)=DELTAT*FO(I,J,bi,bj)*Q0
233 GHEFF(I,J)=-ONE*MIN(HEFF(I,J,1,bi,bj),GHEFF(I,J))
234 GAREA(I,J)=MAX(ZERO,GAREA(I,J))
235 HCORR(I,J,bi,bj)=MIN(ZERO,GHEFF(I,J))
236 ENDDO
237 ENDDO
238 DO J=1,sNy
239 DO I=1,sNx
240 GAREA(I,J)=TWO*(ONE-AREA(I,J,2,bi,bj))*GAREA(I,J)/HO
241 & +HALF*HCORR(I,J,bi,bj)*AREA(I,J,2,bi,bj)
242 & /(HEFF(I,J,1,bi,bj)+.00001 _d 0)
243 AREA(I,J,1,bi,bj)=AREA(I,J,1,bi,bj)+GAREA(I,J)
244 ENDDO
245 ENDDO
246
247 C NOW UPDATE HEFF
248 DO J=1,sNy
249 DO I=1,sNx
250 GHEFF(I,J)=-DELTAT*FICE(I,J,bi,bj)*Q0*AR(I,J,bi,bj)
251 GHEFF(I,J)=-ONE*MIN(HEFF(I,J,1,bi,bj),GHEFF(I,J))
252 HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)+GHEFF(I,J)
253 SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)+GHEFF(I,J)
254 C NOW CALCULATE QNETI UNDER ICE IF ANY
255 QNETI(I,J,bi,bj)=(GHEFF(I,J)-DELTAT*FICE(I,J,bi,bj)
256 & *Q0*AR(I,J,bi,bj))/Q0/DELTAT
257 ENDDO
258 ENDDO
259
260 C NOW GET TOTAL QNET AND QSW
261 DO J=1,sNy
262 DO I=1,sNx
263 QNET(I,J,bi,bj)=QNETI(I,J,bi,bj)*AR(I,J,bi,bj)
264 & +(ONE-AR(I,J,bi,bj))*QNETO(I,J,bi,bj)
265 QSW(I,J,bi,bj)=QSWI(I,J,bi,bj)*AR(I,J,bi,bj)
266 & +(ONE-AR(I,J,bi,bj))*QSWO(I,J,bi,bj)
267 #ifndef SHORTWAVE_HEATING
268 QNET(I,J,bi,bj)=QNET(I,J,bi,bj)+QSW(I,J,bi,bj)
269 #endif
270 ENDDO
271 ENDDO
272
273 C NOW UPDATE OTHER THINGS
274 DO J=1,sNy
275 DO I=1,sNx
276 IF(FICE(I,J,bi,bj).GT.ZERO) THEN
277 C FREEZING, PRECIP ADDED AS SNOW
278 HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)
279 & +DELTAT*PRECIP(I,J,bi,bj)*AREA(I,J,2,bi,bj)*SDF
280 ELSE
281 C ADD PRECIP AS RAIN, WATER CONVERTED INTO ICE BY /0.920 _d 0
282 SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)
283 & -PRECIP(I,J,bi,bj)*AREA(I,J,2,bi,bj)*DELTAT/0.920 _d 0
284 WATR(I,J,bi,bj)=WATR(I,J,bi,bj)
285 & -PRECIP(I,J,bi,bj)*AREA(I,J,2,bi,bj)*DELTAT/0.920 _d 0
286 ENDIF
287 c Now add in precip over open water directly into ocean as negative salt
288 SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)
289 & -PRECIP(I,J,bi,bj)*(ONE-AREA(I,J,2,bi,bj))
290 & *DELTAT/0.920 _d 0
291 WATR(I,J,bi,bj)=WATR(I,J,bi,bj)
292 & -PRECIP(I,J,bi,bj)*(ONE-AREA(I,J,2,bi,bj))
293 & *DELTAT/0.920 _d 0
294 C NOW GET FRESH WATER FLUX
295 EmPmR(I,J,bi,bj)=EVAP(I,J,bi,bj)-RUNOFF(I,J,bi,bj)
296 & +SEAICE_SALT(I,J,bi,bj)*0.92 _d 0/DELTAT
297 ENDDO
298 ENDDO
299
300 #ifdef SEAICE_DEBUG
301 c CALL PLOT_FIELD_XYRS( UWIND,'Current UWIND ', myIter, myThid )
302 c CALL PLOT_FIELD_XYRS( VWIND,'Current VWIND ', myIter, myThid )
303 CALL PLOT_FIELD_XYRS( GWATX,'Current GWATX ', myIter, myThid )
304 CALL PLOT_FIELD_XYRS( GWATY,'Current GWATY ', myIter, myThid )
305 CALL PLOT_FIELD_XYRL( FO,'Current FO ', myIter, myThid )
306 CALL PLOT_FIELD_XYRL( FHEFF,'Current FHEFF ', myIter, myThid )
307 CALL PLOT_FIELD_XYRL( QSW,'Current QSW ', myIter, myThid )
308 CALL PLOT_FIELD_XYRL( QNET,'Current QNET ', myIter, myThid )
309 CALL PLOT_FIELD_XYRL( EmPmR,'Current EmPmR ', myIter, myThid )
310 DO j=1-OLy,sNy+OLy
311 DO i=1-OLx,sNx+OLx
312 GHEFF(I,J)=SQRT(UICE(I,J,1,bi,bj)**2+VICE(I,J,1,bi,bj)**2)
313 GAREA(I,J)=HEFF(I,J,1,bi,bj)
314 print*,'I J QNET:',I, J, QNET(i,j,bi,bj), QSW(I,J,bi,bj)
315 ENDDO
316 ENDDO
317 CALL PLOT_FIELD_XYRL( GHEFF,'Current UICE ', myIter, myThid )
318 CALL PLOT_FIELD_XYRL( GAREA,'Current HEFF ', myIter, myThid )
319 DO j=1-OLy,sNy+OLy
320 DO i=1-OLx,sNx+OLx
321 if(HEFF(i,j,1,bi,bj).gt.1.) then
322 print '(A,2i4,3f10.2)','#### i j heff theta yneg',i,j,
323 & HEFF(i,j,1,bi,bj),theta(I,J,1,bi,bj),yneg(I,J,bi,bj)
324 print '(A,3f10.2)','QSW, QNET before/after correction',
325 & QSW(I,J,bi,bj),QNETI(I,J,bi,bj)*AR(I,J,bi,bj)
326 & +(ONE-AR(I,J,bi,bj))*QNETO(I,J,bi,bj), QNET(I,J,bi,bj)
327 endif
328 ENDDO
329 ENDDO
330 #endif /* SEAICE_DEBUG */
331
332 crg Added by Ralf Giering: do we need DO_WE_NEED_THIS ?
333 #define DO_WE_NEED_THIS
334 C NOW ZERO OUTSIDE POINTS
335 DO J=1,sNy
336 DO I=1,sNx
337 C NOW SET AREA(I,J,1,bi,bj)=0 WHERE NO ICE IS
338 AREA(I,J,1,bi,bj)=MIN(AREA(I,J,1,bi,bj)
339 & ,HEFF(I,J,1,bi,bj)/.0001 _d 0)
340 ENDDO
341 ENDDO
342 #ifdef ALLOW_AUTODIFF_TAMC
343 CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
344 CADJ & key = iicekey, byte = isbyte
345 #endif /* ALLOW_AUTODIFF_TAMC */
346 DO J=1,sNy
347 DO I=1,sNx
348 C NOW TRUNCATE AREA
349 #ifdef DO_WE_NEED_THIS
350 AREA(I,J,1,bi,bj)=MIN(ONE,AREA(I,J,1,bi,bj))
351 ENDDO
352 ENDDO
353 #ifdef ALLOW_AUTODIFF_TAMC
354 CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
355 CADJ & key = iicekey, byte = isbyte
356 #endif /* ALLOW_AUTODIFF_TAMC */
357 DO J=1,sNy
358 DO I=1,sNx
359 AREA(I,J,1,bi,bj)=MAX(ZERO,AREA(I,J,1,bi,bj))
360 HSNOW(I,J,bi,bj)=MAX(ZERO,HSNOW(I,J,bi,bj))
361 #endif
362 AREA(I,J,1,bi,bj)=AREA(I,J,1,bi,bj)*HEFFM(I,J,bi,bj)
363 HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)*HEFFM(I,J,bi,bj)
364 #ifdef DO_WE_NEED_THIS
365 c HEFF(I,J,1,bi,bj)=MIN(MAX_HEFF,HEFF(I,J,1,bi,bj))
366 #endif
367 HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)*HEFFM(I,J,bi,bj)
368 ENDDO
369 ENDDO
370
371 ENDDO
372 ENDDO
373
374 #endif /* ALLOW_SEAICE */
375
376 RETURN
377 END

  ViewVC Help
Powered by ViewVC 1.1.22