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 |
194 |
CADJ & key = itmpkey, kind=isbyte |
CADJ & key = itmpkey, kind=isbyte |
195 |
CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj, |
CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj, |
196 |
CADJ & key = itmpkey, kind=isbyte |
CADJ & key = itmpkey, kind=isbyte |
197 |
|
# ifdef SEAICE_VARIABLE_SALINITY |
198 |
|
CADJ STORE hsalt(:,:,bi,bj) = comlev1_bibj, |
199 |
|
CADJ & key = itmpkey, kind=isbyte |
200 |
|
# endif |
201 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
202 |
|
|
203 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
220 |
|
|
221 |
C-- Effective Thickness (Volume) |
C-- Effective Thickness (Volume) |
222 |
IF ( SEAICEadvHeff ) THEN |
IF ( SEAICEadvHeff ) THEN |
223 |
|
CToM<<< |
224 |
|
#ifdef SEAICE_ITD |
225 |
|
DO k=1,nITD |
226 |
|
DO j=1-OLy,sNy+OLy |
227 |
|
DO i=1-OLx,sNx+OLx |
228 |
|
HEFF(i,j,bi,bj)=HEFFITD(i,j,k,bi,bj) |
229 |
|
ENDDO |
230 |
|
ENDDO |
231 |
|
#endif |
232 |
|
C>>>ToM |
233 |
CALL SEAICE_ADVECTION( |
CALL SEAICE_ADVECTION( |
234 |
I GAD_HEFF, SEAICEadvSchHeff, |
I GAD_HEFF, SEAICEadvSchHeff, |
235 |
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), |
253 |
& ) |
& ) |
254 |
ENDDO |
ENDDO |
255 |
ENDDO |
ENDDO |
256 |
|
CToM<<< |
257 |
|
#ifdef SEAICE_ITD |
258 |
|
DO j=1-OLy,sNy+OLy |
259 |
|
DO i=1-OLx,sNx+OLx |
260 |
|
HEFFITD(i,j,k,bi,bj)=HEFF(i,j,bi,bj) |
261 |
|
ENDDO |
262 |
|
ENDDO |
263 |
|
ENDDO |
264 |
|
#endif |
265 |
|
C>>>ToM |
266 |
ENDIF |
ENDIF |
267 |
|
|
268 |
C-- Fractional area |
C-- Fractional area |
269 |
IF ( SEAICEadvArea ) THEN |
IF ( SEAICEadvArea ) THEN |
270 |
|
CToM<<< |
271 |
|
#ifdef SEAICE_ITD |
272 |
|
DO k=1,nITD |
273 |
|
DO j=1-OLy,sNy+OLy |
274 |
|
DO i=1-OLx,sNx+OLx |
275 |
|
AREA(i,j,bi,bj)=AREAITD(i,j,k,bi,bj) |
276 |
|
ENDDO |
277 |
|
ENDDO |
278 |
|
#endif |
279 |
|
C>>>ToM |
280 |
CALL SEAICE_ADVECTION( |
CALL SEAICE_ADVECTION( |
281 |
I GAD_AREA, SEAICEadvSchArea, |
I GAD_AREA, SEAICEadvSchArea, |
282 |
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), |
300 |
& ) |
& ) |
301 |
ENDDO |
ENDDO |
302 |
ENDDO |
ENDDO |
303 |
|
CToM<<< |
304 |
|
#ifdef SEAICE_ITD |
305 |
|
DO j=1-OLy,sNy+OLy |
306 |
|
DO i=1-OLx,sNx+OLx |
307 |
|
AREAITD(i,j,k,bi,bj)=AREA(i,j,bi,bj) |
308 |
|
ENDDO |
309 |
|
ENDDO |
310 |
|
ENDDO |
311 |
|
#endif |
312 |
|
C>>>ToM |
313 |
ENDIF |
ENDIF |
314 |
|
|
315 |
C-- Effective Snow Thickness (Volume) |
C-- Effective Snow Thickness (Volume) |
316 |
IF ( SEAICEadvSnow ) THEN |
IF ( SEAICEadvSnow ) THEN |
317 |
|
CToM<<< |
318 |
|
#ifdef SEAICE_ITD |
319 |
|
DO k=1,nITD |
320 |
|
DO j=1-OLy,sNy+OLy |
321 |
|
DO i=1-OLx,sNx+OLx |
322 |
|
HSNOW(i,j,bi,bj)=HSNOWITD(i,j,k,bi,bj) |
323 |
|
ENDDO |
324 |
|
ENDDO |
325 |
|
#endif |
326 |
|
C>>>ToM |
327 |
CALL SEAICE_ADVECTION( |
CALL SEAICE_ADVECTION( |
328 |
I GAD_SNOW, SEAICEadvSchSnow, |
I GAD_SNOW, SEAICEadvSchSnow, |
329 |
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), |
347 |
& ) |
& ) |
348 |
ENDDO |
ENDDO |
349 |
ENDDO |
ENDDO |
350 |
|
CToM<<< |
351 |
|
#ifdef SEAICE_ITD |
352 |
|
DO j=1-OLy,sNy+OLy |
353 |
|
DO i=1-OLx,sNx+OLx |
354 |
|
HSNOWITD(i,j,k,bi,bj)=HSNOW(i,j,bi,bj) |
355 |
|
ENDDO |
356 |
|
ENDDO |
357 |
|
ENDDO |
358 |
|
#endif |
359 |
|
C>>>ToM |
360 |
ENDIF |
ENDIF |
361 |
|
|
362 |
#ifdef SEAICE_VARIABLE_SALINITY |
#ifdef SEAICE_VARIABLE_SALINITY |
566 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
567 |
CADJ STORE heff = comlev1, key = ikey_dynamics, kind=isbyte |
CADJ STORE heff = comlev1, key = ikey_dynamics, kind=isbyte |
568 |
#endif |
#endif |
569 |
|
CToM<<< |
570 |
|
#ifdef SEAICE_ITD |
571 |
|
DO k=1,nITD |
572 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
573 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
574 |
|
DO j=1-OLy,sNy+OLy |
575 |
|
DO i=1-OLx,sNx+OLx |
576 |
|
HEFF(i,j,bi,bj)=HEFFITD(i,j,k,bi,bj) |
577 |
|
ENDDO |
578 |
|
ENDDO |
579 |
|
ENDDO |
580 |
|
ENDDO |
581 |
|
#endif |
582 |
|
C>>>ToM |
583 |
CALL ADVECT( uc, vc, hEff, fldNm1, HEFFM, myThid ) |
CALL ADVECT( uc, vc, hEff, fldNm1, HEFFM, myThid ) |
584 |
IF ( SEAICEdiffKhHeff .GT. 0. _d 0 ) THEN |
IF ( SEAICEdiffKhHeff .GT. 0. _d 0 ) THEN |
585 |
C- Add tendency due to diffusion |
C- Add tendency due to diffusion |
594 |
ENDDO |
ENDDO |
595 |
ENDDO |
ENDDO |
596 |
ENDIF |
ENDIF |
597 |
|
CToM<<< |
598 |
|
#ifdef SEAICE_ITD |
599 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
600 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
601 |
|
DO j=1-OLy,sNy+OLy |
602 |
|
DO i=1-OLx,sNx+OLx |
603 |
|
HEFFITD(i,j,k,bi,bj)=HEFF(i,j,bi,bj) |
604 |
|
ENDDO |
605 |
|
ENDDO |
606 |
|
ENDDO |
607 |
|
ENDDO |
608 |
|
ENDDO |
609 |
|
#endif |
610 |
|
C>>>ToM |
611 |
ENDIF |
ENDIF |
612 |
IF ( SEAICEadvArea ) THEN |
IF ( SEAICEadvArea ) THEN |
613 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
614 |
CADJ STORE area = comlev1, key = ikey_dynamics, kind=isbyte |
CADJ STORE area = comlev1, key = ikey_dynamics, kind=isbyte |
615 |
#endif |
#endif |
616 |
|
CToM<<< |
617 |
|
#ifdef SEAICE_ITD |
618 |
|
DO k=1,nITD |
619 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
620 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
621 |
|
DO j=1-OLy,sNy+OLy |
622 |
|
DO i=1-OLx,sNx+OLx |
623 |
|
AREA(i,j,bi,bj)=AREAITD(i,j,k,bi,bj) |
624 |
|
ENDDO |
625 |
|
ENDDO |
626 |
|
ENDDO |
627 |
|
ENDDO |
628 |
|
#endif |
629 |
|
C>>>ToM |
630 |
CALL ADVECT( uc, vc, area, fldNm1, HEFFM, myThid ) |
CALL ADVECT( uc, vc, area, fldNm1, HEFFM, myThid ) |
631 |
IF ( SEAICEdiffKhArea .GT. 0. _d 0 ) THEN |
IF ( SEAICEdiffKhArea .GT. 0. _d 0 ) THEN |
632 |
C- Add tendency due to diffusion |
C- Add tendency due to diffusion |
641 |
ENDDO |
ENDDO |
642 |
ENDDO |
ENDDO |
643 |
ENDIF |
ENDIF |
644 |
|
CToM<<< |
645 |
|
#ifdef SEAICE_ITD |
646 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
647 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
648 |
|
DO j=1-OLy,sNy+OLy |
649 |
|
DO i=1-OLx,sNx+OLx |
650 |
|
AREAITD(i,j,k,bi,bj)=AREA(i,j,bi,bj) |
651 |
|
ENDDO |
652 |
|
ENDDO |
653 |
|
ENDDO |
654 |
|
ENDDO |
655 |
|
ENDDO |
656 |
|
#endif |
657 |
|
C>>>ToM |
658 |
ENDIF |
ENDIF |
659 |
IF ( SEAICEadvSnow ) THEN |
IF ( SEAICEadvSnow ) THEN |
660 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
661 |
CADJ STORE hsnow = comlev1, key = ikey_dynamics, kind=isbyte |
CADJ STORE hsnow = comlev1, key = ikey_dynamics, kind=isbyte |
662 |
#endif |
#endif |
663 |
|
CToM<<< |
664 |
|
#ifdef SEAICE_ITD |
665 |
|
DO k=1,nITD |
666 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
667 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
668 |
|
DO j=1-OLy,sNy+OLy |
669 |
|
DO i=1-OLx,sNx+OLx |
670 |
|
HSNOW(i,j,bi,bj)=HSNOWITD(i,j,k,bi,bj) |
671 |
|
ENDDO |
672 |
|
ENDDO |
673 |
|
ENDDO |
674 |
|
ENDDO |
675 |
|
#endif |
676 |
|
C>>>ToM |
677 |
CALL ADVECT( uc, vc, HSNOW, fldNm1, HEFFM, myThid ) |
CALL ADVECT( uc, vc, HSNOW, fldNm1, HEFFM, myThid ) |
678 |
IF ( SEAICEdiffKhSnow .GT. 0. _d 0 ) THEN |
IF ( SEAICEdiffKhSnow .GT. 0. _d 0 ) THEN |
679 |
C- Add tendency due to diffusion |
C- Add tendency due to diffusion |
688 |
ENDDO |
ENDDO |
689 |
ENDDO |
ENDDO |
690 |
ENDIF |
ENDIF |
691 |
|
CToM<<< |
692 |
|
#ifdef SEAICE_ITD |
693 |
|
DO bj=myByLo(myThid),myByHi(myThid) |
694 |
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
695 |
|
DO j=1-OLy,sNy+OLy |
696 |
|
DO i=1-OLx,sNx+OLx |
697 |
|
HSNOWITD(i,j,k,bi,bj)=HSNOW(i,j,bi,bj) |
698 |
|
ENDDO |
699 |
|
ENDDO |
700 |
|
ENDDO |
701 |
|
ENDDO |
702 |
|
ENDDO |
703 |
|
#endif |
704 |
|
C>>>ToM |
705 |
ENDIF |
ENDIF |
706 |
|
|
707 |
#ifdef SEAICE_VARIABLE_SALINITY |
#ifdef SEAICE_VARIABLE_SALINITY |