Changeset 6140 for trunk/NEMOGCM/NEMO/OPA_SRC/C1D/dyndmp.F90
- Timestamp:
- 2015-12-21T12:35:23+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/C1D/dyndmp.F90
r5215 r6140 23 23 USE dtauvd ! data: U & V current 24 24 USE zdfmxl ! vertical physics: mixed layer depth 25 ! 25 26 USE in_out_manager ! I/O manager 26 27 USE lib_mpp ! MPP library … … 36 37 PUBLIC dyn_dmp ! routine called by step_c1d.F90 37 38 38 LOGICAL, PUBLIC :: ln_dyndmp !Flag for Newtonian damping39 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: utrdmp ! damping U current trend (m/s2)41 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: vtrdmp ! damping V current trend (m/s2)42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: resto_uv ! restoring coeff. on U & V current39 LOGICAL, PUBLIC :: ln_dyndmp !: Flag for Newtonian damping 40 41 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: utrdmp !: damping U current trend (m/s2) 42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: vtrdmp !: damping V current trend (m/s2) 43 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: resto_uv !: restoring coeff. on U & V current 43 44 44 45 !! * Substitutions 45 # include "domzgr_substitute.h90"46 46 # include "vectopt_loop_substitute.h90" 47 47 !!---------------------------------------------------------------------- 48 !! NEMO/OPA 3. 3 , NEMO Consortium (2010)48 !! NEMO/OPA 3.7 , NEMO Consortium (2015) 49 49 !! $Id$ 50 50 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 75 75 !! - calculate damping coefficient 76 76 !!---------------------------------------------------------------------- 77 INTEGER :: ios, imask ! local integers 78 !! 77 79 NAMELIST/namc1d_dyndmp/ ln_dyndmp 78 INTEGER :: ios 79 INTEGER :: imask 80 !!---------------------------------------------------------------------- 81 80 !!---------------------------------------------------------------------- 81 ! 82 82 REWIND( numnam_ref ) ! Namelist namc1d_dyndmp in reference namelist : 83 83 READ ( numnam_ref, namc1d_dyndmp, IOSTAT = ios, ERR = 901) 84 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc1d_dyndmp in reference namelist', lwp )85 84 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc1d_dyndmp in reference namelist', lwp ) 85 ! 86 86 REWIND( numnam_cfg ) ! Namelist namc1d_dyndmp in configuration namelist : Parameters of the run 87 87 READ ( numnam_cfg, namc1d_dyndmp, IOSTAT = ios, ERR = 902 ) 88 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc1d_dyndmp in configuration namelist', lwp )88 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc1d_dyndmp in configuration namelist', lwp ) 89 89 IF(lwm) WRITE ( numond, namc1d_dyndmp ) 90 90 ! 91 91 IF(lwp) THEN ! control print 92 92 WRITE(numout,*) … … 101 101 WRITE(numout,*) 102 102 ENDIF 103 103 ! 104 104 IF( ln_dyndmp ) THEN 105 105 ! !== allocate the data arrays ==! … … 150 150 !! ** Action : - (ua,va) momentum trends updated with the damping trend 151 151 !!---------------------------------------------------------------------- 152 INTEGER, INTENT(in) :: kt 153 !! 154 INTEGER :: ji, jj, jk 155 REAL(wp) :: zua, zva 156 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zuv_dta! Read in data152 INTEGER, INTENT(in) :: kt ! ocean time-step index 153 !! 154 INTEGER :: ji, jj, jk ! dummy loop indices 155 REAL(wp) :: zua, zva ! local scalars 156 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zuv_dta ! Read in data 157 157 !!---------------------------------------------------------------------- 158 158 ! 159 159 IF( nn_timing == 1 ) CALL timing_start( 'dyn_dmp' ) 160 160 ! 161 CALL wrk_alloc( jpi, jpj, jpk, 2,zuv_dta )161 CALL wrk_alloc( jpi,jpj,jpk,2, zuv_dta ) 162 162 ! 163 163 ! !== read and interpolate U & V current data at kt ==! … … 204 204 DO jj = 2, jpjm1 205 205 DO ji = fs_2, fs_jpim1 ! vector opt. 206 IF( fsdept(ji,jj,jk) >= hmlp (ji,jj) ) THEN206 IF( gdept_n(ji,jj,jk) >= hmlp (ji,jj) ) THEN 207 207 zua = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,1) - ub(ji,jj,jk) ) 208 208 zva = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,2) - vb(ji,jj,jk) ) … … 221 221 END SELECT 222 222 ! 223 !!gm ! ! Trend diagnostic224 !!gm IF( l_trddyn ) CALL trd_mod( utrdmp, vtrdmp, jpdyn_trd_dat, 'DYN', kt )225 !226 223 ! ! Control print 227 224 IF( ln_ctl ) CALL prt_ctl( tab3d_1=ua(:,:,:), clinfo1=' dmp - Ua: ', mask1=umask, & 228 225 & tab3d_2=va(:,:,:), clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 229 226 ! 230 CALL wrk_dealloc( jpi, jpj, jpk, 2,zuv_dta )227 CALL wrk_dealloc( jpi,jpj,jpk,2, zuv_dta ) 231 228 ! 232 229 IF( nn_timing == 1 ) CALL timing_stop( 'dyn_dmp')
Note: See TracChangeset
for help on using the changeset viewer.