/[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.11 - (hide annotations) (download)
Wed Mar 27 18:59:53 2013 UTC (12 years, 4 months ago) by torge
Branch: MAIN
Changes since 1.10: +10 -55 lines
updating my MITgcm_contrib directory to include latest changes on main branch;
settings are to run a 1D test szenario with ITD code and 7 categories

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

  ViewVC Help
Powered by ViewVC 1.1.22