53 |
C !LOCAL VARIABLES: ==================================================== |
C !LOCAL VARIABLES: ==================================================== |
54 |
C === Local variables === |
C === Local variables === |
55 |
C i,j,bi,bj :: Loop counters |
C i,j,bi,bj :: Loop counters |
|
CToM<<< |
|
56 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
57 |
C k :: Loop counter for ice thickness categories |
C it :: Loop counter for ice thickness categories |
58 |
#endif |
#endif |
|
C>>>ToM |
|
59 |
C ks :: surface level index |
C ks :: surface level index |
60 |
C uc/vc :: current ice velocity on C-grid |
C uc/vc :: current ice velocity on C-grid |
61 |
C uTrans :: volume transport, x direction |
C uTrans :: volume transport, x direction |
65 |
C gFld :: tendency of seaice field |
C gFld :: tendency of seaice field |
66 |
C xA,yA :: "areas" of X and Y face of tracer cells |
C xA,yA :: "areas" of X and Y face of tracer cells |
67 |
INTEGER i, j, bi, bj |
INTEGER i, j, bi, bj |
|
CToM<<< |
|
68 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
69 |
INTEGER k |
INTEGER it |
70 |
#endif |
#endif |
|
C>>>ToM |
|
71 |
INTEGER ks |
INTEGER ks |
72 |
LOGICAL SEAICEmultiDimAdvection |
LOGICAL SEAICEmultiDimAdvection |
73 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
214 |
|
|
215 |
C-- Effective Thickness (Volume) |
C-- Effective Thickness (Volume) |
216 |
IF ( SEAICEadvHeff ) THEN |
IF ( SEAICEadvHeff ) THEN |
|
CToM<<< |
|
217 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
218 |
DO k=1,nITD |
DO it=1,nITD |
219 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
220 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
221 |
HEFF(i,j,bi,bj)=HEFFITD(i,j,k,bi,bj) |
HEFF(i,j,bi,bj)=HEFFITD(i,j,it,bi,bj) |
222 |
ENDDO |
ENDDO |
223 |
ENDDO |
ENDDO |
224 |
#endif |
#endif |
|
C>>>ToM |
|
225 |
CALL SEAICE_ADVECTION( |
CALL SEAICE_ADVECTION( |
226 |
I GAD_HEFF, SEAICEadvSchHeff, |
I GAD_HEFF, SEAICEadvSchHeff, |
227 |
I uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj), |
I uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj), |
245 |
& ) |
& ) |
246 |
ENDDO |
ENDDO |
247 |
ENDDO |
ENDDO |
|
CToM<<< |
|
248 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
249 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
250 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
251 |
HEFFITD(i,j,k,bi,bj)=HEFF(i,j,bi,bj) |
HEFFITD(i,j,it,bi,bj)=HEFF(i,j,bi,bj) |
252 |
ENDDO |
ENDDO |
253 |
ENDDO |
ENDDO |
254 |
ENDDO |
ENDDO |
255 |
#endif |
#endif |
|
C>>>ToM |
|
256 |
ENDIF |
ENDIF |
257 |
|
|
258 |
C-- Fractional area |
C-- Fractional area |
259 |
IF ( SEAICEadvArea ) THEN |
IF ( SEAICEadvArea ) THEN |
|
CToM<<< |
|
260 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
261 |
DO k=1,nITD |
DO it=1,nITD |
262 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
263 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
264 |
AREA(i,j,bi,bj)=AREAITD(i,j,k,bi,bj) |
AREA(i,j,bi,bj)=AREAITD(i,j,it,bi,bj) |
265 |
ENDDO |
ENDDO |
266 |
ENDDO |
ENDDO |
267 |
#endif |
#endif |
|
C>>>ToM |
|
268 |
CALL SEAICE_ADVECTION( |
CALL SEAICE_ADVECTION( |
269 |
I GAD_AREA, SEAICEadvSchArea, |
I GAD_AREA, SEAICEadvSchArea, |
270 |
I uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj), |
I uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj), |
288 |
& ) |
& ) |
289 |
ENDDO |
ENDDO |
290 |
ENDDO |
ENDDO |
|
CToM<<< |
|
291 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
292 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
293 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
294 |
AREAITD(i,j,k,bi,bj)=AREA(i,j,bi,bj) |
AREAITD(i,j,it,bi,bj)=AREA(i,j,bi,bj) |
295 |
ENDDO |
ENDDO |
296 |
ENDDO |
ENDDO |
297 |
ENDDO |
ENDDO |
298 |
#endif |
#endif |
|
C>>>ToM |
|
299 |
ENDIF |
ENDIF |
300 |
|
|
301 |
C-- Effective Snow Thickness (Volume) |
C-- Effective Snow Thickness (Volume) |
302 |
IF ( SEAICEadvSnow ) THEN |
IF ( SEAICEadvSnow ) THEN |
|
CToM<<< |
|
303 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
304 |
DO k=1,nITD |
DO it=1,nITD |
305 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
306 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
307 |
HSNOW(i,j,bi,bj)=HSNOWITD(i,j,k,bi,bj) |
HSNOW(i,j,bi,bj)=HSNOWITD(i,j,it,bi,bj) |
308 |
ENDDO |
ENDDO |
309 |
ENDDO |
ENDDO |
310 |
#endif |
#endif |
|
C>>>ToM |
|
311 |
CALL SEAICE_ADVECTION( |
CALL SEAICE_ADVECTION( |
312 |
I GAD_SNOW, SEAICEadvSchSnow, |
I GAD_SNOW, SEAICEadvSchSnow, |
313 |
I uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj), |
I uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj), |
331 |
& ) |
& ) |
332 |
ENDDO |
ENDDO |
333 |
ENDDO |
ENDDO |
|
CToM<<< |
|
334 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
335 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
336 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
337 |
HSNOWITD(i,j,k,bi,bj)=HSNOW(i,j,bi,bj) |
HSNOWITD(i,j,it,bi,bj)=HSNOW(i,j,bi,bj) |
338 |
ENDDO |
ENDDO |
339 |
ENDDO |
ENDDO |
340 |
ENDDO |
ENDDO |
341 |
#endif |
#endif |
|
C>>>ToM |
|
342 |
ENDIF |
ENDIF |
343 |
|
|
344 |
#ifdef SEAICE_VARIABLE_SALINITY |
#ifdef SEAICE_VARIABLE_SALINITY |
523 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
524 |
CADJ STORE heff = comlev1, key = ikey_dynamics, kind=isbyte |
CADJ STORE heff = comlev1, key = ikey_dynamics, kind=isbyte |
525 |
#endif |
#endif |
|
CToM<<< |
|
526 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
527 |
DO k=1,nITD |
DO it=1,nITD |
528 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
529 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
530 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
531 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
532 |
HEFF(i,j,bi,bj)=HEFFITD(i,j,k,bi,bj) |
HEFF(i,j,bi,bj)=HEFFITD(i,j,it,bi,bj) |
533 |
ENDDO |
ENDDO |
534 |
ENDDO |
ENDDO |
535 |
ENDDO |
ENDDO |
536 |
ENDDO |
ENDDO |
537 |
#endif |
#endif |
|
C>>>ToM |
|
538 |
CALL ADVECT( uc, vc, hEff, fldNm1, HEFFM, myThid ) |
CALL ADVECT( uc, vc, hEff, fldNm1, HEFFM, myThid ) |
539 |
IF ( SEAICEdiffKhHeff .GT. 0. _d 0 ) THEN |
IF ( SEAICEdiffKhHeff .GT. 0. _d 0 ) THEN |
540 |
C- Add tendency due to diffusion |
C- Add tendency due to diffusion |
549 |
ENDDO |
ENDDO |
550 |
ENDDO |
ENDDO |
551 |
ENDIF |
ENDIF |
|
CToM<<< |
|
552 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
553 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
554 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
555 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
556 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
557 |
HEFFITD(i,j,k,bi,bj)=HEFF(i,j,bi,bj) |
HEFFITD(i,j,it,bi,bj)=HEFF(i,j,bi,bj) |
558 |
ENDDO |
ENDDO |
559 |
ENDDO |
ENDDO |
560 |
ENDDO |
ENDDO |
561 |
ENDDO |
ENDDO |
562 |
ENDDO |
ENDDO |
563 |
#endif |
#endif |
|
C>>>ToM |
|
564 |
ENDIF |
ENDIF |
565 |
IF ( SEAICEadvArea ) THEN |
IF ( SEAICEadvArea ) THEN |
566 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
567 |
CADJ STORE area = comlev1, key = ikey_dynamics, kind=isbyte |
CADJ STORE area = comlev1, key = ikey_dynamics, kind=isbyte |
568 |
#endif |
#endif |
|
CToM<<< |
|
569 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
570 |
DO k=1,nITD |
DO it=1,nITD |
571 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
572 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
573 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
574 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
575 |
AREA(i,j,bi,bj)=AREAITD(i,j,k,bi,bj) |
AREA(i,j,bi,bj)=AREAITD(i,j,it,bi,bj) |
576 |
ENDDO |
ENDDO |
577 |
ENDDO |
ENDDO |
578 |
ENDDO |
ENDDO |
579 |
ENDDO |
ENDDO |
580 |
#endif |
#endif |
|
C>>>ToM |
|
581 |
CALL ADVECT( uc, vc, area, fldNm1, HEFFM, myThid ) |
CALL ADVECT( uc, vc, area, fldNm1, HEFFM, myThid ) |
582 |
IF ( SEAICEdiffKhArea .GT. 0. _d 0 ) THEN |
IF ( SEAICEdiffKhArea .GT. 0. _d 0 ) THEN |
583 |
C- Add tendency due to diffusion |
C- Add tendency due to diffusion |
592 |
ENDDO |
ENDDO |
593 |
ENDDO |
ENDDO |
594 |
ENDIF |
ENDIF |
|
CToM<<< |
|
595 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
596 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
597 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
598 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
599 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
600 |
AREAITD(i,j,k,bi,bj)=AREA(i,j,bi,bj) |
AREAITD(i,j,it,bi,bj)=AREA(i,j,bi,bj) |
601 |
ENDDO |
ENDDO |
602 |
ENDDO |
ENDDO |
603 |
ENDDO |
ENDDO |
604 |
ENDDO |
ENDDO |
605 |
ENDDO |
ENDDO |
606 |
#endif |
#endif |
|
C>>>ToM |
|
607 |
ENDIF |
ENDIF |
608 |
IF ( SEAICEadvSnow ) THEN |
IF ( SEAICEadvSnow ) THEN |
609 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
610 |
CADJ STORE hsnow = comlev1, key = ikey_dynamics, kind=isbyte |
CADJ STORE hsnow = comlev1, key = ikey_dynamics, kind=isbyte |
611 |
#endif |
#endif |
|
CToM<<< |
|
612 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
613 |
DO k=1,nITD |
DO it=1,nITD |
614 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
615 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
616 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
617 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
618 |
HSNOW(i,j,bi,bj)=HSNOWITD(i,j,k,bi,bj) |
HSNOW(i,j,bi,bj)=HSNOWITD(i,j,it,bi,bj) |
619 |
ENDDO |
ENDDO |
620 |
ENDDO |
ENDDO |
621 |
ENDDO |
ENDDO |
622 |
ENDDO |
ENDDO |
623 |
#endif |
#endif |
|
C>>>ToM |
|
624 |
CALL ADVECT( uc, vc, HSNOW, fldNm1, HEFFM, myThid ) |
CALL ADVECT( uc, vc, HSNOW, fldNm1, HEFFM, myThid ) |
625 |
IF ( SEAICEdiffKhSnow .GT. 0. _d 0 ) THEN |
IF ( SEAICEdiffKhSnow .GT. 0. _d 0 ) THEN |
626 |
C- Add tendency due to diffusion |
C- Add tendency due to diffusion |
635 |
ENDDO |
ENDDO |
636 |
ENDDO |
ENDDO |
637 |
ENDIF |
ENDIF |
|
CToM<<< |
|
638 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
639 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
640 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
641 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
642 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
643 |
HSNOWITD(i,j,k,bi,bj)=HSNOW(i,j,bi,bj) |
HSNOWITD(i,j,it,bi,bj)=HSNOW(i,j,bi,bj) |
644 |
ENDDO |
ENDDO |
645 |
ENDDO |
ENDDO |
646 |
ENDDO |
ENDDO |
647 |
ENDDO |
ENDDO |
648 |
ENDDO |
ENDDO |
649 |
#endif |
#endif |
|
C>>>ToM |
|
650 |
ENDIF |
ENDIF |
651 |
|
|
652 |
#ifdef SEAICE_VARIABLE_SALINITY |
#ifdef SEAICE_VARIABLE_SALINITY |