/[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.9 - (show annotations) (download)
Fri Oct 26 15:07:52 2012 UTC (12 years, 9 months ago) by torge
Branch: MAIN
Changes since 1.8: +6 -5 lines
incorporating Jean-Michel's updates in files on main branch

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

  ViewVC Help
Powered by ViewVC 1.1.22