- Timestamp:
- 2015-06-19T17:52:53+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5021_nn_etau_revision/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
r5239 r5446 143 143 ELSE ! Leap-Frog + Asselin filter time stepping 144 144 ! 145 IF( lk_vvl ) THEN ; CALL tra_nxt_vvl( kt, nit000, 'TRA', tsb, tsn, tsa, jpts ) ! variable volume level (vvl) 146 ELSE ; CALL tra_nxt_fix( kt, nit000, 'TRA', tsb, tsn, tsa, jpts ) ! fixed volume level 145 IF( lk_vvl ) THEN ; CALL tra_nxt_vvl( kt, nit000, rdttra, 'TRA', tsb, tsn, tsa, & 146 & sbc_tsc, sbc_tsc_b, jpts ) ! variable volume level (vvl) 147 ELSE ; CALL tra_nxt_fix( kt, nit000, 'TRA', tsb, tsn, tsa, jpts ) ! fixed volume level 147 148 ENDIF 148 149 ENDIF … … 241 242 242 243 243 SUBROUTINE tra_nxt_vvl( kt, kit000, cdtype, ptb, ptn, pta, kjpt )244 SUBROUTINE tra_nxt_vvl( kt, kit000, p2dt, cdtype, ptb, ptn, pta, psbc_tc, psbc_tc_b, kjpt ) 244 245 !!---------------------------------------------------------------------- 245 246 !! *** ROUTINE tra_nxt_vvl *** … … 265 266 !! - (ta,sa) time averaged (t,s) (ln_dynhpg_imp = T) 266 267 !!---------------------------------------------------------------------- 267 INTEGER , INTENT(in ) :: kt ! ocean time-step index 268 INTEGER , INTENT(in ) :: kit000 ! first time step index 269 CHARACTER(len=3), INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) 270 INTEGER , INTENT(in ) :: kjpt ! number of tracers 271 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: ptb ! before tracer fields 272 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: ptn ! now tracer fields 273 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: pta ! tracer trend 268 INTEGER , INTENT(in ) :: kt ! ocean time-step index 269 INTEGER , INTENT(in ) :: kit000 ! first time step index 270 REAL(wp) , INTENT(in ), DIMENSION(jpk) :: p2dt ! time-step 271 CHARACTER(len=3), INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) 272 INTEGER , INTENT(in ) :: kjpt ! number of tracers 273 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: ptb ! before tracer fields 274 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: ptn ! now tracer fields 275 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: pta ! tracer trend 276 REAL(wp) , INTENT(in ), DIMENSION(jpi,jpj,kjpt) :: psbc_tc ! surface tracer content 277 REAL(wp) , INTENT(in ), DIMENSION(jpi,jpj,kjpt) :: psbc_tc_b ! before surface tracer content 278 274 279 !! 275 LOGICAL :: ll_tra , ll_tra_hpg, ll_traqsr ! local logical280 LOGICAL :: ll_tra_hpg, ll_traqsr ! local logical 276 281 INTEGER :: ji, jj, jk, jn ! dummy loop indices 277 282 REAL(wp) :: zfact1, ztc_a , ztc_n , ztc_b , ztc_f , ztc_d ! local scalar … … 286 291 ! 287 292 IF( cdtype == 'TRA' ) THEN 288 ll_tra = .TRUE. ! active tracers case289 293 ll_tra_hpg = ln_dynhpg_imp ! active tracers case and semi-implicit hpg 290 294 ll_traqsr = ln_traqsr ! active tracers case and solar penetration 291 295 ELSE 292 ll_tra = .FALSE. ! passive tracers case293 296 ll_tra_hpg = .FALSE. ! passive tracers case or NO semi-implicit hpg 294 297 ll_traqsr = .FALSE. ! active tracers case and NO solar penetration … … 297 300 DO jn = 1, kjpt 298 301 DO jk = 1, jpkm1 299 zfact1 = atfp * rdttra(jk)302 zfact1 = atfp * p2dt(jk) 300 303 zfact2 = zfact1 / rau0 301 304 DO jj = 1, jpj … … 315 318 ztc_f = ztc_n + atfp * ztc_d 316 319 ! 317 IF( ll_tra .AND. jk == 1 ) THEN ! first level only for T & S318 319 ztc_f = ztc_f - zfact1 * ( sbc_tsc(ji,jj,jn) - sbc_tsc_b(ji,jj,jn) )320 IF( jk == 1 ) THEN ! first level 321 ze3t_f = ze3t_f - zfact2 * ( emp_b(ji,jj) - emp(ji,jj) ) 322 ztc_f = ztc_f - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 320 323 ENDIF 321 324 IF( ll_traqsr .AND. jn == jp_tem .AND. jk <= nksr ) & ! solar penetration (temperature only)
Note: See TracChangeset
for help on using the changeset viewer.