- Timestamp:
- 2018-10-29T15:20:26+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90
r10249 r10251 18 18 USE trdtra 19 19 USE prtctl_trc ! Print control for debbuging 20 #if defined key_tracer_budget21 USE iom22 #endif23 20 24 21 IMPLICIT NONE … … 54 51 INTEGER, INTENT( in ) :: kt ! ocean time-step index 55 52 CHARACTER (len=22) :: charout 56 ! +++>>> FABM57 INTEGER :: jn58 ! FABM <<<+++59 53 !!---------------------------------------------------------------------- 60 54 ! … … 71 65 IF( lk_pisces ) CALL trc_rad_sms( kt, trb, trn, jp_pcs0 , jp_pcs1, cpreserv='Y' ) ! PISCES model 72 66 IF( lk_my_trc ) CALL trc_rad_sms( kt, trb, trn, jp_myt0 , jp_myt1 ) ! MY_TRC model 73 ! +++>>> FABM 74 IF( lk_fabm ) THEN 75 DO jn=1,jp_fabm ! state variable loop 76 IF (lk_rad_fabm(jn)) THEN 77 CALL trc_rad_sms( kt, trb, trn, jn+jp_fabm_m1 , jn+jp_fabm_m1 ) 78 ENDIF 79 END DO 80 END IF 81 ! FABM <<<+++ 67 82 68 ! 83 69 IF(ln_ctl) THEN ! print mean trends (used for debugging) … … 124 110 REAL(wp) :: zcoef, ztrcorn, ztrmasn ! " " 125 111 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrtrdb, ztrtrdn ! workspace arrays 126 #if defined key_tracer_budget127 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: ztrtrdb_m1 ! slwa128 #endif129 112 REAL(wp) :: zs2rdt 130 113 LOGICAL :: lldebug = .FALSE. … … 133 116 134 117 IF( l_trdtrc ) CALL wrk_alloc( jpi, jpj, jpk, ztrtrdb, ztrtrdn ) 135 #if defined key_tracer_budget136 IF( kt == nittrc000 .AND. l_trdtrc) THEN137 IF (.not. ALLOCATED(ztrtrdb_m1)) ALLOCATE( ztrtrdb_m1(jpi,jpj,jpk,jptra) ) ! slwa138 DO jn = jp_sms0, jp_sms1139 IF( ln_rsttr .AND. & ! Restart: read in restart file140 iom_varid( numrtr, 'rdb_trend_'//TRIM(ctrcnm(jn)), ldstop = .FALSE. ) > 0 ) THEN141 IF(lwp) WRITE(numout,*) ' nittrc000-nn_dttrc RDB tracer trend read for',TRIM(ctrcnm(jn))142 CALL iom_get( numrtr, jpdom_autoglo, 'rdb_trend_'//TRIM(ctrcnm(jn)), ztrtrdb_m1(:,:,:,jn) ) ! before tracer trend for rdb143 ELSE144 IF(lwp) WRITE(numout,*) ' no nittrc000-nn_dttrc RDB tracer trend for',TRIM(ctrcnm(jn)),', setting to 0.'145 ztrtrdb_m1(:,:,:,jn)=0.0146 ENDIF147 END DO148 ENDIF149 #endif150 118 151 119 IF( PRESENT( cpreserv ) ) THEN ! total tracer concentration is preserved … … 188 156 ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt 189 157 ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt 190 #if defined key_tracer_budget191 ! slwa budget code192 DO jk = 1, jpkm1193 ztrtrdb(:,:,jk) = ztrtrdb(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk)194 ztrtrdn(:,:,jk) = ztrtrdn(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk)195 END DO196 CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb_m1(:,:,:,jn) )197 ztrtrdb_m1(:,:,:,jn)=ztrtrdb(:,:,:)198 #else199 158 CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb ) ! Asselin-like trend handling 200 #endif201 159 CALL trd_tra( kt, 'TRC', jn, jptra_radn, ztrtrdn ) ! standard trend handling 202 160 ! … … 229 187 ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt 230 188 ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt 231 #if defined key_tracer_budget232 ! slwa budget code233 DO jk = 1, jpkm1234 ztrtrdb(:,:,jk) = ztrtrdb(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk)235 ztrtrdn(:,:,jk) = ztrtrdn(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk)236 END DO237 CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb_m1(:,:,:,jn) )238 ztrtrdb_m1(:,:,:,jn)=ztrtrdb(:,:,:)239 #else240 189 CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb ) ! Asselin-like trend handling 241 #endif242 190 CALL trd_tra( kt, 'TRC', jn, jptra_radn, ztrtrdn ) ! standard trend handling 243 191 ! … … 247 195 248 196 ENDIF 249 250 #if defined key_tracer_budget251 ! Write in the tracer restart file252 ! *******************************253 IF( lrst_trc ) THEN254 IF(lwp) WRITE(numout,*)255 IF(lwp) WRITE(numout,*) 'trc : RDB trend at last time step for tracer budget written in tracer restart file ', &256 & 'at it= ', kt,' date= ', ndastp257 IF(lwp) WRITE(numout,*) '~~~~'258 DO jn = jp_sms0, jp_sms1259 CALL iom_rstput( kt, nitrst, numrtw, 'rdb_trend_'//TRIM(ctrcnm(jn)), ztrtrdb_m1(:,:,:,jn) )260 END DO261 ENDIF262 #endif263 197 264 198 IF( l_trdtrc ) CALL wrk_dealloc( jpi, jpj, jpk, ztrtrdb, ztrtrdn )
Note: See TracChangeset
for help on using the changeset viewer.