/[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.7 - (show annotations) (download)
Mon Oct 22 16:02:25 2012 UTC (12 years, 9 months ago) by torge
Branch: MAIN
Changes since 1.6: +42 -22 lines
seaice_model and seaice_growth adjusted to deliver runtime output for 1D_ocean_ice_column;
this version of seaice_growth finally works,
though it is particularly designed for the case nITD=1 and #undef SEAICE_MULTICATEGORY,
then running the 1D verification experiment over 365 deays with
1) #undef SEAICE_ITD and
2) #define SEAICE_ITD
results in no difference for AREA and HEFF

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

  ViewVC Help
Powered by ViewVC 1.1.22