- Timestamp:
- 2021-01-07T23:09:56+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/TRP/trcrad.F90
r11536 r14276 107 107 ENDIF 108 108 ! 109 ALLOCATE( gainmass(jptra, 2) )109 ALLOCATE( gainmass(jptra,4) ) 110 110 gainmass(:,:) = 0. 111 111 ! … … 169 169 IF( ptrb(ji,jj,jk,jn) > 0. ) THEN ! use positive values to compensate mass gain 170 170 zcoef = 1. + ztrneg(ji,jj,jn) / ztrpos(ji,jj,jn) ! ztrpos > 0 as ptrb > 0 171 gainmass(jn,1) = gainmass(jn,1) + ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk) * ( zcoef - 1.0 ) ! we are correcting mass... 171 172 ptrb(ji,jj,jk,jn) = ptrb(ji,jj,jk,jn) * zcoef 172 173 IF( zcoef < 0. ) THEN ! if the compensation exceed the positive value 173 gainmass(jn, 1) = gainmass(jn,1) - ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk) ! we are adding mass...174 gainmass(jn,2) = gainmass(jn,2) - ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk) ! we are adding mass... 174 175 ptrb(ji,jj,jk,jn) = 0. ! limit the compensation to keep positive value 175 176 ENDIF … … 190 191 IF( kt == nitend ) THEN 191 192 CALL mpp_sum( 'trcrad', gainmass(:,1) ) 193 CALL mpp_sum( 'trcrad', gainmass(:,2) ) 192 194 DO jn = jp_sms0, jp_sms1 193 IF( gainmass(jn,1) >0. ) THEN195 IF( gainmass(jn,1) < 0. ) THEN 194 196 ztotmass = glob_sum( 'trcrad', ptrb(:,:,:,jn) * cvol(:,:,:) ) 195 IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16)') 'trcrad ptrb, traceur ', jn & 196 & , ' total mass : ', ztotmass, ', mass gain : ', gainmass(jn,1) 197 IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16, a, D23.16)') 'trcrad ptrb, traceur ', jn & 198 & , ' total mass : ', ztotmass, ', mass correction : ', gainmass(jn,1) & 199 & , ' mass gain : ', gainmass(jn,2) 197 200 END IF 198 201 END DO … … 219 222 IF( ptrn(ji,jj,jk,jn) > 0. ) THEN ! use positive values to compensate mass gain 220 223 zcoef = 1. + ztrneg(ji,jj,jn) / ztrpos(ji,jj,jn) ! ztrpos > 0 as ptrb > 0 224 gainmass(jn,3) = gainmass(jn,3) + ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk) * ( zcoef - 1.0 ) ! we are correcting mass... 221 225 ptrn(ji,jj,jk,jn) = ptrn(ji,jj,jk,jn) * zcoef 222 226 IF( zcoef < 0. ) THEN ! if the compensation exceed the positive value 223 gainmass(jn, 2) = gainmass(jn,2) - ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk) ! we are adding mass...227 gainmass(jn,4) = gainmass(jn,4) - ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk) ! we are adding mass... 224 228 ptrn(ji,jj,jk,jn) = 0. ! limit the compensation to keep positive value 225 229 ENDIF … … 239 243 240 244 IF( kt == nitend ) THEN 241 CALL mpp_sum( 'trcrad', gainmass(:,2) ) 245 CALL mpp_sum( 'trcrad', gainmass(:,3) ) 246 CALL mpp_sum( 'trcrad', gainmass(:,4) ) 242 247 DO jn = jp_sms0, jp_sms1 243 IF( gainmass(jn, 2) >0. ) THEN248 IF( gainmass(jn,3) < 0. ) THEN 244 249 ztotmass = glob_sum( 'trcrad', ptrn(:,:,:,jn) * cvol(:,:,:) ) 245 WRITE(numout, '(a, i2, a, D23.16, a, D23.16)') 'trcrad ptrn, traceur ', jn & 246 & , ' total mass : ', ztotmass, ', mass gain : ', gainmass(jn,1) 250 IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16, a, D23.16)') 'trcrad ptrn, traceur ', jn & 251 & , ' total mass : ', ztotmass, ', mass correction : ', gainmass(jn,3) & 252 & , ' mass gain : ', gainmass(jn,4) 247 253 END IF 248 254 END DO
Note: See TracChangeset
for help on using the changeset viewer.