- Timestamp:
- 2020-09-14T17:40:34+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@13382 sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/TOP/TRP/trcdmp.F90
r10351 r13463 24 24 ! 25 25 USE iom 26 USE prtctl _trc! Print control for debbuging26 USE prtctl ! Print control for debbuging 27 27 28 28 IMPLICIT NONE … … 44 44 45 45 !! * Substitutions 46 # include "vectopt_loop_substitute.h90" 46 # include "do_loop_substitute.h90" 47 # include "domzgr_substitute.h90" 47 48 !!---------------------------------------------------------------------- 48 49 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 63 64 64 65 65 SUBROUTINE trc_dmp( kt )66 SUBROUTINE trc_dmp( kt, Kbb, Kmm, ptr, Krhs ) 66 67 !!---------------------------------------------------------------------- 67 68 !! *** ROUTINE trc_dmp *** … … 73 74 !! ** Method : Newtonian damping towards trdta computed 74 75 !! and add to the general tracer trends: 75 !! tr n = tra + restotr * (trdta - trb)76 !! tr(Kmm) = tr(Krhs) + restotr * (trdta - tr(Kbb)) 76 77 !! The trend is computed either throughout the water column 77 78 !! (nlmdmptr=0) or in area of weak vertical mixing (nlmdmptr=1) or 78 79 !! below the well mixed layer (nlmdmptr=2) 79 80 !! 80 !! ** Action : - update the tracer trends tr awith the newtonian81 !! ** Action : - update the tracer trends tr(:,:,:,:,Krhs) with the newtonian 81 82 !! damping trends. 82 83 !! - save the trends ('key_trdmxl_trc') 83 84 !!---------------------------------------------------------------------- 84 INTEGER, INTENT(in) :: kt ! ocean time-step index 85 INTEGER, INTENT(in ) :: kt ! ocean time-step index 86 INTEGER, INTENT(in ) :: Kbb, Kmm, Krhs ! time level indices 87 REAL(wp), DIMENSION(jpi,jpj,jpk,jptra,jpt), INTENT(inout) :: ptr ! passive tracers and RHS of tracer equation 85 88 ! 86 89 INTEGER :: ji, jj, jk, jn, jl ! dummy loop indices … … 100 103 DO jn = 1, jptra ! tracer loop 101 104 ! ! =========== 102 IF( l_trdtrc ) ztrtrd(:,:,:) = tra(:,:,:,jn) ! save trends105 IF( l_trdtrc ) ztrtrd(:,:,:) = ptr(:,:,:,jn,Krhs) ! save trends 103 106 ! 104 107 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 105 108 ! 106 109 jl = n_trc_index(jn) 107 CALL trc_dta( kt, sf_trcdta(jl), rf_trfac(jl), ztrcdta ) ! read tracer data at nit000110 CALL trc_dta( kt, Kmm, sf_trcdta(jl), rf_trfac(jl), ztrcdta ) ! read tracer data at nit000 108 111 ! 109 112 SELECT CASE ( nn_zdmp_tr ) 110 113 ! 111 114 CASE( 0 ) !== newtonian damping throughout the water column ==! 112 DO jk = 1, jpkm1 113 DO jj = 2, jpjm1 114 DO ji = fs_2, fs_jpim1 ! vector opt. 115 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 116 END DO 117 END DO 118 END DO 115 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 116 ptr(ji,jj,jk,jn,Krhs) = ptr(ji,jj,jk,jn,Krhs) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - ptr(ji,jj,jk,jn,Kbb) ) 117 END_3D 119 118 ! 120 119 CASE ( 1 ) !== no damping in the turbocline (avt > 5 cm2/s) ==! 121 DO jk = 1, jpkm1 122 DO jj = 2, jpjm1 123 DO ji = fs_2, fs_jpim1 ! vector opt. 124 IF( avt(ji,jj,jk) <= avt_c ) THEN 125 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 126 ENDIF 127 END DO 128 END DO 129 END DO 120 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 121 IF( avt(ji,jj,jk) <= avt_c ) THEN 122 ptr(ji,jj,jk,jn,Krhs) = ptr(ji,jj,jk,jn,Krhs) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - ptr(ji,jj,jk,jn,Kbb) ) 123 ENDIF 124 END_3D 130 125 ! 131 126 CASE ( 2 ) !== no damping in the mixed layer ==! 132 DO jk = 1, jpkm1 133 DO jj = 2, jpjm1 134 DO ji = fs_2, fs_jpim1 ! vector opt. 135 IF( gdept_n(ji,jj,jk) >= hmlp (ji,jj) ) THEN 136 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 137 END IF 138 END DO 139 END DO 140 END DO 127 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 128 IF( gdept(ji,jj,jk,Kmm) >= hmlp (ji,jj) ) THEN 129 ptr(ji,jj,jk,jn,Krhs) = ptr(ji,jj,jk,jn,Krhs) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - ptr(ji,jj,jk,jn,Kbb) ) 130 END IF 131 END_3D 141 132 ! 142 133 END SELECT … … 145 136 ! 146 137 IF( l_trdtrc ) THEN 147 ztrtrd(:,:,:) = tra(:,:,:,jn) - ztrtrd(:,:,:)148 CALL trd_tra( kt, 'TRC', jn, jptra_dmp, ztrtrd )138 ztrtrd(:,:,:) = ptr(:,:,:,jn,Krhs) - ztrtrd(:,:,:) 139 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_dmp, ztrtrd ) 149 140 END IF 150 141 ! ! =========== … … 156 147 IF( l_trdtrc ) DEALLOCATE( ztrtrd ) 157 148 ! ! print mean trends (used for debugging) 158 IF( ln_ctl) THEN149 IF( sn_cfctl%l_prttrc ) THEN 159 150 WRITE(charout, FMT="('dmp ')") 160 CALL prt_ctl_ trc_info(charout)161 CALL prt_ctl _trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' )151 CALL prt_ctl_info( charout, cdcomp = 'top' ) 152 CALL prt_ctl( tab4d_1=ptr(:,:,:,:,Krhs), mask1=tmask, clinfo=ctrcnm, clinfo3='trd' ) 162 153 ENDIF 163 154 ! … … 181 172 !!---------------------------------------------------------------------- 182 173 ! 183 REWIND( numnat_ref ) ! Namelist namtrc_dmp in reference namelist : Passive tracers newtonian damping184 174 READ ( numnat_ref, namtrc_dmp, IOSTAT = ios, ERR = 909) 185 909 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dmp in reference namelist', lwp ) 186 REWIND( numnat_cfg ) ! Namelist namtrc_dmp in configuration namelist : Passive tracers newtonian damping 175 909 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dmp in reference namelist' ) 187 176 READ ( numnat_cfg, namtrc_dmp, IOSTAT = ios, ERR = 910) 188 910 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_dmp in configuration namelist' , lwp)177 910 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_dmp in configuration namelist' ) 189 178 IF(lwm) WRITE ( numont, namtrc_dmp ) 190 179 … … 216 205 !Read in mask from file 217 206 CALL iom_open ( cn_resto_tr, imask) 218 CALL iom_get ( imask, jpdom_auto glo, 'resto', restotr)207 CALL iom_get ( imask, jpdom_auto, 'resto', restotr) 219 208 CALL iom_close( imask ) 220 209 ! … … 224 213 225 214 226 SUBROUTINE trc_dmp_clo( kt )215 SUBROUTINE trc_dmp_clo( kt, Kbb, Kmm ) 227 216 !!--------------------------------------------------------------------- 228 217 !! *** ROUTINE trc_dmp_clo *** … … 236 225 !! nctsi2(), nctsj2() : north-east Closed sea limits (i,j) 237 226 !!---------------------------------------------------------------------- 238 INTEGER, INTENT( in ) :: kt ! ocean time-step index 227 INTEGER, INTENT( in ) :: kt ! ocean time-step index 228 INTEGER, INTENT( in ) :: Kbb, Kmm ! time level indices 239 229 ! 240 230 INTEGER :: ji , jj, jk, jn, jl, jc ! dummy loop indicesa … … 256 246 ! ! ======================= 257 247 CASE ( 1 ) ! eORCA_R1 configuration 258 ! ! ======================= 259 isrow = 332 - jpjglo 260 ! 261 nctsi1(1) = 333 ; nctsj1(1) = 243 - isrow ! Caspian Sea 262 nctsi2(1) = 342 ; nctsj2(1) = 274 - isrow 263 ! 264 nctsi1(2) = 198 ; nctsj1(2) = 258 - isrow ! Lake Superior 265 nctsi2(2) = 204 ; nctsj2(2) = 262 - isrow 266 ! 267 nctsi1(3) = 201 ; nctsj1(3) = 250 - isrow ! Lake Michigan 268 nctsi2(3) = 203 ; nctsj2(3) = 256 - isrow 269 ! 270 nctsi1(4) = 204 ; nctsj1(4) = 252 - isrow ! Lake Huron 271 nctsi2(4) = 209 ; nctsj2(4) = 256 - isrow 272 ! 273 nctsi1(5) = 206 ; nctsj1(5) = 249 - isrow ! Lake Erie 274 nctsi2(5) = 209 ; nctsj2(5) = 251 - isrow 275 ! 276 nctsi1(6) = 210 ; nctsj1(6) = 252 - isrow ! Lake Ontario 277 nctsi2(6) = 212 ; nctsj2(6) = 252 - isrow 278 ! 279 nctsi1(7) = 321 ; nctsj1(7) = 180 - isrow ! Victoria Lake 280 nctsi2(7) = 322 ; nctsj2(7) = 189 - isrow 281 ! 282 nctsi1(8) = 297 ; nctsj1(8) = 270 - isrow ! Baltic Sea 283 nctsi2(8) = 308 ; nctsj2(8) = 293 - isrow 284 ! 285 ! ! ======================= 248 ! ! ======================= 249 ! 250 isrow = 332 - (Nj0glo + 1) ! was 332 - jpjglo -> jpjglo_old_version = Nj0glo + 1 251 ! 252 nctsi1(1) = 333 ; nctsj1(1) = 243 - isrow ! Caspian Sea 253 nctsi2(1) = 342 ; nctsj2(1) = 274 - isrow 254 ! 255 nctsi1(2) = 198 ; nctsj1(2) = 258 - isrow ! Lake Superior 256 nctsi2(2) = 204 ; nctsj2(2) = 262 - isrow 257 ! 258 nctsi1(3) = 201 ; nctsj1(3) = 250 - isrow ! Lake Michigan 259 nctsi2(3) = 203 ; nctsj2(3) = 256 - isrow 260 ! 261 nctsi1(4) = 204 ; nctsj1(4) = 252 - isrow ! Lake Huron 262 nctsi2(4) = 209 ; nctsj2(4) = 256 - isrow 263 ! 264 nctsi1(5) = 206 ; nctsj1(5) = 249 - isrow ! Lake Erie 265 nctsi2(5) = 209 ; nctsj2(5) = 251 - isrow 266 ! 267 nctsi1(6) = 210 ; nctsj1(6) = 252 - isrow ! Lake Ontario 268 nctsi2(6) = 212 ; nctsj2(6) = 252 - isrow 269 ! 270 nctsi1(7) = 321 ; nctsj1(7) = 180 - isrow ! Victoria Lake 271 nctsi2(7) = 322 ; nctsj2(7) = 189 - isrow 272 ! 273 nctsi1(8) = 297 ; nctsj1(8) = 270 - isrow ! Baltic Sea 274 nctsi2(8) = 308 ; nctsj2(8) = 293 - isrow 275 ! 276 ! ! ======================= 286 277 CASE ( 2 ) ! ORCA_R2 configuration 287 278 ! ! ======================= … … 296 287 nctsi2(3) = 181 ; nctsj2(3) = 112 297 288 ! 298 nctsi1(4) = 2 ; nctsj1(4) = 107 ! Black Sea 2 : est part of the Black Sea289 nctsi1(4) = 2 ; nctsj1(4) = 107 ! Black Sea 2 : est part of the Black Sea 299 290 nctsi2(4) = 6 ; nctsj2(4) = 112 300 291 ! 301 292 nctsi1(5) = 145 ; nctsj1(5) = 116 ! Baltic Sea 302 293 nctsi2(5) = 150 ; nctsj2(5) = 126 294 ! 303 295 ! ! ======================= 304 296 CASE ( 4 ) ! ORCA_R4 configuration … … 316 308 nctsi1(4) = 75 ; nctsj1(4) = 59 ! Baltic Sea 317 309 nctsi2(4) = 76 ; nctsj2(4) = 61 310 ! 318 311 ! ! ======================= 319 312 CASE ( 025 ) ! ORCA_R025 configuration … … 330 323 ENDIF 331 324 ! 325 nctsi1(:) = nctsi1(:) + nn_hls - 1 ; nctsi2(:) = nctsi2(:) + nn_hls - 1 ! -1 as x-perio included in old input files 326 nctsj1(:) = nctsj1(:) + nn_hls ; nctsj2(:) = nctsj2(:) + nn_hls 327 ! 332 328 ! convert the position in local domain indices 333 329 ! -------------------------------------------- … … 354 350 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 355 351 jl = n_trc_index(jn) 356 CALL trc_dta( kt, sf_trcdta(jl), rf_trfac(jl), ztrcdta ) ! read tracer data at nit000352 CALL trc_dta( kt, Kmm, sf_trcdta(jl), rf_trfac(jl), ztrcdta ) ! read tracer data at nit000 357 353 DO jc = 1, npncts 358 354 DO jk = 1, jpkm1 359 355 DO jj = nctsj1(jc), nctsj2(jc) 360 356 DO ji = nctsi1(jc), nctsi2(jc) 361 tr n(ji,jj,jk,jn) = ztrcdta(ji,jj,jk)362 tr b(ji,jj,jk,jn) = trn(ji,jj,jk,jn)357 tr(ji,jj,jk,jn,Kmm) = ztrcdta(ji,jj,jk) 358 tr(ji,jj,jk,jn,Kbb) = tr(ji,jj,jk,jn,Kmm) 363 359 END DO 364 360 END DO
Note: See TracChangeset
for help on using the changeset viewer.