- Timestamp:
- 2010-07-29T17:05:35+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/tranxt.F90
r2024 r2034 53 53 # include "domzgr_substitute.h90" 54 54 !!---------------------------------------------------------------------- 55 !! NEMO/OPA 3. 0 , LOCEAN-IPSL (2008)55 !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010) 56 56 !! $Id$ 57 57 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) … … 131 131 132 132 ! Leap-Frog + Asselin filter time stepping 133 IF( lk_vvl ) THEN ; CALL tra_nxt_vvl( kt , nit000, & 134 & tsb, tsn , tsa, jpts ) ! variable volume level (vvl) 135 ELSE ; CALL tra_nxt_fix( kt , nit000, & 136 & tsb, tsn , tsa, jpts ) ! fixed volume level 133 IF( lk_vvl ) THEN ; CALL tra_nxt_vvl( kt, nit000, tsb, tsn, tsa, jpts ) ! variable volume level (vvl) 134 ELSE ; CALL tra_nxt_fix( kt, nit000, tsb, tsn, tsa, jpts ) ! fixed volume level 137 135 ENDIF 138 136 … … 151 149 ztrds(:,:,jk) = ( tsb(:,:,jk,jp_sal) - ztrds(:,:,jk) ) * zfact 152 150 END DO 153 CALL trd_tra( kt, 'TRA', jp_tem, jpt ra_trd_atf, ztrdt )154 CALL trd_tra( kt, 'TRA', jp_sal, jpt ra_trd_atf, ztrds )151 CALL trd_tra( kt, 'TRA', jp_tem, jpt_trd_atf, ztrdt ) 152 CALL trd_tra( kt, 'TRA', jp_sal, jpt_trd_atf, ztrds ) 155 153 DEALLOCATE( ztrdt ) ; DEALLOCATE( ztrds ) 156 154 END IF … … 162 160 END SUBROUTINE tra_nxt 163 161 164 SUBROUTINE tra_nxt_fix( kt , kit000,&165 & ptrab, ptran , ptraa, kjpt )162 SUBROUTINE tra_nxt_fix( kt, kit000, & 163 & ptb, ptn, pta, kjpt ) 166 164 !!---------------------------------------------------------------------- 167 165 !! *** ROUTINE tra_nxt_fix *** … … 188 186 INTEGER , INTENT(in ) :: kit000 ! first time-step index 189 187 INTEGER , INTENT(in ) :: kjpt ! number of tracers 190 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: pt rab ! before tracer fields191 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: pt ran ! now tracer fields192 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: pt raa ! tracer trend188 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: ptb ! before tracer fields 189 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: ptn ! now tracer fields 190 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: pta ! tracer trend 193 191 !! 194 192 INTEGER :: ji, jj, jk, jn ! dummy loop indices … … 212 210 DO jj = 1, jpj 213 211 DO ji = 1, jpi 214 pt ran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) ! ptrab <-- ptran212 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! ptb <-- ptn 215 213 END DO 216 214 END DO … … 222 220 DO jj = 1, jpj 223 221 DO ji = 1, jpi 224 ztm = 0.25 * ( pt raa(ji,jj,jk,jn) + 2.* ptran(ji,jj,jk,jn) + ptrab(ji,jj,jk,jn) ) ! mean ptra225 ztf = atfp * ( pt raa(ji,jj,jk,jn) - 2.* ptran(ji,jj,jk,jn) + ptran(ji,jj,jk,jn) ) ! Asselin filter on ptra226 pt rab(ji,jj,jk,jn) = ptran(ji,jj,jk,jn) + ztf ! ptrab <-- filtered ptran227 pt ran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) ! ptran <-- ptraa228 pt raa(ji,jj,jk,jn) = ztm ! ptraa <-- mean ptra222 ztm = 0.25 * ( pta(ji,jj,jk,jn) + 2.* ptn(ji,jj,jk,jn) + ptb(ji,jj,jk,jn) ) ! mean pt 223 ztf = atfp * ( pta(ji,jj,jk,jn) - 2.* ptn(ji,jj,jk,jn) + ptn(ji,jj,jk,jn) ) ! Asselin filter on pt 224 ptb(ji,jj,jk,jn) = ptn(ji,jj,jk,jn) + ztf ! ptb <-- filtered ptn 225 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! ptn <-- pta 226 pta(ji,jj,jk,jn) = ztm ! pta <-- mean pt 229 227 END DO 230 228 END DO … … 241 239 DO jj = 1, jpj 242 240 DO ji = 1, jpi 243 pt ran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) ! ptran <-- ptraa241 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! ptn <-- pta 244 242 END DO 245 243 END DO … … 251 249 DO jj = 1, jpj 252 250 DO ji = 1, jpi 253 ztf = atfp * ( pt raa(ji,jj,jk,jn) - 2.* ptran(ji,jj,jk,jn) + ptrab(ji,jj,jk,jn) ) ! Asselin filter on t254 pt rab(ji,jj,jk,jn) = ptran(ji,jj,jk,jn) + ztf ! ptrab <-- filtered ptran255 pt ran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) ! ptran <-- ptraa251 ztf = atfp * ( pta(ji,jj,jk,jn) - 2.* ptn(ji,jj,jk,jn) + ptb(ji,jj,jk,jn) ) ! Asselin filter on t 252 ptb(ji,jj,jk,jn) = ptn(ji,jj,jk,jn) + ztf ! ptb <-- filtered ptn 253 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! ptn <-- pta 256 254 END DO 257 255 END DO … … 264 262 END SUBROUTINE tra_nxt_fix 265 263 266 267 SUBROUTINE tra_nxt_vvl( kt , kit000, & 268 & ptrab, ptran , ptraa, kjpt ) 264 SUBROUTINE tra_nxt_vvl( kt, kit000, & 265 & ptb, ptn, pta, kjpt ) 269 266 !!---------------------------------------------------------------------- 270 267 !! *** ROUTINE tra_nxt_vvl *** … … 293 290 INTEGER , INTENT(in ) :: kit000 ! first time-step index 294 291 INTEGER , INTENT(in ) :: kjpt ! number of tracers 295 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: pt rab ! before tracer fields296 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: pt ran ! now tracer fields297 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: pt raa ! tracer trend292 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: ptb ! before tracer fields 293 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: ptn ! now tracer fields 294 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: pta ! tracer trend 298 295 !! 299 296 INTEGER :: ji, jj, jk, jn ! dummy loop indices … … 318 315 DO jj = 1, jpj 319 316 DO ji = 1, jpi 320 pt ran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) ! tn <-- ta317 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! tn <-- ta 321 318 END DO 322 319 END DO … … 332 329 ze3t_a = fse3t_a(ji,jj,jk) 333 330 ! ! tracer content at Before, now and after 334 ztcb = pt rab(ji,jj,jk,jn) * ze3t_b335 ztcn = pt ran(ji,jj,jk,jn) * ze3t_n336 ztca = pt raa(ji,jj,jk,jn) * ze3t_a331 ztcb = ptb(ji,jj,jk,jn) * ze3t_b 332 ztcn = ptn(ji,jj,jk,jn) * ze3t_n 333 ztca = pta(ji,jj,jk,jn) * ze3t_a 337 334 ! 338 335 ! ! Asselin filter on thickness and tracer content … … 349 346 !!gm e3t_m(ji,jj,jk) = 0.25 / ze3mr 350 347 ! ! swap of arrays 351 pt rab(ji,jj,jk,jn) = ztf ! ptrab <-- ptran + filter352 pt ran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) ! ptran <-- ptraa353 pt raa(ji,jj,jk,jn) = ztm ! ptraa <-- mean t348 ptb(ji,jj,jk,jn) = ztf ! ptb <-- ptn + filter 349 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! ptn <-- pta 350 pta(ji,jj,jk,jn) = ztm ! pta <-- mean t 354 351 END DO 355 352 END DO … … 366 363 DO jj = 1, jpj 367 364 DO ji = 1, jpi 368 pt ran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) ! tn <-- ta365 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! tn <-- ta 369 366 END DO 370 367 END DO … … 381 378 ze3t_a = fse3t_a(ji,jj,jk) 382 379 ! ! tracer content at Before, now and after 383 ztcb = pt rab(ji,jj,jk,jn) * ze3t_b384 ztcn = pt ran(ji,jj,jk,jn) * ze3t_n385 ztca = pt raa(ji,jj,jk,jn) * ze3t_a380 ztcb = ptb(ji,jj,jk,jn) * ze3t_b 381 ztcn = ptn(ji,jj,jk,jn) * ze3t_n 382 ztca = pta(ji,jj,jk,jn) * ze3t_a 386 383 ! 387 384 ! ! Asselin filter on thickness and tracer content … … 393 390 ztf = ( ztcn + ztc_f ) * ze3fr 394 391 ! ! swap of arrays 395 pt rab(ji,jj,jk,jn) = ztf ! tb <-- tn filtered396 pt ran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) ! tn <-- ta392 ptb(ji,jj,jk,jn) = ztf ! tb <-- tn filtered 393 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! tn <-- ta 397 394 END DO 398 395 END DO
Note: See TracChangeset
for help on using the changeset viewer.