/[MITgcm]/MITgcm_contrib/lab_sea_test/dynsolver.F
ViewVC logotype

Contents of /MITgcm_contrib/lab_sea_test/dynsolver.F

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


Revision 1.1 - (show annotations) (download)
Mon Jul 12 01:00:20 2004 UTC (19 years, 9 months ago) by dimitri
Branch: MAIN
CVS Tags: HEAD
added my_min_max for pkg/seaice routines

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/dynsolver.F,v 1.13 2004/05/05 00:23:37 dimitri Exp $
2 C $Name: $
3
4 #include "SEAICE_OPTIONS.h"
5
6 CStartOfInterface
7 SUBROUTINE dynsolver( myTime, myIter, myThid )
8 C /==========================================================\
9 C | SUBROUTINE dynsolver |
10 C | o Ice dynamics using LSR solver |
11 C | Zhang and Hibler, JGR, 102, 8691-8702, 1997 |
12 C |==========================================================|
13 C \==========================================================/
14 IMPLICIT NONE
15
16 C === Global variables ===
17 #include "SIZE.h"
18 #include "EEPARAMS.h"
19 #include "PARAMS.h"
20 #include "FFIELDS.h"
21 #include "SEAICE.h"
22 #include "SEAICE_GRID.h"
23 #include "SEAICE_PARAMS.h"
24 #include "SEAICE_FFIELDS.h"
25
26 #ifdef ALLOW_AUTODIFF_TAMC
27 # include "tamc.h"
28 #endif
29
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
36 INTEGER myThid
37 CEndOfInterface
38
39 #ifdef ALLOW_SEAICE
40
41 C === Local variables ===
42 C i,j,bi,bj - Loop counters
43
44 INTEGER i, j, bi, bj, kii
45 _RL DWAT, DAIR, RHOICE, RHOAIR, SINWIN, COSWIN, SINWAT, COSWAT
46 _RL GRAV, ECCEN, ECM2, RADIUS, DELT1, DELT2, PSTAR, AAA
47 _RL TEMPVAR, U1, V1
48
49 _RL PRESS (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
50 _RL PRESS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
51 _RL DAIRN (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
52 _RL DWATN (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
53 _RL FORCEX0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
54 _RL FORCEY0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
55 _RL E11 (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
56 _RL E22 (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
57 _RL E12 (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
58 _RL COR_ICE (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
59 _RL ZMAX (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
60 _RL ZMIN (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
61
62 _RL mymin_R8, mymax_R8
63 external mymin_R8, mymax_R8
64
65 C-- FIRST SET UP BASIC CONSTANTS
66 DWAT=0.59 _d 0
67 DAIR=0.01462 _d 0
68 RHOICE=0.91 _d +03
69 RHOAIR=1.3 _d 0
70 GRAV=9.832 _d 0
71 ECCEN=TWO
72 ECM2=ONE/(ECCEN**2)
73 RADIUS=6370. _d 3
74 PSTAR=SEAICE_strength
75
76 C-- 25 DEG GIVES SIN EQUAL TO 0.4226
77 SINWIN=0.4226 _d 0
78 COSWIN=0.9063 _d 0
79 SINWAT=0.4226 _d 0
80 COSWAT=0.9063 _d 0
81
82 C-- Do not introduce turning angle
83 SINWIN=ZERO
84 COSWIN=ONE
85 SINWAT=ZERO
86 COSWAT=ONE
87
88 C-- NOW SET UP MASS PER UNIT AREA AND CORIOLIS TERM
89 DO bj=myByLo(myThid),myByHi(myThid)
90 DO bi=myBxLo(myThid),myBxHi(myThid)
91 DO j=1,sNy
92 DO i=1,sNx
93 AMASS(I,J,bi,bj)=RHOICE*QUART*(HEFF(i,j,1,bi,bj)
94 & +HEFF(i-1,j,1,bi,bj)
95 & +HEFF(i,j-1,1,bi,bj)
96 & +HEFF(i-1,j-1,1,bi,bj))
97 COR_ICE(I,J,bi,bj)=AMASS(I,J,bi,bj)
98 & *TWO*OMEGA*SINEICE(I,J,bi,bj)
99 ENDDO
100 ENDDO
101 ENDDO
102 ENDDO
103
104 C-- NOW SET UP FORCING FIELDS
105
106 C-- Wind stress is computed on South-West B-grid U/V
107 C locations from wind on tracer locations
108 DO bj=myByLo(myThid),myByHi(myThid)
109 DO bi=myBxLo(myThid),myBxHi(myThid)
110 DO j=1,sNy
111 DO i=1,sNx
112 U1=QUART*(UWIND(I-1,J-1,bi,bj)+UWIND(I-1,J,bi,bj)
113 & +UWIND(I ,J-1,bi,bj)+UWIND(I ,J,bi,bj))
114 V1=QUART*(VWIND(I-1,J-1,bi,bj)+VWIND(I-1,J,bi,bj)
115 & +VWIND(I ,J-1,bi,bj)+VWIND(I ,J,bi,bj))
116 AAA=U1**2+V1**2
117 IF ( AAA .LE. SEAICE_EPS_SQ ) THEN
118 AAA=SEAICE_EPS
119 ELSE
120 AAA=SQRT(AAA)
121 ENDIF
122 C first ocean surface stress
123 DAIRN(I,J,bi,bj)=RHOAIR*OCEAN_drag
124 & *(2.70 _d 0+0.142 _d 0*AAA+0.0764 _d 0*AAA*AAA)
125 WINDX(I,J,bi,bj)=DAIRN(I,J,bi,bj)*(COSWIN*U1-SINWIN*V1)
126 WINDY(I,J,bi,bj)=DAIRN(I,J,bi,bj)*(SINWIN*U1+COSWIN*V1)
127
128 C now ice surface stress
129 DAIRN(I,J,bi,bj)=RHOAIR*(SEAICE_drag*AAA*AREA(I,J,1,bi,bj)
130 & +OCEAN_drag*(2.70 _d 0+0.142 _d 0*AAA
131 & +0.0764 _d 0*AAA*AAA)*(ONE-AREA(I,J,1,bi,bj)))
132 FORCEX(I,J,bi,bj)=DAIRN(I,J,bi,bj)*(COSWIN*U1-SINWIN*V1)
133 FORCEY(I,J,bi,bj)=DAIRN(I,J,bi,bj)*(SINWIN*U1+COSWIN*V1)
134 ENDDO
135 ENDDO
136 ENDDO
137 ENDDO
138
139 DO bj=myByLo(myThid),myByHi(myThid)
140 DO bi=myBxLo(myThid),myBxHi(myThid)
141 DO j=1,sNy
142 DO i=1,sNx
143 C-- NOW ADD IN TILT
144 FORCEX(I,J,bi,bj)=FORCEX(I,J,bi,bj)
145 & -COR_ICE(I,J,bi,bj)*GWATY(I,J,bi,bj)
146 FORCEY(I,J,bi,bj)=FORCEY(I,J,bi,bj)
147 & +COR_ICE(I,J,bi,bj)*GWATX(I,J,bi,bj)
148 C NOW KEEP FORCEX0
149 FORCEX0(I,J,bi,bj)=FORCEX(I,J,bi,bj)
150 FORCEY0(I,J,bi,bj)=FORCEY(I,J,bi,bj)
151 C-- NOW SET UP ICE PRESSURE AND VISCOSITIES
152 PRESS0(I,J,bi,bj)=PSTAR*HEFF(I,J,1,bi,bj)
153 & *EXP(-20.0 _d 0*(ONE-AREA(I,J,1,bi,bj)))
154 ZMAX(I,J,bi,bj)=(5.0 _d +12/(2.0 _d +04))*PRESS0(I,J,bi,bj)
155 ZMIN(I,J,bi,bj)=4.0 _d +08
156 PRESS0(I,J,bi,bj)=PRESS0(I,J,bi,bj)*HEFFM(I,J,bi,bj)
157 ENDDO
158 ENDDO
159 ENDDO
160 ENDDO
161
162 #ifdef SEAICE_ALLOW_DYNAMICS
163
164 IF ( SEAICEuseDYNAMICS ) THEN
165
166 #ifdef ALLOW_AUTODIFF_TAMC
167 CADJ STORE uice = comlev1, key=ikey_dynamics
168 CADJ STORE vice = comlev1, key=ikey_dynamics
169 #endif /* ALLOW_AUTODIFF_TAMC */
170
171 crg what about DWAIN,DRAGS,DRAGA,ETA,ZETA
172
173 crg later c$taf loop = iteration uice,vice
174
175 cdm c$taf store uice,vice = comlev1_seaice_ds,
176 cdm c$taf& key = kii + (ikey_dynamics-1)
177 C NOW DO PREDICTOR TIME STEP
178 DO bj=myByLo(myThid),myByHi(myThid)
179 DO bi=myBxLo(myThid),myBxHi(myThid)
180 DO j=1-OLy,sNy+OLy
181 DO i=1-OLx,sNx+OLx
182 UICE(I,J,2,bi,bj)=UICE(I,J,1,bi,bj)
183 VICE(I,J,2,bi,bj)=VICE(I,J,1,bi,bj)
184 UICEC(I,J,bi,bj)=UICE(I,J,1,bi,bj)
185 VICEC(I,J,bi,bj)=VICE(I,J,1,bi,bj)
186 ENDDO
187 ENDDO
188 ENDDO
189 ENDDO
190
191 DO bj=myByLo(myThid),myByHi(myThid)
192 DO bi=myBxLo(myThid),myBxHi(myThid)
193 DO j=1,sNy
194 DO i=1,sNx
195 C NOW EVALUATE STRAIN RATES
196 E11(I,J,bi,bj)=HALF/(DXTICE(I,J,bi,bj)*CSTICE(I,J,bi,bj))
197 & *(UICE(I+1,J+1,1,bi,bj)+UICE(I+1,J,1,bi,bj)
198 & -UICE(I,J+1,1,bi,bj)-UICE(I,J,1,bi,bj))
199 & -QUART*(VICE(I+1,J+1,1,bi,bj)+VICE(I,J+1,1,bi,bj)
200 & +VICE(I,J,1,bi,bj)+VICE(I+1,J,1,bi,bj))
201 & *TNGTICE(I,J,bi,bj)/RADIUS
202 E22(I,J,bi,bj)=HALF/DYTICE(I,J,bi,bj)
203 & *(VICE(I+1,J+1,1,bi,bj)+VICE(I,J+1,1,bi,bj)
204 & -VICE(I+1,J,1,bi,bj)-VICE(I,J,1,bi,bj))
205 E12(I,J,bi,bj)=HALF*(HALF/DYTICE(I,J,bi,bj)
206 & *(UICE(I+1,J+1,1,bi,bj)+UICE(I,J+1,1,bi,bj)
207 & -UICE(I+1,J,1,bi,bj)-UICE(I,J,1,bi,bj))
208 & +HALF/(DXTICE(I,J,bi,bj)*CSTICE(I,J,bi,bj))
209 & *(VICE(I+1,J+1,1,bi,bj)+VICE(I+1,J,1,bi,bj)
210 & -VICE(I,J+1,1,bi,bj)-VICE(I,J,1,bi,bj))
211 & +QUART*(UICE(I+1,J+1,1,bi,bj)+UICE(I,J+1,1,bi,bj)
212 & +UICE(I,J,1,bi,bj)+UICE(I+1,J,1,bi,bj))
213 & *TNGTICE(I,J,bi,bj)/RADIUS)
214 C NOW EVALUATE VISCOSITIES
215 DELT1=(E11(I,J,bi,bj)**2+E22(I,J,bi,bj)**2)*(ONE+ECM2)
216 & +4.0 _d 0*ECM2*E12(I,J,bi,bj)**2
217 1 +TWO*E11(I,J,bi,bj)*E22(I,J,bi,bj)*(ONE-ECM2)
218 IF ( DELT1 .LE. SEAICE_EPS_SQ ) THEN
219 DELT2=SEAICE_EPS
220 ELSE
221 DELT2=SQRT(DELT1)
222 ENDIF
223 ZETA(I,J,bi,bj)=HALF*PRESS0(I,J,bi,bj)/DELT2
224 C NOW PUT MIN AND MAX VISCOSITIES IN
225 ZETA(I,J,bi,bj)=MYMIN_R8(ZMAX(I,J,bi,bj),ZETA(I,J,bi,bj))
226 ZETA(I,J,bi,bj)=MYMAX_R8(ZMIN(I,J,bi,bj),ZETA(I,J,bi,bj))
227 C NOW SET VISCOSITIES TO ZERO AT HEFFMFLOW PTS
228 ZETA(I,J,bi,bj)=ZETA(I,J,bi,bj)*HEFFM(I,J,bi,bj)
229 ETA(I,J,bi,bj)=ECM2*ZETA(I,J,bi,bj)
230 PRESS(I,J,bi,bj)=TWO*ZETA(I,J,bi,bj)*DELT2
231 ENDDO
232 ENDDO
233 ENDDO
234 ENDDO
235
236 C-- Update overlap regions
237 _EXCH_XY_R8(ETA, myThid)
238 _EXCH_XY_R8(ZETA, myThid)
239 _EXCH_XY_R8(PRESS, myThid)
240
241 DO bj=myByLo(myThid),myByHi(myThid)
242 DO bi=myBxLo(myThid),myBxHi(myThid)
243 DO j=1,sNy
244 DO i=1,sNx
245 C NOW SET UP NON-LINEAR WATER DRAG, FORCEX, FORCEY
246 TEMPVAR=(UICE(I,J,1,bi,bj)-GWATX(I,J,bi,bj))**2
247 & +(VICE(I,J,1,bi,bj)-GWATY(I,J,bi,bj))**2
248 IF ( TEMPVAR .LE. (QUART/SEAICE_waterDrag)**2 ) THEN
249 DWATN(I,J,bi,bj)=QUART
250 ELSE
251 DWATN(I,J,bi,bj)=SEAICE_waterDrag*SQRT(TEMPVAR)
252 ENDIF
253 C NOW SET UP SYMMETTRIC DRAG
254 DRAGS(I,J,bi,bj)=DWATN(I,J,bi,bj)*COSWAT
255 C NOW SET UP ANTI SYMMETTRIC DRAG PLUS CORIOLIS
256 DRAGA(I,J,bi,bj)=DWATN(I,J,bi,bj)*SINWAT+COR_ICE(I,J,bi,bj)
257 C NOW ADD IN CURRENT FORCE
258 FORCEX(I,J,bi,bj)=FORCEX0(I,J,bi,bj)+DWATN(I,J,bi,bj)
259 & *(COSWAT*GWATX(I,J,bi,bj)
260 & -SINWAT*GWATY(I,J,bi,bj))
261 FORCEY(I,J,bi,bj)=FORCEY0(I,J,bi,bj)+DWATN(I,J,bi,bj)
262 & *(SINWAT*GWATX(I,J,bi,bj)
263 & +COSWAT*GWATY(I,J,bi,bj))
264 C NOW CALCULATE PRESSURE FORCE AND ADD TO EXTERNAL FORCE
265 FORCEX(I,J,bi,bj)=FORCEX(I,J,bi,bj)
266 & -(QUART/(DXUICE(I,J,bi,bj)*CSUICE(I,J,bi,bj)))
267 & *(PRESS(I,J,bi,bj)+PRESS(I,J-1,bi,bj)
268 & -PRESS(I-1,J,bi,bj)-PRESS(I-1,J-1,bi,bj))
269 FORCEY(I,J,bi,bj)=FORCEY(I,J,bi,bj)-QUART/DYUICE(I,J,bi,bj)
270 & *(PRESS(I,J,bi,bj)+PRESS(I-1,J,bi,bj)
271 & -PRESS(I,J-1,bi,bj)-PRESS(I-1,J-1,bi,bj))
272 ENDDO
273 ENDDO
274 ENDDO
275 ENDDO
276
277 C NOW LSR SCHEME (ZHANG-J/HIBLER 1997)
278 CADJ STORE uice = comlev1, key=ikey_dynamics
279 CADJ STORE vice = comlev1, key=ikey_dynamics
280 CALL LSR( 1, myThid )
281 CADJ STORE uice = comlev1, key=ikey_dynamics
282 CADJ STORE vice = comlev1, key=ikey_dynamics
283
284 C NOW DO MODIFIED EULER STEP
285 DO bj=myByLo(myThid),myByHi(myThid)
286 DO bi=myBxLo(myThid),myBxHi(myThid)
287 DO j=1-OLy,sNy+OLy
288 DO i=1-OLx,sNx+OLx
289 UICE(I,J,1,bi,bj)=HALF*(UICE(I,J,1,bi,bj)+UICE(I,J,2,bi,bj))
290 VICE(I,J,1,bi,bj)=HALF*(VICE(I,J,1,bi,bj)+VICE(I,J,2,bi,bj))
291 UICEC(I,J,bi,bj)=UICE(I,J,1,bi,bj)
292 VICEC(I,J,bi,bj)=VICE(I,J,1,bi,bj)
293 ENDDO
294 ENDDO
295 ENDDO
296 ENDDO
297
298 DO bj=myByLo(myThid),myByHi(myThid)
299 DO bi=myBxLo(myThid),myBxHi(myThid)
300 DO j=1,sNy
301 DO i=1,sNx
302 C NOW EVALUATE STRAIN RATES
303 E11(I,J,bi,bj)=HALF/(DXTICE(I,J,bi,bj)*CSTICE(I,J,bi,bj))
304 & *(UICE(I+1,J+1,1,bi,bj)+UICE(I+1,J,1,bi,bj)
305 & -UICE(I,J+1,1,bi,bj)-UICE(I,J,1,bi,bj))
306 & -QUART*(VICE(I+1,J+1,1,bi,bj)+VICE(I,J+1,1,bi,bj)
307 & +VICE(I,J,1,bi,bj)+VICE(I+1,J,1,bi,bj))
308 & *TNGTICE(I,J,bi,bj)/RADIUS
309 E22(I,J,bi,bj)=HALF/DYTICE(I,J,bi,bj)
310 & *(VICE(I+1,J+1,1,bi,bj)+VICE(I,J+1,1,bi,bj)
311 & -VICE(I+1,J,1,bi,bj)-VICE(I,J,1,bi,bj))
312 E12(I,J,bi,bj)=HALF*(HALF/DYTICE(I,J,bi,bj)
313 & *(UICE(I+1,J+1,1,bi,bj)+UICE(I,J+1,1,bi,bj)
314 & -UICE(I+1,J,1,bi,bj)-UICE(I,J,1,bi,bj))
315 & +HALF/(DXTICE(I,J,bi,bj)*CSTICE(I,J,bi,bj))
316 & *(VICE(I+1,J+1,1,bi,bj)+VICE(I+1,J,1,bi,bj)
317 & -VICE(I,J+1,1,bi,bj)-VICE(I,J,1,bi,bj))
318 & +QUART*(UICE(I+1,J+1,1,bi,bj)+UICE(I,J+1,1,bi,bj)
319 & +UICE(I,J,1,bi,bj)+UICE(I+1,J,1,bi,bj))
320 & *TNGTICE(I,J,bi,bj)/RADIUS)
321 C NOW EVALUATE VISCOSITIES
322 DELT1=(E11(I,J,bi,bj)**2+E22(I,J,bi,bj)**2)*(ONE+ECM2)
323 & +4. _d 0*ECM2*E12(I,J,bi,bj)**2
324 1 +TWO*E11(I,J,bi,bj)*E22(I,J,bi,bj)*(ONE-ECM2)
325 IF ( DELT1 .LE. SEAICE_EPS_SQ ) THEN
326 DELT2=SEAICE_EPS
327 ELSE
328 DELT2=SQRT(DELT1)
329 ENDIF
330 ZETA(I,J,bi,bj)=HALF*PRESS0(I,J,bi,bj)/DELT2
331 C NOW PUT MIN AND MAX VISCOSITIES IN
332 ZETA(I,J,bi,bj)=MYMIN_R8(ZMAX(I,J,bi,bj),ZETA(I,J,bi,bj))
333 ZETA(I,J,bi,bj)=MYMAX_R8(ZMIN(I,J,bi,bj),ZETA(I,J,bi,bj))
334 C NOW SET VISCOSITIES TO ZERO AT HEFFMFLOW PTS
335 ZETA(I,J,bi,bj)=ZETA(I,J,bi,bj)*HEFFM(I,J,bi,bj)
336 ETA(I,J,bi,bj)=ECM2*ZETA(I,J,bi,bj)
337 PRESS(I,J,bi,bj)=TWO*ZETA(I,J,bi,bj)*DELT2
338 ENDDO
339 ENDDO
340 ENDDO
341 ENDDO
342
343 C-- Update overlap regions
344 _EXCH_XY_R8(ETA, myThid)
345 _EXCH_XY_R8(ZETA, myThid)
346 _EXCH_XY_R8(PRESS, myThid)
347
348 DO bj=myByLo(myThid),myByHi(myThid)
349 DO bi=myBxLo(myThid),myBxHi(myThid)
350 DO j=1,sNy
351 DO i=1,sNx
352 C NOW SET UP NON-LINEAR WATER DRAG, FORCEX, FORCEY
353 TEMPVAR=(UICE(I,J,1,bi,bj)-GWATX(I,J,bi,bj))**2
354 & +(VICE(I,J,1,bi,bj)-GWATY(I,J,bi,bj))**2
355 IF ( TEMPVAR .LE. (QUART/SEAICE_waterDrag)**2 ) THEN
356 DWATN(I,J,bi,bj)=QUART
357 ELSE
358 DWATN(I,J,bi,bj)=SEAICE_waterDrag*SQRT(TEMPVAR)
359 ENDIF
360 C NOW SET UP SYMMETTRIC DRAG
361 DRAGS(I,J,bi,bj)=DWATN(I,J,bi,bj)*COSWAT
362 C NOW SET UP ANTI SYMMETTRIC DRAG PLUS CORIOLIS
363 DRAGA(I,J,bi,bj)=DWATN(I,J,bi,bj)*SINWAT+COR_ICE(I,J,bi,bj)
364 C NOW ADD IN CURRENT FORCE
365 FORCEX(I,J,bi,bj)=FORCEX0(I,J,bi,bj)+DWATN(I,J,bi,bj)
366 & *(COSWAT*GWATX(I,J,bi,bj)
367 & -SINWAT*GWATY(I,J,bi,bj))
368 FORCEY(I,J,bi,bj)=FORCEY0(I,J,bi,bj)+DWATN(I,J,bi,bj)
369 & *(SINWAT*GWATX(I,J,bi,bj)
370 & +COSWAT*GWATY(I,J,bi,bj))
371 C NOW CALCULATE PRESSURE FORCE AND ADD TO EXTERNAL FORCE
372 FORCEX(I,J,bi,bj)=FORCEX(I,J,bi,bj)
373 & -(QUART/(DXUICE(I,J,bi,bj)*CSUICE(I,J,bi,bj)))
374 & *(PRESS(I,J,bi,bj)+PRESS(I,J-1,bi,bj)
375 & -PRESS(I-1,J,bi,bj)-PRESS(I-1,J-1,bi,bj))
376 FORCEY(I,J,bi,bj)=FORCEY(I,J,bi,bj)-QUART/DYUICE(I,J,bi,bj)
377 & *(PRESS(I,J,bi,bj)+PRESS(I-1,J,bi,bj)
378 & -PRESS(I,J-1,bi,bj)-PRESS(I-1,J-1,bi,bj))
379 ENDDO
380 ENDDO
381 ENDDO
382 ENDDO
383
384 C NOW LSR SCHEME (ZHANG-J/HIBLER 1997)
385 CALL LSR( 2, myThid )
386
387 cdm c$taf store uice,vice = comlev1, key=ikey_dynamics
388
389 ENDIF
390 #endif /* SEAICE_ALLOW_DYNAMICS */
391
392 C Calculate ocean surface stress
393 CALL OSTRES ( DWATN, COR_ICE, myThid )
394
395 #ifdef SEAICE_ALLOW_DYNAMICS
396
397 IF ( SEAICEuseDYNAMICS ) THEN
398
399 #ifdef ALLOW_AUTODIFF_TAMC
400 CADJ STORE uice = comlev1, key=ikey_dynamics
401 CADJ STORE vice = comlev1, key=ikey_dynamics
402 #endif /* ALLOW_AUTODIFF_TAMC */
403 c Put a cap on ice velocity
404 c limit velocity to 0.40 m s-1 to avoid potential CFL violations
405 c in open water areas (drift of zero thickness ice)
406 DO bj=myByLo(myThid),myByHi(myThid)
407 DO bi=myBxLo(myThid),myBxHi(myThid)
408 DO j=1-OLy,sNy+OLy
409 DO i=1-OLx,sNx+OLx
410 #ifdef SEAICE_DEBUG
411 c write(*,'(2i4,2i2,f7.1,7f12.3)')
412 c & i,j,bi,bj,UVM(I,J,bi,bj),amass(i,j,bi,bj)
413 c & ,gwatx(I,J,bi,bj),gwaty(i,j,bi,bj)
414 c & ,forcex(I,J,bi,bj),forcey(i,j,bi,bj)
415 c & ,uice(i,j,1,bi,bj)
416 c & ,vice(i,j,1,bi,bj)
417 #endif /* SEAICE_DEBUG */
418 UICE(i,j,1,bi,bj)=mymin_R8(UICE(i,j,1,bi,bj),0.40 _d +00)
419 VICE(i,j,1,bi,bj)=mymin_R8(VICE(i,j,1,bi,bj),0.40 _d +00)
420 ENDDO
421 ENDDO
422 ENDDO
423 ENDDO
424 #ifdef ALLOW_AUTODIFF_TAMC
425 CADJ STORE uice = comlev1, key=ikey_dynamics
426 CADJ STORE vice = comlev1, key=ikey_dynamics
427 #endif /* ALLOW_AUTODIFF_TAMC */
428 DO bj=myByLo(myThid),myByHi(myThid)
429 DO bi=myBxLo(myThid),myBxHi(myThid)
430 DO j=1-OLy,sNy+OLy
431 DO i=1-OLx,sNx+OLx
432 UICE(i,j,1,bi,bj)=mymax_R8(UICE(i,j,1,bi,bj),-0.40 _d +00)
433 VICE(i,j,1,bi,bj)=mymax_R8(VICE(i,j,1,bi,bj),-0.40 _d +00)
434 ENDDO
435 ENDDO
436 ENDDO
437 ENDDO
438
439 ENDIF
440 #endif /* SEAICE_ALLOW_DYNAMICS */
441
442 #endif /* ALLOW_SEAICE */
443
444 RETURN
445 END

  ViewVC Help
Powered by ViewVC 1.1.22