- Timestamp:
- 2019-11-22T15:29:17+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/TRP/trctrp.F90
r10068 r11949 20 20 USE trcadv ! advection (trc_adv routine) 21 21 USE trczdf ! vertical diffusion (trc_zdf routine) 22 USE trc nxt ! time-stepping (trc_nxtroutine)22 USE trcatf ! time filtering (trc_atf routine) 23 23 USE trcrad ! positivity (trc_rad routine) 24 24 USE trcsbc ! surface boundary condition (trc_sbc routine) … … 44 44 CONTAINS 45 45 46 SUBROUTINE trc_trp( kt )46 SUBROUTINE trc_trp( kt, Kbb, Kmm, Krhs, Kaa ) 47 47 !!---------------------------------------------------------------------- 48 48 !! *** ROUTINE trc_trp *** … … 53 53 !! - Update the passive tracers 54 54 !!---------------------------------------------------------------------- 55 INTEGER, INTENT( in ) :: kt ! ocean time-step index 55 INTEGER, INTENT( in ) :: kt ! ocean time-step index 56 INTEGER, INTENT( in ) :: Kbb, Kmm, Krhs, Kaa ! time level indices (not swapped in this routine) 56 57 !! --------------------------------------------------------------------- 57 58 ! … … 60 61 IF( .NOT. lk_c1d ) THEN 61 62 ! 62 CALL trc_sbc ( kt )! surface boundary condition63 IF( ln_trabbl ) CALL trc_bbl ( kt )! advective (and/or diffusive) bottom boundary layer scheme64 IF( ln_trcdmp ) CALL trc_dmp ( kt )! internal damping trends65 IF( ln_bdy ) CALL trc_bdy_dmp( kt ) ! BDY damping trends66 CALL trc_adv ( kt )! horizontal & vertical advection67 ! ! Partial top/bottom cell: GRADh( trb)63 CALL trc_sbc ( kt, Kmm, tr, Krhs ) ! surface boundary condition 64 IF( ln_trabbl ) CALL trc_bbl ( kt, Kbb, Kmm, tr, Krhs ) ! advective (and/or diffusive) bottom boundary layer scheme 65 IF( ln_trcdmp ) CALL trc_dmp ( kt, Kbb, Kmm, tr, Krhs ) ! internal damping trends 66 IF( ln_bdy ) CALL trc_bdy_dmp( kt, Kbb, Krhs ) ! BDY damping trends 67 CALL trc_adv ( kt, Kbb, Kmm, tr, Krhs ) ! horizontal & vertical advection 68 ! ! Partial top/bottom cell: GRADh( tr(Kbb) ) 68 69 IF( ln_zps ) THEN 69 IF( ln_isfcav ) THEN ; CALL zps_hde_isf( kt, jptra, trb, pgtu=gtru, pgtv=gtrv, pgtui=gtrui, pgtvi=gtrvi ) ! both top & bottom70 ELSE ; CALL zps_hde ( kt, jptra, trb, gtru, gtrv ) ! only bottom70 IF( ln_isfcav ) THEN ; CALL zps_hde_isf( kt, Kmm, jptra, tr(:,:,:,:,Kbb), pgtu=gtru, pgtv=gtrv, pgtui=gtrui, pgtvi=gtrvi ) ! both top & bottom 71 ELSE ; CALL zps_hde ( kt, Kmm, jptra, tr(:,:,:,:,Kbb), gtru, gtrv ) ! only bottom 71 72 ENDIF 72 73 ENDIF 73 74 ! 74 CALL trc_ldf ( kt )! lateral mixing75 CALL trc_ldf ( kt, Kbb, Kmm, tr, Krhs ) ! lateral mixing 75 76 #if defined key_agrif 76 77 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_trc ! tracers sponge 77 78 #endif 78 CALL trc_zdf ( kt ) ! vertical mixing and after tracer fields 79 CALL trc_nxt ( kt ) ! tracer fields at next time step 80 IF( ln_trcrad ) CALL trc_rad ( kt ) ! Correct artificial negative concentrations 81 IF( ln_trcdmp_clo ) CALL trc_dmp_clo( kt ) ! internal damping trends on closed seas only 79 CALL trc_zdf ( kt, Kbb, Kmm, Krhs, tr, Kaa ) ! vert. mixing & after tracer ==> after 80 CALL trc_atf ( kt, Kbb, Kmm, Kaa , tr ) ! time filtering of "now" tracer fields 81 ! 82 ! Subsequent calls use the filtered values: Kmm and Kaa 83 ! These are used explicitly here since time levels will not be swapped until after tra_atf/dyn_atf/ssh_atf in stp 84 ! 85 IF( ln_trcrad ) CALL trc_rad ( kt, Kmm, Kaa, tr ) ! Correct artificial negative concentrations 86 IF( ln_trcdmp_clo ) CALL trc_dmp_clo( kt, Kmm, Kaa ) ! internal damping trends on closed seas only 82 87 83 88 ! 84 89 ELSE ! 1D vertical configuration 85 CALL trc_sbc( kt ) ! surface boundary condition 86 IF( ln_trcdmp ) CALL trc_dmp( kt ) ! internal damping trends 87 CALL trc_zdf( kt ) ! vertical mixing and after tracer fields 88 CALL trc_nxt( kt ) ! tracer fields at next time step 89 IF( ln_trcrad ) CALL trc_rad( kt ) ! Correct artificial negative concentrations 90 CALL trc_sbc( kt, Kmm, tr, Krhs ) ! surface boundary condition 91 IF( ln_trcdmp ) CALL trc_dmp( kt, Kbb, Kmm, tr, Krhs ) ! internal damping trends 92 CALL trc_zdf( kt, Kbb, Kmm, Krhs, tr, Kaa ) ! vert. mixing & after tracer ==> after 93 CALL trc_atf( kt, Kbb, Kmm, Kaa , tr ) ! time filtering of "now" tracer fields 94 ! 95 ! Subsequent calls use the filtered values: Kmm and Kaa 96 ! These are used explicitly here since time levels will not be swapped until after tra_atf/dyn_atf/ssh_atf in stp 97 ! 98 IF( ln_trcrad ) CALL trc_rad( kt, Kmm, Kaa, tr ) ! Correct artificial negative concentrations 90 99 ! 91 100 END IF
Note: See TracChangeset
for help on using the changeset viewer.