Changeset 12489 for NEMO/trunk/src/TOP/TRP
- Timestamp:
- 2020-02-28T16:55:11+01:00 (4 years ago)
- Location:
- NEMO/trunk/src/TOP/TRP
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/TOP/TRP/trcadv.F90
r12377 r12489 125 125 CALL tra_adv_cen( kt, nittrc000,'TRC', zuu, zvv, zww, Kmm, ptr, jptra, Krhs, nn_cen_h, nn_cen_v ) 126 126 CASE ( np_FCT ) ! FCT : 2nd / 4th order 127 CALL tra_adv_fct( kt, nittrc000,'TRC', r 2dttrc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v )127 CALL tra_adv_fct( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 128 128 CASE ( np_MUS ) ! MUSCL 129 CALL tra_adv_mus( kt, nittrc000,'TRC', r 2dttrc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups )129 CALL tra_adv_mus( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups ) 130 130 CASE ( np_UBS ) ! UBS 131 CALL tra_adv_ubs( kt, nittrc000,'TRC', r 2dttrc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_ubs_v )131 CALL tra_adv_ubs( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_ubs_v ) 132 132 CASE ( np_QCK ) ! QUICKEST 133 CALL tra_adv_qck( kt, nittrc000,'TRC', r 2dttrc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs )133 CALL tra_adv_qck( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs ) 134 134 ! 135 135 END SELECT -
NEMO/trunk/src/TOP/TRP/trcatf.F90
r12377 r12489 71 71 !! the divergence of two consecutive time-steps and tr arrays 72 72 !! to prepare the next time_step: 73 !! (tr(Kmm)) = (tr(Kmm)) + atfp [ (tr(Kbb)) + (tr(Kaa)) - 2 (tr(Kmm)) ]73 !! (tr(Kmm)) = (tr(Kmm)) + rn_atfp [ (tr(Kbb)) + (tr(Kaa)) - 2 (tr(Kmm)) ] 74 74 !! 75 75 !! … … 111 111 112 112 ! total trend for the non-time-filtered variables. 113 zfact = 1.0 / r dttrc113 zfact = 1.0 / rn_Dt 114 114 ! G Nurser 23 Mar 2017. Recalculate trend as Delta(e3t*T)/e3tn; e3tn cancel from ts(Kmm) terms 115 115 IF( ln_linssh ) THEN ! linear sea surface height only … … 139 139 ENDIF 140 140 ! ! Leap-Frog + Asselin filter time stepping 141 IF( (neuler == 0 .AND. kt == nittrc000).OR. ln_top_euler ) THEN ! Euler time-stepping141 IF( l_1st_euler .OR. ln_top_euler ) THEN ! Euler time-stepping 142 142 ! 143 143 IF (l_trdtrc .AND. .NOT. ln_linssh ) THEN ! Zero Asselin filter contribution must be explicitly written out since for vvl … … 152 152 IF( .NOT. l_offline ) THEN ! Leap-Frog + Asselin filter time stepping 153 153 IF( ln_linssh ) THEN ; CALL tra_atf_fix( kt, Kbb, Kmm, Kaa, nittrc000, 'TRC', ptr, jptra ) ! linear ssh 154 ELSE ; CALL tra_atf_vvl( kt, Kbb, Kmm, Kaa, nittrc000, r dttrc, 'TRC', ptr, sbc_trc, sbc_trc_b, jptra ) ! non-linear ssh154 ELSE ; CALL tra_atf_vvl( kt, Kbb, Kmm, Kaa, nittrc000, rn_Dt, 'TRC', ptr, sbc_trc, sbc_trc_b, jptra ) ! non-linear ssh 155 155 ENDIF 156 156 ELSE … … 164 164 DO jn = 1, jptra 165 165 DO jk = 1, jpkm1 166 zfact = 1._wp / r 2dttrc166 zfact = 1._wp / rDt_trc 167 167 ztrdt(:,:,jk,jn) = ( ptr(:,:,jk,jn,Kbb) - ztrdt(:,:,jk,jn) ) * zfact 168 168 END DO … … 200 200 !! /( e3t(:,:,:,Kmm) + rbcp*[ e3t(:,:,:,Kbb) - 2 e3t(:,:,:,Kmm) + e3t(:,:,:,Kaa) ] ) 201 201 !! ztm = 0 otherwise 202 !! tb = ( e3t_n*tn + atfp*[ e3t_b*tb - 2 e3t_n*tn + e3t_a*ta ] )203 !! /( e3t(:,:,:,Kmm) + atfp*[ e3t(:,:,:,Kbb) - 2 e3t(:,:,:,Kmm) + e3t(:,:,:,Kaa) ] )202 !! tb = ( e3t_n*tn + rn_atfp*[ e3t_b*tb - 2 e3t_n*tn + e3t_a*ta ] ) 203 !! /( e3t(:,:,:,Kmm) + rn_atfp*[ e3t(:,:,:,Kbb) - 2 e3t(:,:,:,Kmm) + e3t(:,:,:,Kaa) ] ) 204 204 !! tn = ta 205 205 !! ta = zt (NB: reset to 0 after eos_bn2 call) … … 222 222 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 223 223 IF( .NOT. ln_linssh ) THEN 224 rfact1 = atfp * rdttrc225 rfact2 = rfact1 / r au0224 rfact1 = rn_atfp * rn_Dt 225 rfact2 = rfact1 / rho0 226 226 ENDIF 227 227 ! … … 241 241 ztc_d = ztc_a - 2. * ztc_n + ztc_b 242 242 ! 243 ze3t_f = ze3t_n + atfp * ze3t_d244 ztc_f = ztc_n + atfp * ztc_d243 ze3t_f = ze3t_n + rn_atfp * ze3t_d 244 ztc_f = ztc_n + rn_atfp * ztc_d 245 245 ! 246 246 IF( .NOT. ln_linssh .AND. jk == mikt(ji,jj) ) THEN ! first level -
NEMO/trunk/src/TOP/TRP/trcrad.F90
r12377 r12489 147 147 ! 148 148 IF( l_trdtrc ) ALLOCATE( ztrtrd(jpi,jpj,jpk) ) 149 zs2rdt = 1. / ( 2. * r dt )149 zs2rdt = 1. / ( 2. * rn_Dt ) 150 150 ! 151 151 DO jt = 1,2 ! Loop over time indices since exactly the same fix is applied to "now" and "after" fields -
NEMO/trunk/src/TOP/TRP/trcsbc.F90
r12377 r12489 121 121 DO jn = 1, jptra 122 122 DO_2D_01_00 123 sbc_trc(ji,jj,jn) = zsfx(ji,jj) * r1_r au0 * ptr(ji,jj,1,jn,Kmm)123 sbc_trc(ji,jj,jn) = zsfx(ji,jj) * r1_rho0 * ptr(ji,jj,1,jn,Kmm) 124 124 END_2D 125 125 END DO … … 129 129 DO jn = 1, jptra 130 130 DO_2D_01_00 131 sbc_trc(ji,jj,jn) = ( zsfx(ji,jj) + fmmflx(ji,jj) ) * r1_r au0 * ptr(ji,jj,1,jn,Kmm)131 sbc_trc(ji,jj,jn) = ( zsfx(ji,jj) + fmmflx(ji,jj) ) * r1_rho0 * ptr(ji,jj,1,jn,Kmm) 132 132 END_2D 133 133 END DO … … 145 145 ztfx = zftra ! net tracer flux 146 146 ! 147 zdtra = r1_r au0 * ( ztfx + ( zsfx(ji,jj) + fmmflx(ji,jj) ) * ptr(ji,jj,1,jn,Kmm) )147 zdtra = r1_rho0 * ( ztfx + ( zsfx(ji,jj) + fmmflx(ji,jj) ) * ptr(ji,jj,1,jn,Kmm) ) 148 148 IF ( zdtra < 0. ) THEN 149 zdtra = MAX(zdtra, -ptr(ji,jj,1,jn,Kmm) * e3t(ji,jj,1,Kmm) / r 2dttrc ) ! avoid negative concentrations to arise149 zdtra = MAX(zdtra, -ptr(ji,jj,1,jn,Kmm) * e3t(ji,jj,1,Kmm) / rDt_trc ) ! avoid negative concentrations to arise 150 150 ENDIF 151 151 sbc_trc(ji,jj,jn) = zdtra -
NEMO/trunk/src/TOP/TRP/trczdf.F90
r12377 r12489 56 56 IF( l_trdtrc ) ztrtrd(:,:,:,:) = ptr(:,:,:,:,Krhs) 57 57 ! 58 CALL tra_zdf_imp( kt, nittrc000, 'TRC', r 2dttrc, Kbb, Kmm, Krhs, ptr, Kaa, jptra ) ! implicit scheme58 CALL tra_zdf_imp( kt, nittrc000, 'TRC', rDt_trc, Kbb, Kmm, Krhs, ptr, Kaa, jptra ) ! implicit scheme 59 59 ! 60 60 IF( l_trdtrc ) THEN ! save the vertical diffusive trends for further diagnostics 61 61 DO jn = 1, jptra 62 62 DO jk = 1, jpkm1 63 ztrtrd(:,:,jk,jn) = ( ( ptr(:,:,jk,jn,Kaa) - ptr(:,:,jk,jn,Kbb) ) / r 2dttrc ) - ztrtrd(:,:,jk,jn)63 ztrtrd(:,:,jk,jn) = ( ( ptr(:,:,jk,jn,Kaa) - ptr(:,:,jk,jn,Kbb) ) / rDt_trc ) - ztrtrd(:,:,jk,jn) 64 64 END DO 65 65 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) ) -
NEMO/trunk/src/TOP/TRP/trdmxl_trc.F90
r12377 r12489 401 401 DO jn = 1, jptra 402 402 IF( ln_trdtrc(jn) ) THEN 403 !-- Compute total trends (use rdttrc instead of rdt ???)403 !-- Compute total trends 404 404 IF ( ln_trcadv_muscl .OR. ln_trcadv_muscl2 ) THEN ! EULER-FORWARD schemes 405 ztmltot(:,:,jn) = ( tml_trc(:,:,jn) - tmlbn_trc(:,:,jn) )/r dt405 ztmltot(:,:,jn) = ( tml_trc(:,:,jn) - tmlbn_trc(:,:,jn) )/rn_Dt 406 406 ELSE ! LEAP-FROG schemes 407 ztmltot(:,:,jn) = ( tml_trc(:,:,jn) - tmlbn_trc(:,:,jn) + tmlb_trc(:,:,jn) - tmlbb_trc(:,:,jn))/(2.*r dt)407 ztmltot(:,:,jn) = ( tml_trc(:,:,jn) - tmlbn_trc(:,:,jn) + tmlb_trc(:,:,jn) - tmlbb_trc(:,:,jn))/(2.*rn_Dt) 408 408 ENDIF 409 409 … … 439 439 IF( ln_trdtrc(jn) ) THEN 440 440 tml_sum_trc(:,:,jn) = tmlbn_trc(:,:,jn) + 2 * ( tml_sum_trc(:,:,jn) - tml_trc(:,:,jn) ) + tml_trc(:,:,jn) 441 ztmltot2 (:,:,jn) = ( tml_sum_trc(:,:,jn) - tml_sumb_trc(:,:,jn) ) / ( 2.*r dt ) ! now tracer unit is /sec441 ztmltot2 (:,:,jn) = ( tml_sum_trc(:,:,jn) - tml_sumb_trc(:,:,jn) ) / ( 2.*rn_Dt ) ! now tracer unit is /sec 442 442 ENDIF 443 443 END DO … … 852 852 CALL ctl_stop( 'STOP', 'trd_mxl_trc : this was never checked. Comment this line to proceed...' ) 853 853 ENDIF 854 zsto = nn_trd_trc * r dt854 zsto = nn_trd_trc * rn_Dt 855 855 clop = "inst("//TRIM(clop)//")" 856 856 # else 857 857 IF( ln_trdmxl_trc_instant ) THEN 858 zsto = r dt ! inst. diags : we use IOIPSL time averaging858 zsto = rn_Dt ! inst. diags : we use IOIPSL time averaging 859 859 ELSE 860 zsto = nn_trd_trc * r dt ! mean diags : we DO NOT use any IOIPSL time averaging860 zsto = nn_trd_trc * rn_Dt ! mean diags : we DO NOT use any IOIPSL time averaging 861 861 ENDIF 862 862 clop = "ave("//TRIM(clop)//")" 863 863 # endif 864 zout = nn_trd_trc * r dt864 zout = nn_trd_trc * rn_Dt 865 865 iiter = nittrc000 - 1 866 866 … … 869 869 ! II.2 Compute julian date from starting date of the run 870 870 ! ------------------------------------------------------ 871 CALL ymds2ju( nyear, nmonth, nday, r dt, zjulian )871 CALL ymds2ju( nyear, nmonth, nday, rn_Dt, zjulian ) 872 872 zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment 873 873 IF(lwp) WRITE(numout,*)' ' … … 901 901 CALL dia_nam( clhstnam, nn_trd_trc, csuff ) 902 902 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 903 & 1, jpi, 1, jpj, iiter, zjulian, r dt, nh_t(jn), nidtrd(jn), domain_id=nidom, snc4chunks=snc4set )903 & 1, jpi, 1, jpj, iiter, zjulian, rn_Dt, nh_t(jn), nidtrd(jn), domain_id=nidom, snc4chunks=snc4set ) 904 904 905 905 !-- Define the ML depth variable … … 938 938 CALL histdef(nidtrd(jn), trim(clvar)//trim(ctrd_trc(jl,2)), clmxl//" "//clvar//ctrd_trc(jl,1), & 939 939 & cltrcu, jpi, jpj, nh_t(jn), 1 , 1, 1 , -99 , 32, clop, zsto, zout ) ! IOIPSL: time mean 940 END DO ! if zsto=r dt above940 END DO ! if zsto=rn_Dt above 941 941 942 942 CALL histdef(nidtrd(jn), trim(clvar)//trim(ctrd_trc(jpmxl_trc_radb,2)), clmxl//" "//clvar//ctrd_trc(jpmxl_trc_radb,1), &
Note: See TracChangeset
for help on using the changeset viewer.