| 162 | _RL     worka ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy                ) | _RL     worka ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy                ) | 
| 163 | integer work1 ( ibot:itop    , jbot:jtop                    ) | integer work1 ( ibot:itop    , jbot:jtop                    ) | 
| 164 | _KPP_RL work2 ( ibot:itop    , jbot:jtop                    ) | _KPP_RL work2 ( ibot:itop    , jbot:jtop                    ) | 
| 165 |  | _KPP_RL work3 ( ibot:itop    , jbot:jtop                    ) | 
| 166 | _KPP_RL ustar ( ibot:itop    , jbot:jtop                    ) | _KPP_RL ustar ( ibot:itop    , jbot:jtop                    ) | 
| 167 | _KPP_RL bo    ( ibot:itop    , jbot:jtop                    ) | _KPP_RL bo    ( ibot:itop    , jbot:jtop                    ) | 
| 168 | _KPP_RL bosol ( ibot:itop    , jbot:jtop                    ) | _KPP_RL bosol ( ibot:itop    , jbot:jtop                    ) | 
| 300 | END DO | END DO | 
| 301 | END DO | END DO | 
| 302 |  |  | 
| 303 |  | cph( | 
| 304 |  | cph  this avoids a single or double recomp./call of statekpp | 
| 305 |  | CADJ store work2              = comlev1_kpp, key = ikey | 
| 306 |  | #ifdef ALLOW_AUTODIFF_KPP_EXTENSIVE_STORE | 
| 307 |  | CADJ store dbloc, Ritop, ghat = comlev1_kpp, key = ikey | 
| 308 |  | CADJ store vddiff             = comlev1_kpp, key = ikey | 
| 309 |  | #endif | 
| 310 |  | cph) | 
| 311 |  |  | 
| 312 | c------------------------------------------------------------------------ | c------------------------------------------------------------------------ | 
| 313 | c     friction velocity, turbulent and radiative surface buoyancy forcing | c     friction velocity, turbulent and radiative surface buoyancy forcing | 
| 314 | c     ------------------------------------------------------------------- | c     ------------------------------------------------------------------- | 
| 315 | c     taux / rho = SurfaceTendencyU * delZ(1)                     (N/m^2) | c     taux / rho = SurfaceTendencyU * drF(1)                     (N/m^2) | 
| 316 | c     tauy / rho = SurfaceTendencyV * delZ(1)                     (N/m^2) | c     tauy / rho = SurfaceTendencyV * drF(1)                     (N/m^2) | 
| 317 | c     ustar = sqrt( sqrt( taux^2 + tauy^2 ) / rho )                 (m/s) | c     ustar = sqrt( sqrt( taux^2 + tauy^2 ) / rho )                (m/s) | 
| 318 | c     bo    = - g * ( alpha*SurfaceTendencyT + | c     bo    = - g * ( alpha*SurfaceTendencyT + | 
| 319 | c                     beta *SurfaceTendencyS ) * delZ(1) / rho  (m^2/s^3) | c                     beta *SurfaceTendencyS ) * drF(1) / rho  (m^2/s^3) | 
| 320 | c     bosol = - g * alpha * Qsw * delZ(1) / rho                 (m^2/s^3) | c     bosol = - g * alpha * Qsw * drF(1) / rho                 (m^2/s^3) | 
| 321 | c------------------------------------------------------------------------ | c------------------------------------------------------------------------ | 
| 322 |  |  | 
| 323 | c initialize arrays to zero | c initialize arrays to zero | 
| 333 | jp1 = j + 1 | jp1 = j + 1 | 
| 334 | DO i = imin, imax | DO i = imin, imax | 
| 335 | ip1 = i+1 | ip1 = i+1 | 
| 336 | tempVar1 = | work3(i,j) = | 
| 337 | &   (SurfaceTendencyU(i,j,bi,bj) + SurfaceTendencyU(ip1,j,bi,bj)) * | &   (SurfaceTendencyU(i,j,bi,bj) + SurfaceTendencyU(ip1,j,bi,bj)) * | 
| 338 | &   (SurfaceTendencyU(i,j,bi,bj) + SurfaceTendencyU(ip1,j,bi,bj)) + | &   (SurfaceTendencyU(i,j,bi,bj) + SurfaceTendencyU(ip1,j,bi,bj)) + | 
| 339 | &   (SurfaceTendencyV(i,j,bi,bj) + SurfaceTendencyV(i,jp1,bi,bj)) * | &   (SurfaceTendencyV(i,j,bi,bj) + SurfaceTendencyV(i,jp1,bi,bj)) * | 
| 340 | &   (SurfaceTendencyV(i,j,bi,bj) + SurfaceTendencyV(i,jp1,bi,bj)) | &   (SurfaceTendencyV(i,j,bi,bj) + SurfaceTendencyV(i,jp1,bi,bj)) | 
| 341 | if ( tempVar1 .lt. (phepsi*phepsi) ) then | END DO | 
| 342 | ustar(i,j) = SQRT( phepsi * p5 * delZ(1) ) | END DO | 
| 343 |  | cph( | 
| 344 |  | CADJ store work3 = comlev1_kpp, key = ikey | 
| 345 |  | cph) | 
| 346 |  | DO j = jmin, jmax | 
| 347 |  | jp1 = j + 1 | 
| 348 |  | DO i = imin, imax | 
| 349 |  | ip1 = i+1 | 
| 350 |  | if ( work3(i,j) .lt. (phepsi*phepsi) ) then | 
| 351 |  | ustar(i,j) = SQRT( phepsi * p5 * drF(1) ) | 
| 352 | else | else | 
| 353 | tempVar2 =  SQRT( tempVar1 ) * p5 * delZ(1) | tempVar2 =  SQRT( work3(i,j) ) * p5 * drF(1) | 
| 354 | ustar(i,j) = SQRT( tempVar2 ) | ustar(i,j) = SQRT( tempVar2 ) | 
| 355 | endif | endif | 
| 356 | bo(I,J) = - gravity * | bo(I,J) = - gravity * | 
| 357 | &       ( vddiff(I,J,1,1) * SurfaceTendencyT(i,j,bi,bj) + | &       ( vddiff(I,J,1,1) * SurfaceTendencyT(i,j,bi,bj) + | 
| 358 | &         vddiff(I,J,1,2) * SurfaceTendencyS(i,j,bi,bj) | &         vddiff(I,J,1,2) * SurfaceTendencyS(i,j,bi,bj) | 
| 359 | &       ) * | &       ) * | 
| 360 | &       delZ(1) / work2(I,J) | &       drF(1) / work2(I,J) | 
| 361 | bosol(I,J) = gravity * vddiff(I,J,1,1) * Qsw(i,j,bi,bj) * | bosol(I,J) = gravity * vddiff(I,J,1,1) * Qsw(i,j,bi,bj) * | 
| 362 | &       recip_Cp*recip_rhoNil*recip_dRf(1) * | &       recip_Cp*recip_rhoConst*recip_dRf(1) * | 
| 363 | &       delZ(1) / work2(I,J) | &       drF(1) / work2(I,J) | 
| 364 | END DO | END DO | 
| 365 | END DO | END DO | 
| 366 |  |  | 
| 367 |  | cph( | 
| 368 |  | CADJ store ustar = comlev1_kpp, key = ikey | 
| 369 |  | cph) | 
| 370 |  |  | 
| 371 | c------------------------------------------------------------------------ | c------------------------------------------------------------------------ | 
| 372 | c     velocity shear | c     velocity shear | 
| 373 | c     -------------- | c     -------------- | 
| 603 | END DO | END DO | 
| 604 | END DO | END DO | 
| 605 |  |  | 
| 606 |  | cph( | 
| 607 |  | #ifdef ALLOW_AUTODIFF_KPP_EXTENSIVE_STORE | 
| 608 |  | CADJ store dvsq, shsq = comlev1_kpp, key = ikey | 
| 609 |  | #endif | 
| 610 |  | cph) | 
| 611 |  |  | 
| 612 | c----------------------------------------------------------------------- | c----------------------------------------------------------------------- | 
| 613 | c     solve for viscosity, diffusivity, ghat, and hbl on "t-grid" | c     solve for viscosity, diffusivity, ghat, and hbl on "t-grid" | 
| 614 | c----------------------------------------------------------------------- | c----------------------------------------------------------------------- | 
| 631 |  |  | 
| 632 | CALL TIMER_STOP ('KPPMIX [KPP_CALC]', myThid) | CALL TIMER_STOP ('KPPMIX [KPP_CALC]', myThid) | 
| 633 |  |  | 
|  | #ifdef ALLOW_AUTODIFF_TAMC |  | 
|  | cph( storing not necessary |  | 
|  | cphCADJ STORE vddiff, ghat  = comlev1_kpp, key = ikey |  | 
|  | cph) |  | 
|  | #endif /* ALLOW_AUTODIFF_TAMC */ |  | 
|  |  |  | 
| 634 | c----------------------------------------------------------------------- | c----------------------------------------------------------------------- | 
| 635 | c     zero out land values and transfer to global variables | c     zero out land values and transfer to global variables | 
| 636 | c----------------------------------------------------------------------- | c----------------------------------------------------------------------- | 
| 678 | _EXCH_XYZ_R8(KPPdiffKzT , myThid ) | _EXCH_XYZ_R8(KPPdiffKzT , myThid ) | 
| 679 | #endif /* KPP_SMOOTH_DIFF */ | #endif /* KPP_SMOOTH_DIFF */ | 
| 680 |  |  | 
| 681 |  | cph( | 
| 682 |  | cph  crucial: this avoids full recomp./call of kppmix | 
| 683 |  | CADJ store KPPhbl = comlev1_kpp, key = ikey | 
| 684 |  | cph) | 
| 685 |  |  | 
| 686 | C     Compute fraction of solar short-wave flux penetrating to | C     Compute fraction of solar short-wave flux penetrating to | 
| 687 | C     the bottom of the mixing layer. | C     the bottom of the mixing layer. | 
| 688 | DO j=1-OLy,sNy+OLy | DO j=1-OLy,sNy+OLy |