Changeset 12377 for NEMO/trunk/src/TOP/TRP/trdmxl_trc.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/TOP/TRP/trdmxl_trc.F90
r11536 r12377 16 16 !! trd_mxl_trc_init : initialization step 17 17 !!---------------------------------------------------------------------- 18 USE trc ! tracer definitions (trn, trb, tra, etc.) 19 USE trc_oce, ONLY : nn_dttrc ! frequency of step on passive tracers 18 USE trc ! tracer definitions (tr etc.) 20 19 USE dom_oce ! domain definition 21 20 USE zdfmxl , ONLY : nmln ! number of level in the mixed layer … … 50 49 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: ztmltrd2 ! 51 50 51 !! * Substitutions 52 # include "do_loop_substitute.h90" 52 53 !!---------------------------------------------------------------------- 53 54 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 70 71 71 72 72 SUBROUTINE trd_mxl_trc_zint( ptrc_trdmxl, ktrd, ctype, kjn )73 SUBROUTINE trd_mxl_trc_zint( ptrc_trdmxl, ktrd, ctype, kjn, Kmm ) 73 74 !!---------------------------------------------------------------------- 74 75 !! *** ROUTINE trd_mxl_trc_zint *** … … 92 93 !! 93 94 INTEGER, INTENT( in ) :: ktrd, kjn ! ocean trend index and passive tracer rank 95 INTEGER, INTENT( in ) :: Kmm ! time level index 94 96 CHARACTER(len=2), INTENT( in ) :: ctype ! surface/bottom (2D) or interior (3D) physics 95 97 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) :: ptrc_trdmxl ! passive tracer trend … … 122 124 123 125 IF( jpktrd_trc < jpk ) THEN ! description ??? 124 DO jj = 1, jpj 125 DO ji = 1, jpi 126 IF( nmld_trc(ji,jj) <= jpktrd_trc ) THEN 127 zvlmsk(ji,jj) = tmask(ji,jj,1) 128 ELSE 129 isum = isum + 1 130 zvlmsk(ji,jj) = 0.e0 131 ENDIF 132 END DO 133 END DO 126 DO_2D_11_11 127 IF( nmld_trc(ji,jj) <= jpktrd_trc ) THEN 128 zvlmsk(ji,jj) = tmask(ji,jj,1) 129 ELSE 130 isum = isum + 1 131 zvlmsk(ji,jj) = 0.e0 132 ENDIF 133 END_2D 134 134 ENDIF 135 135 … … 147 147 ! ... Weights for vertical averaging 148 148 wkx_trc(:,:,:) = 0.e0 149 DO jk = 1, jpktrd_trc ! initialize wkx_trc with vertical scale factor in mixed-layer 150 DO jj = 1, jpj 151 DO ji = 1, jpi 152 IF( jk - nmld_trc(ji,jj) < 0 ) wkx_trc(ji,jj,jk) = e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 153 END DO 154 END DO 155 END DO 149 DO_3D_11_11( 1, jpktrd_trc ) 150 IF( jk - nmld_trc(ji,jj) < 0 ) wkx_trc(ji,jj,jk) = e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) 151 END_3D 156 152 157 153 rmld_trc(:,:) = 0.e0 … … 183 179 184 180 185 SUBROUTINE trd_mxl_trc( kt )181 SUBROUTINE trd_mxl_trc( kt, Kmm ) 186 182 !!---------------------------------------------------------------------- 187 183 !! *** ROUTINE trd_mxl_trc *** … … 232 228 ! 233 229 INTEGER, INTENT(in) :: kt ! ocean time-step index 230 INTEGER, INTENT(in) :: Kmm ! time level index 234 231 ! 235 232 INTEGER :: ji, jj, jk, jl, ik, it, itmod, jn … … 251 248 252 249 253 IF( nn_dttrc /= 1 ) CALL ctl_stop( " Be careful, trends diags never validated " )254 255 250 ! ====================================================================== 256 251 ! I. Diagnose the purely vertical (K_z) diffusion trend … … 263 258 ! 264 259 DO jn = 1, jptra 265 DO jj = 1, jpj 266 DO ji = 1, jpi 267 ik = nmld_trc(ji,jj) 268 IF( ln_trdtrc(jn) ) & 269 tmltrd_trc(ji,jj,jpmxl_trc_zdf,jn) = - avs(ji,jj,ik) / e3w_n(ji,jj,ik) * tmask(ji,jj,ik) & 270 & * ( trn(ji,jj,ik-1,jn) - trn(ji,jj,ik,jn) ) & 271 & / MAX( 1., rmld_trc(ji,jj) ) * tmask(ji,jj,1) 272 END DO 273 END DO 260 DO_2D_11_11 261 ik = nmld_trc(ji,jj) 262 IF( ln_trdtrc(jn) ) & 263 tmltrd_trc(ji,jj,jpmxl_trc_zdf,jn) = - avs(ji,jj,ik) / e3w(ji,jj,ik,Kmm) * tmask(ji,jj,ik) & 264 & * ( tr(ji,jj,ik-1,jn,Kmm) - tr(ji,jj,ik,jn,Kmm) ) & 265 & / MAX( 1., rmld_trc(ji,jj) ) * tmask(ji,jj,1) 266 END_2D 274 267 END DO 275 268 … … 322 315 DO jn = 1, jptra 323 316 IF( ln_trdtrc(jn) ) & 324 tml_trc(:,:,jn) = tml_trc(:,:,jn) + wkx_trc(:,:,jk) * tr n(:,:,jk,jn)317 tml_trc(:,:,jn) = tml_trc(:,:,jn) + wkx_trc(:,:,jk) * tr(:,:,jk,jn,Kmm) 325 318 END DO 326 319 END DO … … 328 321 ! II.3 Initialize mixed-layer "before" arrays for the 1rst analysis window 329 322 ! ------------------------------------------------------------------------ 330 IF( kt == nittrc000 + nn_dttrc) THEN ! i.e. ( .NOT. ln_rstart ).AND.( kt == nit000 + 1) ???323 IF( kt == nittrc000 + 1 ) THEN ! i.e. ( .NOT. ln_rstart ).AND.( kt == nit000 + 1) ??? 331 324 ! 332 325 DO jn = 1, jptra … … 870 863 # endif 871 864 zout = nn_trd_trc * rdt 872 iiter = ( nittrc000 - 1 ) / nn_dttrc865 iiter = nittrc000 - 1 873 866 874 867 IF(lwp) WRITE (numout,*) ' netCDF initialization' … … 970 963 !!---------------------------------------------------------------------- 971 964 CONTAINS 972 SUBROUTINE trd_mxl_trc( kt ) ! Empty routine965 SUBROUTINE trd_mxl_trc( kt, Kmm ) ! Empty routine 973 966 INTEGER, INTENT( in) :: kt 967 INTEGER, INTENT( in) :: Kmm ! time level index 974 968 WRITE(*,*) 'trd_mxl_trc: You should not have seen this print! error?', kt 975 969 END SUBROUTINE trd_mxl_trc 976 SUBROUTINE trd_mxl_trc_zint( ptrc_trdmxl, ktrd, ctype, kjn )970 SUBROUTINE trd_mxl_trc_zint( ptrc_trdmxl, ktrd, ctype, kjn, Kmm ) 977 971 INTEGER , INTENT( in ) :: ktrd, kjn ! ocean trend index and passive tracer rank 972 INTEGER , INTENT( in ) :: Kmm ! time level index 978 973 CHARACTER(len=2) , INTENT( in ) :: ctype ! surface/bottom (2D) or interior (3D) physics 979 974 REAL, DIMENSION(:,:,:), INTENT( in ) :: ptrc_trdmxl ! passive trc trend
Note: See TracChangeset
for help on using the changeset viewer.