- Timestamp:
- 2018-01-04T13:30:03+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90
r6498 r9176 111 111 INTEGER :: ji, jj, jk ! dummy loop indices 112 112 REAL(wp) :: ztpc ! scalar workspace 113 REAL(wp), POINTER, DIMENSION(:,:) :: zkz113 REAL(wp), DIMENSION(jpi,jpj) :: zkz 114 114 !!---------------------------------------------------------------------- 115 115 ! 116 116 IF( nn_timing == 1 ) CALL timing_start('zdf_tmx') 117 117 ! 118 118 ! CALL wrk_alloc( jpi,jpj, zkz ) 119 119 120 120 ! ! ----------------------- ! … … 128 128 zkz(:,:) = zkz(:,:) + fse3w(:,:,jk) * MAX( 0.e0, rn2(:,:,jk) ) * rau0 * zav_tide(:,:,jk) * wmask(:,:,jk) 129 129 END DO 130 131 130 DO jj = 1, jpj !* Here zkz should be equal to en_tmx ==> multiply by en_tmx/zkz to recover en_tmx 132 131 DO ji = 1, jpi … … 134 133 END DO 135 134 END DO 136 137 135 DO jk = 2, jpkm1 !* Mutiply by zkz to recover en_tmx, BUT bound by 30/6 ==> zav_tide bound by 300 cm2/s 138 136 DO jj = 1, jpj !* Here zkz should be equal to en_tmx ==> multiply by en_tmx/zkz to recover en_tmx … … 142 140 END DO 143 141 END DO 144 145 142 IF( kt == nit000 ) THEN !* check at first time-step: diagnose the energy consumed by zav_tide 146 143 ztpc = 0.e0 … … 166 163 ! ! Update mixing coefs ! 167 164 ! ! ----------------------- ! 165 !$OMP PARALLEL DO 168 166 DO jk = 2, jpkm1 !* update momentum & tracer diffusivity with tidal mixing 169 167 DO jj = 1, jpj !* Here zkz should be equal to en_tmx ==> multiply by en_tmx/zkz to recover en_tmx … … 174 172 END DO 175 173 END DO 176 174 !$OMP PARALLEL DO 177 175 DO jk = 2, jpkm1 !* update momentum & tracer diffusivity with tidal mixing 178 176 DO jj = 2, jpjm1 … … 190 188 IF(ln_ctl) CALL prt_ctl(tab3d_1=zav_tide , clinfo1=' tmx - av_tide: ', tab3d_2=avt, clinfo2=' avt: ', ovlap=1, kdim=jpk) 191 189 ! 192 190 ! CALL wrk_dealloc( jpi,jpj, zkz ) 193 191 ! 194 192 IF( nn_timing == 1 ) CALL timing_stop('zdf_tmx') … … 222 220 INTEGER :: ji, jj, jk ! dummy loop indices 223 221 REAL(wp) :: zcoef, ztpc ! temporary scalar 224 REAL(wp), DIMENSION( :,:) , POINTER:: zkz ! 2D workspace225 REAL(wp), DIMENSION( :,:) , POINTER:: zsum1 , zsum2 , zsum ! - -222 REAL(wp), DIMENSION(jpi, jpj) :: zkz ! 2D workspace 223 REAL(wp), DIMENSION(jpi, jpj) :: zsum1 , zsum2 , zsum ! - - 226 224 REAL(wp), DIMENSION(:,:,:), POINTER :: zempba_3d_1, zempba_3d_2 ! 3D workspace 227 225 REAL(wp), DIMENSION(:,:,:), POINTER :: zempba_3d , zdn2dz ! - - … … 231 229 IF( nn_timing == 1 ) CALL timing_start('tmx_itf') 232 230 ! 233 231 ! CALL wrk_alloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 234 232 CALL wrk_alloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf ) 235 233 … … 237 235 zempba_3d_1(:,:,jpk) = 0.e0 238 236 zempba_3d_2(:,:,jpk) = 0.e0 237 !$OMP PARALLEL DO 239 238 DO jk = 1, jpkm1 240 239 zdn2dz (:,:,jk) = rn2(:,:,jk) - rn2(:,:,jk+1) ! Vertical profile of dN2/dz 241 !CDIR NOVERRCHK242 240 zempba_3d_1(:,:,jk) = SQRT( MAX( 0.e0, rn2(:,:,jk) ) ) ! - - of N 243 241 zempba_3d_2(:,:,jk) = MAX( 0.e0, rn2(:,:,jk) ) ! - - of N^2 … … 257 255 END DO 258 256 END DO 259 260 257 DO jk= 1, jpk 261 258 DO jj = 1, jpj … … 313 310 314 311 ! ! Update pav with the ITF mixing coefficient 312 !$OMP PARALLEL DO 315 313 DO jk = 2, jpkm1 316 314 pav(:,:,jk) = pav (:,:,jk) * ( 1.e0 - mask_itf(:,:) ) & … … 318 316 END DO 319 317 ! 320 318 ! CALL wrk_dealloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 321 319 CALL wrk_dealloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf ) 322 320 !
Note: See TracChangeset
for help on using the changeset viewer.