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

Annotation 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 - (hide 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 dimitri 1.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 dimitri 1.2 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 dimitri 1.1 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 dimitri 1.2 CToM<<<
209     #ifdef SEAICE_ITD
210 torge 1.6 C ToM: generate some test output
211 dimitri 1.2 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 torge 1.6 & ' 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 dimitri 1.2 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
223     & SQUEEZE_RIGHT , myThid)
224     WRITE(msgBuf,HlimitMsgFormat)
225 torge 1.6 & ' 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 dimitri 1.2 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
230     & SQUEEZE_RIGHT , myThid)
231     WRITE(msgBuf,HlimitMsgFormat)
232 torge 1.6 & ' SEAICE_MODEL: AREAITD before advection: ',
233 dimitri 1.2 & 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 dimitri 1.1 #ifdef ALLOW_DEBUG
243     IF (debugMode) CALL DEBUG_CALL( 'SEAICE_ADVDIFF', myThid )
244     #endif
245     CALL SEAICE_ADVDIFF( myTime, myIter, myThid )
246 dimitri 1.2 CToM<<<
247     #ifdef SEAICE_ITD
248 torge 1.6 C ToM: generate some test output
249 dimitri 1.2 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 torge 1.6 & ' SEAICE_MODEL: HEFFITD after advection: ',
254     & HEFFITD(20,20,:,bi,bj)
255 dimitri 1.2 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
256     & SQUEEZE_RIGHT , myThid)
257     WRITE(msgBuf,HlimitMsgFormat)
258 torge 1.6 & ' SEAICE_MODEL: AREAITD after advection: ',
259 dimitri 1.2 & AREAITD(20,20,:,bi,bj)
260     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
261     & SQUEEZE_RIGHT , myThid)
262 torge 1.6 WRITE(msgBuf,'(A)')
263     & ' --------------------------------------------- '
264     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
265     & SQUEEZE_RIGHT , myThid)
266 dimitri 1.2 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 torge 1.5 DO bj=myByLo(myThid),myByHi(myThid)
275     DO bi=myBxLo(myThid),myBxHi(myThid)
276 torge 1.6 CALL SEAICE_ITD_REDIST(bi, bj, myTime, myIter, myThid)
277 torge 1.5 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 torge 1.6 CALL SEAICE_ITD_SUM(bi, bj, myTime, myIter, myThid)
287 torge 1.5 ENDDO
288     ENDDO
289 dimitri 1.2 #endif
290     C>>>ToM
291 dimitri 1.1 #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 torge 1.6 #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 dimitri 1.1 #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 dimitri 1.2 CToM<<<
343     #ifdef SEAICE_ITD
344 torge 1.6 C ToM: generate some test output
345 dimitri 1.2 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 torge 1.6 & ' SEAICE_MODEL: HEFFITD after growth: ',
350     & HEFFITD(20,20,:,bi,bj)
351 dimitri 1.2 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
352     & SQUEEZE_RIGHT , myThid)
353     WRITE(msgBuf,HlimitMsgFormat)
354 torge 1.6 & ' SEAICE_MODEL: AREAITD after growth: ',
355 dimitri 1.2 & AREAITD(20,20,:,bi,bj)
356     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
357     & SQUEEZE_RIGHT , myThid)
358     WRITE(msgBuf,HlimitMsgFormat)
359 torge 1.6 & ' SEAICE_MODEL: HSNOWITD after growth: ',
360 dimitri 1.2 & HSNOWITD(20,20,:,bi,bj)
361     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
362     & SQUEEZE_RIGHT , myThid)
363 torge 1.6 WRITE(msgBuf,'(A)')
364     & ' --------------------------------------------- '
365     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
366     & SQUEEZE_RIGHT , myThid)
367 dimitri 1.2 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 torge 1.5 DO bj=myByLo(myThid),myByHi(myThid)
377     DO bi=myBxLo(myThid),myBxHi(myThid)
378 torge 1.6 CALL SEAICE_ITD_REDIST(bi, bj, myTime, myIter, myThid)
379 torge 1.5 ENDDO
380     ENDDO
381 dimitri 1.2 C store the mean ice thickness in HEFF (for dynamic solver and diagnostics)
382 torge 1.5 DO bj=myByLo(myThid),myByHi(myThid)
383     DO bi=myBxLo(myThid),myBxHi(myThid)
384 torge 1.6 CALL SEAICE_ITD_SUM(bi, bj, myTime, myIter, myThid)
385 torge 1.5 ENDDO
386     ENDDO
387 dimitri 1.2
388 torge 1.6 C ToM: generate some test output
389 dimitri 1.2 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 torge 1.6 & ' SEAICE_MODEL: HEFFITD after final sorting: ',
394     & HEFFITD(20,20,:,bi,bj)
395 dimitri 1.2 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
396     & SQUEEZE_RIGHT , myThid)
397     WRITE(msgBuf,HlimitMsgFormat)
398 torge 1.6 & ' SEAICE_MODEL: AREAITD after final sorting: ',
399 dimitri 1.2 & AREAITD(20,20,:,bi,bj)
400     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
401     & SQUEEZE_RIGHT , myThid)
402     WRITE(msgBuf,HlimitMsgFormat)
403 torge 1.6 & ' SEAICE_MODEL: HSNOWITD after final sorting: ',
404 dimitri 1.2 & HSNOWITD(20,20,:,bi,bj)
405     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
406     & SQUEEZE_RIGHT , myThid)
407 torge 1.6 WRITE(msgBuf,'(A)')
408     & ' ============================================= '
409     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
410     & SQUEEZE_RIGHT , myThid)
411 dimitri 1.2 ENDDO
412     ENDDO
413     #endif
414     C
415     C>>>ToM
416 dimitri 1.1 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 torge 1.4 #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 dimitri 1.1 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