59 |
C msgBuf :: Informational/error message buffer |
C msgBuf :: Informational/error message buffer |
60 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
61 |
CHARACTER*10 HlimitMsgFormat |
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) |
C#if defined(SEAICE_GROWTH_LEGACY) || defined(ALLOW_AUTODIFF_TAMC) |
67 |
#if defined(SEAICE_GROWTH_LEGACY) || defined(ALLOW_AUTODIFF_TAMC) || defined(SEAICE_ITD) |
#if defined(SEAICE_GROWTH_LEGACY) || defined(ALLOW_AUTODIFF_TAMC) || defined(SEAICE_ITD) |
68 |
C>>>ToM |
C>>>ToM |
212 |
CToM<<< |
CToM<<< |
213 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
214 |
C ToM: generate some test output |
C ToM: generate some test output |
215 |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F8.4)' |
216 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
217 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
218 |
c DO j=1-OLy,sNy+OLy |
c DO j=1-OLy,sNy+OLy |
219 |
c DO i=1-OLx,sNx+OLx |
c DO i=1-OLx,sNx+OLx |
220 |
ccc WRITE(msgBuf,HlimitMsgFormat) |
ccc WRITE(msgBuf,HlimitMsgFormat) |
221 |
WRITE(msgBuf,'(A,F6.2,x,F6.2)') |
WRITE(msgBuf,'(A,F8.4,x,F8.4)') |
222 |
& ' SEAICE_MODEL: AREA and HEFF before advection: ', |
& ' SEAICE_MODEL: AREA and HEFF before advection: ', |
223 |
& AREA(20,20,bi,bj), HEFF(20,20,bi,bj) |
& AREA(1,1,bi,bj), HEFF(1,1,bi,bj) |
224 |
c & ' SEAICE_MODEL: AREA and HEFF/AREA before advection: ', |
c & ' SEAICE_MODEL: AREA and HEFF/AREA before advection: ', |
225 |
c & AREA(20,20,bi,bj), HEFF(20,20,bi,bj)/AREA(20,20,bi,bj) |
c & AREA(1,1,bi,bj), HEFF(1,1,bi,bj)/AREA(1,1,bi,bj) |
226 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
227 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
228 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
229 |
& ' SEAICE_MODEL: HEFFITD before advection: ', |
& ' SEAICE_MODEL: HEFFITD before advection: ', |
230 |
& HEFFITD(20,20,:,bi,bj) |
& HEFFITD(1,1,:,bi,bj) |
231 |
c & ' SEAICE_MODEL: HEFFITD/AREAITD before advection: ', |
c & ' SEAICE_MODEL: HEFFITD/AREAITD before advection: ', |
232 |
c & HEFFITD(20,20,:,bi,bj) / AREAITD(20,20,:,bi,bj) |
c & HEFFITD(1,1,:,bi,bj) / AREAITD(1,1,:,bi,bj) |
233 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
234 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
235 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
236 |
& ' SEAICE_MODEL: AREAITD before advection: ', |
& ' SEAICE_MODEL: AREAITD before advection: ', |
237 |
& AREAITD(20,20,:,bi,bj) |
& AREAITD(1,1,:,bi,bj) |
238 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
239 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
240 |
c ENDDO |
c ENDDO |
250 |
CToM<<< |
CToM<<< |
251 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
252 |
C ToM: generate some test output |
C ToM: generate some test output |
253 |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F8.4)' |
254 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
255 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
256 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
257 |
& ' SEAICE_MODEL: HEFFITD after advection: ', |
& ' SEAICE_MODEL: HEFFITD after advection: ', |
258 |
& HEFFITD(20,20,:,bi,bj) |
& HEFFITD(1,1,:,bi,bj) |
259 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
260 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
261 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
262 |
& ' SEAICE_MODEL: AREAITD after advection: ', |
& ' SEAICE_MODEL: AREAITD after advection: ', |
263 |
& AREAITD(20,20,:,bi,bj) |
& AREAITD(1,1,:,bi,bj) |
264 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
265 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
266 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
311 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
312 |
|
|
313 |
#ifdef SEAICE_ITD |
#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 |
C ToM: generate some test output |
331 |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F8.4)' |
332 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
333 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
334 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
335 |
& ' SEAICE_MODEL: HEFFITD before growth: ', |
& ' SEAICE_MODEL: HEFFITD before growth: ', |
336 |
& HEFFITD(20,20,:,bi,bj) |
& HEFFITD(1,1,:,bi,bj) |
337 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
338 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
339 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
340 |
& ' SEAICE_MODEL: AREAITD before growth: ', |
& ' SEAICE_MODEL: AREAITD before growth: ', |
341 |
& AREAITD(20,20,:,bi,bj) |
& AREAITD(1,1,:,bi,bj) |
342 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
343 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
344 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
345 |
& ' SEAICE_MODEL: HSNOWITD before growth: ', |
& ' SEAICE_MODEL: HSNOWITD before growth: ', |
346 |
& HSNOWITD(20,20,:,bi,bj) |
& HSNOWITD(1,1,:,bi,bj) |
347 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
348 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
349 |
ENDDO |
ENDDO |
362 |
CToM<<< |
CToM<<< |
363 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
364 |
C ToM: generate some test output |
C ToM: generate some test output |
365 |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F8.4)' |
366 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
367 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
368 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
369 |
& ' SEAICE_MODEL: HEFFITD after growth: ', |
& ' SEAICE_MODEL: HEFFITD after growth: ', |
370 |
& HEFFITD(20,20,:,bi,bj) |
& HEFFITD(1,1,:,bi,bj) |
371 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
372 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
373 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
374 |
& ' SEAICE_MODEL: AREAITD after growth: ', |
& ' SEAICE_MODEL: AREAITD after growth: ', |
375 |
& AREAITD(20,20,:,bi,bj) |
& AREAITD(1,1,:,bi,bj) |
376 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
377 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
378 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
379 |
& ' SEAICE_MODEL: HSNOWITD after growth: ', |
& ' SEAICE_MODEL: HSNOWITD after growth: ', |
380 |
& HSNOWITD(20,20,:,bi,bj) |
& HSNOWITD(1,1,:,bi,bj) |
381 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
382 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
383 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
406 |
ENDDO |
ENDDO |
407 |
|
|
408 |
C ToM: generate some test output |
C ToM: generate some test output |
409 |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F6.2)' |
WRITE(HlimitMsgFormat,'(A,I2,A)') '(A,',nITD,'F8.4)' |
410 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
411 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
412 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
413 |
& ' SEAICE_MODEL: HEFFITD after final sorting: ', |
& ' SEAICE_MODEL: HEFFITD after final sorting: ', |
414 |
& HEFFITD(20,20,:,bi,bj) |
& HEFFITD(1,1,:,bi,bj) |
415 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
416 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
417 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
418 |
& ' SEAICE_MODEL: AREAITD after final sorting: ', |
& ' SEAICE_MODEL: AREAITD after final sorting: ', |
419 |
& AREAITD(20,20,:,bi,bj) |
& AREAITD(1,1,:,bi,bj) |
420 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
421 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
422 |
WRITE(msgBuf,HlimitMsgFormat) |
WRITE(msgBuf,HlimitMsgFormat) |
423 |
& ' SEAICE_MODEL: HSNOWITD after final sorting: ', |
& ' SEAICE_MODEL: HSNOWITD after final sorting: ', |
424 |
& HSNOWITD(20,20,:,bi,bj) |
& HSNOWITD(1,1,:,bi,bj) |
425 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
426 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
427 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |