- Timestamp:
- 2019-11-22T15:29:17+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/TRP/trcdmp.F90
r11536 r11949 63 63 64 64 65 SUBROUTINE trc_dmp( kt )65 SUBROUTINE trc_dmp( kt, Kbb, Kmm, ptr, Krhs ) 66 66 !!---------------------------------------------------------------------- 67 67 !! *** ROUTINE trc_dmp *** … … 73 73 !! ** Method : Newtonian damping towards trdta computed 74 74 !! and add to the general tracer trends: 75 !! tr n = tra + restotr * (trdta - trb)75 !! tr(Kmm) = tr(Krhs) + restotr * (trdta - tr(Kbb)) 76 76 !! The trend is computed either throughout the water column 77 77 !! (nlmdmptr=0) or in area of weak vertical mixing (nlmdmptr=1) or 78 78 !! below the well mixed layer (nlmdmptr=2) 79 79 !! 80 !! ** Action : - update the tracer trends tr awith the newtonian80 !! ** Action : - update the tracer trends tr(:,:,:,:,Krhs) with the newtonian 81 81 !! damping trends. 82 82 !! - save the trends ('key_trdmxl_trc') 83 83 !!---------------------------------------------------------------------- 84 INTEGER, INTENT(in) :: kt ! ocean time-step index 84 INTEGER, INTENT(in ) :: kt ! ocean time-step index 85 INTEGER, INTENT(in ) :: Kbb, Kmm, Krhs ! time level indices 86 REAL(wp), DIMENSION(jpi,jpj,jpk,jptra,jpt), INTENT(inout) :: ptr ! passive tracers and RHS of tracer equation 85 87 ! 86 88 INTEGER :: ji, jj, jk, jn, jl ! dummy loop indices … … 100 102 DO jn = 1, jptra ! tracer loop 101 103 ! ! =========== 102 IF( l_trdtrc ) ztrtrd(:,:,:) = tra(:,:,:,jn) ! save trends104 IF( l_trdtrc ) ztrtrd(:,:,:) = ptr(:,:,:,jn,Krhs) ! save trends 103 105 ! 104 106 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 105 107 ! 106 108 jl = n_trc_index(jn) 107 CALL trc_dta( kt, sf_trcdta(jl), rf_trfac(jl), ztrcdta ) ! read tracer data at nit000109 CALL trc_dta( kt, Kmm, sf_trcdta(jl), rf_trfac(jl), ztrcdta ) ! read tracer data at nit000 108 110 ! 109 111 SELECT CASE ( nn_zdmp_tr ) … … 113 115 DO jj = 2, jpjm1 114 116 DO ji = fs_2, fs_jpim1 ! vector opt. 115 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) )117 ptr(ji,jj,jk,jn,Krhs) = ptr(ji,jj,jk,jn,Krhs) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - ptr(ji,jj,jk,jn,Kbb) ) 116 118 END DO 117 119 END DO … … 123 125 DO ji = fs_2, fs_jpim1 ! vector opt. 124 126 IF( avt(ji,jj,jk) <= avt_c ) THEN 125 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) )127 ptr(ji,jj,jk,jn,Krhs) = ptr(ji,jj,jk,jn,Krhs) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - ptr(ji,jj,jk,jn,Kbb) ) 126 128 ENDIF 127 129 END DO … … 133 135 DO jj = 2, jpjm1 134 136 DO ji = fs_2, fs_jpim1 ! vector opt. 135 IF( gdept _n(ji,jj,jk) >= hmlp (ji,jj) ) THEN136 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) )137 IF( gdept(ji,jj,jk,Kmm) >= hmlp (ji,jj) ) THEN 138 ptr(ji,jj,jk,jn,Krhs) = ptr(ji,jj,jk,jn,Krhs) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - ptr(ji,jj,jk,jn,Kbb) ) 137 139 END IF 138 140 END DO … … 145 147 ! 146 148 IF( l_trdtrc ) THEN 147 ztrtrd(:,:,:) = tra(:,:,:,jn) - ztrtrd(:,:,:)148 CALL trd_tra( kt, 'TRC', jn, jptra_dmp, ztrtrd )149 ztrtrd(:,:,:) = ptr(:,:,:,jn,Krhs) - ztrtrd(:,:,:) 150 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_dmp, ztrtrd ) 149 151 END IF 150 152 ! ! =========== … … 159 161 WRITE(charout, FMT="('dmp ')") 160 162 CALL prt_ctl_trc_info(charout) 161 CALL prt_ctl_trc( tab4d= tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' )163 CALL prt_ctl_trc( tab4d=ptr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 162 164 ENDIF 163 165 ! … … 224 226 225 227 226 SUBROUTINE trc_dmp_clo( kt )228 SUBROUTINE trc_dmp_clo( kt, Kbb, Kmm ) 227 229 !!--------------------------------------------------------------------- 228 230 !! *** ROUTINE trc_dmp_clo *** … … 236 238 !! nctsi2(), nctsj2() : north-east Closed sea limits (i,j) 237 239 !!---------------------------------------------------------------------- 238 INTEGER, INTENT( in ) :: kt ! ocean time-step index 240 INTEGER, INTENT( in ) :: kt ! ocean time-step index 241 INTEGER, INTENT( in ) :: Kbb, Kmm ! time level indices 239 242 ! 240 243 INTEGER :: ji , jj, jk, jn, jl, jc ! dummy loop indicesa … … 354 357 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 355 358 jl = n_trc_index(jn) 356 CALL trc_dta( kt, sf_trcdta(jl), rf_trfac(jl), ztrcdta ) ! read tracer data at nit000359 CALL trc_dta( kt, Kmm, sf_trcdta(jl), rf_trfac(jl), ztrcdta ) ! read tracer data at nit000 357 360 DO jc = 1, npncts 358 361 DO jk = 1, jpkm1 359 362 DO jj = nctsj1(jc), nctsj2(jc) 360 363 DO ji = nctsi1(jc), nctsi2(jc) 361 tr n(ji,jj,jk,jn) = ztrcdta(ji,jj,jk)362 tr b(ji,jj,jk,jn) = trn(ji,jj,jk,jn)364 tr(ji,jj,jk,jn,Kmm) = ztrcdta(ji,jj,jk) 365 tr(ji,jj,jk,jn,Kbb) = tr(ji,jj,jk,jn,Kmm) 363 366 END DO 364 367 END DO
Note: See TracChangeset
for help on using the changeset viewer.