- Timestamp:
- 2016-05-23T17:06:46+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90
r6308 r6606 35 35 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: restotr ! restoring coeff. on tracers (s-1) 36 36 37 INTEGER, PARAMETER :: npncts = 5! number of closed sea37 INTEGER, PARAMETER :: npncts = 8 ! number of closed sea 38 38 INTEGER, DIMENSION(npncts) :: nctsi1, nctsj1 ! south-west closed sea limits (i,j) 39 39 INTEGER, DIMENSION(npncts) :: nctsi2, nctsj2 ! north-east closed sea limits (i,j) … … 85 85 CHARACTER (len=22) :: charout 86 86 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrtrd 87 REAL(wp), POINTER, DIMENSION(:,:,: ) :: ztrcdta ! 3D workspace87 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrcdta ! 3D workspace 88 88 !!---------------------------------------------------------------------- 89 89 ! … … 98 98 IF( nb_trcdta > 0 ) THEN ! Initialisation of tracer from a file that may also be used for damping 99 99 ! 100 CALL wrk_alloc( jpi, jpj, jpk, ztrcdta ) ! Memory allocation 100 CALL wrk_alloc( jpi, jpj, jpk, nb_trcdta, ztrcdta ) ! Memory allocation 101 CALL trc_dta( kt, ztrcdta ) ! read tracer data at nit000 101 102 ! ! =========== 102 103 DO jn = 1, jptra ! tracer loop … … 105 106 ! 106 107 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 107 108 108 jl = n_trc_index(jn) 109 CALL trc_dta( kt, sf_trcdta(jl) ) ! read tracer data at nit000110 ztrcdta(:,:,:) = sf_trcdta(jl)%fnow(:,:,:) * tmask(:,:,:) * rf_trfac(jl)111 112 109 SELECT CASE ( nn_zdmp_tr ) 113 110 ! … … 116 113 DO jj = 2, jpjm1 117 114 DO ji = fs_2, fs_jpim1 ! vector opt. 118 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk ) - trb(ji,jj,jk,jn) )115 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) - trb(ji,jj,jk,jn) ) 119 116 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 120 117 END DO … … 127 124 DO ji = fs_2, fs_jpim1 ! vector opt. 128 125 IF( avt(ji,jj,jk) <= 5.e-4_wp ) THEN 129 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk ) - trb(ji,jj,jk,jn) )126 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) - trb(ji,jj,jk,jn) ) 130 127 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 131 128 ENDIF … … 139 136 DO ji = fs_2, fs_jpim1 ! vector opt. 140 137 IF( fsdept(ji,jj,jk) >= hmlp (ji,jj) ) THEN 141 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk ) - trb(ji,jj,jk,jn) )138 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) - trb(ji,jj,jk,jn) ) 142 139 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 143 140 END IF … … 157 154 END DO ! tracer loop 158 155 ! ! =========== 159 CALL wrk_dealloc( jpi, jpj, jpk, ztrcdta )156 CALL wrk_dealloc( jpi, jpj, jpk, nb_trcdta, ztrcdta ) 160 157 ENDIF 161 158 ! … … 187 184 INTEGER :: ji , jj, jk, jn, jl, jc ! dummy loop indicesa 188 185 INTEGER :: isrow ! local index 186 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrcdta ! 3D workspace 189 187 190 188 !!---------------------------------------------------------------------- … … 207 205 ! 208 206 ! Caspian Sea 209 nctsi1(1) = 332 ; nctsj1(1) = 243 - isrow 210 nctsi2(1) = 344 ; nctsj2(1) = 275 - isrow 211 ! 207 nctsi1(1) = 333 ; nctsj1(1) = 243 - isrow 208 nctsi2(1) = 342 ; nctsj2(1) = 274 - isrow 209 ! ! Lake Superior 210 nctsi1(2) = 198 ; nctsj1(2) = 258 - isrow 211 nctsi2(2) = 204 ; nctsj2(2) = 262 - isrow 212 ! ! Lake Michigan 213 nctsi1(3) = 201 ; nctsj1(3) = 250 - isrow 214 nctsi2(3) = 203 ; nctsj2(3) = 256 - isrow 215 ! ! Lake Huron 216 nctsi1(4) = 204 ; nctsj1(4) = 252 - isrow 217 nctsi2(4) = 209 ; nctsj2(4) = 256 - isrow 218 ! ! Lake Erie 219 nctsi1(5) = 206 ; nctsj1(5) = 249 - isrow 220 nctsi2(5) = 209 ; nctsj2(5) = 251 - isrow 221 ! ! Lake Ontario 222 nctsi1(6) = 210 ; nctsj1(6) = 252 - isrow 223 nctsi2(6) = 212 ; nctsj2(6) = 252 - isrow 224 ! ! Victoria Lake 225 nctsi1(7) = 321 ; nctsj1(7) = 180 - isrow 226 nctsi2(7) = 322 ; nctsj2(7) = 189 - isrow 227 ! ! Baltic Sea 228 nctsi1(8) = 297 ; nctsj1(8) = 270 - isrow 229 nctsi2(8) = 308 ; nctsj2(8) = 293 - isrow 230 212 231 ! ! ======================= 213 232 CASE ( 2 ) ! ORCA_R2 configuration … … 277 296 IF(lwp) WRITE(numout,*) 278 297 ! 298 CALL wrk_alloc( jpi, jpj, jpk, nb_trcdta, ztrcdta ) ! Memory allocation 299 CALL trc_dta( kt, ztrcdta ) ! read tracer data at nit000 300 ! 279 301 DO jn = 1, jptra 280 302 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 281 303 jl = n_trc_index(jn) 282 CALL trc_dta( kt, sf_trcdta(jl) ) ! read tracer data at nit000304 IF(lwp) WRITE(numout,*) 283 305 DO jc = 1, npncts 284 306 DO jk = 1, jpkm1 285 307 DO jj = nctsj1(jc), nctsj2(jc) 286 308 DO ji = nctsi1(jc), nctsi2(jc) 287 trn(ji,jj,jk,jn) = sf_trcdta(jl)%fnow(ji,jj,jk) * tmask(ji,jj,jk) * rf_trfac(jl)309 trn(ji,jj,jk,jn) = ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) 288 310 trb(ji,jj,jk,jn) = trn(ji,jj,jk,jn) 289 311 ENDDO … … 293 315 ENDIF 294 316 ENDDO 317 CALL wrk_dealloc( jpi, jpj, jpk, nb_trcdta, ztrcdta ) ! Memory allocation 295 318 ! 296 319 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.