207 |
& .OR. SEAICEadvSalt ) THEN |
& .OR. SEAICEadvSalt ) THEN |
208 |
CToM<<< |
CToM<<< |
209 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
210 |
C test if REDIST works (1/2): |
C ToM: generate some test output |
211 |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
212 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
213 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
215 |
c DO i=1-OLx,sNx+OLx |
c DO i=1-OLx,sNx+OLx |
216 |
ccc WRITE(msgBuf,HlimitMsgFormat) |
ccc WRITE(msgBuf,HlimitMsgFormat) |
217 |
WRITE(msgBuf,'(A,F6.2,x,F6.2)') |
WRITE(msgBuf,'(A,F6.2,x,F6.2)') |
218 |
& ' SEAICE_MODEL: AREA and HEFF/AREA before advection: ', |
& ' SEAICE_MODEL: AREA and HEFF before advection: ', |
219 |
& AREA(20,20,bi,bj), HEFF(20,20,bi,bj)/AREA(20,20,bi,bj) |
& 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 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
223 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
224 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
225 |
& ' SEAICE_MODEL: HEFFITD/AREAITD before advection: ', |
& ' SEAICE_MODEL: HEFFITD before advection: ', |
226 |
& HEFFITD(20,20,:,bi,bj) / AREAITD(20,20,:,bi,bj) |
& 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 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
230 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
231 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
232 |
& ' SEAICE_MODEL: AREAITD before advection: ', |
& ' SEAICE_MODEL: AREAITD before advection: ', |
233 |
& AREAITD(20,20,:,bi,bj) |
& AREAITD(20,20,:,bi,bj) |
234 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
235 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
245 |
CALL SEAICE_ADVDIFF( myTime, myIter, myThid ) |
CALL SEAICE_ADVDIFF( myTime, myIter, myThid ) |
246 |
CToM<<< |
CToM<<< |
247 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
248 |
C test if REDIST works (1/2): |
C ToM: generate some test output |
249 |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
250 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
251 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
252 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
253 |
& ' SEAICE_MODEL: HEFFITD/AREAITD before 1. sorting: ', |
& ' SEAICE_MODEL: HEFFITD after advection: ', |
254 |
& HEFFITD(20,20,:,bi,bj) / AREAITD(20,20,:,bi,bj) |
& HEFFITD(20,20,:,bi,bj) |
255 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
256 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
257 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
258 |
& ' SEAICE_MODEL: AREAITD before 1. sorting: ', |
& ' SEAICE_MODEL: AREAITD after advection: ', |
259 |
& AREAITD(20,20,:,bi,bj) |
& AREAITD(20,20,:,bi,bj) |
260 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
261 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
262 |
|
WRITE(msgBuf,'(A)') |
263 |
|
& ' --------------------------------------------- ' |
264 |
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
265 |
|
& SQUEEZE_RIGHT , myThid) |
266 |
ENDDO |
ENDDO |
267 |
ENDDO |
ENDDO |
268 |
C |
C |
273 |
#endif |
#endif |
274 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
275 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
276 |
CALL SEAICE_ITD_REDIST(myTime, myIter, myThid) |
CALL SEAICE_ITD_REDIST(bi, bj, myTime, myIter, myThid) |
277 |
ENDDO |
ENDDO |
278 |
ENDDO |
ENDDO |
279 |
C update mean ice thickness HEFF and total ice concentration AREA |
C update mean ice thickness HEFF and total ice concentration AREA |
283 |
#endif |
#endif |
284 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
285 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
286 |
CALL SEAICE_ITD_SUM(myTime, myIter, myThid) |
CALL SEAICE_ITD_SUM(bi, bj, myTime, myIter, myThid) |
287 |
ENDDO |
ENDDO |
288 |
ENDDO |
ENDDO |
289 |
#endif |
#endif |
306 |
CADJ STORE heffm = comlev1, key=ikey_dynamics, kind=isbyte |
CADJ STORE heffm = comlev1, key=ikey_dynamics, kind=isbyte |
307 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
308 |
|
|
309 |
|
#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 |
#ifndef DISABLE_SEAICE_GROWTH |
#ifndef DISABLE_SEAICE_GROWTH |
334 |
C thermodynamics growth |
C thermodynamics growth |
335 |
C must call growth after calling advection |
C must call growth after calling advection |
341 |
CALL SEAICE_GROWTH( myTime, myIter, myThid ) |
CALL SEAICE_GROWTH( myTime, myIter, myThid ) |
342 |
CToM<<< |
CToM<<< |
343 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
344 |
C test if GROWTH works: |
C ToM: generate some test output |
345 |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
346 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
347 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
348 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
349 |
& ' SEAICE_MODEL: HEFFITD/AREAITD after growth: ', |
& ' SEAICE_MODEL: HEFFITD after growth: ', |
350 |
& HEFFITD(20,20,:,bi,bj) / AREAITD(20,20,:,bi,bj) |
& HEFFITD(20,20,:,bi,bj) |
351 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
352 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
353 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
354 |
& ' SEAICE_MODEL: AREAITD after growth: ', |
& ' SEAICE_MODEL: AREAITD after growth: ', |
355 |
& AREAITD(20,20,:,bi,bj) |
& AREAITD(20,20,:,bi,bj) |
356 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
357 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
358 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
359 |
& ' SEAICE_MODEL: HSNOWITD after growth: ', |
& ' SEAICE_MODEL: HSNOWITD after growth: ', |
360 |
& HSNOWITD(20,20,:,bi,bj) |
& HSNOWITD(20,20,:,bi,bj) |
361 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
362 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
363 |
|
WRITE(msgBuf,'(A)') |
364 |
|
& ' --------------------------------------------- ' |
365 |
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
366 |
|
& SQUEEZE_RIGHT , myThid) |
367 |
ENDDO |
ENDDO |
368 |
ENDDO |
ENDDO |
369 |
C |
C |
375 |
#endif |
#endif |
376 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
377 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
378 |
CALL SEAICE_ITD_REDIST(myTime, myIter, myThid) |
CALL SEAICE_ITD_REDIST(bi, bj, myTime, myIter, myThid) |
379 |
ENDDO |
ENDDO |
380 |
ENDDO |
ENDDO |
381 |
C store the mean ice thickness in HEFF (for dynamic solver and diagnostics) |
C store the mean ice thickness in HEFF (for dynamic solver and diagnostics) |
382 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
383 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
384 |
CALL SEAICE_ITD_SUM(myTime, myIter, myThid) |
CALL SEAICE_ITD_SUM(bi, bj, myTime, myIter, myThid) |
385 |
ENDDO |
ENDDO |
386 |
ENDDO |
ENDDO |
387 |
|
|
388 |
C test if REDIST works (2/2): |
C ToM: generate some test output |
389 |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
390 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
391 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
392 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
393 |
& ' SEAICE_MODEL: HEFFITD/AREAITD after 2. sorting: ', |
& ' SEAICE_MODEL: HEFFITD after final sorting: ', |
394 |
& HEFFITD(20,20,:,bi,bj) / AREAITD(20,20,:,bi,bj) |
& HEFFITD(20,20,:,bi,bj) |
395 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
396 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
397 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
398 |
& ' SEAICE_MODEL: AREAITD after 2. sorting: ', |
& ' SEAICE_MODEL: AREAITD after final sorting: ', |
399 |
& AREAITD(20,20,:,bi,bj) |
& AREAITD(20,20,:,bi,bj) |
400 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
401 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
402 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
403 |
& ' SEAICE_MODEL: HSNOWITD after 2. sorting: ', |
& ' SEAICE_MODEL: HSNOWITD after final sorting: ', |
404 |
& HSNOWITD(20,20,:,bi,bj) |
& HSNOWITD(20,20,:,bi,bj) |
405 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
406 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
407 |
|
WRITE(msgBuf,'(A)') |
408 |
|
& ' ============================================= ' |
409 |
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
410 |
|
& SQUEEZE_RIGHT , myThid) |
411 |
ENDDO |
ENDDO |
412 |
ENDDO |
ENDDO |
413 |
#endif |
#endif |