- Timestamp:
- 2017-01-16T20:11:00+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/CO6_shelfclimate/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90
r7566 r7567 18 18 USE trdtra 19 19 USE prtctl_trc ! Print control for debbuging 20 #if defined key_tracer_budget 21 USE iom 22 #endif 20 23 21 24 IMPLICIT NONE … … 110 113 REAL(wp) :: zcoef, ztrcorn, ztrmasn ! " " 111 114 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrtrdb, ztrtrdn ! workspace arrays 115 #if defined key_tracer_budget 116 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: ztrtrdb_m1 ! slwa 117 #endif 112 118 REAL(wp) :: zs2rdt 113 119 LOGICAL :: lldebug = .FALSE. … … 116 122 117 123 IF( l_trdtrc ) CALL wrk_alloc( jpi, jpj, jpk, ztrtrdb, ztrtrdn ) 124 #if defined key_tracer_budget 125 IF( kt == nittrc000 .AND. l_trdtrc) THEN 126 ALLOCATE( ztrtrdb_m1(jpi,jpj,jpk,jptra) ) ! slwa 127 IF( ln_rsttr .AND. & ! Restart: read in restart file 128 iom_varid( numrtr, 'rdb_trend_'//TRIM(ctrcnm(1)), ldstop = .FALSE. ) > 0 ) THEN 129 IF(lwp) WRITE(numout,*) ' nittrc000-nn_dttrc RDB tracer trend read in the restart file' 130 DO jn = 1, jptra 131 CALL iom_get( numrtr, jpdom_autoglo, 'rdb_trend_'//TRIM(ctrcnm(jn)), ztrtrdb_m1(:,:,:,jn) ) ! before tracer trend for rdb 132 END DO 133 ELSE 134 ztrtrdb_m1=0.0 135 ENDIF 136 ENDIF 137 #endif 118 138 119 139 IF( PRESENT( cpreserv ) ) THEN ! total tracer concentration is preserved … … 156 176 ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt 157 177 ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt 178 #if defined key_tracer_budget 179 ! slwa budget code 180 DO jk = 1, jpkm1 181 ztrtrdb(:,:,jk) = ztrtrdb(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) 182 ztrtrdn(:,:,jk) = ztrtrdn(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) 183 END DO 184 CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb_m1(:,:,:,jn) ) 185 ztrtrdb_m1(:,:,:,jn)=ztrtrdb(:,:,:) 186 #else 158 187 CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb ) ! Asselin-like trend handling 188 #endif 159 189 CALL trd_tra( kt, 'TRC', jn, jptra_radn, ztrtrdn ) ! standard trend handling 160 190 ! … … 187 217 ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt 188 218 ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt 219 #if defined key_tracer_budget 220 ! slwa budget code 221 DO jk = 1, jpkm1 222 ztrtrdb(:,:,jk) = ztrtrdb(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) 223 ztrtrdn(:,:,jk) = ztrtrdn(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) 224 END DO 225 CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb_m1(:,:,:,jn) ) 226 ztrtrdb_m1(:,:,:,jn)=ztrtrdb(:,:,:) 227 #else 189 228 CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb ) ! Asselin-like trend handling 229 #endif 190 230 CALL trd_tra( kt, 'TRC', jn, jptra_radn, ztrtrdn ) ! standard trend handling 191 231 ! … … 195 235 196 236 ENDIF 237 238 #if defined key_tracer_budget 239 ! Write in the tracer restart file 240 ! ******************************* 241 IF( lrst_trc ) THEN 242 IF(lwp) WRITE(numout,*) 243 IF(lwp) WRITE(numout,*) 'trc : RDB trend at last time step for tracer budget written in tracer restart file ', & 244 & 'at it= ', kt,' date= ', ndastp 245 IF(lwp) WRITE(numout,*) '~~~~' 246 DO jn = 1, jptra 247 CALL iom_rstput( kt, nitrst, numrtw, 'rdb_trend_'//TRIM(ctrcnm(jn)), ztrtrdb_m1(:,:,:,jn) ) 248 END DO 249 ENDIF 250 #endif 197 251 198 252 IF( l_trdtrc ) CALL wrk_dealloc( jpi, jpj, jpk, ztrtrdb, ztrtrdn )
Note: See TracChangeset
for help on using the changeset viewer.