Changeset 1954 for branches/DEV_r1784_mid_year_merge_2010
- Timestamp:
- 2010-06-24T17:52:01+02:00 (14 years ago)
- Location:
- branches/DEV_r1784_mid_year_merge_2010
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r1784_mid_year_merge_2010/CONFIG/ORCA2_LIM/EXP00/namelist
r1951 r1954 523 523 ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") 524 524 ! Coefficient 525 rn_ahm_0 = 40000. ! horizontal eddy viscosity [m2/s] 526 rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] 525 rn_ahm_0 = 40000. ! horizontal laplacian eddy viscosity [m2/s] 526 rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] 527 rn_ahm_0_blp = 0. ! horizontal bilaplacian eddy viscosity [m4/s] 527 528 / 528 529 !!====================================================================== -
branches/DEV_r1784_mid_year_merge_2010/DOC/TexFiles/Chapters/Chap_LDF.tex
r1224 r1954 147 147 148 148 (5) the eddy coefficient associated with a biharmonic operator must be set to a \emph{negative} value. 149 150 (6) it is possible to use both the laplacian and biharmonic operators concurrently. 151 152 (7) for testing purposes it is possible to run without lateral diffusion on momentum. 149 153 150 154 -
branches/DEV_r1784_mid_year_merge_2010/DOC/TexFiles/Namelist/nam_dynldf
r1225 r1954 10 10 ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") 11 11 ! Coefficient 12 ahm0 = 40000. ! horizontal eddy viscosity [m2/s] 13 ahmb0 = 0. ! background eddy viscosity for ldf_iso [m2/s] 12 rn_ahm_0 = 40000. ! horizontal laplacian eddy viscosity [m2/s] 13 rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] 14 rn_ahm_0_blp = 0. ! horizontal bilaplacian eddy viscosity [m4/s] 14 15 / -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/DYN/dynldf.F90
r1152 r1954 69 69 CASE ( 2 ) ; CALL dyn_ldf_bilap ( kt ) ! iso-level bilaplacian 70 70 CASE ( 3 ) ; CALL dyn_ldf_bilapg ( kt ) ! s-coord. horizontal bilaplacian 71 CASE ( 4 ) ! iso-level laplacian + bilaplacian 72 CALL dyn_ldf_lap ( kt ) 73 CALL dyn_ldf_bilap ( kt ) 74 CASE ( 5 ) ! rotated laplacian + bilaplacian (s-coord) 75 CALL dyn_ldf_iso ( kt ) 76 CALL dyn_ldf_bilapg ( kt ) 71 77 ! 72 78 CASE ( -1 ) ! esopa: test all possibility with control print … … 83 89 CALL prt_ctl( tab3d_1=ua, clinfo1=' ldf3 - Ua: ', mask1=umask, & 84 90 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 91 ! 92 CASE ( -2 ) ! neither laplacian nor bilaplacian schemes used 93 IF( kt == nit000 ) THEN 94 IF(lwp) WRITE(numout,*) 95 IF(lwp) WRITE(numout,*) 'dyn_ldf : no lateral diffusion on momentum setup' 96 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 97 ENDIF 85 98 END SELECT 86 99 … … 124 137 IF( ln_dynldf_lap ) ioptio = ioptio + 1 125 138 IF( ln_dynldf_bilap ) ioptio = ioptio + 1 126 IF( ioptio /= 1 ) CALL ctl_stop( ' use ONE of the 2 lap/bilap operator type ondynamics' )139 IF( ioptio < 1 ) CALL ctl_warn( ' neither laplacian nor bilaplacian operator set for dynamics' ) 127 140 ioptio = 0 128 141 IF( ln_dynldf_level ) ioptio = ioptio + 1 … … 144 157 IF ( ln_dynldf_iso ) nldf = 1 ! isoneutral ( rotation) 145 158 ENDIF 146 IF ( ln_sco ) THEN ! z-coordinate159 IF ( ln_sco ) THEN ! s-coordinate 147 160 IF ( ln_dynldf_level ) nldf = 0 ! iso-level (no rotation) 148 161 IF ( ln_dynldf_hor ) nldf = 1 ! horizontal ( rotation) … … 162 175 IF ( ln_dynldf_iso ) ierr = 2 ! isoneutral ( rotation) 163 176 ENDIF 164 IF ( ln_sco ) THEN ! z-coordinate177 IF ( ln_sco ) THEN ! s-coordinate 165 178 IF ( ln_dynldf_level ) nldf = 2 ! iso-level (no rotation) 166 179 IF ( ln_dynldf_hor ) nldf = 3 ! horizontal ( rotation) … … 169 182 ENDIF 170 183 184 IF( ln_dynldf_lap .AND. ln_dynldf_bilap ) THEN ! mixed laplacian and bilaplacian operators 185 IF ( ln_zco ) THEN ! z-coordinate 186 IF ( ln_dynldf_level ) nldf = 4 ! iso-level (no rotation) 187 IF ( ln_dynldf_hor ) nldf = 4 ! horizontal (no rotation) 188 IF ( ln_dynldf_iso ) ierr = 2 ! isoneutral ( rotation) 189 ENDIF 190 IF ( ln_zps ) THEN ! z-coordinate 191 IF ( ln_dynldf_level ) ierr = 1 ! iso-level not allowed 192 IF ( ln_dynldf_hor ) nldf = 4 ! horizontal (no rotation) 193 IF ( ln_dynldf_iso ) ierr = 2 ! isoneutral ( rotation) 194 ENDIF 195 IF ( ln_sco ) THEN ! s-coordinate 196 IF ( ln_dynldf_level ) nldf = 4 ! iso-level (no rotation) 197 IF ( ln_dynldf_hor ) nldf = 5 ! horizontal ( rotation) 198 IF ( ln_dynldf_iso ) ierr = 2 ! isoneutral ( rotation) 199 ENDIF 200 ENDIF 201 171 202 IF( lk_esopa ) nldf = -1 ! esopa test 172 203 … … 179 210 IF(lwp) THEN 180 211 WRITE(numout,*) 212 IF( nldf == -2 ) WRITE(numout,*) ' neither laplacian nor bilaplacian schemes used' 181 213 IF( nldf == -1 ) WRITE(numout,*) ' ESOPA test All scheme used' 182 214 IF( nldf == 0 ) WRITE(numout,*) ' laplacian operator' 183 IF( nldf == 1 ) WRITE(numout,*) ' Rotated laplacian operator'215 IF( nldf == 1 ) WRITE(numout,*) ' rotated laplacian operator' 184 216 IF( nldf == 2 ) WRITE(numout,*) ' bilaplacian operator' 185 IF( nldf == 3 ) WRITE(numout,*) ' Rotated bilaplacian' 217 IF( nldf == 3 ) WRITE(numout,*) ' rotated bilaplacian' 218 IF( nldf == 4 ) WRITE(numout,*) ' laplacian and bilaplacian operators' 219 IF( nldf == 5 ) WRITE(numout,*) ' rotated laplacian and bilaplacian operators' 186 220 ENDIF 187 221 ! -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/DYN/dynldf_lap.F90
r1152 r1954 78 78 IF( kt == nit000 ) THEN 79 79 IF(lwp) WRITE(numout,*) 80 IF(lwp) WRITE(numout,*) 'dyn_ldf : iso-level harmonic (laplaci en) operator'80 IF(lwp) WRITE(numout,*) 'dyn_ldf : iso-level harmonic (laplacian) operator' 81 81 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 82 82 ENDIF -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/LDF/ldfdyn.F90
r1601 r1954 67 67 NAMELIST/namdyn_ldf/ ln_dynldf_lap , ln_dynldf_bilap, & 68 68 & ln_dynldf_level, ln_dynldf_hor , ln_dynldf_iso, & 69 & rn_ahm_0 , rn_ahmb_0 69 & rn_ahm_0 , rn_ahmb_0 , rn_ahm_0_blp 70 70 !!---------------------------------------------------------------------- 71 71 … … 78 78 WRITE(numout,*) '~~~~~~~' 79 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 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 laplacian eddy viscosity rn_ahm_0 = ', rn_ahm_0 86 WRITE(numout,*) ' background viscosity rn_ahmb_0 = ', rn_ahmb_0 87 WRITE(numout,*) ' horizontal bilaplacian eddy viscosity rn_ahm_0 = ', rn_ahm_0 88 89 ENDIF 90 91 ahm0 = rn_ahm_0 ! OLD namelist variables defined from DOCTOR namelist variables 92 ahmb0 = rn_ahmb_0 93 ahm0_blp = rn_ahm_0_blp 91 94 92 95 ! ... check of lateral diffusive operator on tracers … … 117 120 IF( ln_dynldf_bilap ) THEN 118 121 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' ) 122 IF( ahm0_blp == 0.0 ) ahm0_blp = ahm0 ! Old namelist method: bilap specified with ahm0 123 IF( .NOT. ln_dynldf_lap ) ahm0 = ahm0_blp ! Allow spatially varying coefs, which use ahm0 as input 124 IF( ahm0_blp > 0 .AND. .NOT. lk_esopa ) CALL ctl_stop( 'The horizontal viscosity coef. ahm0 must be negative' ) 120 125 ELSE 121 126 IF(lwp) WRITE(numout,*) ' harmonic momentum diff. (default)' -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/LDF/ldfdyn_c1d.h90
r1152 r1954 17 17 !! ** Method : 1D eddy viscosity coefficients ( depth ) 18 18 !! ahm3, ahm4 never used 19 !! biharmonic or harmonic operator : ahm1=ahm2 defined at T-level 19 !! harmonic operator : ahm1 defined at T-level 20 !! biharmonic operator : ahm2 defined at T-level 20 21 !! isopycnal or geopotential harmonic operator 21 22 !! : ahm1 defined at T-level … … 27 28 28 29 !! * Local variables 29 REAL(wp) :: zdam, zwam, zm00, zm01, zmhf, zmhs 30 REAL(wp) :: zdam, zwam, zm00, zm01, zmhf, zmhs 31 REAL(wp) :: zdam2, zwam2, zm200, zm201, zmh2f, zmh2s 30 32 REAL(wp) :: zahmf, zahms 31 33 !!---------------------------------------------------------------------- … … 36 38 IF(lwp) WRITE(numout,*) 37 39 38 ! Set ahm1 =ahm2(always at t-level)40 ! Set ahm1 for laplacian (always at t-level) 39 41 ! ============= 40 42 ! (USER: modify ahm1 following your desiderata) … … 53 55 zmhs = zahms-zmhf * zm00 54 56 55 ! set ahm1=ahm2 at T-level 57 ! Set ahm2 for bilaplacian (always at t-level) 58 ! ============= 59 ! (USER: modify ahm2 following your desiderata) 60 61 ! initialization of the profile 62 ! ahms, ahmf: surface and bottom values 63 zahm2s = ahm0_blp 64 zahm2f = ahm0_blp/4. 65 ! zdam, zwam: depth of the inflection pt and width of inflection 66 zdam2 = -300. 67 zwam2 = 300. 68 ! computation coefficients 69 zm200 = TANH( (0-zdam2)/zwam2 ) 70 zm201 = TANH( (-fsdept(1,1,jpk)-zdam2)/zwam2 ) 71 zmh2f = (zahm2s-zahm2f)/(zm200-zm201) 72 zmh2s = zahm2s-zmh2f * zm00 73 74 75 ! set ahm1 and ahm2 at T-level 56 76 DO jk = 1, jpk 57 ahm1(jk) = zmhs + zmhf * TANH( (-fsdept(1,1,jk)-zdam) / zwam)58 ahm2(jk) = ahm1(jk)77 ahm1(jk) = zmhs + zmhf * TANH( (-fsdept(1,1,jk)-zdam ) / zwam ) 78 ahm2(jk) = zmh2s + zmh2f * TANH( (-fsdept(1,1,jk)-zdam2) / zwam2 ) 59 79 END DO 60 80 … … 62 82 IF(lwp .AND. ld_print ) THEN 63 83 WRITE(numout,*) 64 WRITE(numout,*) ' ahm profile : '84 WRITE(numout,*) ' ahm profile (laplacian): ' 65 85 WRITE(numout,*) 66 86 WRITE(numout,9100) 67 87 DO jk = 1, jpk 68 88 WRITE(numout,9110) jk, ahm1(jk), fsdept(1,1,jk) 89 END DO 90 WRITE(numout,*) 91 WRITE(numout,*) ' ahm profile (bilaplacian): ' 92 WRITE(numout,*) 93 WRITE(numout,9100) 94 DO jk = 1, jpk 95 WRITE(numout,9110) jk, ahm2(jk), fsdept(1,1,jk) 69 96 END DO 70 97 ENDIF -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/LDF/ldfdyn_c2d.h90
r1694 r1954 27 27 !! iso-model level : ahm3, ahm4 not used 28 28 !! 29 !! biharmonic operator : ahm 1is defined at u-point30 !! ahm 2is defined at v-point31 !! : ahm 3, ahm4not used29 !! biharmonic operator : ahm3 is defined at u-point 30 !! ahm4 is defined at v-point 31 !! : ahm1, ahm2 not used 32 32 !! 33 33 !!---------------------------------------------------------------------- … … 102 102 IF(lwp) WRITE(numout,*) ' maximum grid-spacing = ', zd_max, ' maximum value for ahm = ', ahm0 103 103 104 za00 = ahm0 / ( zd_max * zd_max * zd_max )104 za00 = ahm0_blp / ( zd_max * zd_max * zd_max ) 105 105 DO jj = 1, jpj 106 106 DO ji = 1, jpi -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90
r1694 r1954 122 122 IF(lwp) WRITE(numout,*) ' maximum grid-spacing = ', zd_max, ' maximum value for ahm = ', ahm0 123 123 124 za00 = ahm0 / ( zd_max * zd_max * zd_max )124 za00 = ahm0_blp / ( zd_max * zd_max * zd_max ) 125 125 DO jj = 1, jpj 126 126 DO ji = 1, jpi -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/LDF/ldfdyn_oce.F90
r1601 r1954 17 17 LOGICAL , PUBLIC :: ln_dynldf_hor = .TRUE. !: horizontal (geopotential) direction 18 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) 19 REAL(wp), PUBLIC :: rn_ahm_0 = 40000._wp !: lateral laplacian eddy viscosity (m2/s) 20 REAL(wp), PUBLIC :: rn_ahmb_0 = 0._wp !: lateral laplacian background eddy viscosity (m2/s) 21 REAL(wp), PUBLIC :: rn_ahm_0_blp = 0._wp !: lateral bilaplacian eddy viscosity (m4/s) 21 22 22 REAL(wp), PUBLIC :: ahm0, ahmb0 23 REAL(wp), PUBLIC :: ahm0, ahmb0, ahm0_blp ! OLD namelist names 23 24 24 25 #if defined key_dynldf_c3d -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/LDF/ldfdyn_substitute.h90
r1152 r1954 10 10 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 11 11 !!---------------------------------------------------------------------- 12 !! 13 !! fsahmt, fsahmf - used for laplaian operator only 14 !! fsahmu, fsahmv - used for bilaplacian operator only 15 !! 12 16 #if defined key_dynldf_c3d 13 17 ! ' key_dynldf_c3d' : 3D coefficient … … 26 30 # define fsahmt(i,j,k) ahm1(k) 27 31 # define fsahmf(i,j,k) ahm1(k) 28 # define fsahmu(i,j,k) ahm 1(k)29 # define fsahmv(i,j,k) ahm 1(k)32 # define fsahmu(i,j,k) ahm2(k) 33 # define fsahmv(i,j,k) ahm2(k) 30 34 #else 31 35 ! default option : Constant coefficient 32 36 # define fsahmt(i,j,k) ahm0 33 37 # define fsahmf(i,j,k) ahm0 34 # define fsahmu(i,j,k) ahm0 35 # define fsahmv(i,j,k) ahm0 38 # define fsahmu(i,j,k) ahm0_blp 39 # define fsahmv(i,j,k) ahm0_blp 36 40 #endif
Note: See TracChangeset
for help on using the changeset viewer.