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 |
56 |
|
CToM<<< |
57 |
|
#ifdef SEAICE_ITD |
58 |
|
C k :: Loop counter for ice thickness categories |
59 |
|
#endif |
60 |
|
C>>>ToM |
61 |
C ks :: surface level index |
C ks :: surface level index |
62 |
C uc/vc :: current ice velocity on C-grid |
C uc/vc :: current ice velocity on C-grid |
63 |
C uTrans :: volume transport, x direction |
C uTrans :: volume transport, x direction |
67 |
C gFld :: tendency of seaice field |
C gFld :: tendency of seaice field |
68 |
C xA,yA :: "areas" of X and Y face of tracer cells |
C xA,yA :: "areas" of X and Y face of tracer cells |
69 |
INTEGER i, j, bi, bj |
INTEGER i, j, bi, bj |
70 |
|
CToM<<< |
71 |
|
#ifdef SEAICE_ITD |
72 |
|
INTEGER k |
73 |
|
#endif |
74 |
|
C>>>ToM |
75 |
INTEGER ks |
INTEGER ks |
76 |
LOGICAL SEAICEmultiDimAdvection |
LOGICAL SEAICEmultiDimAdvection |
77 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
216 |
|
|
217 |
C-- Effective Thickness (Volume) |
C-- Effective Thickness (Volume) |
218 |
IF ( SEAICEadvHeff ) THEN |
IF ( SEAICEadvHeff ) THEN |
219 |
|
CToM<<< |
220 |
|
#ifdef SEAICE_ITD |
221 |
|
DO k=1,nITD |
222 |
|
DO j=1-OLy,sNy+OLy |
223 |
|
DO i=1-OLx,sNx+OLx |
224 |
|
HEFF(i,j,bi,bj)=HEFFITD(i,j,k,bi,bj) |
225 |
|
ENDDO |
226 |
|
ENDDO |
227 |
|
#endif |
228 |
|
C>>>ToM |
229 |
CALL SEAICE_ADVECTION( |
CALL SEAICE_ADVECTION( |
230 |
I GAD_HEFF, SEAICEadvSchHeff, |
I GAD_HEFF, SEAICEadvSchHeff, |
231 |
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), |
249 |
& ) |
& ) |
250 |
ENDDO |
ENDDO |
251 |
ENDDO |
ENDDO |
252 |
|
CToM<<< |
253 |
|
#ifdef SEAICE_ITD |
254 |
|
DO j=1-OLy,sNy+OLy |
255 |
|
DO i=1-OLx,sNx+OLx |
256 |
|
HEFFITD(i,j,k,bi,bj)=HEFF(i,j,bi,bj) |
257 |
|
ENDDO |
258 |
|
ENDDO |
259 |
|
ENDDO |
260 |
|
#endif |
261 |
|
C>>>ToM |
262 |
ENDIF |
ENDIF |
263 |
|
|
264 |
C-- Fractional area |
C-- Fractional area |
265 |
IF ( SEAICEadvArea ) THEN |
IF ( SEAICEadvArea ) THEN |
266 |
|
CToM<<< |
267 |
|
#ifdef SEAICE_ITD |
268 |
|
DO k=1,nITD |
269 |
|
DO j=1-OLy,sNy+OLy |
270 |
|
DO i=1-OLx,sNx+OLx |
271 |
|
AREA(i,j,bi,bj)=AREAITD(i,j,k,bi,bj) |
272 |
|
ENDDO |
273 |
|
ENDDO |
274 |
|
#endif |
275 |
|
C>>>ToM |
276 |
CALL SEAICE_ADVECTION( |
CALL SEAICE_ADVECTION( |
277 |
I GAD_AREA, SEAICEadvSchArea, |
I GAD_AREA, SEAICEadvSchArea, |
278 |
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), |
296 |
& ) |
& ) |
297 |
ENDDO |
ENDDO |
298 |
ENDDO |
ENDDO |
299 |
|
CToM<<< |
300 |
|
#ifdef SEAICE_ITD |
301 |
|
DO j=1-OLy,sNy+OLy |
302 |
|
DO i=1-OLx,sNx+OLx |
303 |
|
AREAITD(i,j,k,bi,bj)=AREA(i,j,bi,bj) |
304 |
|
ENDDO |
305 |
|
ENDDO |
306 |
|
ENDDO |
307 |
|
#endif |
308 |
|
C>>>ToM |
309 |
ENDIF |
ENDIF |
310 |
|
|
311 |
C-- Effective Snow Thickness (Volume) |
C-- Effective Snow Thickness (Volume) |
312 |
IF ( SEAICEadvSnow ) THEN |
IF ( SEAICEadvSnow ) THEN |
313 |
|
CToM<<< |
314 |
|
#ifdef SEAICE_ITD |
315 |
|
DO k=1,nITD |
316 |
|
DO j=1-OLy,sNy+OLy |
317 |
|
DO i=1-OLx,sNx+OLx |
318 |
|
HSNOW(i,j,bi,bj)=HSNOWITD(i,j,k,bi,bj) |
319 |
|
ENDDO |
320 |
|
ENDDO |
321 |
|
#endif |
322 |
|
C>>>ToM |
323 |
CALL SEAICE_ADVECTION( |
CALL SEAICE_ADVECTION( |
324 |
I GAD_SNOW, SEAICEadvSchSnow, |
I GAD_SNOW, SEAICEadvSchSnow, |
325 |
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), |
343 |
& ) |
& ) |
344 |
ENDDO |
ENDDO |
345 |
ENDDO |
ENDDO |
346 |
|
CToM<<< |
347 |
|
#ifdef SEAICE_ITD |
348 |
|
DO j=1-OLy,sNy+OLy |
349 |
|
DO i=1-OLx,sNx+OLx |
350 |
|
HSNOWITD(i,j,k,bi,bj)=HSNOW(i,j,bi,bj) |
351 |
|
ENDDO |
352 |
|
ENDDO |
353 |
|
ENDDO |
354 |
|
#endif |
355 |
|
C>>>ToM |
356 |
ENDIF |
ENDIF |
357 |
|
|
358 |
#ifdef SEAICE_VARIABLE_SALINITY |
#ifdef SEAICE_VARIABLE_SALINITY |
562 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
563 |
CADJ STORE heff = comlev1, key = ikey_dynamics, kind=isbyte |
CADJ STORE heff = comlev1, key = ikey_dynamics, kind=isbyte |
564 |
#endif |
#endif |
565 |
|
CToM<<< |
566 |
|
#ifdef SEAICE_ITD |
567 |
|
DO k=1,nITD |
568 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
569 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
570 |
|
DO j=1-OLy,sNy+OLy |
571 |
|
DO i=1-OLx,sNx+OLx |
572 |
|
HEFF(i,j,bi,bj)=HEFFITD(i,j,k,bi,bj) |
573 |
|
ENDDO |
574 |
|
ENDDO |
575 |
|
ENDDO |
576 |
|
ENDDO |
577 |
|
#endif |
578 |
|
C>>>ToM |
579 |
CALL ADVECT( uc, vc, hEff, fldNm1, HEFFM, myThid ) |
CALL ADVECT( uc, vc, hEff, fldNm1, HEFFM, myThid ) |
580 |
IF ( SEAICEdiffKhHeff .GT. 0. _d 0 ) THEN |
IF ( SEAICEdiffKhHeff .GT. 0. _d 0 ) THEN |
581 |
C- Add tendency due to diffusion |
C- Add tendency due to diffusion |
590 |
ENDDO |
ENDDO |
591 |
ENDDO |
ENDDO |
592 |
ENDIF |
ENDIF |
593 |
|
CToM<<< |
594 |
|
#ifdef SEAICE_ITD |
595 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
596 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
597 |
|
DO j=1-OLy,sNy+OLy |
598 |
|
DO i=1-OLx,sNx+OLx |
599 |
|
HEFFITD(i,j,k,bi,bj)=HEFF(i,j,bi,bj) |
600 |
|
ENDDO |
601 |
|
ENDDO |
602 |
|
ENDDO |
603 |
|
ENDDO |
604 |
|
ENDDO |
605 |
|
#endif |
606 |
|
C>>>ToM |
607 |
ENDIF |
ENDIF |
608 |
IF ( SEAICEadvArea ) THEN |
IF ( SEAICEadvArea ) THEN |
609 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
610 |
CADJ STORE area = comlev1, key = ikey_dynamics, kind=isbyte |
CADJ STORE area = comlev1, key = ikey_dynamics, kind=isbyte |
611 |
#endif |
#endif |
612 |
|
CToM<<< |
613 |
|
#ifdef SEAICE_ITD |
614 |
|
DO k=1,nITD |
615 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
616 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
617 |
|
DO j=1-OLy,sNy+OLy |
618 |
|
DO i=1-OLx,sNx+OLx |
619 |
|
AREA(i,j,bi,bj)=AREAITD(i,j,k,bi,bj) |
620 |
|
ENDDO |
621 |
|
ENDDO |
622 |
|
ENDDO |
623 |
|
ENDDO |
624 |
|
#endif |
625 |
|
C>>>ToM |
626 |
CALL ADVECT( uc, vc, area, fldNm1, HEFFM, myThid ) |
CALL ADVECT( uc, vc, area, fldNm1, HEFFM, myThid ) |
627 |
IF ( SEAICEdiffKhArea .GT. 0. _d 0 ) THEN |
IF ( SEAICEdiffKhArea .GT. 0. _d 0 ) THEN |
628 |
C- Add tendency due to diffusion |
C- Add tendency due to diffusion |
637 |
ENDDO |
ENDDO |
638 |
ENDDO |
ENDDO |
639 |
ENDIF |
ENDIF |
640 |
|
CToM<<< |
641 |
|
#ifdef SEAICE_ITD |
642 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
643 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
644 |
|
DO j=1-OLy,sNy+OLy |
645 |
|
DO i=1-OLx,sNx+OLx |
646 |
|
AREAITD(i,j,k,bi,bj)=AREA(i,j,bi,bj) |
647 |
|
ENDDO |
648 |
|
ENDDO |
649 |
|
ENDDO |
650 |
|
ENDDO |
651 |
|
ENDDO |
652 |
|
#endif |
653 |
|
C>>>ToM |
654 |
ENDIF |
ENDIF |
655 |
IF ( SEAICEadvSnow ) THEN |
IF ( SEAICEadvSnow ) THEN |
656 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
657 |
CADJ STORE hsnow = comlev1, key = ikey_dynamics, kind=isbyte |
CADJ STORE hsnow = comlev1, key = ikey_dynamics, kind=isbyte |
658 |
#endif |
#endif |
659 |
|
CToM<<< |
660 |
|
#ifdef SEAICE_ITD |
661 |
|
DO k=1,nITD |
662 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
663 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
664 |
|
DO j=1-OLy,sNy+OLy |
665 |
|
DO i=1-OLx,sNx+OLx |
666 |
|
HSNOW(i,j,bi,bj)=HSNOWITD(i,j,k,bi,bj) |
667 |
|
ENDDO |
668 |
|
ENDDO |
669 |
|
ENDDO |
670 |
|
ENDDO |
671 |
|
#endif |
672 |
|
C>>>ToM |
673 |
CALL ADVECT( uc, vc, HSNOW, fldNm1, HEFFM, myThid ) |
CALL ADVECT( uc, vc, HSNOW, fldNm1, HEFFM, myThid ) |
674 |
IF ( SEAICEdiffKhSnow .GT. 0. _d 0 ) THEN |
IF ( SEAICEdiffKhSnow .GT. 0. _d 0 ) THEN |
675 |
C- Add tendency due to diffusion |
C- Add tendency due to diffusion |
684 |
ENDDO |
ENDDO |
685 |
ENDDO |
ENDDO |
686 |
ENDIF |
ENDIF |
687 |
|
CToM<<< |
688 |
|
#ifdef SEAICE_ITD |
689 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
690 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
691 |
|
DO j=1-OLy,sNy+OLy |
692 |
|
DO i=1-OLx,sNx+OLx |
693 |
|
HSNOWITD(i,j,k,bi,bj)=HSNOW(i,j,bi,bj) |
694 |
|
ENDDO |
695 |
|
ENDDO |
696 |
|
ENDDO |
697 |
|
ENDDO |
698 |
|
ENDDO |
699 |
|
#endif |
700 |
|
C>>>ToM |
701 |
ENDIF |
ENDIF |
702 |
|
|
703 |
#ifdef SEAICE_VARIABLE_SALINITY |
#ifdef SEAICE_VARIABLE_SALINITY |