- Timestamp:
- 2020-12-02T16:13:45+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/tickets_icb_1900
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/tickets_icb_1900
- Property svn:externals
-
old new 8 8 9 9 # SETTE 10 ^/utils/CI/sette @13559sette10 ^/utils/CI/sette_MPI3_LoopFusion@13943 sette
-
- Property svn:externals
-
NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/trazdf.F90
r13899 r14012 13 13 !!---------------------------------------------------------------------- 14 14 USE oce ! ocean dynamics and tracers variables 15 USE dom_oce ! ocean space and time domain variables 15 USE dom_oce ! ocean space and time domain variables 16 16 USE domvvl ! variable volume 17 17 USE phycst ! physical constant … … 55 55 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer equation 56 56 ! 57 INTEGER :: j k ! Dummy loop indices57 INTEGER :: ji, jj, jk ! Dummy loop indices 58 58 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdt, ztrds ! 3D workspace 59 59 !!--------------------------------------------------------------------- … … 62 62 ! 63 63 IF( kt == nit000 ) THEN 64 IF(lwp)WRITE(numout,*) 65 IF(lwp)WRITE(numout,*) 'tra_zdf : implicit vertical mixing on T & S' 66 IF(lwp)WRITE(numout,*) '~~~~~~~ ' 64 IF( ntile == 0 .OR. ntile == 1 ) THEN ! Do only on the first tile 65 IF(lwp)WRITE(numout,*) 66 IF(lwp)WRITE(numout,*) 'tra_zdf : implicit vertical mixing on T & S' 67 IF(lwp)WRITE(numout,*) '~~~~~~~ ' 68 ENDIF 67 69 ENDIF 68 70 ! 69 71 IF( l_trdtra ) THEN !* Save ta and sa trends 70 ALLOCATE( ztrdt(jpi,jpj,jpk) 72 ALLOCATE( ztrdt(jpi,jpj,jpk), ztrds(jpi,jpj,jpk) ) 71 73 ztrdt(:,:,:) = pts(:,:,:,jp_tem,Kaa) 72 74 ztrds(:,:,:) = pts(:,:,:,jp_sal,Kaa) … … 80 82 ! JMM avoid negative salinities near river outlet ! Ugly fix 81 83 ! JMM : restore negative salinities to small salinities: 82 WHERE( pts( :,:,:,jp_sal,Kaa) < 0._wp ) pts(:,:,:,jp_sal,Kaa) = 0.1_wp84 WHERE( pts(A2D(0),:,jp_sal,Kaa) < 0._wp ) pts(A2D(0),:,jp_sal,Kaa) = 0.1_wp 83 85 !!gm 84 86 85 87 IF( l_trdtra ) THEN ! save the vertical diffusive trends for further diagnostics 86 DO jk = 1, jpk m188 DO jk = 1, jpk 87 89 ztrdt(:,:,jk) = ( ( pts(:,:,jk,jp_tem,Kaa)*e3t(:,:,jk,Kaa) & 88 90 & - pts(:,:,jk,jp_tem,Kbb)*e3t(:,:,jk,Kbb) ) & … … 94 96 & - ztrds(:,:,jk) 95 97 END DO 98 ! NOTE: [tiling-comms-merge] The diagnostic results change along the north fold if this is removed 96 99 !!gm this should be moved in trdtra.F90 and done on all trends 97 100 CALL lbc_lnk_multi( 'trazdf', ztrdt, 'T', 1.0_wp , ztrds, 'T', 1.0_wp ) … … 140 143 INTEGER :: ji, jj, jk, jn ! dummy loop indices 141 144 REAL(wp) :: zrhs, zzwi, zzws ! local scalars 142 REAL(wp), DIMENSION( jpi,jpj,jpk) :: zwi, zwt, zwd, zws145 REAL(wp), DIMENSION(A2D(nn_hls),jpk) :: zwi, zwt, zwd, zws 143 146 !!--------------------------------------------------------------------- 144 147 ! … … 154 157 ! 155 158 ! vertical mixing coef.: avt for temperature, avs for salinity and passive tracers 156 IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN ; zwt(:,:,2:jpk) = avt(:,:,2:jpk) 157 ELSE ; zwt(:,:,2:jpk) = avs(:,:,2:jpk) 159 IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN 160 DO_3D( 1, 1, 1, 1, 2, jpk ) 161 zwt(ji,jj,jk) = avt(ji,jj,jk) 162 END_3D 163 ELSE 164 DO_3D( 1, 1, 1, 1, 2, jpk ) 165 zwt(ji,jj,jk) = avs(ji,jj,jk) 166 END_3D 158 167 ENDIF 159 168 zwt(:,:,1) = 0._wp … … 222 231 END_2D 223 232 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 224 zrhs = e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb) & 233 zrhs = e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb) & 225 234 & + p2dt * e3t(ji,jj,jk,Kmm) * pt(ji,jj,jk,jn,Krhs) ! zrhs=right hand side 226 235 pt(ji,jj,jk,jn,Kaa) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * pt(ji,jj,jk-1,jn,Kaa)
Note: See TracChangeset
for help on using the changeset viewer.