Changeset 6140 for trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90
- Timestamp:
- 2015-12-21T12:35:23+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90
r5836 r6140 43 43 44 44 !! * Substitutions 45 # include "domzgr_substitute.h90"46 45 # include "vectopt_loop_substitute.h90" 47 46 !!---------------------------------------------------------------------- … … 82 81 !! - save the trends ('key_trdmxl_trc') 83 82 !!---------------------------------------------------------------------- 84 !! 85 INTEGER, INTENT( in ) :: kt ! ocean time-step index 86 !! 87 INTEGER :: ji, jj, jk, jn, jl ! dummy loop indices 88 REAL(wp) :: ztra ! temporary scalars 89 CHARACTER (len=22) :: charout 83 INTEGER, INTENT(in) :: kt ! ocean time-step index 84 ! 85 INTEGER :: ji, jj, jk, jn, jl ! dummy loop indices 86 CHARACTER (len=22) :: charout 90 87 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrtrd 91 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrcdta ! 3D workspace88 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrcdta ! 3D workspace 92 89 !!---------------------------------------------------------------------- 93 90 ! … … 105 102 ! 106 103 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 107 104 ! 108 105 jl = n_trc_index(jn) 109 106 CALL trc_dta( kt, sf_trcdta(jl),rf_trfac(jl) ) ! read tracer data at nit000 110 107 ztrcdta(:,:,:) = sf_trcdta(jl)%fnow(:,:,:) 111 108 ! 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) ) 119 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 115 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 120 116 END DO 121 117 END DO 122 118 END DO 123 !119 ! 124 120 CASE ( 1 ) !== no damping in the turbocline (avt > 5 cm2/s) ==! 125 121 DO jk = 1, jpkm1 … … 127 123 DO ji = fs_2, fs_jpim1 ! vector opt. 128 124 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) ) 130 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 125 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 131 126 ENDIF 132 127 END DO 133 128 END DO 134 129 END DO 135 !130 ! 136 131 CASE ( 2 ) !== no damping in the mixed layer ==! 137 132 DO jk = 1, jpkm1 138 133 DO jj = 2, jpjm1 139 134 DO ji = fs_2, fs_jpim1 ! vector opt. 140 IF( fsdept(ji,jj,jk) >= hmlp (ji,jj) ) THEN 141 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 142 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 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) ) 143 137 END IF 144 138 END DO 145 139 END DO 146 140 END DO 147 !141 ! 148 142 END SELECT 149 143 ! … … 162 156 IF( l_trdtrc ) CALL wrk_dealloc( jpi, jpj, jpk, ztrtrd ) 163 157 ! ! print mean trends (used for debugging) 164 IF( ln_ctl ) THEN 165 WRITE(charout, FMT="('dmp ')") ; CALL prt_ctl_trc_info(charout) 166 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 158 IF( ln_ctl ) THEN 159 WRITE(charout, FMT="('dmp ')") 160 CALL prt_ctl_trc_info(charout) 161 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 167 162 ENDIF 168 163 ! … … 170 165 ! 171 166 END SUBROUTINE trc_dmp 167 172 168 173 169 SUBROUTINE trc_dmp_ini … … 180 176 !! called by trc_dmp at the first timestep (nittrc000) 181 177 !!---------------------------------------------------------------------- 182 ! 183 INTEGER :: ios ! Local integer output status for namelist read 184 INTEGER :: imask !local file handle 185 ! 178 INTEGER :: ios, imask ! local integers 179 !! 186 180 NAMELIST/namtrc_dmp/ nn_zdmp_tr , cn_resto_tr 187 181 !!---------------------------------------------------------------------- 188 182 ! 189 183 IF( nn_timing == 1 ) CALL timing_start('trc_dmp_init') 190 184 ! 191 192 185 REWIND( numnat_ref ) ! Namelist namtrc_dmp in reference namelist : Passive tracers newtonian damping 193 186 READ ( numnat_ref, namtrc_dmp, IOSTAT = ios, ERR = 909) … … 233 226 END SUBROUTINE trc_dmp_ini 234 227 228 235 229 SUBROUTINE trc_dmp_clo( kt ) 236 230 !!--------------------------------------------------------------------- … … 245 239 !! nctsi2(), nctsj2() : north-east Closed sea limits (i,j) 246 240 !!---------------------------------------------------------------------- 247 INTEGER, INTENT( in ) :: kt ! ocean time-step index 248 ! 249 INTEGER :: ji , jj, jk, jn, jl, jc ! dummy loop indicesa 250 INTEGER :: isrow ! local index 251 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrcdta ! 3D workspace 252 253 !!---------------------------------------------------------------------- 254 241 INTEGER, INTENT( in ) :: kt ! ocean time-step index 242 ! 243 INTEGER :: ji , jj, jk, jn, jl, jc ! dummy loop indicesa 244 INTEGER :: isrow ! local index 245 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrcdta ! 3D workspace 246 !!---------------------------------------------------------------------- 247 ! 255 248 IF( kt == nit000 ) THEN 256 249 ! initial values … … 364 357 END SUBROUTINE trc_dmp_clo 365 358 366 367 359 #else 368 360 !!---------------------------------------------------------------------- … … 376 368 #endif 377 369 378 379 370 !!====================================================================== 380 371 END MODULE trcdmp
Note: See TracChangeset
for help on using the changeset viewer.