Changeset 10946 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP
- Timestamp:
- 2019-05-08T10:56:14+02:00 (5 years ago)
- Location:
- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcadv.F90
r10922 r10946 116 116 ! 117 117 IF( ln_ldfeiv .AND. .NOT. ln_traldf_triad ) & 118 & CALL ldf_eiv_trp( kt, nittrc000, zun, zvn, zwn, 'TRC', Kmm ) ! add the eiv transport118 & CALL ldf_eiv_trp( kt, nittrc000, zun, zvn, zwn, 'TRC', Kmm, Krhs ) ! add the eiv transport 119 119 ! 120 120 IF( ln_mle ) CALL tra_mle_trp( kt, nittrc000, zun, zvn, zwn, 'TRC' ) ! add the mle transport -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcbbl.F90
r10068 r10946 36 36 CONTAINS 37 37 38 SUBROUTINE trc_bbl( kt )38 SUBROUTINE trc_bbl( kt, Kmm, Krhs ) 39 39 !!---------------------------------------------------------------------- 40 40 !! *** ROUTINE bbl *** … … 46 46 !!---------------------------------------------------------------------- 47 47 INTEGER, INTENT( in ) :: kt ! ocean time-step 48 INTEGER, INTENT( in ) :: Kmm, Krhs ! time level indices 48 49 INTEGER :: jn ! loop index 49 50 CHARACTER (len=22) :: charout … … 88 89 DO jn = 1, jptra 89 90 ztrtrd(:,:,:,jn) = tra(:,:,:,jn) - ztrtrd(:,:,:,jn) 90 CALL trd_tra( kt, 'TRC', jn, jptra_bbl, ztrtrd(:,:,:,jn) )91 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_bbl, ztrtrd(:,:,:,jn) ) 91 92 END DO 92 93 DEALLOCATE( ztrtrd ) ! temporary save of trends -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcdmp.F90
r10351 r10946 63 63 64 64 65 SUBROUTINE trc_dmp( kt )65 SUBROUTINE trc_dmp( kt, Kmm, Krhs ) 66 66 !!---------------------------------------------------------------------- 67 67 !! *** ROUTINE trc_dmp *** … … 83 83 !!---------------------------------------------------------------------- 84 84 INTEGER, INTENT(in) :: kt ! ocean time-step index 85 INTEGER, INTENT(in) :: Kmm, Krhs ! time level indices 85 86 ! 86 87 INTEGER :: ji, jj, jk, jn, jl ! dummy loop indices … … 146 147 IF( l_trdtrc ) THEN 147 148 ztrtrd(:,:,:) = tra(:,:,:,jn) - ztrtrd(:,:,:) 148 CALL trd_tra( kt, 'TRC', jn, jptra_dmp, ztrtrd )149 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_dmp, ztrtrd ) 149 150 END IF 150 151 ! ! =========== -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcldf.F90
r10922 r10946 51 51 CONTAINS 52 52 53 SUBROUTINE trc_ldf( kt, Kmm )53 SUBROUTINE trc_ldf( kt, Kmm, Krhs ) 54 54 !!---------------------------------------------------------------------- 55 55 !! *** ROUTINE tra_ldf *** … … 59 59 !!---------------------------------------------------------------------- 60 60 INTEGER, INTENT( in ) :: kt ! ocean time-step index 61 INTEGER, INTENT( in ) :: Kmm ! ocean time-level index61 INTEGER, INTENT( in ) :: Kmm, Krhs ! ocean time-level index 62 62 ! 63 63 INTEGER :: ji, jj, jk, jn … … 106 106 DO jn = 1, jptra 107 107 ztrtrd(:,:,:,jn) = tra(:,:,:,jn) - ztrtrd(:,:,:,jn) 108 CALL trd_tra( kt, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) )108 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) ) 109 109 END DO 110 110 DEALLOCATE( ztrtrd ) -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcnxt.F90
r10425 r10946 54 54 CONTAINS 55 55 56 SUBROUTINE trc_nxt( kt )56 SUBROUTINE trc_nxt( kt, Kmm, Krhs ) 57 57 !!---------------------------------------------------------------------- 58 58 !! *** ROUTINE trcnxt *** … … 79 79 !!---------------------------------------------------------------------- 80 80 INTEGER, INTENT( in ) :: kt ! ocean time-step index 81 INTEGER, INTENT( in ) :: Kmm, Krhs ! time level indices 81 82 ! 82 83 INTEGER :: jk, jn ! dummy loop indices … … 106 107 IF( ln_traldf_iso ) THEN ! diagnose the "pure" Kz diffusive trend 107 108 DO jn = 1, jptra 108 CALL trd_tra( kt, 'TRC', jn, jptra_zdfp, ztrdt(:,:,:,jn) )109 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_zdfp, ztrdt(:,:,:,jn) ) 109 110 ENDDO 110 111 ENDIF … … 128 129 ! 129 130 DO jn = 1, jptra 130 CALL trd_tra( kt, 'TRC', jn, jptra_tot, ztrdt(:,:,:,jn) )131 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_tot, ztrdt(:,:,:,jn) ) 131 132 ENDDO 132 133 ! … … 150 151 ztrdt(:,:,:,:) = 0._wp 151 152 DO jn = 1, jptra 152 CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) )153 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) ) 153 154 ENDDO 154 155 END IF … … 157 158 IF( .NOT. l_offline ) THEN ! Leap-Frog + Asselin filter time stepping 158 159 IF( ln_linssh ) THEN ; CALL tra_nxt_fix( kt, nittrc000, 'TRC', trb, trn, tra, jptra ) ! linear ssh 159 ELSE ; CALL tra_nxt_vvl( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra, &160 ELSE ; CALL tra_nxt_vvl( kt, Kmm, Krhs, nittrc000, rdttrc, 'TRC', trb, trn, tra, & 160 161 & sbc_trc, sbc_trc_b, jptra ) ! non-linear ssh 161 162 ENDIF … … 173 174 ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * zfact 174 175 END DO 175 CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) )176 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) ) 176 177 END DO 177 178 END IF -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcrad.F90
r10425 r10946 37 37 CONTAINS 38 38 39 SUBROUTINE trc_rad( kt )39 SUBROUTINE trc_rad( kt, Kmm, Krhs ) 40 40 !!---------------------------------------------------------------------- 41 41 !! *** ROUTINE trc_rad *** … … 53 53 !!---------------------------------------------------------------------- 54 54 INTEGER, INTENT(in) :: kt ! ocean time-step index 55 INTEGER, INTENT(in) :: Kmm, Krhs ! time level indices 55 56 ! 56 57 CHARACTER (len=22) :: charout … … 59 60 IF( ln_timing ) CALL timing_start('trc_rad') 60 61 ! 61 IF( ln_age ) CALL trc_rad_sms( kt, trb, trn, jp_age , jp_age ) ! AGE62 IF( ll_cfc ) CALL trc_rad_sms( kt, trb, trn, jp_cfc0, jp_cfc1 ) ! CFC model63 IF( ln_c14 ) CALL trc_rad_sms( kt, trb, trn, jp_c14 , jp_c14 ) ! C1464 IF( ln_pisces ) CALL trc_rad_sms( kt, trb, trn, jp_pcs0, jp_pcs1, cpreserv='Y' ) ! PISCES model65 IF( ln_my_trc ) CALL trc_rad_sms( kt, trb, trn, jp_myt0, jp_myt1 ) ! MY_TRC model62 IF( ln_age ) CALL trc_rad_sms( kt, Kmm, Krhs, trb, trn, jp_age , jp_age ) ! AGE 63 IF( ll_cfc ) CALL trc_rad_sms( kt, Kmm, Krhs, trb, trn, jp_cfc0, jp_cfc1 ) ! CFC model 64 IF( ln_c14 ) CALL trc_rad_sms( kt, Kmm, Krhs, trb, trn, jp_c14 , jp_c14 ) ! C14 65 IF( ln_pisces ) CALL trc_rad_sms( kt, Kmm, Krhs, trb, trn, jp_pcs0, jp_pcs1, cpreserv='Y' ) ! PISCES model 66 IF( ln_my_trc ) CALL trc_rad_sms( kt, Kmm, Krhs, trb, trn, jp_myt0, jp_myt1 ) ! MY_TRC model 66 67 ! 67 68 IF(ln_ctl) THEN ! print mean trends (used for debugging) … … 113 114 114 115 115 SUBROUTINE trc_rad_sms( kt, ptrb, ptrn, jp_sms0, jp_sms1, cpreserv )116 SUBROUTINE trc_rad_sms( kt, Kmm, Krhs, ptrb, ptrn, jp_sms0, jp_sms1, cpreserv ) 116 117 !!----------------------------------------------------------------------------- 117 118 !! *** ROUTINE trc_rad_sms *** … … 130 131 !!-------------------------------------------------------------------------------- 131 132 INTEGER , INTENT(in ) :: kt ! ocean time-step index 133 INTEGER , INTENT(in ) :: Kmm, Krhs ! time level indices 132 134 INTEGER , INTENT(in ) :: jp_sms0, jp_sms1 ! First & last index of the passive tracer model 133 135 REAL(wp), DIMENSION (jpi,jpj,jpk,jptra), INTENT(inout) :: ptrb , ptrn ! before and now traceur concentration … … 183 185 IF( l_trdtrc ) THEN 184 186 ztrtrd(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrd(:,:,:) ) * zs2rdt 185 CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrd ) ! Asselin-like trend handling187 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_radb, ztrtrd ) ! Asselin-like trend handling 186 188 ENDIF 187 189 ! … … 233 235 IF( l_trdtrc ) THEN 234 236 ztrtrd(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrd(:,:,:) ) * zs2rdt 235 CALL trd_tra( kt, 'TRC', jn, jptra_radn, ztrtrd ) ! standard trend handling237 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_radn, ztrtrd ) ! standard trend handling 236 238 ENDIF 237 239 ! … … 261 263 IF( l_trdtrc ) THEN 262 264 ztrtrd(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrd(:,:,:) ) * zs2rdt 263 CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrd ) ! Asselin-like trend handling265 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_radb, ztrtrd ) ! Asselin-like trend handling 264 266 ENDIF 265 267 ! … … 270 272 IF( l_trdtrc ) THEN 271 273 ztrtrd(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrd(:,:,:) ) * zs2rdt 272 CALL trd_tra( kt, 'TRC', jn, jptra_radn, ztrtrd ) ! standard trend handling274 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_radn, ztrtrd ) ! standard trend handling 273 275 ENDIF 274 276 ! -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcsbc.F90
r10425 r10946 37 37 CONTAINS 38 38 39 SUBROUTINE trc_sbc ( kt )39 SUBROUTINE trc_sbc ( kt, Kmm, Krhs ) 40 40 !!---------------------------------------------------------------------- 41 41 !! *** ROUTINE trc_sbc *** … … 59 59 !!---------------------------------------------------------------------- 60 60 INTEGER, INTENT(in) :: kt ! ocean time-step index 61 INTEGER, INTENT(in) :: Kmm, Krhs ! time level indices 61 62 ! 62 63 INTEGER :: ji, jj, jn ! dummy loop indices … … 163 164 IF( l_trdtrc ) THEN 164 165 ztrtrd(:,:,:) = tra(:,:,:,jn) - ztrtrd(:,:,:) 165 CALL trd_tra( kt, 'TRC', jn, jptra_nsr, ztrtrd )166 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_nsr, ztrtrd ) 166 167 END IF 167 168 ! ! =========== -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trctrp.F90
r10922 r10946 61 61 IF( .NOT. lk_c1d ) THEN 62 62 ! 63 CALL trc_sbc ( kt ) ! surface boundary condition64 IF( ln_trabbl ) CALL trc_bbl ( kt ) ! advective (and/or diffusive) bottom boundary layer scheme65 IF( ln_trcdmp ) CALL trc_dmp ( kt ) ! internal damping trends66 IF( ln_bdy ) CALL trc_bdy_dmp( kt ) ! BDY damping trends63 CALL trc_sbc ( kt, Kmm, Krhs ) ! surface boundary condition 64 IF( ln_trabbl ) CALL trc_bbl ( kt, Kmm, Krhs ) ! advective (and/or diffusive) bottom boundary layer scheme 65 IF( ln_trcdmp ) CALL trc_dmp ( kt, Kmm, Krhs ) ! internal damping trends 66 IF( ln_bdy ) CALL trc_bdy_dmp( kt ) ! BDY damping trends 67 67 CALL trc_adv ( kt, Kbb, Kmm, tr, Krhs ) ! horizontal & vertical advection 68 ! ! Partial top/bottom cell: GRADh( trb )68 ! ! Partial top/bottom cell: GRADh( trb ) 69 69 IF( ln_zps ) THEN 70 70 IF( ln_isfcav ) THEN ; CALL zps_hde_isf( kt, jptra, trb, pgtu=gtru, pgtv=gtrv, pgtui=gtrui, pgtvi=gtrvi ) ! both top & bottom … … 73 73 ENDIF 74 74 ! 75 CALL trc_ldf ( kt, Kmm ) ! lateral mixing75 CALL trc_ldf ( kt, Kmm, Krhs ) ! lateral mixing 76 76 #if defined key_agrif 77 77 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_trc ! tracers sponge 78 78 #endif 79 79 CALL trc_zdf( kt, Kbb, Kmm, Krhs, tr, Kaa ) ! vert. mixing & after tracer ==> after 80 CALL trc_nxt ( kt )! tracer fields at next time step81 IF( ln_trcrad ) CALL trc_rad ( kt )! Correct artificial negative concentrations82 IF( ln_trcdmp_clo ) CALL trc_dmp_clo( kt ) ! internal damping trends on closed seas only80 CALL trc_nxt ( kt, Kmm, Krhs ) ! tracer fields at next time step 81 IF( ln_trcrad ) CALL trc_rad ( kt, Kmm, Krhs ) ! Correct artificial negative concentrations 82 IF( ln_trcdmp_clo ) CALL trc_dmp_clo( kt ) ! internal damping trends on closed seas only 83 83 84 84 ! 85 85 ELSE ! 1D vertical configuration 86 CALL trc_sbc( kt ) ! surface boundary condition87 IF( ln_trcdmp ) CALL trc_dmp( kt ) ! internal damping trends86 CALL trc_sbc( kt, Kmm, Krhs ) ! surface boundary condition 87 IF( ln_trcdmp ) CALL trc_dmp( kt, Kmm, Krhs ) ! internal damping trends 88 88 CALL trc_zdf( kt, Kbb, Kmm, Krhs, tr, Kaa ) ! vert. mixing & after tracer ==> after 89 CALL trc_nxt( kt ) ! tracer fields at next time step90 IF( ln_trcrad ) CALL trc_rad( kt ) ! Correct artificial negative concentrations89 CALL trc_nxt( kt, Kmm, Krhs ) ! tracer fields at next time step 90 IF( ln_trcrad ) CALL trc_rad( kt, Kmm, Krhs ) ! Correct artificial negative concentrations 91 91 ! 92 92 END IF -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trczdf.F90
r10893 r10946 63 63 ztrtrd(:,:,jk,jn) = ( ( ptr(:,:,jk,jn,Kaa) - ptr(:,:,jk,jn,Kbb) ) / r2dttrc ) - ztrtrd(:,:,jk,jn) 64 64 END DO 65 CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) )65 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) ) 66 66 END DO 67 67 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.