Changes between Version 15 and Version 16 of ticket/0664_TRA_TRP
- Timestamp:
- 2010-09-17T15:09:42+02:00 (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ticket/0664_TRA_TRP
v15 v16 28 28 in advection module (traadv...) : both the 4D tracer and transport components (e2u*e3u*u,...) are given through input argument. 29 29 30 for example, for CEN2 advection the routine start as follows: 31 {{{ 32 SUBROUTINE tra_adv_cen2( kt, cdtype, pun, pvn, pwn, ptrab, ptran, ptraa, kjpt ) 30 for example, for TVD advection the routine start as follows: 31 {{{ 32 SUBROUTINE tra_adv_tvd ( kt, cdtype, p2dt, pun, pvn, pwn, & 33 & ptb, ptn, pta, kjpt ) 33 34 !!---------------------------------------------------------------------- 34 35 !! *** ROUTINE tra_adv_cen2 *** … … 41 42 CHARACTER(len=3), INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) 42 43 INTEGER , INTENT(in ) :: kjpt ! number of tracers 44 REAL(wp) , INTENT(in ), DIMENSION( jpk ) :: p2dt ! vertical profile of tracer time-step 43 45 REAL(wp) , INTENT(in ), DIMENSION(jpi,jpj,jpk ) :: pun, pvn, pwn ! 3 ocean transport components 44 46 REAL(wp) , INTENT(in ), DIMENSION(jpi,jpj,jpk,kjpt) :: ptrab, ptran ! before and now tracer fields … … 50 52 '''(2)''' Test for T & S 3D arrays [[BR]][[BR]] 51 53 52 In order to test the new tra... modules without changing the temperature and salinity field every where in the code, we replace T and S 3D arrays by 4D array just within the TRA modules in the call of the new routine. For example, in the step ro tuin54 In order to test the new tra... modules without changing the temperature and salinity field every where in the code, we replace T and S 3D arrays by 4D array just within the TRA modules in the call of the new routine. For example, in the step routine 53 55 54 56 {{{ 55 57 SUBROUTINE stp( kstp ) 56 58 INTEGER, INTENT(in) :: kstp ! ocean time-step index 59 60 !+++ Initialisation phase 61 62 CALL tra_swap 63 64 !++++ 57 65 58 66 bla bla bla bla bla bla … … 62 70 ! Active tracers (ua, va used as workspace) 63 71 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 64 ta(:,:,:) = 0.e0 ! set tracer trends to zero 65 sa(:,:,:) = 0.e0 66 67 CALL tra_swap 72 73 tsa(:,:,:,:) = 0.e0 ! set tracer trends to zero 74 68 75 CALL tra_sbc ( kstp ) ! surface boundary condition 69 76 IF( ln_traqsr ) CALL tra_qsr ( kstp ) ! penetrative solar radiation qsr … … 85 92 IF( ln_zdfnpc ) CALL tra_npc ( kstp ) ! update after fields by non-penetrative convection 86 93 CALL tra_nxt ( kstp ) ! tracer fields at next time step 87 CALL tra_unswap 88 CALL eos( ta, sa, rhd, rhop ) ! Time-filtered in situ density for hpg computation 89 IF( ln_zps ) CALL zps_hde( kstp, ta, sa, rhd, & ! Partial steps: time filtered hor. derivative 90 & gtu, gsu, gru, & ! of t, s, rd at the bottom ocean level 91 & gtv, gsv, grv ) 94 CALL eos( tsa, rhd, rhop ) ! Time-filtered in situ density for hpg computation 95 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsa, gtsu, gtsv, & ! zps: time filtered hor. derivative 96 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 92 97 93 98 ELSE ! centered hpg (eos then time stepping) 94 CALL tra_unswap 95 CALL eos( tn, sn, rhd, rhop ) ! now in situ density for hpg computation 96 IF( ln_zps ) CALL zps_hde( kstp, tn, sn, rhd, & ! Partial steps: now horizontal derivative 97 & gtu, gsu, gru, & ! of t, s, rd at the bottom ocean level 98 & gtv, gsv, grv ) 99 CALL tra_swap 99 CALL eos( tsn, rhd, rhop ) ! now in situ density for hpg computation 100 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsn, gtsu, gtsv, & ! zps: now hor. derivative 101 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 100 102 IF( ln_zdfnpc ) CALL tra_npc ( kstp ) ! update after fields by non-penetrative convection 101 103 CALL tra_nxt ( kstp ) ! tracer fields at next time step 104 ENDIF 102 105 CALL tra_unswap 103 ENDIF 106 104 107 105 108 bla bla bla bla bla bla … … 188 191 ! ! add the eiv transport (if necessary) 189 192 IF( lk_traldf_eiv ) CALL tra_adv_eiv( kt, zun, zvn, zwn, 'TRA' ) 190 191 CALL tra_adv_cen2( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) ! 2nd order centered 193 CALL tra_adv_tvd( kt, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts ) ! TVD 194 192 195 }}} 193 196 … … 229 232 IF( lk_traldf_eiv ) CALL tra_adv_eiv( kt, zun, zvn, zwn, 'TRC' ) 230 233 231 CALL tra_adv_ cen2( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra ) ! 2nd order centered234 CALL tra_adv_tvd( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) ! 2nd order centered 232 235 }}} 233 236 … … 236 239 237 240 '''(4)''' Final step : replace T and S 3D arrays by 4D arrays TS throughout the code [[BR]][[BR]] 241 - This action is only depends now on the replacement of these 3D by 4D arrays in OBC, BDY and AGRIF 238 242 239 243 '''Additional Tasks'''[[BR]] 240 244 [[BR]] 241 245 - TRENDS : As a starting point, both active & passive tracers trends modules ( trdmld.F90 & trdmld_trc.F90 ) will be encapsulate in one module 242 246 - Re-organisation of the initialisation phase : The initialisation phase of each physical processes which was done in the associated module is now moved in opa_init 247 - Re-organisation of OFFLINE component : The Offline part (OFF_SRC) of the code is now used the same routines of the online (OPA_SRC) + some additional 248 - Open boundaries conditions ( OBC and BDY ) are not merged and still not available for passive tracers 249 243 250 === Testing === 244 251 Testing could consider (where appropriate) other configurations in addition to NVTK].