1453 |
c written by: jan morzel, feb. 10, 1995 (converted from "sigma" version) |
c written by: jan morzel, feb. 10, 1995 (converted from "sigma" version) |
1454 |
c modified by: d. menemenlis, june 1998 : for use with MIT GCM UV |
c modified by: d. menemenlis, june 1998 : for use with MIT GCM UV |
1455 |
c |
c |
|
c 28 april 05: added computation of mixed layer depth KPPmld |
|
|
c for a deltaRho equivalent to a deltaTheta of 0.8 deg C |
|
1456 |
|
|
1457 |
c----------------------------------------------------------------------- |
c----------------------------------------------------------------------- |
1458 |
|
|
1490 |
_RL WORK1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL WORK1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
1491 |
_RL WORK2 (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL WORK2 (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
1492 |
_RL WORK3 (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL WORK3 (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
c KPPMLD - mixed layer depth based on density criterion |
|
|
_RL KPPMLD(1 :sNx ,1 :sNy ) |
|
|
#endif /* ALLOW_DIAGNOSTICS */ |
|
1493 |
|
|
1494 |
INTEGER I, J, K |
INTEGER I, J, K |
1495 |
INTEGER ikppkey, kkppkey |
INTEGER ikppkey, kkppkey |
1529 |
END DO |
END DO |
1530 |
END DO |
END DO |
1531 |
|
|
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
c work3 - density of t(1)-.8 & s(1 ) at depth 1 |
|
|
IF ( useDiagnostics ) THEN |
|
|
DO J = 1, sNy |
|
|
DO I = 1, sNx |
|
|
KPPMLD(I,J) = ABS(R_low(I,J,bi,bj)) |
|
|
WORK3 (I,J) = WORK1(I,J) - 0.8 _d 0 * WORK2(I,J) |
|
|
END DO |
|
|
END DO |
|
|
ENDIF |
|
|
#endif /* ALLOW_DIAGNOSTICS */ |
|
|
|
|
1532 |
c calculate alpha, beta, and gradients in interior layers |
c calculate alpha, beta, and gradients in interior layers |
1533 |
|
|
1534 |
CHPF$ INDEPENDENT, NEW (RHOK,RHOKM1,RHO1K,WORK1,WORK2) |
CHPF$ INDEPENDENT, NEW (RHOK,RHOKM1,RHO1K,WORK1,WORK2) |
1591 |
END DO |
END DO |
1592 |
END DO |
END DO |
1593 |
|
|
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
IF ( useDiagnostics ) THEN |
|
|
c work1 - density of t(k-1) & s(k-1) at depth 1 |
|
|
c work2 - density of t(k ) & s(k ) at depth 1 |
|
|
c work3 - density of t(1)-.8 & s(1 ) at depth 1 |
|
|
CALL FIND_RHO_2D( |
|
|
I 1, sNx, 1, sNy, 1, |
|
|
I theta(1-OLx,1-OLy,k-1,bi,bj), |
|
|
I salt (1-OLx,1-OLy,k-1,bi,bj), |
|
|
O WORK1, |
|
|
I k-1, bi, bj, myThid ) |
|
|
CALL FIND_RHO_2D( |
|
|
I 1, sNx, 1, sNy, 1, |
|
|
I theta(1-OLx,1-OLy,k,bi,bj), |
|
|
I salt (1-OLx,1-OLy,k,bi,bj), |
|
|
O WORK2, |
|
|
I k, bi, bj, myThid ) |
|
|
DO J = 1, sNy |
|
|
DO I = 1, sNx |
|
|
IF ( k .LE. klowC(I,J,bi,bj) .AND. |
|
|
& WORK1(I,J) .LT. WORK3(I,J) .AND. |
|
|
& WORK2(I,J) .GE. WORK3(I,J) ) THEN |
|
|
KPPMLD(I,J) = MIN ( KPPMLD(I,J), |
|
|
& ABS(((WORK3(I,J)-WORK1(I,J))*rC(k)+ |
|
|
& (WORK2(I,J)-WORK3(I,J))*rC(k-1))/ |
|
|
& (WORK2(I,J)-WORK1(I,J)))) |
|
|
ENDIF |
|
|
END DO |
|
|
END DO |
|
|
ENDIF |
|
|
#endif /* ALLOW_DIAGNOSTICS */ |
|
|
|
|
1594 |
END DO |
END DO |
1595 |
|
|
1596 |
c compute arrays for K = Nrp1 |
c compute arrays for K = Nrp1 |
1604 |
|
|
1605 |
#ifdef ALLOW_DIAGNOSTICS |
#ifdef ALLOW_DIAGNOSTICS |
1606 |
IF ( useDiagnostics ) THEN |
IF ( useDiagnostics ) THEN |
|
CALL DIAGNOSTICS_FILL(KPPmld,'KPPmld ',0,1,3,bi,bj,myThid) |
|
1607 |
CALL DIAGNOSTICS_FILL(DBSFC ,'KPPdbsfc',0,Nr,0,1,1,myThid) |
CALL DIAGNOSTICS_FILL(DBSFC ,'KPPdbsfc',0,Nr,0,1,1,myThid) |
1608 |
CALL DIAGNOSTICS_FILL(DBLOC ,'KPPdbloc',0,Nr,0,1,1,myThid) |
CALL DIAGNOSTICS_FILL(DBLOC ,'KPPdbloc',0,Nr,0,1,1,myThid) |
1609 |
ENDIF |
ENDIF |