Changeset 261 for trunk/NEMO/TOP_SRC/TRP/trcadv_muscl.F90
- Timestamp:
- 2005-09-08T15:18:32+02:00 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/TRP/trcadv_muscl.F90
r247 r261 14 14 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 15 15 USE trcbbl ! advective passive tracers in the BBL 16 USE lib_mpp 16 17 17 18 IMPLICIT NONE … … 21 22 PUBLIC trc_adv_muscl ! routine called by trcstp.F90 22 23 23 !! * Module variable24 REAL(wp), DIMENSION(jpk) :: &25 rdttrc ! vertical profile of tracer time-step26 27 24 !! * Substitutions 28 25 # include "passivetrc_substitute.h90" 29 26 !!---------------------------------------------------------------------- 30 !! TOP 1.0 , LOCEAN-IPSL (2005) 31 !! $Header$ 32 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 27 !! OPA 9.0 , LODYC-IPSL (2003) 33 28 !!---------------------------------------------------------------------- 34 29 … … 77 72 REAL(wp) :: zu, zv, zw, zeu, zev, zew, zbtr, ztra 78 73 REAL(wp) :: z0u, z0v, z0w 79 REAL(wp) :: zzt1, zzt2, zalpha 74 REAL(wp) :: zzt1, zzt2, zalpha, z2dtt 80 75 #if defined key_trc_diatrd 81 76 REAL(wp) :: ztai, ztaj … … 90 85 WRITE(numout,*) 'trc_adv : MUSCL advection scheme' 91 86 WRITE(numout,*) '~~~~~~~' 92 rdttrc(:) = rdttra(:) * FLOAT(ndttrc)93 87 ENDIF 94 88 … … 145 139 ztp2(:,:,jpk) = 0.e0 146 140 147 148 141 ! Slopes limitation 149 142 DO jk = 1, jpkm1 150 143 DO jj = 2, jpj 151 DO ji = fs_2, fs_jpim1! vector opt.144 DO ji = fs_2, jpi ! vector opt. 152 145 ztp1(ji,jj,jk) = SIGN( 1., ztp1(ji,jj,jk) ) & 153 146 & * MIN( ABS( ztp1(ji ,jj,jk) ), & … … 163 156 END DO 164 157 END DO 165 166 158 167 159 ! Advection terms … … 179 171 #endif 180 172 ! MUSCL fluxes 173 z2dtt = rdttra(jk) * FLOAT(ndttrc) 181 174 z0u = SIGN( 0.5, zun(ji,jj,jk) ) 182 175 zalpha = 0.5 - z0u 183 zu = z0u - 0.5 * zun(ji,jj,jk) * rdttrc(jk)/ e1u(ji,jj)176 zu = z0u - 0.5 * zun(ji,jj,jk) * z2dtt / e1u(ji,jj) 184 177 zzt1 = trb(ji+1,jj,jk,jn) + zu*ztp1(ji+1,jj,jk) 185 178 zzt2 = trb(ji ,jj,jk,jn) + zu*ztp1(ji ,jj,jk) 186 179 zt1(ji,jj,jk) = zeu * ( zalpha * zzt1 + (1.-zalpha) * zzt2 ) 187 188 180 z0v = SIGN( 0.5, zvn(ji,jj,jk) ) 189 181 zalpha = 0.5 - z0v 190 zv = z0v - 0.5 * zvn(ji,jj,jk) * rdttrc(jk)/ e2v(ji,jj)182 zv = z0v - 0.5 * zvn(ji,jj,jk) * z2dtt / e2v(ji,jj) 191 183 zzt1 = trb(ji,jj+1,jk,jn) + zv*ztp2(ji,jj+1,jk) 192 184 zzt2 = trb(ji,jj ,jk,jn) + zv*ztp2(ji,jj ,jk) … … 238 230 END DO 239 231 240 IF(l _ctl) THEN ! print mean trends (used for debugging)241 ztra = SUM( tra(2:nictl ,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) )232 IF(ln_ctl) THEN ! print mean trends (used for debugging) 233 ztra = SUM( tra(2:nictle,2:njctle,1:jpkm1,jn) * tmask(2:nictle,2:njctle,1:jpkm1) ) 242 234 WRITE(numout,*) ' trc/had - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' muscl' 243 235 tra_ctl(jn) = ztra … … 284 276 DO jj = 2, jpjm1 285 277 DO ji = fs_2, fs_jpim1 ! vector opt. 278 z2dtt = rdttra(jk) * FLOAT(ndttrc) 286 279 zew = zwn(ji,jj,jk+1) 287 280 z0w = SIGN( 0.5, zwn(ji,jj,jk+1) ) 288 281 zalpha = 0.5 + z0w 289 zw = z0w - 0.5 * zwn(ji,jj,jk+1)* rdttrc(jk)/ fse3w(ji,jj,jk+1)282 zw = z0w - 0.5 * zwn(ji,jj,jk+1)*z2dtt / fse3w(ji,jj,jk+1) 290 283 zzt1 = trb(ji,jj,jk+1,jn) + zw*ztp1(ji,jj,jk+1) 291 284 zzt2 = trb(ji,jj,jk ,jn) + zw*ztp1(ji,jj,jk ) … … 322 315 END DO 323 316 324 IF(l _ctl) THEN ! print mean trends (used for debugging)325 ztra = SUM( tra(2:nictl ,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) )317 IF(ln_ctl) THEN ! print mean trends (used for debugging) 318 ztra = SUM( tra(2:nictle,2:njctle,1:jpkm1,jn) * tmask(2:nictle,2:njctle,1:jpkm1) ) 326 319 WRITE(numout,*) ' trc/zad - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' muscl' 327 320 tra_ctl(jn) = ztra
Note: See TracChangeset
for help on using the changeset viewer.