Changeset 457 for trunk/NEMO/OPA_SRC/TRA/trabbl.F90
- Timestamp:
- 2006-05-10T19:01:19+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/TRA/trabbl.F90
r428 r457 31 31 !! * Shared module variables 32 32 REAL(wp), PUBLIC :: & !!: * bbl namelist * 33 atrbbl = 1.e+3 !: lateral coeff. for BBL scheme (m2/s) 34 #if defined key_trabbl_dif 33 atrbbl = 1.e+3 !: lateral coeff. for bottom boundary 34 ! ! layer scheme (m2/s) 35 # if defined key_trabbl_dif 35 36 LOGICAL, PUBLIC, PARAMETER :: & !: 36 37 lk_trabbl_dif = .TRUE. !: diffusive bottom boundary layer flag 37 # else38 # else 38 39 LOGICAL, PUBLIC, PARAMETER :: & !: 39 40 lk_trabbl_dif = .FALSE. !: diffusive bottom boundary layer flag 40 # endif41 # endif 41 42 42 43 # if defined key_trabbl_adv … … 114 115 USE oce, ONLY : ztdta => ua, & ! use ua as 3D workspace 115 116 ztdsa => va ! use va as 3D workspace 116 USE eosbn2 , ONLY : neos! type of equation of state117 USE eosbn2 , ONLY : neos ! type of equation of state 117 118 118 119 !! * Arguments … … 123 124 INTEGER :: ik 124 125 INTEGER :: ii0, ii1, ij0, ij1 ! temporary integers 125 # if defined key_partial_steps126 126 INTEGER :: iku1, iku2, ikv1,ikv2 ! temporary intergers 127 127 REAL(wp) :: ze3u, ze3v ! temporary scalars 128 # else129 128 INTEGER :: iku, ikv 130 # endif131 129 REAL(wp) :: & 132 130 zsign, zt, zs, zh, zalbet, & ! temporary scalars … … 172 170 ! mbathy= number of w-level, minimum value=1 (cf dommsk.F) 173 171 174 # if defined key_vectopt_loop && ! defined key_ autotasking172 # if defined key_vectopt_loop && ! defined key_mpp_omp 175 173 jj = 1 176 174 DO ji = 1, jpij ! vector opt. (forced unrolling) … … 185 183 zsbb(ji,jj) = sb(ji,jj,ik) * tmask(ji,jj,1) 186 184 zdep(ji,jj) = fsdept(ji,jj,ik) ! depth of the ocean bottom T-level 187 # if ! defined key_vectopt_loop || defined key_autotasking 188 END DO 189 # endif 190 END DO 191 192 # if defined key_partial_steps 193 ! partial steps correction 194 # if defined key_vectopt_loop && ! defined key_autotasking 195 jj = 1 196 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) 185 # if ! defined key_vectopt_loop || defined key_mpp_omp 186 END DO 187 # endif 188 END DO 189 190 IF( ln_zps ) THEN ! partial steps correction 191 # if defined key_vectopt_loop && ! defined key_mpp_omp 192 jj = 1 193 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) 194 # else 195 DO jj = 1, jpjm1 196 DO ji = 1, jpim1 197 # endif 198 iku1 = MAX( mbathy(ji+1,jj )-1, 1 ) 199 iku2 = MAX( mbathy(ji ,jj )-1, 1 ) 200 ikv1 = MAX( mbathy(ji ,jj+1)-1, 1 ) 201 ikv2 = MAX( mbathy(ji ,jj )-1, 1 ) 202 ze3u = MIN( fse3u(ji,jj,iku1), fse3u(ji,jj,iku2) ) 203 ze3v = MIN( fse3v(ji,jj,ikv1), fse3v(ji,jj,ikv2) ) 204 zahu(ji,jj) = atrbbl * e2u(ji,jj) * ze3u / e1u(ji,jj) * umask(ji,jj,1) 205 zahv(ji,jj) = atrbbl * e1v(ji,jj) * ze3v / e2v(ji,jj) * vmask(ji,jj,1) 206 # if ! defined key_vectopt_loop || defined key_mpp_omp 207 END DO 208 # endif 209 END DO 210 ELSE ! z-coordinate - full steps or s-coordinate 211 # if defined key_vectopt_loop && ! defined key_mpp_omp 212 jj = 1 213 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) 197 214 # else 198 DO jj = 1, jpjm1199 DO ji = 1, jpim1215 DO jj = 1, jpjm1 216 DO ji = 1, jpim1 200 217 # endif 201 iku1 = MAX( mbathy(ji+1,jj )-1, 1 ) 202 iku2 = MAX( mbathy(ji ,jj )-1, 1 ) 203 ikv1 = MAX( mbathy(ji ,jj+1)-1, 1 ) 204 ikv2 = MAX( mbathy(ji ,jj )-1, 1 ) 205 ze3u = MIN( fse3u(ji,jj,iku1), fse3u(ji,jj,iku2) ) 206 ze3v = MIN( fse3v(ji,jj,ikv1), fse3v(ji,jj,ikv2) ) 207 zahu(ji,jj) = atrbbl * e2u(ji,jj) * ze3u / e1u(ji,jj) * umask(ji,jj,1) 208 zahv(ji,jj) = atrbbl * e1v(ji,jj) * ze3v / e2v(ji,jj) * vmask(ji,jj,1) 209 # if ! defined key_vectopt_loop || defined key_autotasking 210 END DO 218 iku = mbku(ji,jj) 219 ikv = mbkv(ji,jj) 220 zahu(ji,jj) = atrbbl * e2u(ji,jj) * fse3u(ji,jj,iku) / e1u(ji,jj) * umask(ji,jj,1) 221 zahv(ji,jj) = atrbbl * e1v(ji,jj) * fse3v(ji,jj,ikv) / e2v(ji,jj) * vmask(ji,jj,1) 222 # if ! defined key_vectopt_loop || defined key_mpp_omp 223 END DO 211 224 # endif 212 END DO 213 # else 214 # if defined key_vectopt_loop && ! defined key_autotasking 215 jj = 1 216 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) 217 # else 218 DO jj = 1, jpjm1 219 DO ji = 1, jpim1 220 # endif 221 iku = mbku(ji,jj) 222 ikv = mbkv(ji,jj) 223 zahu(ji,jj) = atrbbl * e2u(ji,jj) * fse3u(ji,jj,iku) / e1u(ji,jj) * umask(ji,jj,1) 224 zahv(ji,jj) = atrbbl * e1v(ji,jj) * fse3v(ji,jj,ikv) / e2v(ji,jj) * vmask(ji,jj,1) 225 # if ! defined key_vectopt_loop || defined key_autotasking 226 END DO 227 # endif 228 END DO 229 # endif 225 END DO 226 ENDIF 230 227 231 228 ! 1. Criteria of additional bottom diffusivity: grad(rho).grad(h)<0 … … 238 235 CASE ( 0 ) ! 0 :Jackett and McDougall (1994) formulation 239 236 240 # if defined key_vectopt_loop && ! defined key_ autotasking237 # if defined key_vectopt_loop && ! defined key_mpp_omp 241 238 jj = 1 242 239 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) … … 257 254 zsign = SIGN( 0.5, - zgdrho * ( zdep(ji+1,jj) - zdep(ji,jj) ) ) 258 255 zki(ji,jj) = ( 0.5 - zsign ) * zahu(ji,jj) 259 # if ! defined key_vectopt_loop || defined key_ autotasking260 END DO 261 # endif 262 END DO 263 264 # if defined key_vectopt_loop && ! defined key_ autotasking256 # if ! defined key_vectopt_loop || defined key_mpp_omp 257 END DO 258 # endif 259 END DO 260 261 # if defined key_vectopt_loop && ! defined key_mpp_omp 265 262 jj = 1 266 263 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) … … 281 278 zsign = sign( 0.5, -zgdrho * ( zdep(ji,jj+1) - zdep(ji,jj) ) ) 282 279 zkj(ji,jj) = ( 0.5 - zsign ) * zahv(ji,jj) 283 # if ! defined key_vectopt_loop || defined key_ autotasking280 # if ! defined key_vectopt_loop || defined key_mpp_omp 284 281 END DO 285 282 # endif … … 288 285 CASE ( 1 ) ! Linear formulation function of temperature only 289 286 ! 290 # if defined key_vectopt_loop && ! defined key_ autotasking287 # if defined key_vectopt_loop && ! defined key_mpp_omp 291 288 jj = 1 292 289 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) … … 300 297 zsign = SIGN( 0.5, - zgdrho * ( zdep(ji+1,jj) - zdep(ji,jj) ) ) 301 298 zki(ji,jj) = ( 0.5 - zsign ) * zahu(ji,jj) 302 # if ! defined key_vectopt_loop || defined key_ autotasking303 END DO 304 # endif 305 END DO 306 307 # if defined key_vectopt_loop && ! defined key_ autotasking299 # if ! defined key_vectopt_loop || defined key_mpp_omp 300 END DO 301 # endif 302 END DO 303 304 # if defined key_vectopt_loop && ! defined key_mpp_omp 308 305 jj = 1 309 306 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) … … 317 314 zsign = sign( 0.5, -zgdrho * ( zdep(ji,jj+1) - zdep(ji,jj) ) ) 318 315 zkj(ji,jj) = ( 0.5 - zsign ) * zahv(ji,jj) 319 # if ! defined key_vectopt_loop || defined key_ autotasking316 # if ! defined key_vectopt_loop || defined key_mpp_omp 320 317 END DO 321 318 # endif … … 341 338 342 339 ! first derivative (gradient) 343 # if defined key_vectopt_loop && ! defined key_ autotasking340 # if defined key_vectopt_loop && ! defined key_mpp_omp 344 341 jj = 1 345 342 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) … … 353 350 zky(ji,jj) = zkj(ji,jj) * ( ztbb(ji,jj+1) - ztbb(ji,jj) ) 354 351 zkw(ji,jj) = zkj(ji,jj) * ( zsbb(ji,jj+1) - zsbb(ji,jj) ) 355 # if ! defined key_vectopt_loop || defined key_ autotasking352 # if ! defined key_vectopt_loop || defined key_mpp_omp 356 353 END DO 357 354 # endif … … 391 388 392 389 ! second derivative (divergence) and add to the general tracer trend 393 # if defined key_vectopt_loop && ! defined key_ autotasking390 # if defined key_vectopt_loop && ! defined key_mpp_omp 394 391 jj = 1 395 392 DO ji = jpi+2, jpij-jpi-1 ! vector opt. (forced unrolling) … … 406 403 ta(ji,jj,ik) = ta(ji,jj,ik) + zta 407 404 sa(ji,jj,ik) = sa(ji,jj,ik) + zsa 408 # if ! defined key_vectopt_loop || defined key_ autotasking405 # if ! defined key_vectopt_loop || defined key_mpp_omp 409 406 END DO 410 407 # endif … … 414 411 ! BBL lateral diffusion tracers trends 415 412 IF( l_trdtra ) THEN 416 # if defined key_vectopt_loop && ! defined key_ autotasking413 # if defined key_vectopt_loop && ! defined key_mpp_omp 417 414 jj = 1 418 415 DO ji = jpi+2, jpij-jpi-1 ! vector opt. (forced unrolling) … … 424 421 tldfbbl(ji,jj) = ta(ji,jj,ik) - ztdta(ji,jj,ik) 425 422 sldfbbl(ji,jj) = sa(ji,jj,ik) - ztdsa(ji,jj,ik) 426 # if ! defined key_vectopt_loop || defined key_ autotasking423 # if ! defined key_vectopt_loop || defined key_mpp_omp 427 424 END DO 428 425 # endif
Note: See TracChangeset
for help on using the changeset viewer.