136 |
|
|
137 |
_RL minusone |
_RL minusone |
138 |
parameter( minusone=-1.0) |
parameter( minusone=-1.0) |
139 |
_KPP_RL p0 , p5 , p25 , p125 , p0625 |
_RL p0 , p5 , p25 , p125 , p0625 |
140 |
parameter( p0=0.0, p5=0.5, p25=0.25, p125=0.125, p0625=0.0625 ) |
parameter( p0=0.0, p5=0.5, p25=0.25, p125=0.125, p0625=0.0625 ) |
141 |
integer imin ,imax ,jmin ,jmax |
integer imin ,imax ,jmin ,jmax |
142 |
parameter(imin=2-OLx,imax=sNx+OLx-1,jmin=2-OLy,jmax=sNy+OLy-1) |
parameter(imin=2-OLx,imax=sNx+OLx-1,jmin=2-OLy,jmax=sNy+OLy-1) |
165 |
c uRef (nx,ny) - Reference zonal velocity (m/s) |
c uRef (nx,ny) - Reference zonal velocity (m/s) |
166 |
c vRef (nx,ny) - Reference meridional velocity (m/s) |
c vRef (nx,ny) - Reference meridional velocity (m/s) |
167 |
|
|
168 |
_RL worka ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
integer work1 ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
169 |
integer work1 ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
_RL worka ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
170 |
_KPP_RL work2 ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
_RL work2 ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
171 |
_KPP_RL work3 ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
_RL work3 ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
172 |
_KPP_RL ustar ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
_RL ustar ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
173 |
_KPP_RL bo ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
_RL bo ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
174 |
_KPP_RL bosol ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
_RL bosol ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
175 |
_KPP_RL shsq ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr ) |
_RL shsq ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr ) |
176 |
_KPP_RL dVsq ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr ) |
_RL dVsq ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr ) |
177 |
_KPP_RL dbloc ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr ) |
_RL dbloc ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr ) |
178 |
_KPP_RL Ritop ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr ) |
_RL Ritop ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr ) |
179 |
_KPP_RL vddiff( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, 0:Nrp1, mdiff ) |
_RL vddiff( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, 0:Nrp1, mdiff ) |
180 |
_KPP_RL ghat ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr ) |
_RL ghat ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr ) |
181 |
_KPP_RL hbl ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
_RL hbl ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
182 |
cph( |
cph( |
183 |
_KPP_RL TTALPHA( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nrp1 ) |
_RL TTALPHA( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nrp1 ) |
184 |
_KPP_RL SSBETA ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nrp1 ) |
_RL SSBETA ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nrp1 ) |
185 |
cph) |
cph) |
186 |
#ifdef KPP_ESTIMATE_UREF |
#ifdef KPP_ESTIMATE_UREF |
187 |
_KPP_RL z0 ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
_RL z0 ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
188 |
_KPP_RL zRef ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
_RL zRef ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
189 |
_KPP_RL uRef ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
_RL uRef ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
190 |
_KPP_RL vRef ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
_RL vRef ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
191 |
#endif /* KPP_ESTIMATE_UREF */ |
#endif /* KPP_ESTIMATE_UREF */ |
192 |
|
|
193 |
_KPP_RL tempvar2 |
_RL tempvar2 |
194 |
integer i, j, k, kp1, km1, im1, ip1, jm1, jp1 |
integer i, j, k, kp1, km1, im1, ip1, jm1, jp1 |
195 |
|
|
196 |
#ifdef KPP_ESTIMATE_UREF |
#ifdef KPP_ESTIMATE_UREF |
197 |
_KPP_RL tempvar1, dBdz1, dBdz2, ustarX, ustarY |
_RL tempvar1, dBdz1, dBdz2, ustarX, ustarY |
198 |
#endif |
#endif |
199 |
|
|
200 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
272 |
c levels therefore k+1 mask must be used |
c levels therefore k+1 mask must be used |
273 |
|
|
274 |
DO k = 1, Nr-1 |
DO k = 1, Nr-1 |
275 |
CALL KPP_SMOOTH_HORIZ ( |
CALL SMOOTH_HORIZ ( |
276 |
I k+1, bi, bj, |
I k+1, bi, bj, |
277 |
U ghat (1-OLx,1-OLy,k) ) |
U ghat (1-OLx,1-OLy,k) ) |
278 |
ENDDO |
ENDDO |
281 |
|
|
282 |
#ifdef KPP_SMOOTH_DENS |
#ifdef KPP_SMOOTH_DENS |
283 |
c horizontally smooth density related quantities with 121 filters |
c horizontally smooth density related quantities with 121 filters |
284 |
CALL KPP_SMOOTH_HORIZ ( |
CALL SMOOTH_HORIZ ( |
285 |
I 1, bi, bj, |
I 1, bi, bj, |
286 |
U work2 ) |
U work2 ) |
287 |
DO k = 1, Nr |
DO k = 1, Nr |
288 |
CALL KPP_SMOOTH_HORIZ ( |
CALL SMOOTH_HORIZ ( |
289 |
I k+1, bi, bj, |
I k+1, bi, bj, |
290 |
U dbloc (1-OLx,1-OLy,k) ) |
U dbloc (1-OLx,1-OLy,k) ) |
291 |
CALL KPP_SMOOTH_HORIZ ( |
CALL SMOOTH_HORIZ ( |
292 |
I k, bi, bj, |
I k, bi, bj, |
293 |
U Ritop (1-OLx,1-OLy,k) ) |
U Ritop (1-OLx,1-OLy,k) ) |
294 |
CALL KPP_SMOOTH_HORIZ ( |
CALL SMOOTH_HORIZ ( |
295 |
I k, bi, bj, |
I k, bi, bj, |
296 |
U TTALPHA(1-OLx,1-OLy,k) ) |
U TTALPHA(1-OLx,1-OLy,k) ) |
297 |
CALL KPP_SMOOTH_HORIZ ( |
CALL SMOOTH_HORIZ ( |
298 |
I k, bi, bj, |
I k, bi, bj, |
299 |
U SSBETA(1-OLx,1-OLy,k) ) |
U SSBETA(1-OLx,1-OLy,k) ) |
300 |
ENDDO |
ENDDO |