--- MITgcm/model/src/calc_3d_diffusivity.F 2007/09/27 14:42:59 1.12 +++ MITgcm/model/src/calc_3d_diffusivity.F 2011/09/20 22:25:23 1.17 @@ -1,4 +1,4 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/model/src/calc_3d_diffusivity.F,v 1.12 2007/09/27 14:42:59 dimitri Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/model/src/calc_3d_diffusivity.F,v 1.17 2011/09/20 22:25:23 jmc Exp $ C $Name: $ #include "PACKAGES_CONFIG.h" @@ -36,7 +36,10 @@ #endif #ifdef ALLOW_PTRACERS #include "PTRACERS_SIZE.h" -#include "PTRACERS.h" +#include "PTRACERS_PARAMS.h" +#endif +#ifdef ALLOW_LONGSTEP +#include "LONGSTEP.h" #endif C !INPUT/OUTPUT PARAMETERS: @@ -82,12 +85,25 @@ #endif DO j = 1-Oly,sNy+Oly DO i = 1-Olx,sNx+Olx - KappaRTr(i,j,k) = +#ifdef ALLOW_LONGSTEP + IF ( trIdentity .GE. GAD_TR1) THEN + KappaRTr(i,j,k) = + & LS_IVDConvCount(i,j,k,bi,bj)*ivdc_kappa + & + KbryanLewis79 +#ifdef ALLOW_BL79_LAT_VARY + & + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj) +#endif + ELSE +#else + IF ( .TRUE. ) THEN +#endif /* ALLOW_LONGSTEP */ + KappaRTr(i,j,k) = & IVDConvCount(i,j,k,bi,bj)*ivdc_kappa & + KbryanLewis79 #ifdef ALLOW_BL79_LAT_VARY & + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj) #endif + ENDIF ENDDO ENDDO ENDDO @@ -96,8 +112,7 @@ DO j = 1-Oly,sNy+Oly DO i = 1-Olx,sNx+Olx KappaRTr(i,j,k) = KappaRTr(i,j,k) -#if (defined ALLOW_3D_DIFFKR || \ - (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))) +#ifdef ALLOW_3D_DIFFKR & + diffKr(i,j,k,bi,bj) #else & + diffKrNrT(k) @@ -110,8 +125,7 @@ DO j = 1-Oly, sNy+Oly DO i = 1-Olx, sNx+Olx KappaRTr(i,j,k) = KappaRTr(i,j,k) -#if (defined ALLOW_3D_DIFFKR || \ - (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))) +#ifdef ALLOW_3D_DIFFKR & + diffKr(i,j,k,bi,bj) #else & + diffKrNrS(k) @@ -120,16 +134,14 @@ ENDDO ENDDO #ifdef ALLOW_PTRACERS - ELSEIF ( trIdentity.GE.GAD_TR1 - & .AND. trIdentity.LT.GAD_TR1+PTRACERS_numInUse) THEN + ELSEIF ( trIdentity.GE.GAD_TR1) THEN iTr = trIdentity - GAD_TR1 + 1 DO k = 1,Nr DO j = 1-Oly, sNy+Oly DO i = 1-Olx, sNx+Olx KappaRTr(i,j,k) = KappaRTr(i,j,k) -#if (defined ALLOW_3D_DIFFKR || \ - (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))) +#ifdef ALLOW_3D_DIFFKR & + diffKr(i,j,k,bi,bj) #else & + PTRACERS_diffKrNr(k,iTr) @@ -156,27 +168,25 @@ I bi,bj,iMin,iMax,jMin,jMax,0,Nr, O KappaRTr, I myThid) - ELSE + ELSEIF (trIdentity.EQ.GAD_SALINITY) THEN CALL KPP_CALC_DIFF_S( I bi,bj,iMin,iMax,jMin,jMax,0,Nr, O KappaRTr, I myThid) +#ifdef ALLOW_PTRACERS + ELSEIF ( trIdentity.GE.GAD_TR1) THEN + iTr = trIdentity - GAD_TR1 + 1 + CALL KPP_CALC_DIFF_Ptr( + I bi,bj,iMin,iMax,jMin,jMax,0,Nr, + O KappaRTr, + I iTr, myThid ) +#endif /* ALLOW_PTRACERS */ + ELSE + WRITE(msgBuf,'(A,I4)') + & ' CALC_3D_DIFFUSIVITY: Invalid tracer Id: ',trIdentity + CALL PRINT_ERROR( msgBuf, myThid ) + STOP 'ABNORMAL END: S/R CALC_3D_DIFFUSIVITY' ENDIF -#if (defined ALLOW_PTRACERS && ! (defined ALLOW_3D_DIFFKR || \ - (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))) - IF ( trIdentity.GE.GAD_TR1 - & .AND. trIdentity.LT.GAD_TR1+PTRACERS_numInUse) THEN - iTr = trIdentity - GAD_TR1 + 1 - DO k = 1,Nr - DO j = 1-Oly, sNy+Oly - DO i = 1-Olx, sNx+Olx - KappaRTr(i,j,k) = KappaRTr(i,j,k) - & - diffKrNrS(k) + PTRACERS_diffKrNr(k,iTr) - ENDDO - ENDDO - ENDDO - ENDIF -#endif ENDIF #endif /* ALLOW_KPP */ @@ -185,7 +195,7 @@ CALL GMREDI_CALC_DIFF( I bi,bj,iMin,iMax,jMin,jMax,0,Nr, U KappaRTr, - I myThid) + I trIdentity,myThid) ENDIF #endif @@ -217,8 +227,8 @@ #endif C- Apply mask to vertical diffusivity -C jmc: don't have the impression that masking is needed -C but could be removed later if it's the case. +C jmc: do not have the impression that masking is needed +C but could be removed later if it is the case. c DO j = 1-Oly, sNy+Oly c DO i = 1-Olx, sNx+Olx c KappaRTr(i,j,k) = maskUp(i,j)*KappaRTr(i,j,k)