- Timestamp:
- 2020-05-14T21:46:00+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Property svn:externals
-
old new 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/TOP/TRP/trdmxl_trc.F90
r12178 r12928 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 … … 408 401 DO jn = 1, jptra 409 402 IF( ln_trdtrc(jn) ) THEN 410 !-- Compute total trends (use rdttrc instead of rdt ???)403 !-- Compute total trends 411 404 IF ( ln_trcadv_muscl .OR. ln_trcadv_muscl2 ) THEN ! EULER-FORWARD schemes 412 ztmltot(:,:,jn) = ( tml_trc(:,:,jn) - tmlbn_trc(:,:,jn) )/r dt405 ztmltot(:,:,jn) = ( tml_trc(:,:,jn) - tmlbn_trc(:,:,jn) )/rn_Dt 413 406 ELSE ! LEAP-FROG schemes 414 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) 415 408 ENDIF 416 409 … … 446 439 IF( ln_trdtrc(jn) ) THEN 447 440 tml_sum_trc(:,:,jn) = tmlbn_trc(:,:,jn) + 2 * ( tml_sum_trc(:,:,jn) - tml_trc(:,:,jn) ) + tml_trc(:,:,jn) 448 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 449 442 ENDIF 450 443 END DO … … 859 852 CALL ctl_stop( 'STOP', 'trd_mxl_trc : this was never checked. Comment this line to proceed...' ) 860 853 ENDIF 861 zsto = nn_trd_trc * r dt854 zsto = nn_trd_trc * rn_Dt 862 855 clop = "inst("//TRIM(clop)//")" 863 856 # else 864 857 IF( ln_trdmxl_trc_instant ) THEN 865 zsto = r dt ! inst. diags : we use IOIPSL time averaging858 zsto = rn_Dt ! inst. diags : we use IOIPSL time averaging 866 859 ELSE 867 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 868 861 ENDIF 869 862 clop = "ave("//TRIM(clop)//")" 870 863 # endif 871 zout = nn_trd_trc * r dt872 iiter = ( nittrc000 - 1 ) / nn_dttrc864 zout = nn_trd_trc * rn_Dt 865 iiter = nittrc000 - 1 873 866 874 867 IF(lwp) WRITE (numout,*) ' netCDF initialization' … … 876 869 ! II.2 Compute julian date from starting date of the run 877 870 ! ------------------------------------------------------ 878 CALL ymds2ju( nyear, nmonth, nday, r dt, zjulian )871 CALL ymds2ju( nyear, nmonth, nday, rn_Dt, zjulian ) 879 872 zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment 880 873 IF(lwp) WRITE(numout,*)' ' … … 908 901 CALL dia_nam( clhstnam, nn_trd_trc, csuff ) 909 902 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 910 & 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 ) 911 904 912 905 !-- Define the ML depth variable … … 945 938 CALL histdef(nidtrd(jn), trim(clvar)//trim(ctrd_trc(jl,2)), clmxl//" "//clvar//ctrd_trc(jl,1), & 946 939 & cltrcu, jpi, jpj, nh_t(jn), 1 , 1, 1 , -99 , 32, clop, zsto, zout ) ! IOIPSL: time mean 947 END DO ! if zsto=r dt above940 END DO ! if zsto=rn_Dt above 948 941 949 942 CALL histdef(nidtrd(jn), trim(clvar)//trim(ctrd_trc(jpmxl_trc_radb,2)), clmxl//" "//clvar//ctrd_trc(jpmxl_trc_radb,1), & … … 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.