- Timestamp:
- 2017-04-29T17:24:54+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90
r7931 r7990 8 8 !! 3.3 ! 2010-10 (C. Ethe, G. Madec) reorganisation of initialisation phase 9 9 !! 3.6 ! 2013-04 (G. Madec, F. Roquet) zrau compute locally using interpolation of alpha & beta 10 !! 4.0 ! 2017-04 (G. Madec) remove CPP ddm key & avm at t-point only 10 11 !!---------------------------------------------------------------------- 11 12 … … 22 23 USE prtctl ! Print control 23 24 USE lib_mpp ! MPP library 24 USE wrk_nemo ! work arrays25 25 USE timing ! Timing 26 26 … … 63 63 !! avt = avt + zavft + zavdt 64 64 !! avs = avs + zavfs + zavds 65 !! avm u, avmv arerequired to remain at least above avt and avs.65 !! avm is required to remain at least above avt and avs. 66 66 !! 67 67 !! ** Action : avt, avs : updated vertical eddy diffusivity coef. for T & S … … 77 77 REAL(wp) :: zavft, zavfs ! - - 78 78 REAL(wp) :: zavdt, zavds ! - - 79 REAL(wp), POINTER, DIMENSION(:,:) :: zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd379 REAL(wp), DIMENSION(jpi,jpj) :: zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 80 80 !!---------------------------------------------------------------------- 81 81 ! 82 IF( nn_timing == 1 ) CALL timing_start('zdf_ddm') 83 ! 84 CALL wrk_alloc( jpi,jpj, zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 ) 82 IF( nn_timing == 1 ) CALL timing_start('zdf_ddm') 85 83 ! 86 84 ! ! =============== … … 89 87 ! Define the mask 90 88 ! --------------- 89 !!gm WORK to be done: change the code from vector optimisation to scalar one. 90 !!gm ==>>> test in the loop instead of use of mask arrays 91 !!gm and many acces in memory 92 91 93 DO jj = 1, jpj ! R=zrau = (alpha / beta) (dk[t] / dk[s]) 92 94 DO ji = 1, jpi 93 95 zrw = ( gdepw_n(ji,jj,jk ) - gdept_n(ji,jj,jk) ) & 96 !!gm please, use e3w_n below 94 97 & / ( gdept_n(ji,jj,jk-1) - gdept_n(ji,jj,jk) ) 95 98 ! … … 156 159 END DO 157 160 END DO 158 159 160 ! Increase avmu, avmv if necessary161 ! --------------------------------162 !!gm to be changed following the definition of avm.163 DO jj = 1, jpjm1164 DO ji = 1, fs_jpim1 ! vector opt.165 avmu(ji,jj,jk) = MAX( avmu(ji,jj,jk), &166 & avt(ji,jj,jk), avt(ji+1,jj,jk), &167 & avs(ji,jj,jk), avs(ji+1,jj,jk) ) * wumask(ji,jj,jk)168 avmv(ji,jj,jk) = MAX( avmv(ji,jj,jk), &169 & avt(ji,jj,jk), avt(ji,jj+1,jk), &170 & avs(ji,jj,jk), avs(ji,jj+1,jk) ) * wvmask(ji,jj,jk)171 END DO172 END DO173 161 ! ! =============== 174 162 END DO ! End of slab 175 163 ! ! =============== 176 164 ! 177 CALL lbc_lnk( avt , 'W', 1._wp ) ! Lateral boundary conditions (unchanged sign)178 CALL lbc_lnk( avs , 'W', 1._wp )179 CALL lbc_lnk( avm , 'W', 1._wp )180 CALL lbc_lnk( avmu, 'U', 1._wp )181 CALL lbc_lnk( avmv, 'V', 1._wp )182 183 165 IF(ln_ctl) THEN 184 166 CALL prt_ctl(tab3d_1=avt , clinfo1=' ddm - t: ', tab3d_2=avs , clinfo2=' s: ', ovlap=1, kdim=jpk) 185 CALL prt_ctl(tab3d_1=avmu, clinfo1=' ddm - u: ', mask1=umask, &186 & tab3d_2=avmv, clinfo2= ' v: ', mask2=vmask, ovlap=1, kdim=jpk)187 167 ENDIF 188 !189 CALL wrk_dealloc( jpi,jpj, zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 )190 168 ! 191 169 IF( nn_timing == 1 ) CALL timing_stop('zdf_ddm')
Note: See TracChangeset
for help on using the changeset viewer.