54 |
C == Local variables == |
C == Local variables == |
55 |
C rhoKm1, rhoK :: Density at adjacent levels (common ref. level) |
C rhoKm1, rhoK :: Density at adjacent levels (common ref. level) |
56 |
C ConvectCount :: Convection mixing freq. counter. |
C ConvectCount :: Convection mixing freq. counter. |
57 |
INTEGER i, j, K, kTop, kBottom, kDir, kRef |
INTEGER i, j, K, kTop, kBottom, kDir, deltaK |
58 |
_RL rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
59 |
_RL rhoK (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL rhoK (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
60 |
_RL ConvectCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL ConvectCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
65 |
C-- Check to see if should convect now |
C-- Check to see if should convect now |
66 |
IF ( DIFFERENT_MULTIPLE(cAdjFreq,myTime,myTime-deltaTClock) ) THEN |
IF ( DIFFERENT_MULTIPLE(cAdjFreq,myTime,myTime-deltaTClock) ) THEN |
67 |
|
|
68 |
|
C-- Initialise counters |
69 |
|
kTop = 0 |
70 |
|
kBottom = 0 |
71 |
|
kDir = 0 |
72 |
|
deltaK = 0 |
73 |
|
|
74 |
C- Initialisation of Convection Counter |
C- Initialisation of Convection Counter |
75 |
DO K=1,Nr |
DO K=1,Nr |
76 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
101 |
#endif /* ALLOW_KPP */ |
#endif /* ALLOW_KPP */ |
102 |
|
|
103 |
IF ( buoyancyRelation .eq. 'OCEANIC' ) THEN |
IF ( buoyancyRelation .eq. 'OCEANIC' ) THEN |
104 |
kTop = 2 |
kTop = 2 |
105 |
kBottom = Nr |
kBottom = Nr |
106 |
kDir = 1 |
kDir = 1 |
107 |
|
deltaK = -1 |
108 |
ELSEIF ( buoyancyRelation .eq. 'OCEANICP' ) THEN |
ELSEIF ( buoyancyRelation .eq. 'OCEANICP' ) THEN |
109 |
kTop = Nr |
kTop = Nr |
110 |
kBottom = 2 |
kBottom = 2 |
111 |
kDir = -1 |
kDir = -1 |
112 |
|
deltaK = 0 |
113 |
ELSEIF ( buoyancyRelation .eq. 'ATMOSPHERIC' ) THEN |
ELSEIF ( buoyancyRelation .eq. 'ATMOSPHERIC' ) THEN |
114 |
kTop = Nr |
kTop = Nr |
115 |
kBottom = 2 |
kBottom = 2 |
116 |
kDir = -1 |
kDir = -1 |
117 |
|
deltaK = 0 |
118 |
ELSE |
ELSE |
119 |
STOP 'CONVECTIVE_ADJUSTMENT: We should never reach this point' |
STOP 'CONVECTIVE_ADJUSTMENT: We should never reach this point' |
120 |
ENDIF |
ENDIF |
122 |
C-- Loop over all *interior* layers |
C-- Loop over all *interior* layers |
123 |
DO K=kTop,kBottom,kDir |
DO K=kTop,kBottom,kDir |
124 |
|
|
|
IF ( buoyancyRelation .eq. 'OCEANIC' ) THEN |
|
|
kRef = k-1 |
|
|
ELSEIF ( buoyancyRelation .eq. 'OCEANICP' ) THEN |
|
|
kRef = k |
|
|
ELSEIF ( buoyancyRelation .eq. 'ATMOSPHERIC' ) THEN |
|
|
kRef = k |
|
|
ENDIF |
|
|
|
|
125 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
126 |
kkey = (ikey-1)*Nr + k |
kkey = (ikey-1)*Nr + k |
127 |
CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
129 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
130 |
C- Density of K-1 layer (above W(K)) reference to K-1 T-level |
C- Density of K-1 layer (above W(K)) reference to K-1 T-level |
131 |
CALL FIND_RHO( |
CALL FIND_RHO( |
132 |
I bi,bj,iMin,iMax,jMin,jMax,K-1,KRef, |
I bi,bj,iMin,iMax,jMin,jMax,K-1,K+deltaK, |
133 |
I theta,salt, |
I theta,salt, |
134 |
O rhoKm1, |
O rhoKm1, |
135 |
I myThid ) |
I myThid ) |
140 |
CADJ STORE salt (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ STORE salt (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte |
141 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
142 |
CALL FIND_RHO( |
CALL FIND_RHO( |
143 |
I bi,bj,iMin,iMax,jMin,jMax,K,KRef, |
I bi,bj,iMin,iMax,jMin,jMax,K,K+deltaK, |
144 |
I theta,salt, |
I theta,salt, |
145 |
O rhoK, |
O rhoK, |
146 |
I myThid ) |
I myThid ) |