/[MITgcm]/MITgcm_contrib/torge/itd/code/seaice_model.F
ViewVC logotype

Contents of /MITgcm_contrib/torge/itd/code/seaice_model.F

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


Revision 1.6 - (show annotations) (download)
Wed Sep 26 17:50:17 2012 UTC (12 years, 10 months ago) by torge
Branch: MAIN
Changes since 1.5: +64 -24 lines
preliminary code with lots of output to standard out;
seaice_growth is not working in this version!!!

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_model.F,v 1.100 2012/03/02 18:56:06 heimbach Exp $
2 C $Name: $
3
4 #include "SEAICE_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: SEAICE_MODEL
8
9 C !INTERFACE: ==========================================================
10 SUBROUTINE SEAICE_MODEL( myTime, myIter, myThid )
11
12 C !DESCRIPTION: \bv
13 C *===========================================================*
14 C | SUBROUTINE SEAICE_MODEL |
15 C | o Time stepping of a dynamic/thermodynamic sea ice model. |
16 C | Dynamics solver: Zhang/Hibler, JGR, 102, 8691-8702, 1997 |
17 C | Thermodynamics: Hibler, MWR, 108, 1943-1973, 1980 |
18 C | Rheology: Hibler, JPO, 9, 815- 846, 1979 |
19 C | Snow: Zhang et al. , JPO, 28, 191- 217, 1998 |
20 C | Parallel forward ice model written by Jinlun Zhang PSC/UW|
21 C | & coupled into MITgcm by Dimitris Menemenlis (JPL) 2/2001|
22 C | zhang@apl.washington.edu / menemenlis@jpl.nasa.gov |
23 C *===========================================================*
24 C *===========================================================*
25 IMPLICIT NONE
26 C \ev
27
28 C !USES: ===============================================================
29 #include "SIZE.h"
30 #include "EEPARAMS.h"
31 #include "DYNVARS.h"
32 #include "PARAMS.h"
33 #include "GRID.h"
34 #include "FFIELDS.h"
35 #include "SEAICE_SIZE.h"
36 #include "SEAICE_PARAMS.h"
37 #include "SEAICE.h"
38 #include "SEAICE_TRACER.h"
39 #ifdef ALLOW_EXF
40 # include "EXF_OPTIONS.h"
41 # include "EXF_FIELDS.h"
42 #endif
43 #ifdef ALLOW_AUTODIFF_TAMC
44 # include "tamc.h"
45 #endif
46
47 C !INPUT PARAMETERS: ===================================================
48 C myTime - Simulation time
49 C myIter - Simulation timestep number
50 C myThid - Thread no. that called this routine.
51 _RL myTime
52 INTEGER myIter
53 INTEGER myThid
54 CEndOfInterface
55
56 C !LOCAL VARIABLES: ====================================================
57 C i,j,bi,bj :: Loop counters
58 CToM<<<
59 C msgBuf :: Informational/error message buffer
60 CHARACTER*(MAX_LEN_MBUF) msgBuf
61 CHARACTER*10 HlimitMsgFormat
62 C#if defined(SEAICE_GROWTH_LEGACY) || defined(ALLOW_AUTODIFF_TAMC)
63 #if defined(SEAICE_GROWTH_LEGACY) || defined(ALLOW_AUTODIFF_TAMC) || defined(SEAICE_ITD)
64 C>>>ToM
65 INTEGER i, j, bi, bj
66 #endif
67 #ifdef ALLOW_SITRACER
68 INTEGER iTr
69 #endif
70 CEOP
71
72 #ifdef ALLOW_DEBUG
73 IF (debugMode) CALL DEBUG_ENTER( 'SEAICE_MODEL', myThid )
74 #endif
75
76 C-- Winds are from pkg/exf, which does not update edges.
77 CALL EXCH_UV_AGRID_3D_RL( uwind, vwind, .TRUE., 1, myThid )
78
79 #ifdef ALLOW_THSICE
80 IF ( useThSice ) THEN
81 C-- Map thSice-variables to HEFF and AREA
82 CALL SEAICE_MAP_THSICE( myTime, myIter, myThid )
83 ENDIF
84 #endif /* ALLOW_THSICE */
85
86 #ifdef SEAICE_GROWTH_LEGACY
87 IF ( .NOT.useThSice ) THEN
88 #ifdef ALLOW_AUTODIFF_TAMC
89 CADJ STORE heff = comlev1, key=ikey_dynamics, kind=isbyte
90 CADJ STORE heffm = comlev1, key=ikey_dynamics, kind=isbyte
91 CADJ STORE area = comlev1, key=ikey_dynamics, kind=isbyte
92 CADJ STORE hsnow = comlev1, key=ikey_dynamics, kind=isbyte
93 CADJ STORE tice = comlev1, key=ikey_dynamics, kind=isbyte
94 #ifdef SEAICE_VARIABLE_SALINITY
95 CADJ STORE hsalt = comlev1, key=ikey_dynamics, kind=isbyte
96 #endif
97 #endif
98 DO bj=myByLo(myThid),myByHi(myThid)
99 DO bi=myBxLo(myThid),myBxHi(myThid)
100 DO j=1-OLy,sNy+OLy
101 DO i=1-OLx,sNx+OLx
102 IF ( (heff(i,j,bi,bj).EQ.0.)
103 & .OR.(area(i,j,bi,bj).EQ.0.)
104 & ) THEN
105 HEFF(i,j,bi,bj) = 0. _d 0
106 AREA(i,j,bi,bj) = 0. _d 0
107 HSNOW(i,j,bi,bj) = 0. _d 0
108 TICE(i,j,bi,bj) = celsius2K
109 #ifdef SEAICE_VARIABLE_SALINITY
110 HSALT(i,j,bi,bj) = 0. _d 0
111 #endif
112 ENDIF
113 ENDDO
114 ENDDO
115 ENDDO
116 ENDDO
117 ENDIF
118 #endif
119
120 #ifdef ALLOW_AUTODIFF_TAMC
121 DO bj=myByLo(myThid),myByHi(myThid)
122 DO bi=myBxLo(myThid),myBxHi(myThid)
123 DO j=1-OLy,sNy+OLy
124 DO i=1-OLx,sNx+OLx
125 # ifdef SEAICE_GROWTH_LEGACY
126 areaNm1(i,j,bi,bj) = 0. _d 0
127 hEffNm1(i,j,bi,bj) = 0. _d 0
128 # endif
129 uIceNm1(i,j,bi,bj) = 0. _d 0
130 vIceNm1(i,j,bi,bj) = 0. _d 0
131 # ifdef ALLOW_SITRACER
132 DO iTr = 1, SItrMaxNum
133 SItrBucket(i,j,bi,bj,iTr) = 0. _d 0
134 ENDDO
135 # endif
136 ENDDO
137 ENDDO
138 ENDDO
139 ENDDO
140 CADJ STORE uwind = comlev1, key=ikey_dynamics, kind=isbyte
141 CADJ STORE vwind = comlev1, key=ikey_dynamics, kind=isbyte
142 CADJ STORE heff = comlev1, key=ikey_dynamics, kind=isbyte
143 CADJ STORE heffm = comlev1, key=ikey_dynamics, kind=isbyte
144 CADJ STORE area = comlev1, key=ikey_dynamics, kind=isbyte
145 # ifdef SEAICE_ALLOW_DYNAMICS
146 # ifdef SEAICE_CGRID
147 CADJ STORE seaicemasku = comlev1, key=ikey_dynamics, kind=isbyte
148 CADJ STORE seaicemaskv = comlev1, key=ikey_dynamics, kind=isbyte
149 CADJ STORE fu = comlev1, key=ikey_dynamics, kind=isbyte
150 CADJ STORE fv = comlev1, key=ikey_dynamics, kind=isbyte
151 CADJ STORE uice = comlev1, key=ikey_dynamics, kind=isbyte
152 CADJ STORE vice = comlev1, key=ikey_dynamics, kind=isbyte
153 cphCADJ STORE eta = comlev1, key=ikey_dynamics, kind=isbyte
154 cphCADJ STORE zeta = comlev1, key=ikey_dynamics, kind=isbyte
155 cph(
156 CADJ STORE dwatn = comlev1, key=ikey_dynamics, kind=isbyte
157 cccCADJ STORE press0 = comlev1, key=ikey_dynamics, kind=isbyte
158 cccCADJ STORE taux = comlev1, key=ikey_dynamics, kind=isbyte
159 cccCADJ STORE tauy = comlev1, key=ikey_dynamics, kind=isbyte
160 cccCADJ STORE zmax = comlev1, key=ikey_dynamics, kind=isbyte
161 cccCADJ STORE zmin = comlev1, key=ikey_dynamics, kind=isbyte
162 cph)
163 # ifdef SEAICE_ALLOW_EVP
164 CADJ STORE seaice_sigma1 = comlev1, key=ikey_dynamics, kind=isbyte
165 CADJ STORE seaice_sigma2 = comlev1, key=ikey_dynamics, kind=isbyte
166 CADJ STORE seaice_sigma12 = comlev1, key=ikey_dynamics, kind=isbyte
167 # endif
168 # endif
169 # endif
170 # ifdef ALLOW_SITRACER
171 CADJ STORE siceload = comlev1, key=ikey_dynamics, kind=isbyte
172 CADJ STORE sitracer = comlev1, key=ikey_dynamics, kind=isbyte
173 # endif
174 #endif /* ALLOW_AUTODIFF_TAMC */
175
176 C solve ice momentum equations and calculate ocean surface stress
177 #ifdef ALLOW_DEBUG
178 IF (debugMode) CALL DEBUG_CALL( 'SEAICE_DYNSOLVER', myThid )
179 #endif
180 #ifdef SEAICE_CGRID
181 CALL TIMER_START('SEAICE_DYNSOLVER [SEAICE_MODEL]',myThid)
182 CALL SEAICE_DYNSOLVER ( myTime, myIter, myThid )
183 CALL TIMER_STOP ('SEAICE_DYNSOLVER [SEAICE_MODEL]',myThid)
184 #else
185 CALL TIMER_START('DYNSOLVER [SEAICE_MODEL]',myThid)
186 CALL DYNSOLVER ( myTime, myIter, myThid )
187 CALL TIMER_STOP ('DYNSOLVER [SEAICE_MODEL]',myThid)
188 #endif /* SEAICE_CGRID */
189
190 C-- Apply ice velocity open boundary conditions
191 #ifdef ALLOW_OBCS
192 # ifndef DISABLE_SEAICE_OBCS
193 IF ( useOBCS ) CALL OBCS_ADJUST_UVICE( uice, vice, myThid )
194 # endif /* DISABLE_SEAICE_OBCS */
195 #endif /* ALLOW_OBCS */
196
197 #ifdef ALLOW_THSICE
198 IF ( .NOT.useThSice ) THEN
199 #endif
200 C-- Only call advection of heff, area, snow, and salt and
201 C-- growth for the generic 0-layer thermodynamics of seaice
202 C-- if useThSice=.false., otherwise the 3-layer Winton thermodynamics
203 C-- (called from DO_OCEANIC_PHYSICS) take care of this
204
205 C NOW DO ADVECTION and DIFFUSION
206 IF ( SEAICEadvHeff .OR. SEAICEadvArea .OR. SEAICEadvSnow
207 & .OR. SEAICEadvSalt ) THEN
208 CToM<<<
209 #ifdef SEAICE_ITD
210 C ToM: generate some test output
211 WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)'
212 DO bj=myByLo(myThid),myByHi(myThid)
213 DO bi=myBxLo(myThid),myBxHi(myThid)
214 c DO j=1-OLy,sNy+OLy
215 c DO i=1-OLx,sNx+OLx
216 ccc WRITE(msgBuf,HlimitMsgFormat)
217 WRITE(msgBuf,'(A,F6.2,x,F6.2)')
218 & ' SEAICE_MODEL: AREA and HEFF before advection: ',
219 & AREA(20,20,bi,bj), HEFF(20,20,bi,bj)
220 c & ' SEAICE_MODEL: AREA and HEFF/AREA before advection: ',
221 c & AREA(20,20,bi,bj), HEFF(20,20,bi,bj)/AREA(20,20,bi,bj)
222 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
223 & SQUEEZE_RIGHT , myThid)
224 WRITE(msgBuf,HlimitMsgFormat)
225 & ' SEAICE_MODEL: HEFFITD before advection: ',
226 & HEFFITD(20,20,:,bi,bj)
227 c & ' SEAICE_MODEL: HEFFITD/AREAITD before advection: ',
228 c & HEFFITD(20,20,:,bi,bj) / AREAITD(20,20,:,bi,bj)
229 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
230 & SQUEEZE_RIGHT , myThid)
231 WRITE(msgBuf,HlimitMsgFormat)
232 & ' SEAICE_MODEL: AREAITD before advection: ',
233 & AREAITD(20,20,:,bi,bj)
234 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
235 & SQUEEZE_RIGHT , myThid)
236 c ENDDO
237 c ENDDO
238 ENDDO
239 ENDDO
240 #endif
241 C>>>ToM
242 #ifdef ALLOW_DEBUG
243 IF (debugMode) CALL DEBUG_CALL( 'SEAICE_ADVDIFF', myThid )
244 #endif
245 CALL SEAICE_ADVDIFF( myTime, myIter, myThid )
246 CToM<<<
247 #ifdef SEAICE_ITD
248 C ToM: generate some test output
249 WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)'
250 DO bj=myByLo(myThid),myByHi(myThid)
251 DO bi=myBxLo(myThid),myBxHi(myThid)
252 WRITE(msgBuf,HlimitMsgFormat)
253 & ' SEAICE_MODEL: HEFFITD after advection: ',
254 & HEFFITD(20,20,:,bi,bj)
255 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
256 & SQUEEZE_RIGHT , myThid)
257 WRITE(msgBuf,HlimitMsgFormat)
258 & ' SEAICE_MODEL: AREAITD after advection: ',
259 & AREAITD(20,20,:,bi,bj)
260 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
261 & SQUEEZE_RIGHT , myThid)
262 WRITE(msgBuf,'(A)')
263 & ' --------------------------------------------- '
264 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
265 & SQUEEZE_RIGHT , myThid)
266 ENDDO
267 ENDDO
268 C
269 C check that all ice thickness categories meet their limits
270 C (includes Hibler-type ridging)
271 #ifdef ALLOW_DEBUG
272 IF (debugMode) CALL DEBUG_CALL( 'SEAICE_ITD_REDIST', myThid )
273 #endif
274 DO bj=myByLo(myThid),myByHi(myThid)
275 DO bi=myBxLo(myThid),myBxHi(myThid)
276 CALL SEAICE_ITD_REDIST(bi, bj, myTime, myIter, myThid)
277 ENDDO
278 ENDDO
279 C update mean ice thickness HEFF and total ice concentration AREA
280 C to match single category values
281 #ifdef ALLOW_DEBUG
282 IF (debugMode) CALL DEBUG_CALL( 'SEAICE_ITD_SUM', myThid )
283 #endif
284 DO bj=myByLo(myThid),myByHi(myThid)
285 DO bi=myBxLo(myThid),myBxHi(myThid)
286 CALL SEAICE_ITD_SUM(bi, bj, myTime, myIter, myThid)
287 ENDDO
288 ENDDO
289 #endif
290 C>>>ToM
291 #ifdef SEAICE_GROWTH_LEGACY
292 ELSE
293 DO bj=myByLo(myThid),myByHi(myThid)
294 DO bi=myBxLo(myThid),myBxHi(myThid)
295 DO j=1-OLy,sNy+OLy
296 DO i=1-OLx,sNx+OLx
297 areaNm1(i,j,bi,bj) = AREA(i,j,bi,bj)
298 hEffNm1(i,j,bi,bj) = HEFF(i,j,bi,bj)
299 ENDDO
300 ENDDO
301 ENDDO
302 ENDDO
303 #endif /* SEAICE_GROWTH_LEGACY */
304 ENDIF
305 #ifdef ALLOW_AUTODIFF_TAMC
306 CADJ STORE heffm = comlev1, key=ikey_dynamics, kind=isbyte
307 #endif /* ALLOW_AUTODIFF_TAMC */
308
309 #ifdef SEAICE_ITD
310 C ToM: generate some test output
311 WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)'
312 DO bj=myByLo(myThid),myByHi(myThid)
313 DO bi=myBxLo(myThid),myBxHi(myThid)
314 WRITE(msgBuf,HlimitMsgFormat)
315 & ' SEAICE_MODEL: HEFFITD before growth: ',
316 & HEFFITD(20,20,:,bi,bj)
317 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
318 & SQUEEZE_RIGHT , myThid)
319 WRITE(msgBuf,HlimitMsgFormat)
320 & ' SEAICE_MODEL: AREAITD before growth: ',
321 & AREAITD(20,20,:,bi,bj)
322 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
323 & SQUEEZE_RIGHT , myThid)
324 WRITE(msgBuf,HlimitMsgFormat)
325 & ' SEAICE_MODEL: HSNOWITD before growth: ',
326 & HSNOWITD(20,20,:,bi,bj)
327 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
328 & SQUEEZE_RIGHT , myThid)
329 ENDDO
330 ENDDO
331 #endif
332
333 #ifndef DISABLE_SEAICE_GROWTH
334 C thermodynamics growth
335 C must call growth after calling advection
336 C because of ugly time level business
337 IF ( usePW79thermodynamics ) THEN
338 #ifdef ALLOW_DEBUG
339 IF (debugMode) CALL DEBUG_CALL( 'SEAICE_GROWTH', myThid )
340 #endif
341 CALL SEAICE_GROWTH( myTime, myIter, myThid )
342 CToM<<<
343 #ifdef SEAICE_ITD
344 C ToM: generate some test output
345 WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)'
346 DO bj=myByLo(myThid),myByHi(myThid)
347 DO bi=myBxLo(myThid),myBxHi(myThid)
348 WRITE(msgBuf,HlimitMsgFormat)
349 & ' SEAICE_MODEL: HEFFITD after growth: ',
350 & HEFFITD(20,20,:,bi,bj)
351 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
352 & SQUEEZE_RIGHT , myThid)
353 WRITE(msgBuf,HlimitMsgFormat)
354 & ' SEAICE_MODEL: AREAITD after growth: ',
355 & AREAITD(20,20,:,bi,bj)
356 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
357 & SQUEEZE_RIGHT , myThid)
358 WRITE(msgBuf,HlimitMsgFormat)
359 & ' SEAICE_MODEL: HSNOWITD after growth: ',
360 & HSNOWITD(20,20,:,bi,bj)
361 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
362 & SQUEEZE_RIGHT , myThid)
363 WRITE(msgBuf,'(A)')
364 & ' --------------------------------------------- '
365 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
366 & SQUEEZE_RIGHT , myThid)
367 ENDDO
368 ENDDO
369 C
370 C redistribute sea ice into proper sea ice category after growth/melt
371 C in case model runs with ice thickness distribution
372 C---+-|--1----+----2----+----3----+----4----+----5----+----6----+----7-|
373 #ifdef ALLOW_DEBUG
374 IF (debugMode) CALL DEBUG_CALL( 'SEAICE_ITD_REDIST', myThid )
375 #endif
376 DO bj=myByLo(myThid),myByHi(myThid)
377 DO bi=myBxLo(myThid),myBxHi(myThid)
378 CALL SEAICE_ITD_REDIST(bi, bj, myTime, myIter, myThid)
379 ENDDO
380 ENDDO
381 C store the mean ice thickness in HEFF (for dynamic solver and diagnostics)
382 DO bj=myByLo(myThid),myByHi(myThid)
383 DO bi=myBxLo(myThid),myBxHi(myThid)
384 CALL SEAICE_ITD_SUM(bi, bj, myTime, myIter, myThid)
385 ENDDO
386 ENDDO
387
388 C ToM: generate some test output
389 WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)'
390 DO bj=myByLo(myThid),myByHi(myThid)
391 DO bi=myBxLo(myThid),myBxHi(myThid)
392 WRITE(msgBuf,HlimitMsgFormat)
393 & ' SEAICE_MODEL: HEFFITD after final sorting: ',
394 & HEFFITD(20,20,:,bi,bj)
395 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
396 & SQUEEZE_RIGHT , myThid)
397 WRITE(msgBuf,HlimitMsgFormat)
398 & ' SEAICE_MODEL: AREAITD after final sorting: ',
399 & AREAITD(20,20,:,bi,bj)
400 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
401 & SQUEEZE_RIGHT , myThid)
402 WRITE(msgBuf,HlimitMsgFormat)
403 & ' SEAICE_MODEL: HSNOWITD after final sorting: ',
404 & HSNOWITD(20,20,:,bi,bj)
405 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
406 & SQUEEZE_RIGHT , myThid)
407 WRITE(msgBuf,'(A)')
408 & ' ============================================= '
409 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
410 & SQUEEZE_RIGHT , myThid)
411 ENDDO
412 ENDDO
413 #endif
414 C
415 C>>>ToM
416 ENDIF
417 #endif /* DISABLE_SEAICE_GROWTH */
418
419 #ifdef ALLOW_SITRACER
420 # ifdef ALLOW_AUTODIFF_TAMC
421 CADJ STORE sitracer = comlev1, key=ikey_dynamics, kind=isbyte
422 # endif
423 CALL SEAICE_TRACER_PHYS ( myTime, myIter, myThid )
424 #endif
425
426 C-- Apply ice tracer open boundary conditions
427 #ifdef ALLOW_OBCS
428 # ifndef DISABLE_SEAICE_OBCS
429 IF ( useOBCS ) CALL OBCS_APPLY_SEAICE( myThid )
430 # endif /* DISABLE_SEAICE_OBCS */
431 #endif /* ALLOW_OBCS */
432
433 C-- Update overlap regions for a bunch of stuff
434 _EXCH_XY_RL( HEFF, myThid )
435 _EXCH_XY_RL( AREA, myThid )
436 _EXCH_XY_RL( HSNOW, myThid )
437 #ifdef SEAICE_VARIABLE_SALINITY
438 _EXCH_XY_RL( HSALT, myThid )
439 #endif
440 #ifdef ALLOW_SITRACER
441 DO iTr = 1, SItrNumInUse
442 _EXCH_XY_RL( SItracer(1-OLx,1-OLy,1,1,iTr),myThid )
443 ENDDO
444 #endif
445 _EXCH_XY_RS(EmPmR, myThid )
446 _EXCH_XY_RS(saltFlux, myThid )
447 _EXCH_XY_RS(Qnet , myThid )
448 #ifdef SHORTWAVE_HEATING
449 _EXCH_XY_RS(Qsw , myThid )
450 #endif /* SHORTWAVE_HEATING */
451 #ifdef ATMOSPHERIC_LOADING
452 IF ( useRealFreshWaterFlux )
453 & _EXCH_XY_RS( sIceLoad, myThid )
454 #endif
455
456 #ifdef ALLOW_OBCS
457 C-- In case we use scheme with a large stencil that extends into overlap:
458 C no longer needed with the right masking in advection & diffusion S/R.
459 c IF ( useOBCS ) THEN
460 c DO bj=myByLo(myThid),myByHi(myThid)
461 c DO bi=myBxLo(myThid),myBxHi(myThid)
462 c CALL OBCS_COPY_TRACER( HEFF(1-OLx,1-OLy,bi,bj),
463 c I 1, bi, bj, myThid )
464 c CALL OBCS_COPY_TRACER( AREA(1-OLx,1-OLy,bi,bj),
465 c I 1, bi, bj, myThid )
466 c CALL OBCS_COPY_TRACER( HSNOW(1-OLx,1-OLy,bi,bj),
467 c I 1, bi, bj, myThid )
468 #ifdef SEAICE_VARIABLE_SALINITY
469 c CALL OBCS_COPY_TRACER( HSALT(1-OLx,1-OLy,bi,bj),
470 c I 1, bi, bj, myThid )
471 #endif
472 c ENDDO
473 c ENDDO
474 c ENDIF
475 #endif /* ALLOW_OBCS */
476
477 #ifdef ALLOW_DIAGNOSTICS
478 IF ( useDiagnostics ) THEN
479 C diagnostics for "non-state variables" that are modified by
480 C the seaice model
481 # ifdef ALLOW_EXF
482 CALL DIAGNOSTICS_FILL(UWIND ,'SIuwind ',0,1 ,0,1,1,myThid)
483 CALL DIAGNOSTICS_FILL(VWIND ,'SIvwind ',0,1 ,0,1,1,myThid)
484 # endif
485 CALL DIAGNOSTICS_FILL_RS(FU ,'SIfu ',0,1 ,0,1,1,myThid)
486 CALL DIAGNOSTICS_FILL_RS(FV ,'SIfv ',0,1 ,0,1,1,myThid)
487 CALL DIAGNOSTICS_FILL_RS(EmPmR,'SIempmr ',0,1 ,0,1,1,myThid)
488 CALL DIAGNOSTICS_FILL_RS(Qnet ,'SIqnet ',0,1 ,0,1,1,myThid)
489 CALL DIAGNOSTICS_FILL_RS(Qsw ,'SIqsw ',0,1 ,0,1,1,myThid)
490 #ifdef SEAICE_ITD
491 CALL DIAGNOSTICS_FILL(HEFFITD ,'SIheffN ',0,nITD,0,1,1,myThid)
492 CALL DIAGNOSTICS_FILL(AREAITD ,'SIareaN ',0,nITD,0,1,1,myThid)
493 #endif
494 ENDIF
495 #endif /* ALLOW_DIAGNOSTICS */
496
497 #ifdef ALLOW_THSICE
498 C endif .not.useThSice
499 ENDIF
500 #endif /* ALLOW_THSICE */
501 CML This has already been done in seaice_ocean_stress/ostres, so why repeat?
502 CML CALL EXCH_UV_XY_RS(fu,fv,.TRUE.,myThid)
503
504 #ifdef ALLOW_EXF
505 # ifdef ALLOW_AUTODIFF_TAMC
506 # if (defined (ALLOW_AUTODIFF_MONITOR))
507 CALL EXF_ADJOINT_SNAPSHOTS( 3, myTime, myIter, myThid )
508 # endif
509 # endif
510 #endif
511
512 #ifdef ALLOW_DEBUG
513 IF (debugMode) CALL DEBUG_LEAVE( 'SEAICE_MODEL', myThid )
514 #endif
515
516 RETURN
517 END

  ViewVC Help
Powered by ViewVC 1.1.22