- Timestamp:
- 2017-08-29T18:12:42+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/nemo_v3_6_STABLE_trdtrc/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90
r8398 r8471 27 27 !!---------------------------------------------------------------------- 28 28 USE oce_trc ! ocean dynamics and tracers variables 29 USE domvvl ! variable volume 29 30 USE trc ! ocean passive tracers variables 30 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 32 USE prtctl_trc ! Print control for debbuging 33 USE trcnam_trp ! passive tracers transport namelist variables 32 34 USE trd_oce 33 35 USE trdtra … … 129 131 IF( l_trdtrc ) THEN 130 132 CALL wrk_alloc( jpi, jpj, jpk, jptra, ztrdt ) !* store now fields before applying the Asselin filter 131 ztrdt(:,:,:,:) = trn(:,:,:,:) 133 ztrdt(:,:,jpk,:) = 0._wp 134 IF( ln_trcldf_iso ) THEN ! diagnose the "pure" Kz diffusive trend 135 DO jn = 1, jptra 136 CALL trd_tra( kt, 'TRC', jn, jptra_zdfp, ztrdt(:,:,:,jn) ) 137 ENDDO 138 ENDIF 139 ! total trend for the non-time-filtered variables. 140 ! G Nurser 23 Mar 2017. Recalculate trend as Delta(e3t*T)/e3tn; e3tn 141 ! cancel from tsn terms 142 IF( lk_vvl ) THEN 143 DO jn = 1, jptra 144 DO jk = 1, jpkm1 145 zfact = 1.0 / rdttrc(jk) 146 ztrdt(:,:,jk,jn) = ( tra(:,:,jk,jn)*fse3t_a(:,:,jk) / fse3t_n(:,:,jk) - & 147 trn(:,:,jk,jn) ) * zfact 148 END DO 149 END DO 150 ELSE 151 DO jn = 1, jptra 152 DO jk = 1, jpkm1 153 zfact = 1.0 / rdttrc(jk) 154 ztrdt(:,:,jk,jn) = ( tra(:,:,jk,jn) - trn(:,:,jk,jn) ) * zfact 155 END DO 156 END DO 157 END IF 158 DO jn = 1, jptra 159 CALL trd_tra( kt, 'TRC', jn, jptra_tot, ztrdt(:,:,:,jn) ) 160 ENDDO 161 IF( .NOT.lk_vvl ) THEN 162 ! Store now fields before applying the Asselin filter 163 ! in order to calculate Asselin filter trend later. 164 ztrdt(:,:,:,:) = trn(:,:,:,:) 165 ENDIF 132 166 ENDIF 133 167 ! Leap-Frog + Asselin filter time stepping … … 137 171 DO jk = 1, jpkm1 138 172 trn(:,:,jk,jn) = tra(:,:,jk,jn) 139 trb(:,:,jk,jn) = trn(:,:,jk,jn)140 173 END DO 141 174 END DO 175 IF (l_trdtrc.AND.lk_vvl) THEN ! Zero Asselin filter contribution 176 ! must be explicitly written out since for vvl 177 ! Asselin filter is output by 178 ! tra_nxt_vvl that is not called on 179 ! this time step 180 ztrdt(:,:,:,:) = 0._wp 181 DO jn = 1, jptra 182 CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) ) 183 ENDDO 184 END IF 185 142 186 ! 143 187 ELSE … … 153 197 154 198 ! trends computation 155 IF( l_trdtrc 199 IF( l_trdtrc.AND..NOT.lk_vvl) THEN ! trends 156 200 DO jn = 1, jptra 157 201 DO jk = 1, jpkm1 158 202 zfact = 1.e0 / r2dt(jk) 159 203 ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * zfact 160 CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt )161 END DO204 END DO 205 CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) ) 162 206 END DO 163 CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrdt )164 207 END IF 208 ! 209 IF( l_trdtrc) CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrdt ) 165 210 ! 166 211 IF(ln_ctl) THEN ! print mean trends (used for debugging)
Note: See TracChangeset
for help on using the changeset viewer.