33 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
34 |
# include "tamc.h" |
# include "tamc.h" |
35 |
# include "tamc_keys.h" |
# include "tamc_keys.h" |
|
# ifdef ALLOW_KPP |
|
|
# include "KPP.h" |
|
|
# endif |
|
36 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
37 |
|
|
38 |
|
#ifdef ALLOW_KPP |
39 |
|
# include "KPP.h" |
40 |
|
#endif |
41 |
|
|
42 |
C == Routine arguments == |
C == Routine arguments == |
43 |
C myTime - Current time in simulation |
C myTime - Current time in simulation |
44 |
C myIter - Current iteration number in simulation |
C myIter - Current iteration number in simulation |
199 |
ikey = 1 |
ikey = 1 |
200 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
201 |
|
|
202 |
|
|
203 |
C-- Set up work arrays with valid (i.e. not NaN) values |
C-- Set up work arrays with valid (i.e. not NaN) values |
204 |
C These inital values do not alter the numerical results. They |
C These inital values do not alter the numerical results. They |
205 |
C just ensure that all memory references are to valid floating |
C just ensure that all memory references are to valid floating |
306 |
jMin = 1-OLy+1 |
jMin = 1-OLy+1 |
307 |
jMax = sNy+OLy |
jMax = sNy+OLy |
308 |
|
|
|
|
|
309 |
k = 1 |
k = 1 |
310 |
BOTTOM_LAYER = k .EQ. Nr |
BOTTOM_LAYER = k .EQ. Nr |
311 |
|
|
350 |
#endif |
#endif |
351 |
ENDIF |
ENDIF |
352 |
#endif |
#endif |
353 |
|
|
354 |
C-- Density of 1st level (below W(1)) reference to level 1 |
C-- Density of 1st level (below W(1)) reference to level 1 |
355 |
#ifdef INCLUDE_FIND_RHO_CALL |
#ifdef INCLUDE_FIND_RHO_CALL |
356 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
380 |
I myThid ) |
I myThid ) |
381 |
#endif |
#endif |
382 |
|
|
|
#ifdef INCLUDE_CONVECT_CALL |
|
|
|
|
383 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
384 |
CADJ STORE rhoKm1(:,:) = comlev1_bibj, key = ikey, byte = isbyte |
CADJ STORE rhoKm1(:,:) = comlev1_bibj, key = ikey, byte = isbyte |
385 |
CADJ STORE rhoKp1(:,:) = comlev1_bibj, key = ikey, byte = isbyte |
CADJ STORE rhoKp1(:,:) = comlev1_bibj, key = ikey, byte = isbyte |
386 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
387 |
|
|
388 |
|
#ifdef INCLUDE_CONVECT_CALL |
389 |
|
|
390 |
CALL CONVECT( |
CALL CONVECT( |
391 |
I bi,bj,iMin,iMax,jMin,jMax,k+1,rhoKm1,rhoKp1, |
I bi,bj,iMin,iMax,jMin,jMax,k+1,rhoKm1,rhoKp1, |
392 |
U ConvectCount, |
U ConvectCount, |
432 |
I myThid ) |
I myThid ) |
433 |
|
|
434 |
#ifdef ALLOW_GMREDI |
#ifdef ALLOW_GMREDI |
435 |
|
IF ( useGMRedi ) THEN |
436 |
CALL GRAD_SIGMA( |
CALL GRAD_SIGMA( |
437 |
I bi, bj, iMin, iMax, jMin, jMax, k, |
I bi, bj, iMin, iMax, jMin, jMax, k, |
438 |
I rhoKm1, rhoKm1, rhoKm1, |
I rhoKm1, rhoKm1, rhoKm1, |
439 |
O sigmaX, sigmaY, sigmaR, |
O sigmaX, sigmaY, sigmaR, |
440 |
I myThid ) |
I myThid ) |
441 |
|
ENDIF |
442 |
#endif |
#endif |
443 |
|
|
444 |
C-- Start of downward loop |
C-- Start of downward loop |
488 |
I myThid ) |
I myThid ) |
489 |
|
|
490 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
491 |
CADJ STORE rhoK(:,:) = comlev1_bibj_k, key = kkey, byte = isbyte |
cph( storing not necessary |
492 |
|
cphCADJ STORE rhoK(:,:) = comlev1_bibj_k, key = kkey, byte = isbyte |
493 |
|
cph) |
494 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
495 |
#endif |
#endif |
496 |
|
|
581 |
|
|
582 |
|
|
583 |
#ifdef ALLOW_GMREDI |
#ifdef ALLOW_GMREDI |
584 |
|
IF ( useGMRedi ) THEN |
585 |
CALL GRAD_SIGMA( |
CALL GRAD_SIGMA( |
586 |
I bi, bj, iMin, iMax, jMin, jMax, k, |
I bi, bj, iMin, iMax, jMin, jMax, k, |
587 |
I rhoK, rhotmp, rhoK, |
I rhoK, rhotmp, rhoK, |
588 |
O sigmaX, sigmaY, sigmaR, |
O sigmaX, sigmaY, sigmaR, |
589 |
I myThid ) |
I myThid ) |
590 |
|
ENDIF |
591 |
#endif |
#endif |
592 |
|
|
593 |
DO J=jMin,jMax |
DO J=jMin,jMax |
602 |
C-- end of k loop |
C-- end of k loop |
603 |
ENDDO |
ENDDO |
604 |
|
|
605 |
|
C Determines forcing terms based on external fields |
606 |
|
C relaxation terms, etc. |
607 |
|
CALL EXTERNAL_FORCING_SURF( |
608 |
|
I bi, bj, iMin, iMax, jMin, jMax, |
609 |
|
I myThid ) |
610 |
|
|
611 |
#ifdef ALLOW_GMREDI |
#ifdef ALLOW_GMREDI |
612 |
IF (useGMRedi) THEN |
IF (useGMRedi) THEN |
613 |
DO k=1, Nr |
DO k=1, Nr |
637 |
ENDDO |
ENDDO |
638 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
639 |
|
|
|
|
|
640 |
#ifdef ALLOW_KPP |
#ifdef ALLOW_KPP |
641 |
C-- Compute KPP mixing coefficients |
C-- Compute KPP mixing coefficients |
642 |
IF (useKPP) THEN |
IF (useKPP) THEN |
643 |
|
|
644 |
CALL TIMER_START('KPP_CALC [DYNAMICS]', myThid) |
CALL TIMER_START('KPP_CALC [DYNAMICS]', myThid) |
645 |
CALL KPP_CALC( |
CALL KPP_CALC( |
646 |
I bi, bj, myTime, myThid ) |
I bi, bj, myTime, myThid ) |
647 |
CALL TIMER_STOP ('KPP_CALC [DYNAMICS]', myThid) |
CALL TIMER_STOP ('KPP_CALC [DYNAMICS]', myThid) |
648 |
|
|
649 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
776 |
CADJ & , key = kkey, byte = isbyte |
CADJ & , key = kkey, byte = isbyte |
777 |
CADJ STORE gvnm1(:,:,k,bi,bj) = comlev1_bibj_k |
CADJ STORE gvnm1(:,:,k,bi,bj) = comlev1_bibj_k |
778 |
CADJ & , key = kkey, byte = isbyte |
CADJ & , key = kkey, byte = isbyte |
779 |
CADJ STORE gwnm1(:,:,k,bi,bj) = comlev1_bibj_k, key = kkey, byte = isbyte |
CADJ STORE gwnm1(:,:,k,bi,bj) = comlev1_bibj_k |
780 |
|
CADJ & , key = kkey, byte = isbyte |
781 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
782 |
CADJ & |
|
783 |
CALL APPLY_OBCS2( bi, bj, k, myThid ) |
CALL APPLY_OBCS2( bi, bj, k, myThid ) |
784 |
END IF |
END IF |
785 |
#endif |
#endif |
898 |
ENDDO |
ENDDO |
899 |
ENDDO |
ENDDO |
900 |
|
|
|
|
|
901 |
RETURN |
RETURN |
902 |
END |
END |