/[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.8 - (show annotations) (download)
Mon Oct 22 16:36:45 2012 UTC (12 years, 9 months ago) by torge
Branch: MAIN
Changes since 1.7: +12 -5 lines
wrap all msgBuf write statements in SEAICE_DEBUG preprocessor option;
in seaice_model: add a constant divergence rate to mimic dynamics for the 1D verification experiment (not a permanent change)

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

  ViewVC Help
Powered by ViewVC 1.1.22