Changeset 10966 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcsink.F90
- Timestamp:
- 2019-05-10T18:43:09+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcsink.F90
r10376 r10966 35 35 !!---------------------------------------------------------------------- 36 36 37 SUBROUTINE trc_sink ( kt, pwsink, psinkflx, jp_tra, rsfact )37 SUBROUTINE trc_sink ( kt, Kbb, Kmm, pwsink, psinkflx, jp_tra, rsfact ) 38 38 !!--------------------------------------------------------------------- 39 39 !! *** ROUTINE trc_sink *** … … 45 45 !!--------------------------------------------------------------------- 46 46 INTEGER , INTENT(in) :: kt 47 INTEGER , INTENT(in) :: Kbb, Kmm 47 48 INTEGER , INTENT(in) :: jp_tra ! tracer index index 48 49 REAL(wp), INTENT(in) :: rsfact ! time step duration … … 75 76 DO jk = 1, jpkm1 76 77 IF( tmask(ji,jj,jk) == 1.0 ) THEN 77 zwsmax = 0.5 * e3t _n(ji,jj,jk) * rday / rsfact78 zwsmax = 0.5 * e3t(ji,jj,jk,Kmm) * rday / rsfact 78 79 iiter(ji,jj) = MAX( iiter(ji,jj), INT( pwsink(ji,jj,jk) / zwsmax ) ) 79 80 ENDIF … … 88 89 DO ji = 1, jpi 89 90 IF( tmask(ji,jj,jk) == 1 ) THEN 90 zwsmax = 0.5 * e3t _n(ji,jj,jk) * rday / rsfact91 zwsmax = 0.5 * e3t(ji,jj,jk,Kmm) * rday / rsfact 91 92 zwsink(ji,jj,jk) = MIN( pwsink(ji,jj,jk), zwsmax * REAL( iiter(ji,jj), wp ) ) 92 93 ENDIF … … 101 102 ! Compute the sedimentation term using trc_sink2 for the considered sinking particle 102 103 ! ----------------------------------------------------- 103 CALL trc_sink2( zwsink, psinkflx, jp_tra, iiter, rsfact )104 CALL trc_sink2( Kbb, Kmm, zwsink, psinkflx, jp_tra, iiter, rsfact ) 104 105 ! 105 106 IF( ln_timing ) CALL timing_stop('trc_sink') … … 107 108 END SUBROUTINE trc_sink 108 109 109 SUBROUTINE trc_sink2( pwsink, psinkflx, jp_tra, kiter, rsfact )110 SUBROUTINE trc_sink2( Kbb, Kmm, pwsink, psinkflx, jp_tra, kiter, rsfact ) 110 111 !!--------------------------------------------------------------------- 111 112 !! *** ROUTINE trc_sink2 *** … … 118 119 !! transport term, i.e. div(u*tra). 119 120 !!--------------------------------------------------------------------- 121 INTEGER, INTENT(in ) :: Kbb, Kmm ! time level indices 120 122 INTEGER, INTENT(in ) :: jp_tra ! tracer index index 121 123 REAL(wp), INTENT(in ) :: rsfact ! duration of time step … … 133 135 ztraz(:,:,:) = 0.e0 134 136 zakz (:,:,:) = 0.e0 135 ztrb (:,:,:) = tr b(:,:,:,jp_tra)137 ztrb (:,:,:) = tr(:,:,:,jp_tra,Kbb) 136 138 137 139 DO jk = 1, jpkm1 … … 150 152 ! 151 153 DO jk = 2, jpkm1 152 ztraz(ji,jj,jk) = ( tr b(ji,jj,jk-1,jp_tra) - trb(ji,jj,jk,jp_tra) ) * tmask(ji,jj,jk)154 ztraz(ji,jj,jk) = ( tr(ji,jj,jk-1,jp_tra,Kbb) - tr(ji,jj,jk,jp_tra,Kbb) ) * tmask(ji,jj,jk) 153 155 END DO 154 156 ztraz(ji,jj,1 ) = 0.0 … … 169 171 ! vertical advective flux 170 172 DO jk = 1, jpkm1 171 zigma = zwsink2(ji,jj,jk+1) * zstep / e3w _n(ji,jj,jk+1)173 zigma = zwsink2(ji,jj,jk+1) * zstep / e3w(ji,jj,jk+1,Kmm) 172 174 zew = zwsink2(ji,jj,jk+1) 173 psinkflx(ji,jj,jk+1) = -zew * ( tr b(ji,jj,jk,jp_tra) - 0.5 * ( 1 + zigma ) * zakz(ji,jj,jk) ) * zstep175 psinkflx(ji,jj,jk+1) = -zew * ( tr(ji,jj,jk,jp_tra,Kbb) - 0.5 * ( 1 + zigma ) * zakz(ji,jj,jk) ) * zstep 174 176 END DO 175 177 ! … … 179 181 180 182 DO jk=1,jpkm1 181 zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t _n(ji,jj,jk)182 tr b(ji,jj,jk,jp_tra) = trb(ji,jj,jk,jp_tra) + zflx183 zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t(ji,jj,jk,Kmm) 184 tr(ji,jj,jk,jp_tra,Kbb) = tr(ji,jj,jk,jp_tra,Kbb) + zflx 183 185 END DO 184 186 END DO … … 189 191 DO jj = 1,jpj 190 192 DO ji = 1, jpi 191 zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t _n(ji,jj,jk)193 zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t(ji,jj,jk,Kmm) 192 194 ztrb(ji,jj,jk) = ztrb(ji,jj,jk) + 2. * zflx 193 195 END DO … … 195 197 END DO 196 198 197 tr b(:,:,:,jp_tra) = ztrb(:,:,:)199 tr(:,:,:,jp_tra,Kbb) = ztrb(:,:,:) 198 200 psinkflx(:,:,:) = 2. * psinkflx(:,:,:) 199 201 !
Note: See TracChangeset
for help on using the changeset viewer.