- Timestamp:
- 2020-03-29T12:55:27+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/traadv.F90
r12377 r12624 65 65 INTEGER, PARAMETER :: np_UBS = 4 ! 3rd order Upstream Biased Scheme 66 66 INTEGER, PARAMETER :: np_QCK = 5 ! QUICK scheme 67 67 68 # include "domzgr_substitute.h90" 68 69 !!---------------------------------------------------------------------- 69 70 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 103 104 IF( ln_wave .AND. ln_sdw ) THEN 104 105 DO jk = 1, jpkm1 ! eulerian transport + Stokes Drift 105 zuu(:,:,jk) = e2u (:,:) * e3u(:,:,jk,Kmm) * ( uu(:,:,jk,Kmm) + usd(:,:,jk) ) 106 zvv(:,:,jk) = e1v (:,:) * e3v(:,:,jk,Kmm) * ( vv(:,:,jk,Kmm) + vsd(:,:,jk) ) 107 zww(:,:,jk) = e1e2t(:,:) * ( ww(:,:,jk) + wsd(:,:,jk) ) 106 zuu(:,:,jk) = & 107 & e2u (:,:) * e3u(:,:,jk,Kmm) * ( uu(:,:,jk,Kmm) + usd(:,:,jk) ) 108 zvv(:,:,jk) = & 109 & e1v (:,:) * e3v(:,:,jk,Kmm) * ( vv(:,:,jk,Kmm) + vsd(:,:,jk) ) 110 zww(:,:,jk) = & 111 & e1e2t(:,:) * ( ww(:,:,jk) + wsd(:,:,jk) ) 108 112 END DO 109 113 ELSE -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/traatfQCO.F90
r12623 r12624 1 MODULE traatf LF1 MODULE traatfqco 2 2 !!====================================================================== 3 !! *** MODULE traatf LF***3 !! *** MODULE traatfqco *** 4 4 !! Ocean active tracers: Asselin time filtering for temperature and salinity 5 5 !!====================================================================== … … 52 52 PRIVATE 53 53 54 PUBLIC tra_atf_ lf! routine called by step.F9054 PUBLIC tra_atf_qco ! routine called by step.F90 55 55 PUBLIC tra_atf_fix_lf ! to be used in trcnxt !!st WARNING discrepancy here interpol is used 56 PUBLIC tra_atf_q e_lf ! to be used in trcnxt !!st WARNING discrepancy here interpol is used56 PUBLIC tra_atf_qco_lf ! to be used in trcnxt !!st WARNING discrepancy here interpol is used 57 57 58 58 !! * Substitutions 59 59 # include "do_loop_substitute.h90" 60 # include "domzgr_substitute.h90" 60 61 !!---------------------------------------------------------------------- 61 62 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 65 66 CONTAINS 66 67 67 SUBROUTINE tra_atf_ lf( kt, Kbb, Kmm, Kaa, pts )68 SUBROUTINE tra_atf_qco( kt, Kbb, Kmm, Kaa, pts ) 68 69 !!---------------------------------------------------------------------- 69 70 !! *** ROUTINE traatfLF *** … … 95 96 !!---------------------------------------------------------------------- 96 97 ! 97 IF( ln_timing ) CALL timing_start( 'tra_atf_ lf')98 IF( ln_timing ) CALL timing_start( 'tra_atf_qco') 98 99 ! 99 100 IF( kt == nit000 ) THEN 100 101 IF(lwp) WRITE(numout,*) 101 IF(lwp) WRITE(numout,*) 'tra_atf_ lf: apply Asselin time filter to "now" fields'102 IF(lwp) WRITE(numout,*) 'tra_atf_qco : apply Asselin time filter to "now" fields' 102 103 IF(lwp) WRITE(numout,*) '~~~~~~~' 103 104 ENDIF … … 131 132 ! G Nurser 23 Mar 2017. Recalculate trend as Delta(e3t*T)/e3tn; e3tn cancel from pts(Kmm) terms 132 133 DO jk = 1, jpkm1 133 ztrdt(:,:,jk) = ( pts(:,:,jk,jp_tem,Kaa)*e3t(:,:,jk,Kaa) / e3t(:,:,jk,Kmm) - pts(:,:,jk,jp_tem,Kmm)) * zfact 134 ztrds(:,:,jk) = ( pts(:,:,jk,jp_sal,Kaa)*e3t(:,:,jk,Kaa) / e3t(:,:,jk,Kmm) - pts(:,:,jk,jp_sal,Kmm)) * zfact 134 ! ztrdt(:,:,jk) = ( pts(:,:,jk,jp_tem,Kaa)*e3t(:,:,jk,Kaa) / e3t(:,:,jk,Kmm) - pts(:,:,jk,jp_tem,Kmm)) * zfact 135 ! ztrds(:,:,jk) = ( pts(:,:,jk,jp_sal,Kaa)*e3t(:,:,jk,Kaa) / e3t(:,:,jk,Kmm) - pts(:,:,jk,jp_sal,Kmm)) * zfact 136 ztrdt(:,:,jk) = ( pts(:,:,jk,jp_tem,Kaa) * (1._wp + r3t(:,:,Kaa) * tmask(:,:,jk))/(1._wp + r3t(:,:,Kmm) * tmask(:,:,jk)) & 137 & - pts(:,:,jk,jp_tem,Kmm) ) * zfact 138 ztrds(:,:,jk) = ( pts(:,:,jk,jp_sal,Kaa) * (1._wp + r3t(:,:,Kaa) * tmask(:,:,jk))/(1._wp + r3t(:,:,Kmm) * tmask(:,:,jk)) & 139 & - pts(:,:,jk,jp_sal,Kmm) ) * zfact 135 140 END DO 136 141 CALL trd_tra( kt, Kmm, Kaa, 'TRA', jp_tem, jptra_tot, ztrdt ) … … 156 161 ELSE ! Leap-Frog + Asselin filter time stepping 157 162 ! 158 IF ( ln_linssh ) THEN ; CALL tra_atf_fix_lf( kt, Kbb, Kmm, Kaa, nit000, 'TRA', pts, jpts ) ! linear free surface159 ELSE ; CALL tra_atf_qe_lf( kt, Kbb, Kmm, Kaa, nit000, rdt, 'TRA', pts, sbc_tsc, sbc_tsc_b, jpts ) ! non-linear free surface160 ENDIF 161 ! 162 CALL lbc_lnk_multi( 'traatf LF', pts(:,:,:,jp_tem,Kbb) , 'T', 1., pts(:,:,:,jp_sal,Kbb) , 'T', 1., &163 IF ( ln_linssh ) THEN ; CALL tra_atf_fix_lf( kt, Kbb, Kmm, Kaa, nit000, 'TRA', pts, jpts ) ! linear free surface 164 ELSE ; CALL tra_atf_qco_lf( kt, Kbb, Kmm, Kaa, nit000, rdt, 'TRA', pts, sbc_tsc, sbc_tsc_b, jpts ) ! non-linear free surface 165 ENDIF 166 ! 167 CALL lbc_lnk_multi( 'traatfqco', pts(:,:,:,jp_tem,Kbb) , 'T', 1., pts(:,:,:,jp_sal,Kbb) , 'T', 1., & 163 168 & pts(:,:,:,jp_tem,Kmm) , 'T', 1., pts(:,:,:,jp_sal,Kmm) , 'T', 1., & 164 169 & pts(:,:,:,jp_tem,Kaa), 'T', 1., pts(:,:,:,jp_sal,Kaa), 'T', 1. ) … … 181 186 & tab3d_2=pts(:,:,:,jp_sal,Kmm), clinfo2= ' Sn: ', mask2=tmask ) 182 187 ! 183 IF( ln_timing ) CALL timing_stop('tra_atf_ lf')184 ! 185 END SUBROUTINE tra_atf_ lf188 IF( ln_timing ) CALL timing_stop('tra_atf_qco') 189 ! 190 END SUBROUTINE tra_atf_qco 186 191 187 192 … … 227 232 228 233 229 SUBROUTINE tra_atf_q e_lf( kt, Kbb, Kmm, Kaa, kit000, p2dt, cdtype, pt, psbc_tc, psbc_tc_b, kjpt )234 SUBROUTINE tra_atf_qco_lf( kt, Kbb, Kmm, Kaa, kit000, p2dt, cdtype, pt, psbc_tc, psbc_tc_b, kjpt ) 230 235 !!---------------------------------------------------------------------- 231 236 !! *** ROUTINE tra_atf_vvl *** … … 234 239 !! 235 240 !! ** Method : - Apply a thickness weighted Asselin time filter on now fields. 236 !! pt(Kmm) = ( e3t (Kmm)*pt(Kmm) + atfp*[ e3t(Kbb)*pt(Kbb) - 2 e3t(Kmm)*pt(Kmm) + e3t_a*pt(Kaa) ] )237 !! /( e3t (Kmm) + atfp*[ e3t(Kbb) - 2 e3t(Kmm) + e3t(Kaa)] )241 !! pt(Kmm) = ( e3t_m*pt(Kmm) + atfp*[ e3t_b*pt(Kbb) - 2 e3t_m*pt(Kmm) + e3t_a*pt(Kaa) ] ) 242 !! /( e3t_m + atfp*[ e3t_b - 2 e3t_m + e3t_a ] ) 238 243 !! 239 244 !! ** Action : - pt(Kmm) ready for the next time step … … 258 263 IF( kt == kit000 ) THEN 259 264 IF(lwp) WRITE(numout,*) 260 IF(lwp) WRITE(numout,*) 'tra_atf_ vvl: time filtering', cdtype265 IF(lwp) WRITE(numout,*) 'tra_atf_qco : time filtering', cdtype 261 266 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 262 267 ENDIF … … 325 330 IF ( jk == misfkb_cav(ji,jj) ) THEN 326 331 ztc_f = ztc_f - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) ) & 327 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 332 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) & 333 & * rfrac_tbl_cav(ji,jj) 328 334 END IF 329 335 END IF … … 339 345 IF ( jk == misfkb_par(ji,jj) ) THEN 340 346 ztc_f = ztc_f - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) ) & 341 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 347 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) & 348 & * rfrac_tbl_par(ji,jj) 342 349 END IF 343 350 END IF … … 380 387 ENDIF 381 388 ! 382 END SUBROUTINE tra_atf_q e_lf389 END SUBROUTINE tra_atf_qco_lf 383 390 384 391 !!====================================================================== 385 END MODULE traatf LF392 END MODULE traatfqco
Note: See TracChangeset
for help on using the changeset viewer.