Changeset 5989 for branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90
- Timestamp:
- 2015-12-03T09:10:32+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90
r5260 r5989 18 18 USE oce_trc ! ocean dynamics and tracers variables 19 19 USE trc ! ocean passive tracers variables 20 USE trcnam_trp ! passive tracers transport namelist variables21 20 USE trcdta 22 21 USE tradmp … … 29 28 PRIVATE 30 29 31 PUBLIC trc_dmp ! routine called by step.F90 32 PUBLIC trc_dmp_clo ! routine called by step.F90 33 PUBLIC trc_dmp_alloc ! routine called by nemogcm.F90 30 PUBLIC trc_dmp 31 PUBLIC trc_dmp_clo 32 PUBLIC trc_dmp_alloc 33 PUBLIC trc_dmp_ini 34 35 INTEGER , PUBLIC :: nn_zdmp_tr ! = 0/1/2 flag for damping in the mixed layer 36 CHARACTER(LEN=200) , PUBLIC :: cn_resto_tr !File containing restoration coefficient 34 37 35 38 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: restotr ! restoring coeff. on tracers (s-1) … … 40 43 41 44 !! * Substitutions 42 # include "top_substitute.h90" 45 # include "domzgr_substitute.h90" 46 # include "vectopt_loop_substitute.h90" 43 47 !!---------------------------------------------------------------------- 44 48 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 90 94 IF( nn_timing == 1 ) CALL timing_start('trc_dmp') 91 95 ! 92 ! 0. Initialization (first time-step only)93 ! --------------94 IF( kt == nittrc000 ) CALL trc_dmp_init95 96 96 IF( l_trdtrc ) CALL wrk_alloc( jpi, jpj, jpk, ztrtrd ) ! temporary save of trends 97 97 ! … … 126 126 DO jj = 2, jpjm1 127 127 DO ji = fs_2, fs_jpim1 ! vector opt. 128 IF( avt(ji,jj,jk) <= 5.e-4 ) THEN128 IF( avt(ji,jj,jk) <= 5.e-4_wp ) THEN 129 129 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 130 130 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra … … 171 171 END SUBROUTINE trc_dmp 172 172 173 SUBROUTINE trc_dmp_ini 174 !!---------------------------------------------------------------------- 175 !! *** ROUTINE trc_dmp_ini *** 176 !! 177 !! ** Purpose : Initialization for the newtonian damping 178 !! 179 !! ** Method : read the nammbf namelist and check the parameters 180 !! called by trc_dmp at the first timestep (nittrc000) 181 !!---------------------------------------------------------------------- 182 ! 183 INTEGER :: ios ! Local integer output status for namelist read 184 INTEGER :: imask !local file handle 185 ! 186 NAMELIST/namtrc_dmp/ nn_zdmp_tr , cn_resto_tr 187 !!---------------------------------------------------------------------- 188 189 IF( nn_timing == 1 ) CALL timing_start('trc_dmp_init') 190 ! 191 192 REWIND( numnat_ref ) ! Namelist namtrc_dmp in reference namelist : Passive tracers newtonian damping 193 READ ( numnat_ref, namtrc_dmp, IOSTAT = ios, ERR = 909) 194 909 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dmp in reference namelist', lwp ) 195 196 REWIND( numnat_cfg ) ! Namelist namtrc_dmp in configuration namelist : Passive tracers newtonian damping 197 READ ( numnat_cfg, namtrc_dmp, IOSTAT = ios, ERR = 910) 198 910 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dmp in configuration namelist', lwp ) 199 IF(lwm) WRITE ( numont, namtrc_dmp ) 200 201 IF(lwp) THEN ! Namelist print 202 WRITE(numout,*) 203 WRITE(numout,*) 'trc_dmp : Passive tracers newtonian damping' 204 WRITE(numout,*) '~~~~~~~' 205 WRITE(numout,*) ' Namelist namtrc_dmp : set damping parameter' 206 WRITE(numout,*) ' mixed layer damping option nn_zdmp_tr = ', nn_zdmp_tr, '(zoom: forced to 0)' 207 WRITE(numout,*) ' Restoration coeff file cn_resto_tr = ', cn_resto_tr 208 ENDIF 209 ! 210 IF( lzoom .AND. .NOT.lk_c1d ) nn_zdmp_tr = 0 ! restoring to climatology at closed north or south boundaries 211 SELECT CASE ( nn_zdmp_tr ) 212 CASE ( 0 ) ; IF(lwp) WRITE(numout,*) ' tracer damping throughout the water column' 213 CASE ( 1 ) ; IF(lwp) WRITE(numout,*) ' no tracer damping in the turbocline (avt > 5 cm2/s)' 214 CASE ( 2 ) ; IF(lwp) WRITE(numout,*) ' no tracer damping in the mixed layer' 215 CASE DEFAULT 216 WRITE(ctmp1,*) 'bad flag value for nn_zdmp_tr = ', nn_zdmp_tr 217 CALL ctl_stop(ctmp1) 218 END SELECT 219 220 IF( .NOT.lk_c1d ) THEN 221 IF( .NOT. ln_tradmp ) & 222 & CALL ctl_stop( 'passive trace damping need ln_tradmp to compute damping coef.' ) 223 ! 224 ! ! Read damping coefficients from file 225 !Read in mask from file 226 CALL iom_open ( cn_resto_tr, imask) 227 CALL iom_get ( imask, jpdom_autoglo, 'resto', restotr) 228 CALL iom_close( imask ) 229 ! 230 ENDIF 231 IF( nn_timing == 1 ) CALL timing_stop('trc_dmp_init') 232 ! 233 END SUBROUTINE trc_dmp_ini 234 173 235 SUBROUTINE trc_dmp_clo( kt ) 174 236 !!--------------------------------------------------------------------- … … 185 247 INTEGER, INTENT( in ) :: kt ! ocean time-step index 186 248 ! 187 INTEGER :: ji, jj, jk, jn, jl, jc ! dummy loop indicesa 249 INTEGER :: ji , jj, jk, jn, jl, jc ! dummy loop indicesa 250 INTEGER :: isrow ! local index 188 251 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrcdta ! 3D workspace 189 252 … … 201 264 ! 202 265 SELECT CASE ( jp_cfg ) 266 ! ! ======================= 267 CASE ( 1 ) ! eORCA_R1 configuration 268 ! ! ======================= 269 isrow = 332 - jpjglo 270 ! 271 ! Caspian Sea 272 nctsi1(1) = 332 ; nctsj1(1) = 243 - isrow 273 nctsi2(1) = 344 ; nctsj2(1) = 275 - isrow 274 ! 203 275 ! ! ======================= 204 276 CASE ( 2 ) ! ORCA_R2 configuration … … 293 365 294 366 295 SUBROUTINE trc_dmp_init296 !!----------------------------------------------------------------------297 !! *** ROUTINE trc_dmp_init ***298 !!299 !! ** Purpose : Initialization for the newtonian damping300 !!301 !! ** Method : read the nammbf namelist and check the parameters302 !! called by trc_dmp at the first timestep (nittrc000)303 !!----------------------------------------------------------------------304 !305 INTEGER :: imask !local file handle306 307 IF( nn_timing == 1 ) CALL timing_start('trc_dmp_init')308 !309 310 IF( lzoom ) nn_zdmp_tr = 0 ! restoring to climatology at closed north or south boundaries311 SELECT CASE ( nn_zdmp_tr )312 CASE ( 0 ) ; IF(lwp) WRITE(numout,*) ' tracer damping throughout the water column'313 CASE ( 1 ) ; IF(lwp) WRITE(numout,*) ' no tracer damping in the turbocline (avt > 5 cm2/s)'314 CASE ( 2 ) ; IF(lwp) WRITE(numout,*) ' no tracer damping in the mixed layer'315 CASE DEFAULT316 WRITE(ctmp1,*) 'bad flag value for nn_zdmp_tr = ', nn_zdmp_tr317 CALL ctl_stop(ctmp1)318 END SELECT319 320 IF( .NOT. ln_tradmp ) &321 & CALL ctl_stop( 'passive trace damping need key_tradmp to compute damping coef.' )322 !323 ! ! Read damping coefficients from file324 !Read in mask from file325 CALL iom_open ( cn_resto_tr, imask)326 CALL iom_get ( imask, jpdom_autoglo, 'resto', restotr)327 CALL iom_close( imask )328 !329 IF( nn_timing == 1 ) CALL timing_stop('trc_dmp_init')330 !331 END SUBROUTINE trc_dmp_init332 333 367 #else 334 368 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.