Changeset 1601 for trunk/NEMO/OPA_SRC/LDF
- Timestamp:
- 2009-08-11T12:09:19+02:00 (15 years ago)
- Location:
- trunk/NEMO/OPA_SRC/LDF
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/LDF/ldfdyn.F90
r1152 r1601 4 4 !! Ocean physics: lateral viscosity coefficient 5 5 !!===================================================================== 6 !! History : OPA ! 1997-07 (G. Madec) multi dimensional coefficients 7 !! NEMO 1.0 ! 2002-09 (G. Madec) F90: Free form and module 8 !!---------------------------------------------------------------------- 6 9 7 10 !!---------------------------------------------------------------------- … … 11 14 !! ldf_dyn_c1d : 1D eddy viscosity coefficient initialization 12 15 !!---------------------------------------------------------------------- 13 !! * Modules used14 16 USE oce ! ocean dynamics and tracers 15 17 USE dom_oce ! ocean space and time domain … … 17 19 USE phycst ! physical constants 18 20 USE ldfslp ! ??? 21 USE ioipsl 19 22 USE in_out_manager ! I/O manager 20 23 USE lib_mpp ! distribued memory computing library … … 24 27 PRIVATE 25 28 26 !! * Routine accessibility 27 PUBLIC ldf_dyn_init ! called by opa.F90 29 PUBLIC ldf_dyn_init ! called by opa.F90 28 30 29 31 INTERFACE ldf_zpf … … 34 36 # include "domzgr_substitute.h90" 35 37 !!---------------------------------------------------------------------- 36 !! OPA 9.0 , LOCEAN-IPSL (2005)38 !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009) 37 39 !! $Id$ 38 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt40 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 39 41 !!---------------------------------------------------------------------- 40 42 … … 48 50 !! 49 51 !! ** Method : 50 !! Eddy viscosity coefficients: 51 !! default option : constant coef. ahm0 (namelist) 52 !! 'key_dynldf_c1d': depth dependent coef. defined in 53 !! in ldf_dyn_c1d routine 54 !! 'key_dynldf_c2d': latitude and longitude dependent coef. 55 !! defined in ldf_dyn_c2d routine 56 !! 'key_dynldf_c3d': latitude, longitude, depth dependent coef. 57 !! defined in ldf_dyn_c3d routine 52 !! - default option : ahm = constant coef. = rn_ahm_0 (namelist) 53 !! - 'key_dynldf_c1d': ahm = F(depth) see ldf_dyn_c1d.h90 54 !! - 'key_dynldf_c2d': ahm = F(latitude,longitude) see ldf_dyn_c2d.h90 55 !! - 'key_dynldf_c3d': ahm = F(latitude,longitude,depth) see ldf_dyn_c3d.h90 56 !! 58 57 !! N.B. User defined include files. By default, 3d and 2d coef. 59 58 !! are set to a constant value given in the namelist and the 1d … … 61 60 !! profile. 62 61 !! 63 !! Reference : 64 !! Madec, G. and M. Imbard, 1996, A global ocean mesh to overcome 65 !! the North Pole singularity, Climate Dynamics, 12, 381-388. 66 !! 67 !! History : 68 !! ! 07-97 (G. Madec) from inimix.F split in 2 routines 69 !! ! 08-97 (G. Madec) multi dimensional coefficients 70 !! 8.5 ! 02-09 (G. Madec) F90: Free form and module 71 !!---------------------------------------------------------------------- 72 !! * Modules used 73 USE ioipsl 74 75 !! * Local declarations 62 !! Reference : Madec, G. and M. Imbard, 1996: Climate Dynamics, 12, 381-388. 63 !!---------------------------------------------------------------------- 76 64 INTEGER :: ioptio ! ??? 77 65 LOGICAL :: ll_print = .FALSE. ! Logical flag for printing viscosity coef. 78 79 80 NAMELIST/nam_dynldf/ ln_dynldf_lap , ln_dynldf_bilap, & 81 & ln_dynldf_level, ln_dynldf_hor, ln_dynldf_iso, & 82 & ahm0, ahmb0 83 !!---------------------------------------------------------------------- 84 85 86 ! Define the lateral physics parameters 87 ! ====================================== 88 89 ! Read Namelist nam_dynldf : Lateral physics 90 REWIND( numnam ) 91 READ ( numnam, nam_dynldf ) 92 93 ! Parameter print 94 IF(lwp) THEN 66 !! 67 NAMELIST/namdyn_ldf/ ln_dynldf_lap , ln_dynldf_bilap, & 68 & ln_dynldf_level, ln_dynldf_hor , ln_dynldf_iso, & 69 & rn_ahm_0 , rn_ahmb_0 70 !!---------------------------------------------------------------------- 71 72 REWIND( numnam ) ! Read Namelist namdyn_ldf : Lateral physics 73 READ ( numnam, namdyn_ldf ) 74 75 IF(lwp) THEN ! Parameter print 95 76 WRITE(numout,*) 96 77 WRITE(numout,*) 'ldf_dyn : lateral momentum physics' 97 78 WRITE(numout,*) '~~~~~~~' 98 WRITE(numout,*) ' Namelist nam_dynldf : set lateral mixing parameters' 99 WRITE(numout,*) ' laplacian operator ln_dynldf_lap = ', ln_dynldf_lap 100 WRITE(numout,*) ' bilaplacian operator ln_dynldf_bilap = ', ln_dynldf_bilap 101 WRITE(numout,*) ' iso-level ln_dynldf_level = ', ln_dynldf_level 102 WRITE(numout,*) ' horizontal (geopotential) ln_dynldf_hor = ', ln_dynldf_hor 103 WRITE(numout,*) ' iso-neutral ln_dynldf_iso = ', ln_dynldf_iso 104 WRITE(numout,*) ' horizontal eddy viscosity ahm0 = ', ahm0 105 WRITE(numout,*) ' background viscosity ahmb0 = ', ahmb0 106 ENDIF 79 WRITE(numout,*) ' Namelist nam_dynldf : set lateral mixing parameters' 80 WRITE(numout,*) ' laplacian operator ln_dynldf_lap = ', ln_dynldf_lap 81 WRITE(numout,*) ' bilaplacian operator ln_dynldf_bilap = ', ln_dynldf_bilap 82 WRITE(numout,*) ' iso-level ln_dynldf_level = ', ln_dynldf_level 83 WRITE(numout,*) ' horizontal (geopotential) ln_dynldf_hor = ', ln_dynldf_hor 84 WRITE(numout,*) ' iso-neutral ln_dynldf_iso = ', ln_dynldf_iso 85 WRITE(numout,*) ' horizontal eddy viscosity rn_ahm_0 = ', rn_ahm_0 86 WRITE(numout,*) ' background viscosity rn_ahmb_0 = ', rn_ahmb_0 87 ENDIF 88 89 ahm0 = rn_ahm_0 ! OLD namelist variables defined from DOCTOR namelist variables 90 ahmb0 = rn_ahmb_0 107 91 108 92 ! ... check of lateral diffusive operator on tracers … … 112 96 ioptio = 0 113 97 #if defined key_dynldf_c3d 114 IF(lwp) WRITE(numout,*) ' 98 IF(lwp) WRITE(numout,*) ' momentum mixing coef. = F( latitude, longitude, depth)' 115 99 ioptio = ioptio+1 116 100 #endif 117 101 #if defined key_dynldf_c2d 118 IF(lwp) WRITE(numout,*) ' 102 IF(lwp) WRITE(numout,*) ' momentum mixing coef. = F( latitude, longitude)' 119 103 ioptio = ioptio+1 120 104 #endif 121 105 #if defined key_dynldf_c1d 122 IF(lwp) WRITE(numout,*) ' 106 IF(lwp) WRITE(numout,*) ' momentum mixing coef. = F( depth )' 123 107 ioptio = ioptio+1 124 IF( ln_sco ) CALL ctl_stop( ' 108 IF( ln_sco ) CALL ctl_stop( 'key_dynldf_c1d cannot be used in s-coordinate (ln_sco)' ) 125 109 #endif 126 110 IF( ioptio == 0 ) THEN 127 IF(lwp) WRITE(numout,*) ' 111 IF(lwp) WRITE(numout,*) ' momentum mixing coef. = constant (default option)' 128 112 ELSEIF( ioptio > 1 ) THEN 129 CALL ctl_stop( ' use only one of the following keys:', & 130 & ' key_dynldf_c3d, key_dynldf_c2d, key_dynldf_c1d' ) 113 CALL ctl_stop( 'use only one of the following keys: key_dynldf_c3d, key_dynldf_c2d, key_dynldf_c1d' ) 131 114 ENDIF 132 115 133 116 134 117 IF( ln_dynldf_bilap ) THEN 135 IF(lwp) WRITE(numout,*) ' biharmonic momentum diffusion' 136 IF( ahm0 > 0 .AND. .NOT. lk_esopa ) & 137 & CALL ctl_stop( 'The horizontal viscosity coef. ahm0 must be negative' ) 118 IF(lwp) WRITE(numout,*) ' biharmonic momentum diffusion' 119 IF( ahm0 > 0 .AND. .NOT. lk_esopa ) CALL ctl_stop( 'The horizontal viscosity coef. ahm0 must be negative' ) 138 120 ELSE 139 IF(lwp) WRITE(numout,*) ' harmonic momentum diff. (default)' 140 IF( ahm0 < 0 .AND. .NOT. lk_esopa ) & 141 & CALL ctl_stop( ' The horizontal viscosity coef. ahm0 must be positive' ) 121 IF(lwp) WRITE(numout,*) ' harmonic momentum diff. (default)' 122 IF( ahm0 < 0 .AND. .NOT. lk_esopa ) CALL ctl_stop( 'The horizontal viscosity coef. ahm0 must be positive' ) 142 123 ENDIF 143 124 … … 145 126 ! Lateral eddy viscosity 146 127 ! ====================== 147 148 128 #if defined key_dynldf_c3d 149 129 CALL ldf_dyn_c3d( ll_print ) ! ahm = 3D coef. = F( longitude, latitude, depth ) … … 159 139 IF(lwp) WRITE(numout,*) ' ahm1 = ahm2 = ahm0 = ',ahm0 160 140 #endif 161 141 ! 162 142 END SUBROUTINE ldf_dyn_init 163 143 … … 178 158 !! 179 159 !! ** Method : 1D eddy viscosity coefficients ( depth ) 180 !! 181 !!---------------------------------------------------------------------- 182 !! * Arguments 183 LOGICAL , INTENT (in ) :: ld_print ! If true, output arrays on numout 184 REAL(wp), INTENT (in ) :: & 185 pdam, & ! depth of the inflection point 186 pwam, & ! width of inflection 187 pbot ! battom value (0<pbot<= 1) 188 REAL(wp), INTENT (in ), DIMENSION(jpk) :: & 189 pdep ! depth of the gridpoint (T, U, V, F) 190 REAL(wp), INTENT (inout), DIMENSION(jpk) :: & 191 pah ! adimensional vertical profile 192 193 !! * Local variables 160 !!---------------------------------------------------------------------- 161 LOGICAL , INTENT(in ) :: ld_print ! If true, output arrays on numout 162 REAL(wp), INTENT(in ) :: pdam ! depth of the inflection point 163 REAL(wp), INTENT(in ) :: pwam ! width of inflection 164 REAL(wp), INTENT(in ) :: pbot ! bottom value (0<pbot<= 1) 165 REAL(wp), INTENT(in ), DIMENSION(jpk) :: pdep ! depth of the gridpoint (T, U, V, F) 166 REAL(wp), INTENT(inout), DIMENSION(jpk) :: pah ! adimensional vertical profile 167 !! 194 168 INTEGER :: jk ! dummy loop indices 195 169 REAL(wp) :: zm00, zm01, zmhb, zmhs ! temporary scalars … … 205 179 END DO 206 180 207 ! Control print 208 IF(lwp .AND. ld_print ) THEN 181 IF(lwp .AND. ld_print ) THEN ! Control print 209 182 WRITE(numout,*) 210 183 WRITE(numout,*) ' ahm profile : ' … … 215 188 END DO 216 189 ENDIF 217 190 ! 218 191 END SUBROUTINE ldf_zpf_1d 219 192 … … 226 199 !! 227 200 !! ** Method : 1D eddy viscosity coefficients ( depth ) 228 !! 229 !!---------------------------------------------------------------------- 230 !! * Arguments 231 LOGICAL , INTENT (in ) :: ld_print ! If true, output arrays on numout 232 REAL(wp), INTENT (in ) :: & 233 pdam, & ! depth of the inflection point 234 pwam, & ! width of inflection 235 pbot ! battom value (0<pbot<= 1) 236 REAL(wp), INTENT (in ), DIMENSION(jpk) :: & 237 pdep ! depth of the gridpoint (T, U, V, F) 238 REAL(wp), INTENT (inout), DIMENSION(jpi,jpj,jpk) :: & 239 pah ! adimensional vertical profile 240 241 !! * Local variables 201 !!---------------------------------------------------------------------- 202 LOGICAL , INTENT(in ) :: ld_print ! If true, output arrays on numout 203 REAL(wp), INTENT(in ) :: pdam ! depth of the inflection point 204 REAL(wp), INTENT(in ) :: pwam ! width of inflection 205 REAL(wp), INTENT(in ) :: pbot ! bottom value (0<pbot<= 1) 206 REAL(wp), INTENT(in ), DIMENSION (jpk) :: pdep ! depth of the gridpoint (T, U, V, F) 207 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pah ! adimensional vertical profile 208 !! 242 209 INTEGER :: jk ! dummy loop indices 243 210 REAL(wp) :: zm00, zm01, zmhb, zmhs, zcf ! temporary scalars … … 254 221 END DO 255 222 256 ! Control print 257 IF(lwp .AND. ld_print ) THEN 223 IF(lwp .AND. ld_print ) THEN ! Control print 258 224 WRITE(numout,*) 259 225 WRITE(numout,*) ' ahm profile : ' … … 264 230 END DO 265 231 ENDIF 266 232 ! 267 233 END SUBROUTINE ldf_zpf_1d_3d 268 234 … … 275 241 !! 276 242 !! ** Method : 3D for partial step or s-coordinate 277 !! 278 !!---------------------------------------------------------------------- 279 !! * Arguments 280 LOGICAL , INTENT (in ) :: ld_print ! If true, output arrays on numout 281 REAL(wp), INTENT (in ) :: & 282 pdam, & ! depth of the inflection point 283 pwam, & ! width of inflection 284 pbot ! reduction factor (surface value / bottom value) 285 REAL(wp), INTENT (in ), DIMENSION(jpi,jpj,jpk) :: & 286 pdep ! dep of the gridpoint (T, U, V, F) 287 REAL(wp), INTENT (inout), DIMENSION(jpi,jpj,jpk) :: & 288 pah ! adimensional vertical profile 289 290 !! * Local variables 243 !!---------------------------------------------------------------------- 244 LOGICAL , INTENT(in ) :: ld_print ! If true, output arrays on numout 245 REAL(wp), INTENT(in ) :: pdam ! depth of the inflection point 246 REAL(wp), INTENT(in ) :: pwam ! width of inflection 247 REAL(wp), INTENT(in ) :: pbot ! bottom value (0<pbot<= 1) 248 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj,jpk) :: pdep ! dep of the gridpoint (T, U, V, F) 249 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pah ! adimensional vertical profile 250 !! 291 251 INTEGER :: jk ! dummy loop indices 292 252 REAL(wp) :: zm00, zm01, zmhb, zmhs ! temporary scalars … … 302 262 END DO 303 263 304 ! Control print 305 IF(lwp .AND. ld_print ) THEN 264 IF(lwp .AND. ld_print ) THEN ! Control print 306 265 WRITE(numout,*) 307 266 WRITE(numout,*) ' ahm profile : ' … … 312 271 END DO 313 272 ENDIF 314 273 ! 315 274 END SUBROUTINE ldf_zpf_3d 275 316 276 !!====================================================================== 317 277 END MODULE ldfdyn -
trunk/NEMO/OPA_SRC/LDF/ldfdyn_oce.F90
r1152 r1601 4 4 !! Ocean physics: lateral momentum mixing coefficient defined in memory 5 5 !!====================================================================== 6 !! 7 !! ** Purpose : 8 !! - Define in memory lateral momentum mixing coefficients 9 !! 10 !! History : 11 !! 8.5 ! 02-11 (G. Madec) F90: Free form and module 6 !! History : 1.0 ! 2002-11 (G. Madec) F90: Free form and module 12 7 !!---------------------------------------------------------------------- 13 !! OPA 9.0 , LOCEAN-IPSL (2005)14 !! $Id$15 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt16 !!----------------------------------------------------------------------17 !! * Modules used18 8 USE par_oce ! ocean parameters 19 9 … … 21 11 PUBLIC 22 12 23 !!---------------------------------------------------------------------- 24 !! Lateral eddy viscosity coefficients (dynamics) 25 !!---------------------------------------------------------------------- 13 ! !!* Namelist namdyn_ldf : lateral mixing * 14 LOGICAL , PUBLIC :: ln_dynldf_lap = .TRUE. !: laplacian operator 15 LOGICAL , PUBLIC :: ln_dynldf_bilap = .FALSE. !: bilaplacian operator 16 LOGICAL , PUBLIC :: ln_dynldf_level = .FALSE. !: iso-level direction 17 LOGICAL , PUBLIC :: ln_dynldf_hor = .TRUE. !: horizontal (geopotential) direction 18 LOGICAL , PUBLIC :: ln_dynldf_iso = .FALSE. !: iso-neutral direction 19 REAL(wp), PUBLIC :: rn_ahm_0 = 40000._wp !: lateral eddy viscosity (m2/s) 20 REAL(wp), PUBLIC :: rn_ahmb_0 = 0._wp !: lateral background eddy viscosity (m2/s) 26 21 27 LOGICAL :: & !!! ** lateral mixing namelist (nam_dynldf) ** 28 ln_dynldf_lap = .TRUE. , & ! laplacian operator 29 ln_dynldf_bilap = .FALSE. , & ! bilaplacian operator 30 ln_dynldf_level = .FALSE. , & ! iso-level direction 31 ln_dynldf_hor = .TRUE. , & ! horizontal (geopotential) direction 32 ln_dynldf_iso = .FALSE. ! iso-neutral direction 33 34 REAL(wp) :: & !!! ** lateral mixing namelist (nam_dynldf) ** 35 ahm0 = 40000._wp , & ! lateral eddy viscosity (m2/s) 36 ahmb0 = 0._wp ! lateral background eddy viscosity (m2/s) 22 REAL(wp), PUBLIC :: ahm0, ahmb0 ! OLD namelist names 37 23 38 24 #if defined key_dynldf_c3d 39 REAL(wp), DIMENSION(jpi,jpj,jpk) :: &! ** 3D coefficients **25 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: ahm1, ahm2, ahm3, ahm4 ! ** 3D coefficients ** 40 26 #elif defined key_dynldf_c2d 41 REAL(wp), DIMENSION(jpi,jpj) :: &! ** 2D coefficients **27 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: ahm1, ahm2, ahm3, ahm4 ! ** 2D coefficients ** 42 28 #elif defined key_dynldf_c1d 43 REAL(wp), DIMENSION(jpk) :: &! ** 2D coefficients **29 REAL(wp), PUBLIC, DIMENSION(jpk) :: ahm1, ahm2, ahm3, ahm4 ! ** 2D coefficients ** 44 30 #else 45 REAL(wp) :: &! ** 0D coefficients **31 REAL(wp), PUBLIC :: ahm1, ahm2, ahm3, ahm4 ! ** 0D coefficients ** 46 32 #endif 47 ahm1, ahm2, ahm3, ahm4 ! ????48 33 49 34 !!---------------------------------------------------------------------- 35 !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009) 36 !! $Id$ 37 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 38 !!====================================================================== 50 39 END MODULE ldfdyn_oce -
trunk/NEMO/OPA_SRC/LDF/ldftra.F90
r1152 r1601 4 4 !! Ocean physics: lateral diffusivity coefficient 5 5 !!===================================================================== 6 !! History : 7 !! ! 07-97 (G. Madec) from inimix.F split in 2 routines8 !! ! 08-97 (G. Madec) multi dimensional coefficients9 !! 8.5 ! 02-09 (G. Madec) F90: Free form and module10 !! 9.0 ! 05-11 (G. Madec) 6 !! History : ! 1997-07 (G. Madec) from inimix.F split in 2 routines 7 !! NEMO 1.0 ! 2002-09 (G. Madec) F90: Free form and module 8 !! 2.0 ! 2005-11 (G. Madec) 9 !!---------------------------------------------------------------------- 10 11 11 !!---------------------------------------------------------------------- 12 12 !! ldf_tra_init : initialization, namelist read, and parameters control … … 15 15 !! ldf_tra_c1d : 1D eddy viscosity coefficient initialization 16 16 !!---------------------------------------------------------------------- 17 !! * Modules used18 17 USE oce ! ocean dynamics and tracers 19 18 USE dom_oce ! ocean space and time domain … … 22 21 USE ldfslp ! ??? 23 22 USE in_out_manager ! I/O manager 23 USE ioipsl 24 24 USE lib_mpp ! distribued memory computing library 25 25 USE lbclnk ! ocean lateral boundary conditions (or mpp link) … … 28 28 PRIVATE 29 29 30 !! * Routine accessibility 31 PUBLIC ldf_tra_init ! called by opa.F90 30 PUBLIC ldf_tra_init ! called by opa.F90 32 31 33 32 !! * Substitutions 34 33 # include "domzgr_substitute.h90" 35 34 # include "vectopt_loop_substitute.h90" 36 !!---------------------------------------------------------------------- -----------37 !! OPA 9.0 , LOCEAN-IPSL (2005)35 !!---------------------------------------------------------------------- 36 !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009) 38 37 !! $Id$ 39 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt40 !!---------------------------------------------------------------------- -----------38 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 39 !!---------------------------------------------------------------------- 41 40 42 41 CONTAINS … … 62 61 !! coefficients are initialized to a hyperbolic tangent vertical 63 62 !! profile. 64 !!65 63 !!---------------------------------------------------------------------- 66 USE ioipsl 67 68 INTEGER :: ioptio ! ??? 64 INTEGER :: ioptio ! temporary integer 69 65 LOGICAL :: ll_print = .FALSE. ! =T print eddy coef. in numout 70 71 NAMELIST/nam _traldf/ ln_traldf_lap , ln_traldf_bilap,&72 & ln_traldf_level, ln_traldf_hor , ln_traldf_iso, &73 & aht0, ahtb0, aeiv066 !! 67 NAMELIST/namtra_ldf/ ln_traldf_lap , ln_traldf_bilap, & 68 & ln_traldf_level, ln_traldf_hor , ln_traldf_iso, & 69 & rn_aht_0 , rn_ahtb_0 , rn_aeiv_0 74 70 !!---------------------------------------------------------------------- 75 71 … … 77 73 ! ============================================= 78 74 79 ! Read Namelist nam_traldf : Lateral physics on tracers 80 REWIND( numnam ) 81 READ ( numnam, nam_traldf ) 75 REWIND( numnam ) ! Read Namelist namtra_ldf : Lateral physics on tracers 76 READ ( numnam, namtra_ldf ) 82 77 83 IF(lwp) THEN 78 IF(lwp) THEN ! control print 84 79 WRITE(numout,*) 85 80 WRITE(numout,*) 'ldf_tra_init : lateral tracer physics' 86 81 WRITE(numout,*) '~~~~~~~~~~~~ ' 87 WRITE(numout,*) ' Namelist nam_traldf : lateral mixing coefficients'88 WRITE(numout,*) ' laplacian operatorln_traldf_lap = ', ln_traldf_lap89 WRITE(numout,*) ' bilaplacian operatorln_traldf_bilap = ', ln_traldf_bilap90 WRITE(numout,*) ' lateral eddy diffusivity aht0 = ', aht091 WRITE(numout,*) ' background hor. diffusivity ahtb0 = ', ahtb092 WRITE(numout,*) ' eddy induced velocity coef. aeiv0 = ', aeiv082 WRITE(numout,*) ' Namelist namtra_ldf : lateral mixing coefficients' 83 WRITE(numout,*) ' laplacian operator ln_traldf_lap = ', ln_traldf_lap 84 WRITE(numout,*) ' bilaplacian operator ln_traldf_bilap = ', ln_traldf_bilap 85 WRITE(numout,*) ' lateral eddy diffusivity rn_aht_0 = ', rn_aht_0 86 WRITE(numout,*) ' background hor. diffusivity rn_ahtb_0 = ', rn_ahtb_0 87 WRITE(numout,*) ' eddy induced velocity coef. rn_aeiv_0 = ', rn_aeiv_0 93 88 WRITE(numout,*) 94 89 ENDIF 95 90 96 ! Parameter control 91 ! ! convert DOCTOR namelist names into OLD names 92 aht0 = rn_aht_0 93 ahtb0 = rn_ahtb_0 94 aeiv0 = rn_aeiv_0 95 96 ! ! Parameter control 97 97 98 98 ! ... Check consistency for type and direction : … … 112 112 IF(lwp) WRITE(numout,*) ' tracer mixing coef. = F( depth )' 113 113 ioptio = ioptio + 1 114 IF( .NOT. ln_zco ) & 115 & CALL ctl_stop( ' key_traldf_c1d can only be used in z-coordinate - full step' ) 114 IF( .NOT. ln_zco ) CALL ctl_stop( 'key_traldf_c1d can only be used in z-coordinate - full step' ) 116 115 #endif 117 116 IF( ioptio == 0 ) THEN … … 124 123 IF( ln_traldf_bilap ) THEN 125 124 IF(lwp) WRITE(numout,*) ' biharmonic tracer diffusion' 126 IF( aht0 > 0 .AND. .NOT. lk_esopa ) & 127 & CALL ctl_stop( ' The horizontal diffusivity coef. aht0 must be negative' ) 125 IF( aht0 > 0 .AND. .NOT. lk_esopa ) CALL ctl_stop( 'The horizontal diffusivity coef. aht0 must be negative' ) 128 126 ELSE 129 127 IF(lwp) WRITE(numout,*) ' harmonic tracer diffusion (default)' 130 IF( aht0 < 0 .AND. .NOT. lk_esopa ) & 131 & CALL ctl_stop(' The horizontal diffusivity coef. aht0 must be positive' ) 128 IF( aht0 < 0 .AND. .NOT. lk_esopa ) CALL ctl_stop('The horizontal diffusivity coef. aht0 must be positive' ) 132 129 ENDIF 133 130 … … 135 132 ! Lateral eddy diffusivity and eddy induced velocity coefficients 136 133 ! ================================================================ 137 138 134 #if defined key_traldf_c3d 139 135 CALL ldf_tra_c3d( ll_print ) ! aht = 3D coef. = F( longitude, latitude, depth ) … … 145 141 ! Constant coefficients 146 142 IF(lwp)WRITE(numout,*) 147 IF(lwp)WRITE(numout,*) ' 143 IF(lwp)WRITE(numout,*) ' constant eddy diffusivity coef. ahtu = ahtv = ahtw = aht0 = ', aht0 148 144 IF( lk_traldf_eiv ) THEN 149 145 IF(lwp)WRITE(numout,*) 150 IF(lwp)WRITE(numout,*) ' 146 IF(lwp)WRITE(numout,*) ' constant eddy induced velocity coef. aeiu = aeiv = aeiw = aeiv0 = ', aeiv0 151 147 ENDIF 152 148 #endif 153 149 ! 154 150 END SUBROUTINE ldf_tra_init 155 151 -
trunk/NEMO/OPA_SRC/LDF/ldftra_oce.F90
r1152 r1601 4 4 !! Ocean physics : lateral tracer mixing coefficient defined in memory 5 5 !!===================================================================== 6 !! 7 !! ** Purpose : - Define in memory lateral tracer mixing coefficients 8 !! 9 !! History : 10 !! 9.0 ! 02-11 (G. Madec) Original code (from common.h) 6 !! History : 9.0 ! 02-11 (G. Madec) Original code 11 7 !!---------------------------------------------------------------------- 12 !! OPA 9.0 , LOCEAN-IPSL (2005)13 !! $Id$14 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt15 !!----------------------------------------------------------------------16 !! * Modules used17 8 USE par_oce ! ocean parameters 18 9 … … 23 14 !! Lateral eddy diffusivity coefficients (tracers) 24 15 !!---------------------------------------------------------------------- 16 ! !!* Namelist namtra_ldf : lateral mixing * 17 LOGICAL , PUBLIC :: ln_traldf_lap = .TRUE. !: laplacian operator 18 LOGICAL , PUBLIC :: ln_traldf_bilap = .FALSE. !: bilaplacian operator 19 LOGICAL , PUBLIC :: ln_traldf_level = .FALSE. !: iso-level direction 20 LOGICAL , PUBLIC :: ln_traldf_hor = .FALSE. !: horizontal (geopotential) direction 21 LOGICAL , PUBLIC :: ln_traldf_iso = .TRUE. !: iso-neutral direction 22 REAL(wp), PUBLIC :: rn_aht_0 = 2000._wp !: lateral eddy diffusivity (m2/s) 23 REAL(wp), PUBLIC :: rn_ahtb_0 = 0._wp !: lateral background eddy diffusivity (m2/s) 24 REAL(wp), PUBLIC :: rn_aeiv_0 = 2000._wp !: eddy induced velocity coefficient (m2/s) 25 25 26 LOGICAL , PUBLIC :: & !!: ** lateral mixing namelist (nam_traldf) ** 27 ln_traldf_lap = .TRUE. , & !: laplacian operator 28 ln_traldf_bilap = .FALSE. , & !: bilaplacian operator 29 ln_traldf_level = .FALSE. , & !: iso-level direction 30 ln_traldf_hor = .FALSE. , & !: horizontal (geopotential) direction 31 ln_traldf_iso = .TRUE. !: iso-neutral direction 32 33 REAL(wp), PUBLIC :: & !!: ** lateral mixing namelist (namldf) ** 34 aht0 = 2000._wp , & !: lateral eddy diffusivity (m2/s) 35 ahtb0 = 0._wp , & !: lateral background eddy diffusivity (m2/s) 36 aeiv0 = 2000._wp !: eddy induced velocity coefficient (m2/s) 26 REAL(wp), PUBLIC :: aht0, ahtb0, aeiv0 !!: OLD namelist names 37 27 38 28 #if defined key_traldf_c3d 39 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: & !: ** 3D coefficients **29 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: ahtt, ahtu, ahtv, ahtw !: ** 3D coefficients ** at T-, U-, V-, W-points 40 30 #elif defined key_traldf_c2d 41 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & !: ** 2D coefficients **31 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: ahtt, ahtu, ahtv, ahtw !: ** 2D coefficients ** at T-, U-, V-, W-points 42 32 #elif defined key_traldf_c1d 43 REAL(wp), PUBLIC, DIMENSION(jpk) :: & !: ** 1D coefficients **33 REAL(wp), PUBLIC, DIMENSION(jpk) :: ahtt, ahtu, ahtv, ahtw !: ** 1D coefficients ** at T-, U-, V-, W-points 44 34 #else 45 REAL(wp), PUBLIC :: & !: ** 0D coefficients **35 REAL(wp), PUBLIC :: ahtt, ahtu, ahtv, ahtw !: ** 0D coefficients ** at T-, U-, V-, W-points 46 36 #endif 47 ahtt, ahtu, ahtv, ahtw !: T-, U-, V-, W-points coefficients48 37 49 38 … … 55 44 56 45 # if defined key_traldf_c3d 57 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: & !: ** 3D coefficients **46 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: aeiu, aeiv, aeiw !: ** 3D coefficients ** at U-, V-, W-points [m2/s] 58 47 # elif defined key_traldf_c2d 59 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & !: ** 2D coefficients **48 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: aeiu, aeiv, aeiw !: ** 2D coefficients ** at U-, V-, W-points [m2/s] 60 49 # elif defined key_traldf_c1d 61 REAL(wp), PUBLIC, DIMENSION(jpk) :: & !: ** 1D coefficients **50 REAL(wp), PUBLIC, DIMENSION(jpk) :: aeiu, aeiv, aeiw !: ** 1D coefficients ** at U-, V-, W-points [m2/s] 62 51 # else 63 REAL(wp), PUBLIC :: & !: ** 0D coefficients **52 REAL(wp), PUBLIC :: aeiu, aeiv, aeiw !: ** 0D coefficients ** at U-, V-, W-points [m2/s] 64 53 # endif 65 aeiu, aeiv, aeiw !: U-, V-, W-points induced velocity coef. (m2/s)66 67 54 # if defined key_diaeiv 68 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: & !: 69 u_eiv, v_eiv, w_eiv !: The three component of the eddy induced velocity (m/s) 55 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: u_eiv, v_eiv, w_eiv !: eddy induced velocity [m/s] 70 56 # endif 71 57 … … 75 61 !!---------------------------------------------------------------------- 76 62 LOGICAL , PUBLIC, PARAMETER :: lk_traldf_eiv = .FALSE. !: eddy induced velocity flag 77 REAL(wp), PUBLIC :: aeiu, aeiv, aeiw63 REAL(wp), PUBLIC :: aeiu, aeiv, aeiw !: eddy induced coef. (not used) 78 64 #endif 79 65 80 66 !!---------------------------------------------------------------------- 67 !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009) 68 !! $Id$ 69 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 70 !!===================================================================== 81 71 END MODULE ldftra_oce
Note: See TracChangeset
for help on using the changeset viewer.