Changeset 1326
- Timestamp:
- 2009-02-20T11:08:16+01:00 (15 years ago)
- Location:
- trunk/NEMO/OFF_SRC
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OFF_SRC/LDF/ldfeiv.F90
r1265 r1326 37 37 38 38 CONTAINS 39 40 # if defined key_mpp_omp41 !!----------------------------------------------------------------------42 !! 'key_mpp_omp' : OpenMP / NEC autotasking (j-slab)43 !!----------------------------------------------------------------------44 45 SUBROUTINE ldf_eiv( kt )46 !!----------------------------------------------------------------------47 !! *** ROUTINE ldf_eiv ***48 !!49 !! ** Purpose : Compute the eddy induced velocity coefficient from the50 !! growth rate of baroclinic instability.51 !!52 !! ** Method : Specific to the offline model. Computes the horizontal53 !! values from the vertical value54 !!55 !! History :56 !! 9.0 ! 06-03 (O. Aumont) Free form, F9057 !!----------------------------------------------------------------------58 !! * Arguments59 INTEGER, INTENT( in ) :: kt ! ocean time-step inedx60 61 !! * Local declarations62 INTEGER :: ji, jj, jk ! dummy loop indices63 !!----------------------------------------------------------------------64 65 IF( kt == nit000 ) THEN66 IF(lwp) WRITE(numout,*)67 IF(lwp) WRITE(numout,*) 'ldf_eiv : eddy induced velocity coefficients'68 IF(lwp) WRITE(numout,*) '~~~~~~~ NEC autotasking / OpenMP : j-slab'69 ENDIF70 71 ! Average the diffusive coefficient at u- v- points72 DO jj = 2, jpjm173 DO ji = fs_2, fs_jpim1 ! vector opt.74 aeiu(ji,jj) = .5 * (aeiw(ji,jj) + aeiw(ji+1,jj ))75 aeiv(ji,jj) = .5 * (aeiw(ji,jj) + aeiw(ji ,jj+1))76 END DO77 END DO78 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,synchro,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,79 80 ! lateral boundary condition on aeiu, aeiv81 CALL lbc_lnk( aeiu, 'U', 1. )82 CALL lbc_lnk( aeiv, 'V', 1. )83 84 END SUBROUTINE ldf_eiv85 86 # else87 !!----------------------------------------------------------------------88 !! Default key k-j-i loops89 !!----------------------------------------------------------------------90 39 91 40 SUBROUTINE ldf_eiv( kt ) … … 129 78 END SUBROUTINE ldf_eiv 130 79 131 # endif132 80 133 81 #else -
trunk/NEMO/OFF_SRC/LDF/ldfslp.F90
r1156 r1326 140 140 141 141 IF( ln_zps ) THEN ! partial steps correction at the bottom ocean level (zps_hde routine) 142 # if defined key_vectopt_loop && ! defined key_mpp_omp142 # if defined key_vectopt_loop 143 143 jj = 1 144 144 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) … … 152 152 zgru(ji,jj,iku) = gru(ji,jj) 153 153 zgrv(ji,jj,ikv) = grv(ji,jj) 154 # if ! defined key_vectopt_loop || defined key_mpp_omp154 # if ! defined key_vectopt_loop 155 155 END DO 156 156 # endif … … 491 491 ! mask for mixed layer 492 492 DO jk = 1, jpk 493 # if defined key_vectopt_loop && ! defined key_mpp_omp493 # if defined key_vectopt_loop 494 494 jj = 1 495 495 DO ji = 1, jpij ! vector opt. (forced unrolling) … … 505 505 omlmask(ji,jj,jk) = 0.e0 506 506 ENDIF 507 # if ! defined key_vectopt_loop || defined key_mpp_omp507 # if ! defined key_vectopt_loop 508 508 END DO 509 509 # endif … … 523 523 zwy(:,jpj) = 0.e0 524 524 zwy(jpi,:) = 0.e0 525 # if defined key_vectopt_loop && ! defined key_mpp_omp525 # if defined key_vectopt_loop 526 526 jj = 1 527 527 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) … … 536 536 & * ( pn2(ji,jj,ik) + pn2(ji,jj,ik+1) ) & 537 537 & / MAX( tmask(ji,jj,ik) + tmask (ji,jj,ik+1), 1. ) 538 # if ! defined key_vectopt_loop || defined key_mpp_omp538 # if ! defined key_vectopt_loop 539 539 END DO 540 540 # endif … … 544 544 545 545 ! Slope at u points 546 # if defined key_vectopt_loop && ! defined key_mpp_omp546 # if defined key_vectopt_loop 547 547 jj = 1 548 548 DO ji = jpi+2, jpij-jpi-1 ! vector opt. (forced unrolling) … … 561 561 ! uslpml 562 562 uslpml (ji,jj) = zau / ( zbu - zeps ) * umask (ji,jj,ik) 563 # if ! defined key_vectopt_loop || defined key_mpp_omp563 # if ! defined key_vectopt_loop 564 564 END DO 565 565 # endif … … 573 573 zwy ( :, jpj) = 0.e0 574 574 zwy ( jpi, :) = 0.e0 575 # if defined key_vectopt_loop && ! defined key_mpp_omp575 # if defined key_vectopt_loop 576 576 jj = 1 577 577 DO ji = 1, jpij-jpi ! vector opt. (forced unrolling) … … 585 585 & * ( pn2(ji,jj,ik) + pn2(ji,jj,ik+1) ) & 586 586 & / MAX( tmask(ji,jj,ik) + tmask (ji,jj,ik+1), 1. ) 587 # if ! defined key_vectopt_loop || defined key_mpp_omp587 # if ! defined key_vectopt_loop 588 588 END DO 589 589 # endif … … 594 594 595 595 ! Slope at v points 596 # if defined key_vectopt_loop && ! defined key_mpp_omp596 # if defined key_vectopt_loop 597 597 jj = 1 598 598 DO ji = jpi+2, jpij-jpi-1 ! vector opt. (forced unrolling) … … 611 611 ! vslpml 612 612 vslpml (ji,jj) = zav / ( zbv - zeps ) * vmask (ji,jj,ik) 613 # if ! defined key_vectopt_loop || defined key_mpp_omp613 # if ! defined key_vectopt_loop 614 614 END DO 615 615 # endif … … 625 625 ! Local vertical density gradient evaluated from N^2 626 626 ! zwy = d/dz(prd)= - mk ( prd ) / grav * pn2 -- at w point 627 # if defined key_vectopt_loop && ! defined key_mpp_omp627 # if defined key_vectopt_loop 628 628 jj = 1 629 629 DO ji = 1, jpij ! vector opt. (forced unrolling) … … 637 637 zwy (ji,jj) = zm05g * pn2 (ji,jj,ik) * & 638 638 & ( prd (ji,jj,ik) + prd (ji,jj,ikm1) + 2. ) 639 # if ! defined key_vectopt_loop || defined key_mpp_omp639 # if ! defined key_vectopt_loop 640 640 END DO 641 641 # endif … … 643 643 644 644 ! Slope at w point 645 # if defined key_vectopt_loop && ! defined key_mpp_omp645 # if defined key_vectopt_loop 646 646 jj = 1 647 647 DO ji = jpi+2, jpij-jpi-1 ! vector opt. (forced unrolling) … … 673 673 wslpiml (ji,jj) = zai / ( zbi - zeps) * tmask (ji,jj,ik) 674 674 wslpjml (ji,jj) = zaj / ( zbj - zeps) * tmask (ji,jj,ik) 675 # if ! defined key_vectopt_loop || defined key_mpp_omp675 # if ! defined key_vectopt_loop 676 676 END DO 677 677 # endif -
trunk/NEMO/OFF_SRC/TRA/zpshde.F90
r1152 r1326 130 130 131 131 ! Interpolation of T and S at the last ocean level 132 # if defined key_vectopt_loop && ! defined key_mpp_omp132 # if defined key_vectopt_loop 133 133 jj = 1 134 134 DO ji = 1, jpij-jpi ! vector opt. (forced unrolled) … … 193 193 pgsv(ji,jj) = vmask(ji,jj,1) * ( psal(ji,jj+1,ikv) - zsj(ji,jj) ) 194 194 ENDIF 195 # if ! defined key_vectopt_loop || defined key_mpp_omp195 # if ! defined key_vectopt_loop 196 196 END DO 197 197 # endif … … 205 205 206 206 ! Gradient of density at the last level 207 # if defined key_vectopt_loop && ! defined key_mpp_omp207 # if defined key_vectopt_loop 208 208 jj = 1 209 209 DO ji = 1, jpij-jpi ! vector opt. (forced unrolled) … … 226 226 pgrv(ji,jj) = vmask(ji,jj,1) * ( prd(ji,jj+1,ikv) - zrj(ji,jj) ) 227 227 ENDIF 228 # if ! defined key_vectopt_loop || defined key_mpp_omp228 # if ! defined key_vectopt_loop 229 229 END DO 230 230 # endif -
trunk/NEMO/OFF_SRC/ZDF/zdfmxl.F90
r1152 r1326 44 44 45 45 CONTAINS 46 47 # if defined key_mpp_omp48 !!----------------------------------------------------------------------49 !! 'key_mpp_omp' j-k-i loop (j-slab)50 !!----------------------------------------------------------------------51 52 SUBROUTINE zdf_mxl( kt )53 !!----------------------------------------------------------------------54 !! *** ROUTINE zdfmxl ***55 !!56 !! ** Purpose : Compute the turbocline depth and the mixed layer depth57 !! with a density criteria.58 !!59 !! ** Method : The turbocline depth is the depth at which the vertical60 !! eddy diffusivity coefficient (resulting from the vertical physics61 !! alone, not the isopycnal part, see trazdf.F) fall below a given62 !! value defined locally (avt_c here taken equal to 5 cm/s2)63 !!64 !! ** Action :65 !!66 !!----------------------------------------------------------------------67 !! * Arguments68 INTEGER, INTENT( in ) :: kt ! ocean time-step index69 70 !! * Local declarations71 INTEGER :: ji, jj, jk ! dummy loop indices72 INTEGER :: ik ! temporary integer73 INTEGER, DIMENSION(jpi,jpj) :: &74 imld ! temporary workspace75 !!----------------------------------------------------------------------76 77 IF( kt == nit000 ) THEN78 IF(lwp) WRITE(numout,*)79 IF(lwp) WRITE(numout,*) 'zdf_mxl : mixed layer depth, j-k-i loops'80 IF(lwp) WRITE(numout,*) '~~~~~~~'81 ENDIF82 83 ! ! ===============84 DO jj = 1, jpj ! Vertical slab85 ! ! ===============86 87 ! 1. Turbocline depth88 ! -------------------89 ! last w-level at which avt<avt_c (starting from the bottom jk=jpk)90 ! (since avt(.,.,jpk)=0, we have jpk=< imld =< 2 )91 DO jk = jpk, 2, -192 DO ji = 1, jpi93 IF( avt(ji,jj,jk) < avt_c ) imld(ji,jj) = jk94 END DO95 END DO96 97 ! Turbocline depth and sub-turbocline temperature98 DO ji = 1, jpi99 ik = imld(ji,jj)100 hmld (ji,jj) = fsdepw(ji,jj,ik) * tmask(ji,jj,1)101 END DO102 103 !!gm idea104 !!105 !!gm DO jk = jpk, 2, -1106 !!gm DO ji = 1, jpi107 !!gm IF( avt(ji,jj,jk) < avt_c ) hmld(ji,jj) = fsdepw(ji,jj,jk) * tmask(ji,jj,1)108 !!gm END DO109 !!gm END DO110 !!gm111 112 ! 2. Mixed layer depth113 ! --------------------114 ! Initialization to the number of w ocean point mbathy115 nmln(:,jj) = mbathy(:,jj)116 117 ! Last w-level at which rhop>=rho surf+rho_c (starting from jpk-1)118 ! (rhop defined at t-point, thus jk-1 for w-level just above)119 DO jk = jpkm1, 2, -1120 DO ji = 1, jpi121 IF( rhop(ji,jj,jk) > rhop(ji,jj,1) + rho_c ) nmln(ji,jj) = jk122 END DO123 END DO124 125 ! Mixed layer depth126 DO ji = 1, jpi127 ik = nmln(ji,jj)128 hmlp (ji,jj) = fsdepw(ji,jj,ik) * tmask(ji,jj,1)129 hmlpt(ji,jj) = fsdept(ji,jj,ik-1)130 END DO131 ! ! ===============132 END DO ! End of slab133 ! ! ===============134 135 IF(ln_ctl) CALL prt_ctl( tab2d_1=REAL(nmln,wp), clinfo1=' nmln : ', tab2d_2=hmld, clinfo2=' hmld : ', ovlap=1 )136 137 END SUBROUTINE zdf_mxl138 139 # else140 !!----------------------------------------------------------------------141 !! Default option : k-j-i loop142 !!----------------------------------------------------------------------143 46 144 47 SUBROUTINE zdf_mxl( kt ) … … 237 140 238 141 END SUBROUTINE zdf_mxl 239 #endif240 142 241 143 !!====================================================================== -
trunk/NEMO/OFF_SRC/eosbn2.F90
r1152 r1326 487 487 DO jj = 1, jpjm1 488 488 !CDIR NOVERRCHK 489 #if defined key_mpp_omp490 DO ji = 1, jpim1491 #else492 489 DO ji = 1, fs_jpim1 ! vector opt. 493 #endif494 490 zws(ji,jj) = SQRT( ABS( psal(ji,jj) ) ) 495 491 END DO … … 499 495 DO jj = 1, jpjm1 ! Horizontal slab 500 496 ! ! =============== 501 #if defined key_mpp_omp502 DO ji = 1, jpim1503 #else504 497 DO ji = 1, fs_jpim1 ! vector opt. 505 #endif506 507 498 zmask = tmask(ji,jj,1) ! land/sea bottom mask = surf. mask 508 499 … … 554 545 DO jj = 1, jpjm1 ! Horizontal slab 555 546 ! ! =============== 556 #if defined key_mpp_omp557 DO ji = 1, jpim1558 #else559 547 DO ji = 1, fs_jpim1 ! vector opt. 560 #endif561 548 prd(ji,jj) = ( 0.0285 - ralpha * ptem(ji,jj) ) * tmask(ji,jj,1) 562 549 END DO … … 571 558 DO jj = 1, jpjm1 ! Horizontal slab 572 559 ! ! =============== 573 #if defined key_mpp_omp574 DO ji = 1, jpim1575 #else576 560 DO ji = 1, fs_jpim1 ! vector opt. 577 #endif578 561 prd(ji,jj) = ( rbeta * psal(ji,jj) - ralpha * ptem(ji,jj) ) * tmask(ji,jj,1) 579 562 END DO -
trunk/NEMO/OFF_SRC/opa.F90
r1325 r1326 201 201 CALL istate_init ! ocean initial state (Dynamics and tracers) 202 202 203 !!!! CALL trc_ini ! Passive tracers204 205 203 CALL day_init ! Calendar 206 204
Note: See TracChangeset
for help on using the changeset viewer.