Changeset 162 for trunk/NEMO/OPA_SRC
- Timestamp:
- 2004-11-03T15:47:11+01:00 (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90
r147 r162 190 190 !! * local variables 191 191 INTEGER :: ji, jj, jk, jn ! dummy loop indices 192 INTEGER :: ii0, ii1, ij0, ij1 ! temporary integers 192 193 INTEGER :: inum = 11 ! temporary logical unit 193 194 INTEGER :: iost, iim, ijm … … 196 197 INTEGER, DIMENSION(jpi , jpj ) :: icof 197 198 198 REAL(wp) :: zahmeq, zcoff, zcoft, zmsk 199 REAL(wp) :: & 200 zahmeq, zcoff, zcoft, zmsk, & ! ??? 201 zemax, zemin, zeref, zahmm 202 REAL(wp), DIMENSION(jpi,jpj) :: zahm0 199 203 REAL(wp), DIMENSION(jpk) :: zcoef 200 204 … … 288 292 ! symmetric in the south hemisphere) 289 293 290 IF( jp_cfg == 4 ) zahmeq = 5.0 * aht0 291 IF( jp_cfg == 2 ) zahmeq = aht0 294 IF( jp_cfg == 4 ) THEN 295 zahmeq = 5.0 * aht0 296 zahmm = min( 160000.0, ahm0) 297 zemax = MAXVAL ( e1t(:,:) * e2t(:,:), tmask(:,:,1) .GE. 0.5 ) 298 zemin = MINVAL ( e1t(:,:) * e2t(:,:), tmask(:,:,1) .GE. 0.5 ) 299 zeref = MAXVAL ( e1t(:,:) * e2t(:,:), & 300 & tmask(:,:,1) .GE. 0.5 .AND. ABS(gphit(:,:)) .GT. 50. ) 301 302 DO jj = 1, jpj 303 DO ji = 1, jpi 304 zmsk = e1t(ji,jj) * e2t(ji,jj) 305 IF( abs(gphit(ji,jj)) .LE. 15 ) THEN 306 zahm0(ji,jj) = ahm0 307 ELSE 308 IF( zmsk .GE. zeref ) THEN 309 zahm0(ji,jj) = ahm0 310 ELSE 311 zahm0(ji,jj) = zahmm + (ahm0-zahmm)*(1.0 - & 312 & cos((rpi*0.5*(zmsk-zemin)/(zeref-zemin)))) 313 ENDIF 314 ENDIF 315 END DO 316 END DO 317 ENDIF 318 319 IF( jp_cfg == 2 ) THEN 320 zahmeq = aht0 321 zahmm = ahm0 322 zahm0(:,:) = ahm0 323 ENDIF 292 324 293 325 DO jj = 1, jpj 294 326 DO ji = 1, jpi 295 327 IF( ABS(gphif(ji,jj)) >= 20.) THEN 296 ahm2(ji,jj,1) = ahm0328 ahm2(ji,jj,1) = zahm0(ji,jj) 297 329 ELSEIF( ABS(gphif(ji,jj)) <= 2.5) THEN 298 330 ahm2(ji,jj,1) = zahmeq 299 331 ELSE 300 ahm2(ji,jj,1) = zahmeq &301 + (ahm0-zahmeq)/2.*(1.-COS( rad*(ABS(gphif(ji,jj))-2.5)*180./17.5 ) )332 ahm2(ji,jj,1) = zahmeq + (zahm0(ji,jj)-zahmeq)/2. & 333 & *(1.-COS( rad*(ABS(gphif(ji,jj))-2.5)*180./17.5 ) ) 302 334 ENDIF 303 335 IF( ABS(gphit(ji,jj)) >= 20.) THEN 304 ahm1(ji,jj,1) = ahm0336 ahm1(ji,jj,1) = zahm0(ji,jj) 305 337 ELSEIF( ABS(gphit(ji,jj)) <= 2.5) THEN 306 338 ahm1(ji,jj,1) = zahmeq 307 339 ELSE 308 ahm1(ji,jj,1) = zahmeq &309 + (ahm0-zahmeq)/2.*(1.-COS( rad*(ABS(gphit(ji,jj))-2.5)*180./17.5 ) )340 ahm1(ji,jj,1) = zahmeq + (zahm0(ji,jj)-zahmeq)/2. & 341 & *(1.-COS( rad*(ABS(gphit(ji,jj))-2.5)*180./17.5 ) ) 310 342 ENDIF 311 343 END DO … … 317 349 DO ji = 1, jpim1 318 350 zcoft = float( icof(ji,jj) ) / 100. 319 ahm1(ji,jj,1) = zcoft * ahm0+ (1.-zcoft) * ahm1(ji,jj,1)351 ahm1(ji,jj,1) = zcoft * zahm0(ji,jj) + (1.-zcoft) * ahm1(ji,jj,1) 320 352 END DO 321 353 END DO … … 331 363 / (zmsk * 100.) 332 364 ENDIF 333 ahm2(ji,jj,1) = zcoff * ahm0+ (1.-zcoff) * ahm2(ji,jj,1)365 ahm2(ji,jj,1) = zcoff * zahm0(ji,jj) + (1.-zcoff) * ahm2(ji,jj,1) 334 366 END DO 335 367 END DO … … 350 382 351 383 DO jk = 2, jpk 352 ahm1(:,:,jk) = MIN( ahm0, zcoef(jk) * ahm1(:,:,1) ) 353 ahm2(:,:,jk) = MIN( ahm0, zcoef(jk) * ahm2(:,:,1) ) 354 END DO 384 ahm1(:,:,jk) = MIN( zahm0(:,:), zcoef(jk) * ahm1(:,:,1) ) 385 ahm2(:,:,jk) = MIN( zahm0(:,:), zcoef(jk) * ahm2(:,:,1) ) 386 END DO 387 388 IF( jp_cfg == 4 ) THEN 389 ! Limit AHM in Gibraltar strait 390 ij0 = 50 ; ij1 = 53 391 ii0 = 69 ; ii1 = 71 392 DO jk = 1, jpk 393 ahm1(mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) = min( zahmm, ahm1 (mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) ) 394 ahm2(mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) = min( zahmm, ahm2 (mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) ) 395 END DO 396 ENDIF 355 397 356 398 ! Lateral boundary conditions on ( ahm1, ahm2 )
Note: See TracChangeset
for help on using the changeset viewer.