/[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.12 - (hide annotations) (download)
Fri May 3 18:59:40 2013 UTC (12 years, 3 months ago) by torge
Branch: MAIN
Changes since 1.11: +25 -30 lines
removing all "ToM" comments

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

  ViewVC Help
Powered by ViewVC 1.1.22