Changeset 2865 for CONFIG/UNIFORM/v6/IPSLCM6/SOURCES/NEMO/trcdmp.F90
- Timestamp:
- 05/23/16 16:14:48 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
CONFIG/UNIFORM/v6/IPSLCM6/SOURCES/NEMO/trcdmp.F90
r2858 r2865 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 !!---------------------------------------------------------------------- … … 298 296 IF(lwp) WRITE(numout,*) 299 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 ! 300 301 DO jn = 1, jptra 301 302 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 302 303 jl = n_trc_index(jn) 303 CALL trc_dta( kt, sf_trcdta(jl) ) ! read tracer data at nit000304 IF(lwp) WRITE(numout,*) 304 305 DO jc = 1, npncts 305 306 DO jk = 1, jpkm1 306 307 DO jj = nctsj1(jc), nctsj2(jc) 307 308 DO ji = nctsi1(jc), nctsi2(jc) 308 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) 309 310 trb(ji,jj,jk,jn) = trn(ji,jj,jk,jn) 310 311 ENDDO … … 314 315 ENDIF 315 316 ENDDO 317 CALL wrk_dealloc( jpi, jpj, jpk, nb_trcdta, ztrcdta ) ! Memory allocation 316 318 ! 317 319 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.