Changeset 2528 for trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90
- Timestamp:
- 2010-12-27T18:33:53+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90
- Property svn:eol-style deleted
- Property svn:executable deleted
r1694 r2528 4 4 5 5 !!---------------------------------------------------------------------- 6 !! OPA 9.0 , LOCEAN-IPSL (2005)6 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 7 7 !! $Id$ 8 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt8 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 9 9 !!---------------------------------------------------------------------- 10 10 … … 26 26 !! ??? explanation of the default is missing 27 27 !!---------------------------------------------------------------------- 28 !! * Modules used29 28 USE ldftra_oce, ONLY : aht0 30 31 !! * Arguments 29 !! 32 30 LOGICAL, INTENT (in) :: ld_print ! If true, output arrays on numout 33 34 !! * local variables 31 !! 35 32 INTEGER :: ji, jj, jk ! dummy loop indices 36 33 REAL(wp) :: & … … 86 83 87 84 88 ! Special case for ORCA R 2 and R4 configurations (overwrite the value of ahm1 ahm2)85 ! Special case for ORCA R1, R2 and R4 configurations (overwrite the value of ahm1 ahm2) 89 86 ! ============================================== 90 IF( cp_cfg == "orca" .AND. ( jp_cfg == 2 .OR. jp_cfg == 4 ) ) THEN87 IF( cp_cfg == "orca" .AND. ( jp_cfg == 1 .OR. jp_cfg == 2 .OR. jp_cfg == 4 ) ) THEN 91 88 IF(lwp) WRITE(numout,*) 92 IF(lwp) WRITE(numout,*) ' ORCA R 2 or R4: overwrite the previous definition of ahm'93 IF(lwp) WRITE(numout,*) ' ============= '89 IF(lwp) WRITE(numout,*) ' ORCA R1, R2 or R4: overwrite the previous definition of ahm' 90 IF(lwp) WRITE(numout,*) ' =================' 94 91 CALL ldf_dyn_c3d_orca( ld_print ) 95 92 ENDIF … … 122 119 IF(lwp) WRITE(numout,*) ' maximum grid-spacing = ', zd_max, ' maximum value for ahm = ', ahm0 123 120 124 za00 = ahm0 / ( zd_max * zd_max * zd_max )121 za00 = ahm0_blp / ( zd_max * zd_max * zd_max ) 125 122 DO jj = 1, jpj 126 123 DO ji = 1, jpi … … 148 145 END DO 149 146 ELSE ! partial steps or s-ccordinate 150 # if defined key_zco151 zc = gdept_0(jpkm1)152 # else153 147 zc = MAXVAL( fsdept(:,:,jpkm1) ) 154 # endif155 148 IF( lk_mpp ) CALL mpp_max( zc ) ! max over the global domain 156 149 … … 196 189 !! *** ROUTINE ldf_dyn_c3d *** 197 190 !! 198 !! ** Purpose : ORCA R 2 anR4 only191 !! ** Purpose : ORCA R1, R2 and R4 only 199 192 !! 200 193 !! ** Method : blah blah blah .... 201 194 !!---------------------------------------------------------------------- 202 !! * Modules used203 195 USE ldftra_oce, ONLY : aht0 204 205 !! * Arguments 196 !! 206 197 LOGICAL, INTENT (in) :: ld_print ! If true, output arrays on numout 207 208 !! * local variables 198 !! 209 199 INTEGER :: ji, jj, jk, jn ! dummy loop indices 210 200 INTEGER :: ii0, ii1, ij0, ij1 ! temporary integers … … 228 218 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~' 229 219 IF(lwp) WRITE(numout,*) 230 IF(lwp) WRITE(numout,*) ' orca R 2 or R4 ocean model'220 IF(lwp) WRITE(numout,*) ' orca R1, R2 or R4 ocean model' 231 221 IF(lwp) WRITE(numout,*) ' reduced in the surface Eq. strip ' 232 222 IF(lwp) WRITE(numout,*) … … 318 308 ENDIF 319 309 310 IF( jp_cfg == 1 ) THEN 311 zahmeq = aht0 ! reduced to aht0 on equator; set to ahm0 if no tropical reduction is required 312 zahmm = ahm0 313 zahm0(:,:) = ahm0 314 ENDIF 315 320 316 DO jj = 1, jpj 321 317 DO ji = 1, jpi … … 363 359 364 360 ! other level: re-increase the coef in the deep ocean 365 366 #if defined key_orca_lev10 367 DO jk = 1, 210 368 zcoef(jk) = 1. 369 END DO 370 DO jk= 211, 230 371 zcoef(jk) = 1. + 0.1 * FLOAT(jk-210) 372 END DO 373 DO jk= 231, 260 374 zcoef(jk) = 3. + 0.2 * FLOAT(jk-230) 375 END DO 376 DO jk= 261, 270 377 zcoef(jk) = 9. + 0.1 * FLOAT(jk-260) 378 END DO 379 DO jk= 271, jpk 380 zcoef(jk) = 10. 381 END DO 382 DO jk= 1, jpk 383 IF(lwp) WRITE(numout,*) 'k= ',jk, 'cof ', zcoef(jk) 384 END DO 385 #else 386 DO jk = 1, 21 387 zcoef(jk) = 1. 388 END DO 389 zcoef(22) = 2. 390 zcoef(23) = 3. 391 zcoef(24) = 5. 392 zcoef(25) = 7. 393 zcoef(26) = 9. 394 DO jk = 27, jpk 395 zcoef(jk) = 10. 396 END DO 397 #endif 361 !================================================================== 362 ! Prior to v3.3, zcoeff was hardwired according to k-index jk. 363 ! 364 ! From v3.3 onwards this has been generalised to a function of 365 ! depth so that it can be used with any number of levels. 366 ! 367 ! The function has been chosen to match the original values (shown 368 ! in the following comments) when using the standard 31 ORCA levels. 369 ! DO jk = 1, 21 370 ! zcoef(jk) = 1._wp 371 ! END DO 372 ! zcoef(22) = 2._wp 373 ! zcoef(23) = 3._wp 374 ! zcoef(24) = 5._wp 375 ! zcoef(25) = 7._wp 376 ! zcoef(26) = 9._wp 377 ! DO jk = 27, jpk 378 ! zcoef(jk) = 10._wp 379 ! END DO 380 !================================================================== 381 382 IF(lwp) THEN 383 WRITE(numout,*) 384 WRITE(numout,*) ' 1D zcoef array ' 385 WRITE(numout,*) ' ~~~~~~~~~~~~~~ ' 386 WRITE(numout,*) 387 WRITE(numout,*) ' jk zcoef ' 388 ENDIF 389 390 DO jk=1, jpk 391 zcoef(jk) = 1.0_wp + NINT(9.0_wp*(gdept_0(jk)-800.0_wp)/(3000.0_wp-800.0_wp)) 392 zcoef(jk) = MIN(10.0_wp, MAX(1.0_wp, zcoef(jk))) 393 IF(lwp) WRITE(numout,'(4x,i3,6x,f7.3)') jk,zcoef(jk) 394 END DO 398 395 399 396 DO jk = 2, jpk … … 402 399 END DO 403 400 404 IF( jp_cfg == 4 ) THEN 405 ! Limit AHM in Gibraltar strait 401 IF( jp_cfg == 4 ) THEN ! Limit AHM in Gibraltar strait 406 402 ij0 = 50 ; ij1 = 53 407 403 ii0 = 69 ; ii1 = 71 408 404 DO jk = 1, jpk 409 ahm1(mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) = min( zahmm, ahm1 (mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) ) 410 ahm2(mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) = min( zahmm, ahm2 (mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) ) 411 END DO 412 ENDIF 413 414 ! Lateral boundary conditions on ( ahm1, ahm2 ) 415 ! ============== 416 CALL lbc_lnk( ahm1, 'T', 1. ) ! T-point, unchanged sign 417 CALL lbc_lnk( ahm2, 'F', 1. ) ! F-point, unchanged sign 418 419 ! Control print 420 421 IF(lwp) THEN 405 ahm1(mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),jk) = MIN( zahmm, ahm1(mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),jk) ) 406 ahm2(mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),jk) = MIN( zahmm, ahm2(mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),jk) ) 407 END DO 408 ENDIF 409 CALL lbc_lnk( ahm1, 'T', 1. ) ! Lateral boundary conditions (unchanged sign) 410 CALL lbc_lnk( ahm2, 'F', 1. ) 411 412 413 IF(lwp) THEN ! Control print 422 414 WRITE(numout,*) 423 415 WRITE(numout,*) ' 3D ahm1 array (k=1)' … … 451 443 ahm4 ( :, 1, :) = ahm4 ( :, 2, :) 452 444 453 ! Lateral boundary conditions on ( ahm3, ahm4 ) 454 ! ============== 455 CALL lbc_lnk( ahm3, 'U', 1. ) ! U-point, unchanged sign 456 CALL lbc_lnk( ahm4, 'V', 1. ) ! V-point, unchanged sign 445 CALL lbc_lnk( ahm3, 'U', 1. ) ! Lateral boundary conditions (unchanged sign) 446 CALL lbc_lnk( ahm4, 'V', 1. ) 457 447 458 448 ! Control print
Note: See TracChangeset
for help on using the changeset viewer.