Changeset 461 for trunk/NEMO/OPA_SRC/LDF/ldfdyn.F90
- Timestamp:
- 2006-05-10T19:15:54+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/LDF/ldfdyn.F90
r247 r461 104 104 WRITE(numout,*) ' horizontal eddy viscosity ahm0 = ', ahm0 105 105 WRITE(numout,*) ' background viscosity ahmb0 = ', ahmb0 106 WRITE(numout,*) 107 ENDIF 108 109 ! Parameter control 110 111 ! control the input 112 ioptio = 0 113 IF( ln_dynldf_lap ) ioptio = ioptio + 1 114 IF( ln_dynldf_bilap ) ioptio = ioptio + 1 115 IF( ioptio /= 1 ) THEN 116 IF(lwp) WRITE(numout,cform_err) 117 IF(lwp) WRITE(numout,*) ' use ONE of the 2 lap/bilap operator type on momentum' 118 nstop = nstop + 1 119 ENDIF 120 ioptio = 0 121 IF( ln_dynldf_level ) ioptio = ioptio + 1 122 IF( ln_dynldf_hor ) ioptio = ioptio + 1 123 IF( ln_dynldf_iso ) ioptio = ioptio + 1 124 IF( ioptio /= 1 ) THEN 125 IF(lwp) WRITE(numout,cform_err) 126 IF(lwp) WRITE(numout,*) ' use only ONE direction (level/hor/iso)' 127 nstop = nstop + 1 128 ENDIF 129 130 IF( lk_sco ) THEN ! s-coordinates: rotation required for horizontal or isopycnal direction 131 IF( ( ln_dynldf_iso .OR. ln_dynldf_hor ) .AND. .NOT.lk_ldfslp ) THEN 132 IF(lwp) WRITE(numout,cform_err) 133 IF(lwp) WRITE(numout,*) ' the rotation of the viscous tensor require key_ldfslp' 134 IF( .NOT.lk_esopa ) nstop = nstop + 1 135 ENDIF 136 ELSE ! z-coordinates with/without partial step: 137 ln_dynldf_level = ln_dynldf_level .OR. ln_dynldf_hor ! level mixing = horizontal mixing 138 ln_dynldf_hor = .FALSE. 139 IF(lwp) WRITE(numout,*) ' horizontal mixing in z-coord or partial steps: force ln_dynldf_level = T' 140 IF(lwp) WRITE(numout,*) ' and force ln_dynldf_hor = F' 141 IF( ln_dynldf_iso .AND. .NOT.lk_ldfslp ) THEN ! rotation required for isopycnal mixing 142 IF(lwp) WRITE(numout,cform_err) 143 IF(lwp) WRITE(numout,*) ' the rotation of the viscous tensor require key_ldfslp' 144 IF( .NOT.lk_esopa ) nstop = nstop + 1 145 ENDIF 146 ENDIF 147 148 l_dynldf_lap = ln_dynldf_lap .AND. ln_dynldf_level ! iso-level laplacian operator 149 l_dynldf_bilap = ln_dynldf_bilap .AND. ln_dynldf_level ! iso-level bilaplacian operator 150 l_dynldf_bilapg = ln_dynldf_bilap .AND. ln_dynldf_hor ! geopotential bilap. (s-coord) 151 l_dynldf_iso = ln_dynldf_lap .AND. & ! laplacian operator 152 & ( ln_dynldf_iso .OR. ln_dynldf_hor ) ! iso-neutral (z-coord) or horizontal (s-coord) 153 154 l_dynzdf_iso = .FALSE. 155 IF( l_dynldf_iso ) l_dynzdf_iso = .TRUE. 156 157 ioptio = 0 158 IF( l_dynldf_lap ) ioptio = ioptio + 1 159 IF( l_dynldf_bilap ) ioptio = ioptio + 1 160 IF( l_dynldf_bilapg ) ioptio = ioptio + 1 161 IF( l_dynldf_iso ) ioptio = ioptio + 1 162 IF( ioptio /= 1 ) THEN 163 IF(lwp) WRITE(numout,cform_err) 164 IF(lwp) WRITE(numout,*) ' this combination of operator and direction has not been implemented' 165 nstop = nstop + 1 166 ENDIF 167 IF( lk_esopa ) THEN 168 l_dynldf_lap = .TRUE. ; l_dynldf_bilap = .TRUE. ; l_dynldf_bilapg = .TRUE. 169 l_dynldf_iso = .TRUE. ; l_dynzdf_iso = .TRUE. 170 IF(lwp ) WRITE(numout,*) ' esopa test: use all lateral physics options' 171 ENDIF 172 173 ! control print 174 IF( l_dynldf_lap .AND. lwp ) WRITE(numout,*) ' iso-level laplacian momentum operator' 175 IF( l_dynldf_bilap .AND. lwp ) WRITE(numout,*) ' iso-level bilaplacian momentum operator' 176 IF( l_dynldf_bilapg .AND. lwp ) WRITE(numout,*) ' geopotential bilaplacian momentum operator' 177 IF( l_dynldf_iso .AND. lwp ) WRITE(numout,*) ' iso-neutral laplacian momentum operator' 106 ENDIF 107 108 ! ... check of lateral diffusive operator on tracers 109 ! ==> will be done in trazdf module 178 110 179 111 ! ... Space variation of eddy coefficients … … 190 122 IF(lwp) WRITE(numout,*) ' momentum mixing coef. = F( depth )' 191 123 ioptio = ioptio+1 192 IF( l k_sco ) THEN124 IF( ln_sco ) THEN 193 125 IF(lwp) WRITE(numout,cform_err) 194 IF(lwp) WRITE(numout,*) ' key_dynldf_c1d cannot be used in s-coordinate ( key_s_coord)'126 IF(lwp) WRITE(numout,*) ' key_dynldf_c1d cannot be used in s-coordinate (ln_sco)' 195 127 nstop = nstop + 1 196 128 ENDIF … … 206 138 207 139 208 IF( l _dynldf_bilap .OR. l_dynldf_bilapg) THEN140 IF( ln_dynldf_bilap ) THEN 209 141 IF(lwp) WRITE(numout,*) ' biharmonic momentum diffusion' 210 142 IF( ahm0 > 0 .AND. .NOT. lk_esopa ) THEN … … 276 208 !!---------------------------------------------------------------------- 277 209 278 zm00 = TANH( ( pdam - gdept (1 ) ) / pwam )279 zm01 = TANH( ( pdam - gdept (jpkm1) ) / pwam )210 zm00 = TANH( ( pdam - gdept_0(1 ) ) / pwam ) 211 zm01 = TANH( ( pdam - gdept_0(jpkm1) ) / pwam ) 280 212 zmhs = zm00 / zm01 281 213 zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01 … … 324 256 !!---------------------------------------------------------------------- 325 257 326 zm00 = TANH( ( pdam - gdept (1 ) ) / pwam )327 zm01 = TANH( ( pdam - gdept (jpkm1) ) / pwam )258 zm00 = TANH( ( pdam - gdept_0(1 ) ) / pwam ) 259 zm01 = TANH( ( pdam - gdept_0(jpkm1) ) / pwam ) 328 260 zmhs = zm00 / zm01 329 261 zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01 … … 373 305 !!---------------------------------------------------------------------- 374 306 375 zm00 = TANH( ( pdam - gdept (1 ) ) / pwam )376 zm01 = TANH( ( pdam - gdept (jpkm1) ) / pwam )307 zm00 = TANH( ( pdam - gdept_0(1 ) ) / pwam ) 308 zm01 = TANH( ( pdam - gdept_0(jpkm1) ) / pwam ) 377 309 zmhs = zm00 / zm01 378 310 zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01
Note: See TracChangeset
for help on using the changeset viewer.