Changeset 7931 for branches/2017
- Timestamp:
- 2017-04-19T12:15:07+02:00 (7 years ago)
- Location:
- branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM
- Files:
-
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg
r7715 r7931 245 245 rn_ahm_0_lap = 100000. ! horizontal laplacian eddy viscosity [m2/s] 246 246 / 247 !----------------------------------------------------------------------- 248 &namzdf ! vertical physics 249 !----------------------------------------------------------------------- 250 nn_evdm = 1 ! evd apply on tracer (=0) or on tracer and momentum (=1) 247 !!====================================================================== 248 !! vertical physics namelists !! 249 !!====================================================================== 250 !----------------------------------------------------------------------- 251 &namzdf ! vertical physics (default: NO selection) 252 !----------------------------------------------------------------------- 253 ! ! type of vertical closure 254 ln_zdfcst = .false. ! constant mixing 255 ln_zdfric = .false. ! local Richardson dependent formulation (T => fill namzdf_ric) 256 ln_zdftke = .true. ! Turbulent Kinetic Energy closure (T => fill namzdf_tke) 257 ln_zdfgls = .false. ! Generic Length Scale closure (T => fill namzdf_gls) 258 ! 259 ! ! convection 260 ln_zdfevd = .true. ! Enhanced Vertical Diffusion scheme 261 nn_evdm = 1 ! evd apply on tracer (=0) or on tracer and momentum (=1) 262 rn_evd = 100. ! evd mixing coefficient [m2/s] 263 ! 264 ln_zdfddm = .false. ! double diffusive mixing 265 rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) 266 rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio 267 ! 268 ln_zdftmx = .false. ! tidal mixing parameterization (T => fill namzdf_tmx) 269 ! 270 ln_zdfqiao = .false. ! enhanced wave vertical mixing Qiao (2010) (T => ln_wave=T & ln_sdw=T & fill namsbc_wave) 271 ! 272 ! ! time-stepping 273 ln_zdfexp = .false. ! split-explicit (T) or implicit (F) time stepping scheme 274 nn_zdfexp= 3 ! number of sub-timestep for ln_zdfexp=T 275 ! 276 ! ! Coefficients 277 rn_avm0 = 1.2e-4 ! vertical eddy viscosity [m2/s] (background Kz if ln_zdfcst=F) 278 rn_avt0 = 1.2e-5 ! vertical eddy diffusivity [m2/s] (background Kz if ln_zdfcst=F) 279 nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) 280 nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) 281 ! 251 282 / 252 283 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/CONFIG/SHARED/namelist_ref
r7813 r7931 1 1 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 !! namelist_ref 2 !! namelist_ref !! 3 3 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 4 4 !! NEMO/OPA : 1 - run manager (namrun) … … 11 11 !! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_ldfeiv, namtra_dmp) 12 12 !! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) 13 !! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_ ddm, namzdf_tmx, namzdf_tmx_new)14 !! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namhsb, namsto)15 !! 10 - miscellaneous (nammpp, namctl)13 !! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_gls, namzdf_tmx, namzdf_tmx_new) 14 !! 9 - miscellaneous (nammpp, namctl) 15 !! 10 - diagnostics (namnc4, namtrd, namspr, namflo, namhsb, namsto) 16 16 !! 11 - Obs & Assim (namobs, nam_asminc) 17 17 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 18 18 19 19 !!====================================================================== 20 !! *** Run management namelists *** 20 !! *** Run management namelists *** !! 21 21 !!====================================================================== 22 22 !! namrun parameters of the run … … 70 70 ! 71 71 !----------------------------------------------------------------------- 72 &namcfg ! parameters of the configuration 72 &namcfg ! parameters of the configuration ! (default: user defined GYRE) 73 73 !----------------------------------------------------------------------- 74 74 ln_read_cfg = .false. ! (=T) read the domain configuration file … … 83 83 / 84 84 !----------------------------------------------------------------------- 85 &namdom ! space and time domain (bathymetry, mesh, timestep)85 &namdom ! time and space domain 86 86 !----------------------------------------------------------------------- 87 87 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time … … 91 91 rn_isfhmin = 1.00 ! treshold (m) to discriminate grounding ice to floating ice 92 92 ! 93 rn_rdt = 5760. ! time step for the dynamics (and tracer if nn_acc=0)93 rn_rdt = 5760. ! time step for the dynamics and tracer 94 94 rn_atfp = 0.1 ! asselin time filter parameter 95 95 ! … … 232 232 sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' , '' 233 233 sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' , '' 234 234 ! 235 235 cn_dir = './' ! root directory for the location of the flux files 236 236 / … … 263 263 rn_efac = 1. ! multiplicative factor for evaporation (0. or 1.) 264 264 rn_vfac = 0. ! multiplicative factor for ocean/ice velocity 265 266 ln_Cd_L12 = .false. ! Modify the drag ice-atm and oce-atm depending on ice concentration267 ! This parameterization is from Lupkes et al. (JGR 2012) 265 ! ! in the calculation of the wind stress (0.=absolute winds or 1.=relative winds) 266 ln_Cd_L12 = .false. ! air-ice and ocean-ice function of ice concentration (Lupkes et al. JGR 2012) 267 268 268 / 269 269 !----------------------------------------------------------------------- … … 429 429 nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) 430 430 nn_sssr = 2 ! add a damping term in the surface freshwater flux (=2) 431 431 ! ! or to SSS only (=1) or no damping term (=0) 432 432 rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] 433 433 rn_deds = -166.67 ! magnitude of the damping on salinity [mm/day] … … 439 439 !----------------------------------------------------------------------- 440 440 nn_ice_alb = 1 ! parameterization of ice/snow albedo 441 442 443 441 ! ! 0: Shine & Henderson-Sellers (JGR 1985), giving clear-sky albedo 442 ! ! 1: "home made" based on Brandt et al. (JClim 2005) and Grenfell & Perovich (JGR 2004), 443 ! ! giving cloud-sky albedo 444 444 rn_alb_sdry = 0.85 ! dry snow albedo : 0.80 (nn_ice_alb = 0); 0.85 (nn_ice_alb = 1); obs 0.85-0.87 (cloud-sky) 445 445 rn_alb_smlt = 0.75 ! melting snow albedo : 0.65 ( '' ) ; 0.75 ( '' ) ; obs 0.72-0.82 ( '' ) … … 498 498 499 499 !!====================================================================== 500 !! *** Lateral boundary condition *** 500 !! *** Lateral boundary condition *** !! 501 501 !!====================================================================== 502 502 !! namlbc lateral momentum boundary condition … … 667 667 ! 668 668 !----------------------------------------------------------------------- 669 &nameos ! ocean physical parameters669 &nameos ! ocean Equation Of State (default: NO) 670 670 !----------------------------------------------------------------------- 671 671 ln_teos10 = .false. ! = Use TEOS-10 equation of state … … 750 750 !----------------------------------------------------------------------- 751 751 ln_ldfeiv =.false. ! use eddy induced velocity parameterization 752 ln_ldfeiv_dia =.false. ! diagnose eiv stream function and velocities753 rn_aeiv_0 = 2000. ! eddy induced velocity coefficient [m2/s]754 nn_aei_ijk_t = 21 ! space/time variation of the eiv coeficient755 ! ! =-20 (=-30) read in eddy_induced_velocity_2D.nc (..._3D.nc) file756 ! ! = 0 constant757 ! ! = 10 F(k) =ldf_c1d758 ! ! = 20 F(i,j) =ldf_c2d759 ! ! = 21 F(i,j,t) =Treguier et al. JPO 1997 formulation760 ! ! = 30 F(i,j,k) =ldf_c2d + ldf_c1d752 rn_aeiv_0 = 2000. ! eddy induced velocity coefficient [m2/s] 753 nn_aei_ijk_t = 21 ! space/time variation of the eiv coeficient 754 ! ! =-20 (=-30) read in eddy_induced_velocity_2D.nc (..._3D.nc) file 755 ! ! = 0 constant 756 ! ! = 10 F(k) =ldf_c1d 757 ! ! = 20 F(i,j) =ldf_c2d 758 ! ! = 21 F(i,j,t) =Treguier et al. JPO 1997 formulation 759 ! ! = 30 F(i,j,k) =ldf_c2d + ldf_c1d 760 ln_ldfeiv_dia =.false. ! diagnose eiv stream function and velocities 761 761 / 762 762 !----------------------------------------------------------------------- 763 763 &namtra_dmp ! tracer: T & S newtonian damping (default: NO) 764 764 !----------------------------------------------------------------------- 765 ln_tradmp = .true. ! add a damping term n (T) or not (F)766 nn_zdmp = 0 ! verticalshape =0 damping throughout the water column767 !=1 no damping in the mixing layer (kz criteria)768 !=2 no damping in the mixed layer (rho crieria)769 cn_resto ='resto.nc' ! Name of file containing restoration coeff. field (use dmp_tools to create this)770 / 771 772 !!====================================================================== 773 !! *** Dynamics namelists *** 765 ln_tradmp = .true. ! add a damping term 766 nn_zdmp = 0 ! vertical shape =0 damping throughout the water column 767 ! ! =1 no damping in the mixing layer (kz criteria) 768 ! ! =2 no damping in the mixed layer (rho crieria) 769 cn_resto ='resto.nc' ! Name of file containing restoration coeff. field (use dmp_tools to create this) 770 / 771 772 !!====================================================================== 773 !! *** Dynamics namelists *** !! 774 774 !!====================================================================== 775 775 !! namdyn_adv formulation of the momentum advection … … 787 787 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 788 788 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 789 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection789 ln_dynzad_zts = .false. ! sub-time-stepping for vertical momentum advection 790 790 / 791 791 !----------------------------------------------------------------------- … … 814 814 / 815 815 !----------------------------------------------------------------------- 816 &namdyn_hpg ! Hydrostatic pressure gradient option (default: zps)816 &namdyn_hpg ! Hydrostatic pressure gradient option (default: NO selection) 817 817 !----------------------------------------------------------------------- 818 818 ln_hpg_zco = .false. ! z-coordinate - full steps … … 869 869 870 870 !!====================================================================== 871 !! Tracers & Dynamics vertical physics namelists871 !! vertical physics namelists !! 872 872 !!====================================================================== 873 873 !! namzdf vertical physics 874 !! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") 875 !! namzdf_tke TKE dependent vertical mixing ("key_zdftke") 876 !! namzdf_gls GLS vertical mixing ("key_zdfgls") 877 !! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") 878 !! namzdf_tmx tidal mixing parameterization ("key_zdftmx") 879 !!====================================================================== 880 ! 881 !----------------------------------------------------------------------- 882 &namzdf ! vertical physics 883 !----------------------------------------------------------------------- 884 rn_avm0 = 1.2e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") 885 rn_avt0 = 1.2e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") 886 nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) 887 nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) 888 ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) 889 nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) 890 rn_avevd = 100. ! evd mixing coefficient [m2/s] 891 ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) 892 nn_npc = 1 ! frequency of application of npc 893 nn_npcp = 365 ! npc control print frequency 894 ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping 895 nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T 896 ln_zdfqiao = .false. ! Enhanced wave vertical mixing Qiao (2010) (T => ln_wave=.true. & ln_sdw=.true. & fill namsbc_wave) 897 / 898 !----------------------------------------------------------------------- 899 &namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) 874 !! namzdf_ric richardson number vertical mixing (ln_zdfric=T) 875 !! namzdf_tke TKE vertical mixing (ln_zdftke=T) 876 !! namzdf_gls GLS vertical mixing (ln_zdfgls=T) 877 !! namzdf_tmx tidal mixing parameterization (ln_zdftmx=T) 878 !!====================================================================== 879 ! 880 !----------------------------------------------------------------------- 881 &namzdf ! vertical physics (default: NO selection) 882 !----------------------------------------------------------------------- 883 ! ! type of vertical closure 884 ln_zdfcst = .false. ! constant mixing 885 ln_zdfric = .false. ! local Richardson dependent formulation (T => fill namzdf_ric) 886 ln_zdftke = .false. ! Turbulent Kinetic Energy closure (T => fill namzdf_tke) 887 ln_zdfgls = .false. ! Generic Length Scale closure (T => fill namzdf_gls) 888 ! 889 ! ! convection 890 ln_zdfevd = .false. ! enhanced vertical diffusion 891 nn_evdm = 0 ! apply on tracer (=0) or on tracer and momentum (=1) 892 rn_evd = 100. ! mixing coefficient [m2/s] 893 ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm 894 nn_npc = 1 ! frequency of application of npc 895 nn_npcp = 365 ! npc control print frequency 896 !!gm new 897 ! 898 ln_zdfddm = .false. ! double diffusive mixing 899 rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) 900 rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio 901 ! 902 ln_zdftmx = .false. ! tidal mixing parameterization (T => fill namzdf_tmx) 903 ! 904 !!gm 905 ! 906 ln_zdfqiao = .false. ! surface wave-induced mixing (Qiao et al. 2010) (T => ln_wave=ln_sdw=T. & fill namsbc_wave) 907 ! 908 ! ! time-stepping 909 ln_zdfexp = .false. ! split-explicit (T) or implicit (F) scheme 910 nn_zdfexp= 3 ! number of sub-timestep for ln_zdfexp=T 911 ! ! coefficients 912 rn_avm0 = 1.2e-4 ! vertical eddy viscosity [m2/s] (background Kz if ln_zdfcst=F) 913 rn_avt0 = 1.2e-5 ! vertical eddy diffusivity [m2/s] (background Kz if ln_zdfcst=F) 914 nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) 915 nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) 916 ! 917 / 918 !----------------------------------------------------------------------- 919 &namzdf_ric ! richardson number dependent vertical diffusion (ln_zdfric=T) 900 920 !----------------------------------------------------------------------- 901 921 rn_avmri = 100.e-4 ! maximum value of the vertical viscosity … … 910 930 / 911 931 !----------------------------------------------------------------------- 912 &namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ( "key_zdftke")932 &namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion (ln_zdftke=T) 913 933 !----------------------------------------------------------------------- 914 934 rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) … … 927 947 ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) 928 948 rn_lc = 0.15 ! coef. associated to Langmuir cells 929 nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to near intertial waves949 nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to NIWs 930 950 ! = 0 no penetration 931 951 ! = 1 add a tke source below the ML … … 938 958 / 939 959 !----------------------------------------------------------------------- 940 &namzdf_gls ! GLS vertical diffusion ( "key_zdfgls")960 &namzdf_gls ! GLS vertical diffusion (ln_zdfgls) 941 961 !----------------------------------------------------------------------- 942 962 rn_emin = 1.e-7 ! minimum value of e [m2/s2] … … 957 977 / 958 978 !----------------------------------------------------------------------- 959 &namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm")960 !-----------------------------------------------------------------------961 rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity)962 rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio963 /964 !-----------------------------------------------------------------------965 979 &namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") 966 980 !----------------------------------------------------------------------- … … 1116 1130 !----------------------------------------------------------------------- 1117 1131 &nam_diatmb ! Top Middle Bottom Output (default F) 1118 !-----------------------------------------------------------------------1119 ln_diatmb = .false. ! Choose Top Middle and Bottom output or not1120 /1121 !-----------------------------------------------------------------------1122 &nam_dia25h ! 25h Mean Output (default F)1123 !-----------------------------------------------------------------------1124 ln_dia25h = .false. ! Choose 25h mean output or not1125 /1126 !-----------------------------------------------------------------------1127 &namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4")1128 1132 !----------------------------------------------------------------------- 1129 1133 ln_diatmb = .false. ! Choose Top Middle and Bottom output or not -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/C1D/step_c1d.F90
r6140 r7931 27 27 PUBLIC stp_c1d ! called by opa.F90 28 28 29 !! * Substitutions30 # include "zdfddm_substitute.h90"31 29 !!---------------------------------------------------------------------- 32 30 !! NEMO/C1D 3.7 , NEMO Consortium (2015) … … 93 91 IF( ln_zdfevd ) CALL zdf_evd( kstp ) ! enhanced vertical eddy diffusivity 94 92 IF( lk_zdftmx ) CALL zdf_tmx( kstp ) ! tidal vertical mixing 95 IF( l k_zdfddm ) CALL zdf_ddm( kstp ) ! double diffusive mixing93 IF( ln_zdfddm ) CALL zdf_ddm( kstp ) ! double diffusive mixing 96 94 CALL zdf_mxl( kstp ) ! mixed layer depth 97 95 -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90
r7753 r7931 39 39 40 40 !! * Substitutions 41 # include "zdfddm_substitute.h90"42 41 # include "vectopt_loop_substitute.h90" 43 42 !!---------------------------------------------------------------------- … … 212 211 ! Exclude points where rn2 is negative as convection kicks in here and 213 212 ! work is not being done against stratification 214 CALL wrk_alloc( jpi, jpj, zpe ) 215 zpe(:,:) = 0._wp 216 IF( lk_zdfddm ) THEN 217 DO ji=1,jpi 218 DO jj=1,jpj 219 DO jk=1,jpk 220 zrw = ( gdepw_n(ji,jj,jk ) - gdept_n(ji,jj,jk) ) & 221 & / ( gdept_n(ji,jj,jk-1) - gdept_n(ji,jj,jk) ) 222 ! 223 zaw = rab_n(ji,jj,jk,jp_tem) * (1. - zrw) + rab_n(ji,jj,jk-1,jp_tem)* zrw 224 zbw = rab_n(ji,jj,jk,jp_sal) * (1. - zrw) + rab_n(ji,jj,jk-1,jp_sal)* zrw 225 ! 226 zpe(ji, jj) = zpe(ji, jj) - MIN(0._wp, rn2(ji,jj,jk)) * & 227 & grav * (avt(ji,jj,jk) * zaw * (tsn(ji,jj,jk-1,jp_tem) - tsn(ji,jj,jk,jp_tem) ) & 228 & - fsavs(ji,jj,jk) * zbw * (tsn(ji,jj,jk-1,jp_sal) - tsn(ji,jj,jk,jp_sal) ) ) 229 230 ENDDO 231 ENDDO 232 ENDDO 213 CALL wrk_alloc( jpi, jpj, zpe ) 214 zpe(:,:) = 0._wp 215 IF( ln_zdfddm ) THEN 216 DO jk = 2, jpk 217 DO jj = 1, jpj 218 DO ji = 1, jpi 219 IF( rn2(ji,jj,jk) > 0._wp ) THEN 220 zrw = ( gdepw_n(ji,jj,jk ) - gdept_n(ji,jj,jk) ) & 221 & / ( gdept_n(ji,jj,jk-1) - gdept_n(ji,jj,jk) ) 222 !!gm this can be reduced to : (depw-dept) / e3w (NB idem dans bn2 !) 223 ! zrw = ( gdept_n(ji,jj,jk) - gdepw_n(ji,jj,jk) ) / e3w_n(ji,jj,jk) 224 !!gm end 225 ! 226 zaw = rab_n(ji,jj,jk,jp_tem) * (1. - zrw) + rab_n(ji,jj,jk-1,jp_tem)* zrw 227 zbw = rab_n(ji,jj,jk,jp_sal) * (1. - zrw) + rab_n(ji,jj,jk-1,jp_sal)* zrw 228 ! 229 zpe(ji, jj) = zpe(ji, jj) & 230 & - grav * ( avt(ji,jj,jk) * zaw * (tsn(ji,jj,jk-1,jp_tem) - tsn(ji,jj,jk,jp_tem) ) & 231 & - avs(ji,jj,jk) * zbw * (tsn(ji,jj,jk-1,jp_sal) - tsn(ji,jj,jk,jp_sal) ) ) 232 ENDIF 233 END DO 234 END DO 235 END DO 233 236 ELSE 234 DO ji = 1, jpi 235 DO jj = 1, jpj 236 DO jk = 1, jpk 237 zpe(ji,jj) = zpe(ji,jj) + avt(ji, jj, jk) * MIN(0._wp,rn2(ji, jj, jk)) * rau0 * e3w_n(ji, jj, jk) 238 ENDDO 239 ENDDO 240 ENDDO 241 ENDIF 242 CALL lbc_lnk( zpe, 'T', 1._wp) 237 DO jk = 1, jpk 238 DO ji = 1, jpi 239 DO jj = 1, jpj 240 zpe(ji,jj) = zpe(ji,jj) + avt(ji, jj, jk) * MIN(0._wp,rn2(ji, jj, jk)) * rau0 * e3w_n(ji, jj, jk) 241 END DO 242 END DO 243 END DO 244 ENDIF 245 !!gm useless lbc_lnk since the computation above is performed over 1:jpi & 1:jpj 246 !!gm CALL lbc_lnk( zpe, 'T', 1._wp) 243 247 CALL iom_put( 'tnpeo', zpe ) 244 248 CALL wrk_dealloc( jpi, jpj, zpe ) -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r7753 r7931 80 80 81 81 !! * Substitutions 82 # include "zdfddm_substitute.h90"83 82 # include "vectopt_loop_substitute.h90" 84 83 !!---------------------------------------------------------------------- … … 234 233 235 234 CALL iom_put( "avt" , avt ) ! T vert. eddy diff. coef. 235 CALL iom_put( "avs" , avs ) ! S vert. eddy diff. coef. (useful only with key_zdfddm) 236 236 CALL iom_put( "avm" , avmu ) ! T vert. eddy visc. coef. 237 CALL iom_put( "avs" , fsavs(:,:,:) ) ! S vert. eddy diff. coef. (useful only with key_zdfddm) 238 239 IF( iom_use('logavt') ) CALL iom_put( "logavt", LOG( MAX( 1.e-20_wp, avt (:,:,:) ) ) ) 240 IF( iom_use('logavs') ) CALL iom_put( "logavs", LOG( MAX( 1.e-20_wp, fsavs(:,:,:) ) ) ) 237 238 IF( iom_use('logavt') ) CALL iom_put( "logavt", LOG( MAX( 1.e-20_wp, avt(:,:,:) ) ) ) 239 IF( iom_use('logavs') ) CALL iom_put( "logavs", LOG( MAX( 1.e-20_wp, avs(:,:,:) ) ) ) 241 240 242 241 IF ( iom_use("sstgrad") .OR. iom_use("sstgrad2") ) THEN … … 750 749 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 751 750 752 IF( l k_zdfddm ) THEN751 IF( ln_zdfddm ) THEN 753 752 CALL histdef( nid_W,"voddmavs","Salt Vertical Eddy Diffusivity" , "m2/s" , & ! avs 754 753 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) … … 875 874 CALL histwrite( nid_W, "votkeavt", it, avt , ndim_T, ndex_T ) ! T vert. eddy diff. coef. 876 875 CALL histwrite( nid_W, "votkeavm", it, avmu , ndim_T, ndex_T ) ! T vert. eddy visc. coef. 877 IF( l k_zdfddm ) THEN878 CALL histwrite( nid_W, "voddmavs", it, fsavs(:,:,:), ndim_T, ndex_T ) ! S vert. eddy diff. coef.876 IF( ln_zdfddm ) THEN 877 CALL histwrite( nid_W, "voddmavs", it, avs , ndim_T, ndex_T ) ! S vert. eddy diff. coef. 879 878 ENDIF 880 879 881 880 IF( ln_wave .AND. ln_sdw ) THEN 882 CALL histwrite( nid_U, "sdzocrtx", it, usd 883 CALL histwrite( nid_V, "sdmecrty", it, vsd 884 CALL histwrite( nid_W, "sdvecrtz", it, wsd 881 CALL histwrite( nid_U, "sdzocrtx", it, usd , ndim_U , ndex_U ) ! i-StokesDrift-current 882 CALL histwrite( nid_V, "sdmecrty", it, vsd , ndim_V , ndex_V ) ! j-StokesDrift-current 883 CALL histwrite( nid_W, "sdvecrtz", it, wsd , ndim_T , ndex_T ) ! StokesDrift vert. current 885 884 ENDIF 886 885 -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90
r7753 r7931 41 41 42 42 !! * Substitutions 43 # include "zdfddm_substitute.h90"44 43 # include "vectopt_loop_substitute.h90" 45 44 !!---------------------------------------------------------------------- -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90
r6140 r7931 41 41 42 42 !! * Substitutions 43 # include "zdfddm_substitute.h90"44 43 # include "vectopt_loop_substitute.h90" 45 44 !!---------------------------------------------------------------------- … … 62 61 !! ztb = ptb + p2dt difft 63 62 !! where difft = dz( avt dz(ptb) ) = 1/e3t dk+1( avt/e3w dk(ptb) ) 64 !! (if l k_zdfddm=T use avs on salinity and passive tracers instead of avt)63 !! (if ln_zdfddm=T use avs on salinity and passive tracers instead of avt) 65 64 !! difft is evaluated with an Euler split-explit scheme using a 66 65 !! no flux boundary condition at both surface and bottomi boundaries. … … 116 115 zwf(ji,jj,jk) = avt(ji,jj,jk) * ( ztb(ji,jj,jk-1) - ztb(ji,jj,jk) ) / e3w_b(ji,jj,jk) 117 116 ELSE ! salinity or pass. tracer : use of avs 118 zwf(ji,jj,jk) = fsavs(ji,jj,jk) * ( ztb(ji,jj,jk-1) - ztb(ji,jj,jk) ) / e3w_b(ji,jj,jk)117 zwf(ji,jj,jk) = avs(ji,jj,jk) * ( ztb(ji,jj,jk-1) - ztb(ji,jj,jk) ) / e3w_b(ji,jj,jk) 119 118 END IF 120 119 END DO -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90
r7753 r7931 44 44 45 45 !! * Substitutions 46 # include "zdfddm_substitute.h90"47 46 # include "vectopt_loop_substitute.h90" 48 47 !!---------------------------------------------------------------------- … … 66 65 !! It is computed using a backward time scheme (t=after field) 67 66 !! which provide directly the after tracer field. 68 !! If l k_zdfddm=T, use avs for salinity or for passive tracers67 !! If ln_zdfddm=T, use avs for salinity or for passive tracers 69 68 !! Surface and bottom boundary conditions: no diffusive flux on 70 69 !! both tracers (bottom, applied through the masked field avt). … … 102 101 ! Build matrix if temperature or salinity (only in double diffusion case) or first passive tracer 103 102 ! 104 IF( ( cdtype == 'TRA' .AND. ( jn == jp_tem .OR. ( jn == jp_sal .AND. l k_zdfddm ) ) ) .OR. &103 IF( ( cdtype == 'TRA' .AND. ( jn == jp_tem .OR. ( jn == jp_sal .AND. ln_zdfddm ) ) ) .OR. & 105 104 & ( cdtype == 'TRC' .AND. jn == 1 ) ) THEN 106 105 ! 107 106 ! vertical mixing coef.: avt for temperature, avs for salinity and passive tracers 108 IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN ; zwt(:,:,2:jpk) = avt 109 ELSE ; zwt(:,:,2:jpk) = fsavs(:,:,2:jpk)107 IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN ; zwt(:,:,2:jpk) = avt(:,:,2:jpk) 108 ELSE ; zwt(:,:,2:jpk) = avs(:,:,2:jpk) 110 109 ENDIF 111 110 zwt(:,:,1) = 0._wp -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/TRD/trdglo.F90
r6140 r7931 53 53 !! * Substitutions 54 54 # include "vectopt_loop_substitute.h90" 55 # include "zdfddm_substitute.h90"56 55 !!---------------------------------------------------------------------- 57 56 !! NEMO/OPA 3.3 , NEMO Consortium (2010) -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/TRD/trdmxl.F90
r6140 r7931 69 69 INTEGER :: ionce, icount 70 70 71 !! * Substitutions72 # include "zdfddm_substitute.h90"73 71 !!---------------------------------------------------------------------- 74 72 !! NEMO/OPA 3.3 , NEMO Consortium (2010) -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/TRD/trdpen.F90
r6140 r7931 37 37 38 38 !! * Substitutions 39 # include "zdfddm_substitute.h90"40 39 # include "vectopt_loop_substitute.h90" 41 40 !!---------------------------------------------------------------------- -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90
r7646 r7931 42 42 43 43 !! * Substitutions 44 # include "zdfddm_substitute.h90"45 44 # include "vectopt_loop_substitute.h90" 46 45 !!---------------------------------------------------------------------- … … 129 128 DO jk = 2, jpk 130 129 zwt(:,:,jk) = avt(:,:,jk) * ( tsa(:,:,jk-1,jp_tem) - tsa(:,:,jk,jp_tem) ) / e3w_n(:,:,jk) * tmask(:,:,jk) 131 zws(:,:,jk) = fsavs(:,:,jk) * ( tsa(:,:,jk-1,jp_sal) - tsa(:,:,jk,jp_sal) ) / e3w_n(:,:,jk) * tmask(:,:,jk)130 zws(:,:,jk) = avs(:,:,jk) * ( tsa(:,:,jk-1,jp_sal) - tsa(:,:,jk,jp_sal) ) / e3w_n(:,:,jk) * tmask(:,:,jk) 132 131 END DO 133 132 ! -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90
r7646 r7931 23 23 24 24 ! !!* namelist namzdf: vertical diffusion * 25 !!gm 26 ! ! vertical closure scheme flags 27 LOGICAL , PUBLIC :: ln_zdfcst !: constant coefficients 28 LOGICAL , PUBLIC :: ln_zdfric !: Richardson depend coefficients 29 LOGICAL , PUBLIC :: ln_zdftke !: Turbulent Kinetic Energy closure 30 LOGICAL , PUBLIC :: ln_zdfgls !: Generic Length Sclare closure 31 ! ! tidal induced mixing 32 LOGICAL , PUBLIC :: ln_zdftmx !: tidal mixing parameterization flag 33 ! ! double diffusion 34 LOGICAL , PUBLIC :: ln_zdfddm !: double diffusive mixing flag 35 REAL(wp), PUBLIC :: rn_avts !: maximum value of avs for salt fingering 36 REAL(wp), PUBLIC :: rn_hsbfr !: heat/salt buoyancy flux ratio 37 !!gm 38 LOGICAL , PUBLIC :: ln_zdfexp !: explicit vertical diffusion scheme flag 39 INTEGER , PUBLIC :: nn_zdfexp !: number of sub-time step (explicit time stepping) 40 LOGICAL , PUBLIC :: ln_zdfevd !: convection: enhanced vertical diffusion flag 41 INTEGER , PUBLIC :: nn_evdm !: =0/1 flag to apply enhanced avm or not 42 REAL(wp), PUBLIC :: rn_evd !: vertical eddy coeff. for enhanced vert. diff. (m2/s) 43 LOGICAL , PUBLIC :: ln_zdfnpc !: convection: non-penetrative convection flag 44 INTEGER , PUBLIC :: nn_npc !: non penetrative convective scheme call frequency 45 INTEGER , PUBLIC :: nn_npcp !: non penetrative convective scheme print frequency 46 ! ! Surface wave-induced mixing 47 LOGICAL , PUBLIC :: ln_zdfqiao !: Enhanced wave vertical mixing Qiao(2010) formulation flag 48 ! ! coefficients 25 49 REAL(wp), PUBLIC :: rn_avm0 !: vertical eddy viscosity (m2/s) 26 50 REAL(wp), PUBLIC :: rn_avt0 !: vertical eddy diffusivity (m2/s) 27 51 INTEGER , PUBLIC :: nn_avb !: constant or profile background on avt (=0/1) 28 INTEGER , PUBLIC :: nn_havtb !: horizontal shape or not for avtb (=0/1) 29 LOGICAL , PUBLIC :: ln_zdfexp !: explicit vertical diffusion scheme flag 30 INTEGER , PUBLIC :: nn_zdfexp !: number of sub-time step (explicit time stepping) 31 LOGICAL , PUBLIC :: ln_zdfevd !: convection: enhanced vertical diffusion flag 32 INTEGER , PUBLIC :: nn_evdm !: =0/1 flag to apply enhanced avm or not 33 REAL(wp), PUBLIC :: rn_avevd !: vertical eddy coeff. for enhanced vert. diff. (m2/s) 34 LOGICAL , PUBLIC :: ln_zdfnpc !: convection: non-penetrative convection flag 35 INTEGER , PUBLIC :: nn_npc !: non penetrative convective scheme call frequency 36 INTEGER , PUBLIC :: nn_npcp !: non penetrative convective scheme print frequency 37 LOGICAL , PUBLIC :: ln_zdfqiao !: Enhanced wave vertical mixing Qiao(2010) formulation flag 52 INTEGER , PUBLIC :: nn_havtb !: horizontal shape or not for avtb (=0/1) ! ! convection 38 53 54 55 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: avt , avs !: vertical eddy diffusivity coef at w-pt [m2/s] 39 56 40 57 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:) :: avmb , avtb !: background profile of avm and avt … … 43 60 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:) :: tfrua, tfrva !: top friction coefficients set in zdfbfr 44 61 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: avmu , avmv !: vertical viscosity coef at uw- & vw-pts [m2/s] 45 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: avm , avt!: vertical viscosity & diffusivity coef at w-pt [m2/s]62 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: avm !: vertical viscosity & diffusivity coef at w-pt [m2/s] 46 63 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avt_k , avm_k ! not enhanced Kz 47 64 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avmu_k, avmv_k ! not enhanced Kz … … 64 81 & tfrua(jpi, jpj), tfrva(jpi, jpj) , & 65 82 & avmu (jpi,jpj,jpk), avm (jpi,jpj,jpk) , & 66 & avmv (jpi,jpj,jpk), avt (jpi,jpj,jpk) , &83 & avmv (jpi,jpj,jpk), avt (jpi,jpj,jpk) , avs (jpi,jpj,jpk), & 67 84 & avt_k (jpi,jpj,jpk), avm_k (jpi,jpj,jpk) , & 68 85 & avmu_k(jpi,jpj,jpk), avmv_k(jpi,jpj,jpk) , & -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90
r7753 r7931 9 9 !! 3.6 ! 2013-04 (G. Madec, F. Roquet) zrau compute locally using interpolation of alpha & beta 10 10 !!---------------------------------------------------------------------- 11 #if defined key_zdfddm 11 12 12 !!---------------------------------------------------------------------- 13 !! 'key_zdfddm' : double diffusion13 !! zdf_ddm : compute the Kz for salinity 14 14 !!---------------------------------------------------------------------- 15 !! zdf_ddm : compute the Ks for salinity 16 !! zdf_ddm_init : read namelist and control the parameters 17 !!---------------------------------------------------------------------- 18 USE oce ! ocean dynamics and tracers variables 19 USE dom_oce ! ocean space and time domain variables 20 USE zdf_oce ! ocean vertical physics variables 15 USE oce ! ocean dynamics and tracers variables 16 USE dom_oce ! ocean space and time domain variables 17 USE zdf_oce ! ocean vertical physics variables 21 18 USE eosbn2 ! equation of state 22 19 ! 23 USE in_out_manager 24 USE lbclnk 25 USE prtctl 26 USE lib_mpp 27 USE wrk_nemo 28 USE timing 20 USE in_out_manager ! I/O manager 21 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 22 USE prtctl ! Print control 23 USE lib_mpp ! MPP library 24 USE wrk_nemo ! work arrays 25 USE timing ! Timing 29 26 30 27 IMPLICIT NONE … … 32 29 33 30 PUBLIC zdf_ddm ! called by step.F90 34 PUBLIC zdf_ddm_init ! called by opa.F9035 PUBLIC zdf_ddm_alloc ! called by nemogcm.F9036 37 LOGICAL , PUBLIC, PARAMETER :: lk_zdfddm = .TRUE. !: double diffusive mixing flag38 39 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: avs !: salinity vertical diffusivity coeff. at w-point40 41 ! !!* Namelist namzdf_ddm : double diffusive mixing *42 REAL(wp) :: rn_avts ! maximum value of avs for salt fingering43 REAL(wp) :: rn_hsbfr ! heat/salt buoyancy flux ratio44 31 45 32 !! * Substitutions … … 51 38 !!---------------------------------------------------------------------- 52 39 CONTAINS 53 54 INTEGER FUNCTION zdf_ddm_alloc()55 !!----------------------------------------------------------------------56 !! *** ROUTINE zdf_ddm_alloc ***57 !!----------------------------------------------------------------------58 ALLOCATE( avs(jpi,jpj,jpk) , STAT= zdf_ddm_alloc )59 IF( lk_mpp ) CALL mpp_sum ( zdf_ddm_alloc )60 IF( zdf_ddm_alloc /= 0 ) CALL ctl_warn('zdf_ddm_alloc: failed to allocate arrays')61 END FUNCTION zdf_ddm_alloc62 63 40 64 41 SUBROUTINE zdf_ddm( kt ) … … 174 151 & + 0.15 * zrau(ji,jj) * zmskd2(ji,jj) ) 175 152 ! add to the eddy viscosity coef. previously computed 176 # if defined key_zdftmx_new 177 ! key_zdftmx_new: New internal wave-driven param: use avs value computed by zdftmx 178 avs (ji,jj,jk) = avs(ji,jj,jk) + zavfs + zavds 179 # else 180 avs (ji,jj,jk) = avt(ji,jj,jk) + zavfs + zavds 181 # endif 182 avt (ji,jj,jk) = avt(ji,jj,jk) + zavft + zavdt 183 avm (ji,jj,jk) = avm(ji,jj,jk) + MAX( zavft + zavdt, zavfs + zavds ) 153 avs(ji,jj,jk) = avt(ji,jj,jk) + zavfs + zavds 154 avt(ji,jj,jk) = avt(ji,jj,jk) + zavft + zavdt 155 avm(ji,jj,jk) = avm(ji,jj,jk) + MAX( zavft + zavdt, zavfs + zavds ) 184 156 END DO 185 157 END DO … … 221 193 END SUBROUTINE zdf_ddm 222 194 223 224 SUBROUTINE zdf_ddm_init225 !!----------------------------------------------------------------------226 !! *** ROUTINE zdf_ddm_init ***227 !!228 !! ** Purpose : Initialization of double diffusion mixing scheme229 !!230 !! ** Method : Read the namzdf_ddm namelist and check the parameter values231 !! called by zdf_ddm at the first timestep (nit000)232 !!----------------------------------------------------------------------233 INTEGER :: ios ! local integer234 !!235 NAMELIST/namzdf_ddm/ rn_avts, rn_hsbfr236 !!----------------------------------------------------------------------237 !238 REWIND( numnam_ref ) ! Namelist namzdf_ddm in reference namelist : Double diffusion mixing scheme239 READ ( numnam_ref, namzdf_ddm, IOSTAT = ios, ERR = 901)240 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_ddm in reference namelist', lwp )241 242 REWIND( numnam_cfg ) ! Namelist namzdf_ddm in configuration namelist : Double diffusion mixing scheme243 READ ( numnam_cfg, namzdf_ddm, IOSTAT = ios, ERR = 902 )244 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_ddm in configuration namelist', lwp )245 IF(lwm) WRITE ( numond, namzdf_ddm )246 !247 IF(lwp) THEN ! Parameter print248 WRITE(numout,*)249 WRITE(numout,*) 'zdf_ddm : double diffusive mixing'250 WRITE(numout,*) '~~~~~~~'251 WRITE(numout,*) ' Namelist namzdf_ddm : set dd mixing parameter'252 WRITE(numout,*) ' maximum avs for dd mixing rn_avts = ', rn_avts253 WRITE(numout,*) ' heat/salt buoyancy flux ratio rn_hsbfr = ', rn_hsbfr254 ENDIF255 !256 ! ! allocate zdfddm arrays257 IF( zdf_ddm_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'zdf_ddm_init : unable to allocate arrays' )258 ! ! initialization to masked Kz259 avs(:,:,:) = rn_avt0 * wmask(:,:,:)260 !261 END SUBROUTINE zdf_ddm_init262 263 #else264 !!----------------------------------------------------------------------265 !! Default option : Dummy module No double diffusion266 !!----------------------------------------------------------------------267 LOGICAL, PUBLIC, PARAMETER :: lk_zdfddm = .FALSE. !: double diffusion flag268 CONTAINS269 SUBROUTINE zdf_ddm( kt ) ! Dummy routine270 WRITE(*,*) 'zdf_ddm: You should not have seen this print! error?', kt271 END SUBROUTINE zdf_ddm272 SUBROUTINE zdf_ddm_init ! Dummy routine273 END SUBROUTINE zdf_ddm_init274 #endif275 276 195 !!====================================================================== 277 196 END MODULE zdfddm -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90
r7753 r7931 82 82 DO ji = 2, jpi 83 83 IF( MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) THEN 84 avt (ji ,jj ,jk) = rn_ avevd * tmask(ji ,jj ,jk)85 avm (ji ,jj ,jk) = rn_ avevd * tmask(ji ,jj ,jk)86 avmu(ji ,jj ,jk) = rn_ avevd * umask(ji ,jj ,jk)87 avmu(ji-1,jj ,jk) = rn_ avevd * umask(ji-1,jj ,jk)88 avmv(ji ,jj ,jk) = rn_ avevd * vmask(ji ,jj ,jk)89 avmv(ji ,jj-1,jk) = rn_ avevd * vmask(ji ,jj-1,jk)84 avt (ji ,jj ,jk) = rn_evd * tmask(ji ,jj ,jk) 85 avm (ji ,jj ,jk) = rn_evd * tmask(ji ,jj ,jk) 86 avmu(ji ,jj ,jk) = rn_evd * umask(ji ,jj ,jk) 87 avmu(ji-1,jj ,jk) = rn_evd * umask(ji-1,jj ,jk) 88 avmv(ji ,jj ,jk) = rn_evd * vmask(ji ,jj ,jk) 89 avmv(ji ,jj-1,jk) = rn_evd * vmask(ji ,jj-1,jk) 90 90 ENDIF 91 91 END DO … … 104 104 DO ji = 1, jpi 105 105 IF( MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) & 106 avt(ji,jj,jk) = rn_ avevd * tmask(ji,jj,jk)106 avt(ji,jj,jk) = rn_evd * tmask(ji,jj,jk) 107 107 END DO 108 108 END DO -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfini.F90
r7646 r7931 51 51 INTEGER :: ioptio, ios ! local integers 52 52 !! 53 NAMELIST/namzdf/ rn_avm0, rn_avt0, nn_avb, nn_havtb, ln_zdfexp, nn_zdfexp, & 54 & ln_zdfevd, nn_evdm, rn_avevd, ln_zdfnpc, nn_npc, nn_npcp, & 55 & ln_zdfqiao 53 NAMELIST/namzdf/ ln_zdfcst, ln_zdfric, ln_zdftke, ln_zdfgls, & ! type of closure scheme 54 & ln_zdfevd, nn_evdm, rn_evd , & ! convection : evd 55 & ln_zdfnpc, nn_npc , nn_npcp, & ! convection : npc 56 & ln_zdfddm, rn_avts, rn_hsbfr, & ! double diffusion 57 & ln_zdftmx, & ! tidal mixing 58 & ln_zdfqiao, & ! surface wave-induced mixing 59 & ln_zdfexp, nn_zdfexp, & ! time-stepping 60 & rn_avm0, rn_avt0, nn_avb, nn_havtb ! coefficients 61 62 63 !!org NAMELIST/namzdf/ rn_avm0, rn_avt0, nn_avb, nn_havtb, ln_zdfexp, nn_zdfexp, & 64 !!org & ln_zdfevd, nn_evdm, rn_avevd, ln_zdfnpc, nn_npc, nn_npcp, & 65 !!org & ln_zdfqiao 56 66 !!---------------------------------------------------------------------- 57 67 … … 70 80 WRITE(numout,*) '~~~~~~~~' 71 81 WRITE(numout,*) ' Namelist namzdf : set vertical mixing mixing parameters' 82 WRITE(numout,*) ' vertical closure scheme' 83 WRITE(numout,*) ' constant vertical mixing coefficient ln_zdfcst = ', ln_zdfcst 84 WRITE(numout,*) ' constant vertical mixing coefficient ln_zdfric = ', ln_zdfric 85 WRITE(numout,*) ' constant vertical mixing coefficient ln_zdftke = ', ln_zdftke 86 WRITE(numout,*) ' constant vertical mixing coefficient ln_zdfgls = ', ln_zdfgls 87 WRITE(numout,*) ' convection: ' 88 WRITE(numout,*) ' enhanced vertical diffusion ln_zdfevd = ', ln_zdfevd 89 WRITE(numout,*) ' applied on momentum (=1/0) nn_evdm = ', nn_evdm 90 WRITE(numout,*) ' vertical coefficient for evd rn_evd = ', rn_evd 91 WRITE(numout,*) ' non-penetrative convection (npc) ln_zdfnpc = ', ln_zdfnpc 92 WRITE(numout,*) ' npc call frequency nn_npc = ', nn_npc 93 WRITE(numout,*) ' npc print frequency nn_npcp = ', nn_npcp 94 WRITE(numout,*) ' double diffusive mixing ln_zdfddm = ', ln_zdfddm 95 WRITE(numout,*) ' maximum avs for dd mixing rn_avts = ', rn_avts 96 WRITE(numout,*) ' heat/salt buoyancy flux ratio rn_hsbfr= ', rn_hsbfr 97 WRITE(numout,*) ' surface wave-induced mixing ln_zdfqiao= ', ln_zdfqiao ! surface wave induced mixing 98 WRITE(numout,*) ' tidal mixing ln_zdftmx = ', ln_zdftmx 99 WRITE(numout,*) ' time splitting / backward scheme ln_zdfexp = ', ln_zdfexp 100 WRITE(numout,*) ' number of sub-time step (ln_zdfexp=T) nn_zdfexp = ', nn_zdfexp 101 WRITE(numout,*) ' coefficients : ' 72 102 WRITE(numout,*) ' vertical eddy viscosity rn_avm0 = ', rn_avm0 73 103 WRITE(numout,*) ' vertical eddy diffusivity rn_avt0 = ', rn_avt0 74 104 WRITE(numout,*) ' constant background or profile nn_avb = ', nn_avb 75 105 WRITE(numout,*) ' horizontal variation for avtb nn_havtb = ', nn_havtb 76 WRITE(numout,*) ' time splitting / backward scheme ln_zdfexp = ', ln_zdfexp 77 WRITE(numout,*) ' number of time step nn_zdfexp = ', nn_zdfexp 78 WRITE(numout,*) ' enhanced vertical diffusion ln_zdfevd = ', ln_zdfevd 79 WRITE(numout,*) ' applied on momentum (=1/0) nn_evdm = ', nn_evdm 80 WRITE(numout,*) ' vertical coefficient for evd rn_avevd = ', rn_avevd 81 WRITE(numout,*) ' non-penetrative convection (npc) ln_zdfnpc = ', ln_zdfnpc 82 WRITE(numout,*) ' npc call frequency nn_npc = ', nn_npc 83 WRITE(numout,*) ' npc print frequency nn_npcp = ', nn_npcp 84 WRITE(numout,*) ' Qiao formulation flag ln_zdfqiao=', ln_zdfqiao 85 ENDIF 106 ENDIF 107 108 IF(ln_zdfddm) THEN ! double diffusive mixing' 109 ALLOCATE( avs(jpi,jpj,jpk) ) 110 avs(:,:,:) = rn_avt0 * wmask(:,:,:) 111 ENDIF 112 86 113 87 114 ! !* Parameter & logical controls -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90
r7779 r7931 163 163 ! ! ----------------------- ! 164 164 DO jk = 2, jpkm1 !* update momentum & tracer diffusivity with tidal mixing 165 avt(:,:,jk) = av t(:,:,jk) + zav_tide(:,:,jk) * wmask(:,:,jk)165 avt(:,:,jk) = avs(:,:,jk) + zav_tide(:,:,jk) * wmask(:,:,jk) 166 166 avm(:,:,jk) = avm(:,:,jk) + zav_tide(:,:,jk) * wmask(:,:,jk) 167 167 DO jj = 2, jpjm1 … … 591 591 592 592 !! * Substitutions 593 # include "zdfddm_substitute.h90"594 593 # include "vectopt_loop_substitute.h90" 595 594 !!---------------------------------------------------------------------- … … 700 699 emix_tmx(:,:,jk) = zfact(:,:) * ( EXP( ( gde3w_n(:,:,jk ) - zhdep(:,:) ) / hcri_tmx(:,:) ) & 701 700 & - EXP( ( gde3w_n(:,:,jk-1) - zhdep(:,:) ) / hcri_tmx(:,:) ) ) * wmask(:,:,jk) & 701 !!gm delta(gde3w_n) = e3t_n !! Please verify the grid-point position w versus t-point 702 702 & / ( gde3w_n(:,:,jk) - gde3w_n(:,:,jk-1) ) 703 703 END DO … … 824 824 IF( kt == nit000 ) THEN !* Control print at first time-step: diagnose the energy consumed by zav_wave 825 825 ztpc = 0._wp 826 !!gm used of glosum 3D.... 826 827 DO jk = 2, jpkm1 827 828 DO jj = 1, jpj … … 860 861 CALL iom_put( "av_ratio", zav_ratio ) 861 862 DO jk = 2, jpkm1 !* update momentum & tracer diffusivity with wave-driven mixing 862 fsavs(:,:,jk) = avt(:,:,jk) + zav_wave(:,:,jk) * zav_ratio(:,:,jk)863 avt 864 avm 863 avs(:,:,jk) = avs(:,:,jk) + zav_wave(:,:,jk) * zav_ratio(:,:,jk) 864 avt(:,:,jk) = avt(:,:,jk) + zav_wave(:,:,jk) 865 avm(:,:,jk) = avm(:,:,jk) + zav_wave(:,:,jk) 865 866 END DO 866 867 ! 867 868 ELSE !* update momentum & tracer diffusivity with wave-driven mixing 868 869 DO jk = 2, jpkm1 869 fsavs(:,:,jk) = avt(:,:,jk) + zav_wave(:,:,jk)870 avt 871 avm 870 avs(:,:,jk) = avs(:,:,jk) + zav_wave(:,:,jk) 871 avt(:,:,jk) = avt(:,:,jk) + zav_wave(:,:,jk) 872 avm(:,:,jk) = avm(:,:,jk) + zav_wave(:,:,jk) 872 873 END DO 873 874 ENDIF … … 976 977 & 'the viscous molecular value & a very small diffusive value, resp.' 977 978 ENDIF 978 979 IF( .NOT.lk_zdfddm ) CALL ctl_stop( 'STOP', 'zdf_tmx_init_new : key_zdftmx_new requires key_zdfddm' ) 980 979 981 980 ! ! allocate tmx arrays 982 981 IF( zdf_tmx_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'zdf_tmx_init : unable to allocate tmx arrays' ) -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r7904 r7931 463 463 IF( lk_zdfgls ) CALL zdf_gls_init ! GLS closure scheme 464 464 IF( lk_zdftmx ) CALL zdf_tmx_init ! tidal vertical mixing 465 IF( lk_zdfddm ) CALL zdf_ddm_init ! double diffusive mixing465 !!gm IF( ln_zdfddm ) CALL zdf_ddm_init ! double diffusive mixing 466 466 467 467 ! ! Lateral physics -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/step.F90
r7753 r7931 136 136 IF( lk_zdfcst ) THEN ! Constant Kz (reset avt, avm[uv] to the background value) 137 137 avt (:,:,:) = rn_avt0 * wmask (:,:,:) 138 avm (:,:,:) = rn_avm0 * wmask (:,:,:) 138 139 avmu(:,:,:) = rn_avm0 * wumask(:,:,:) 139 140 avmv(:,:,:) = rn_avm0 * wvmask(:,:,:) 140 141 ENDIF 141 142 ! 142 143 IF( ln_rnf_mouth ) THEN ! increase diffusivity at rivers mouths 143 144 DO jk = 2, nkrnf ; avt(:,:,jk) = avt(:,:,jk) + 2._wp * rn_avt_rnf * rnfmsk(:,:) * tmask(:,:,jk) ; END DO 144 145 ENDIF 146 ! 145 147 IF( ln_zdfevd ) CALL zdf_evd( kstp ) ! enhanced vertical eddy diffusivity 146 148 ! 149 IF( ln_zdfddm ) THEN ! double diffusive mixing 150 CALL zdf_ddm( kstp ) 151 ELSE ! avs=avt 152 DO jk = 2, jpkm1 ; avs(:,:,jk) = avt(:,:,jk) ; END DO 153 ENDIF 154 ! 147 155 IF( lk_zdftmx ) CALL zdf_tmx( kstp ) ! tidal vertical mixing 148 149 IF( lk_zdfddm ) CALL zdf_ddm( kstp ) ! double diffusive mixing150 156 151 157 CALL zdf_mxl( kstp ) ! mixed layer depth -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/stpctl.F90
r7904 r7931 87 87 ! 88 88 IF( MOD( kt, nwrite ) == 1 .AND. lwp ) THEN 89 WRITE(numout,*) ' ==>> time-step= ',kt,' |U| max: ', zmax(1), ' SSS min:', - zmax(2) 89 WRITE(numout,*) ' ==>> time-step= ', kt, ' |ssh| max: ', zmax(1), ' |U| max: ', zmax(2), & 90 & ' SSS min: ' , - zmax(3) 90 91 ENDIF 91 92 ! -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90
r7753 r7931 36 36 ! ! defined from ln_zdf... namlist logicals) 37 37 !! * Substitutions 38 # include "zdfddm_substitute.h90"39 38 # include "vectopt_loop_substitute.h90" 40 39 !!---------------------------------------------------------------------- -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/TOP_SRC/TRP/trdmxl_trc.F90
r7646 r7931 20 20 USE dom_oce ! domain definition 21 21 USE zdfmxl , ONLY : nmln ! number of level in the mixed layer 22 USE zdf_oce , ONLY : avt ! vert. diffusivity coef. at w-point for temp 23 # if defined key_zdfddm 24 USE zdfddm , ONLY : avs ! salinity vertical diffusivity coeff. at w-point 25 # endif 22 USE zdf_oce , ONLY : avs ! vert. diffusivity coef. at w-point for temp 26 23 USE trdtrc_oce ! definition of main arrays used for trends computations 27 24 USE in_out_manager ! I/O manager … … 54 51 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: ztmltrd2 ! 55 52 56 !! * Substitutions57 # include "zdfddm_substitute.h90"58 53 !!---------------------------------------------------------------------- 59 54 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 275 270 IF( ln_trcldf_iso ) THEN 276 271 ! 277 DO jj = 1,jpj 278 DO ji = 1,jpi 279 ik = nmld_trc(ji,jj) 280 zavt = fsavs(ji,jj,ik) 281 DO jn = 1, jptra 272 DO jn = 1, jptra 273 DO jj = 1, jpj 274 DO ji = 1, jpi 275 ik = nmld_trc(ji,jj) 282 276 IF( ln_trdtrc(jn) ) & 283 tmltrd_trc(ji,jj,jpmxl_trc_zdf,jn) = - zavt/ e3w_n(ji,jj,ik) * tmask(ji,jj,ik) &277 tmltrd_trc(ji,jj,jpmxl_trc_zdf,jn) = - avs(ji,jj,ik) / e3w_n(ji,jj,ik) * tmask(ji,jj,ik) & 284 278 & * ( trn(ji,jj,ik-1,jn) - trn(ji,jj,ik,jn) ) & 285 279 & / MAX( 1., rmld_trc(ji,jj) ) * tmask(ji,jj,1) -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/SETTE/README
r7646 r7931 45 45 INPUT_DIR : directory in which store input files (tar file) 46 46 TMPDIR : temporary directory NEEDED ONLY FOR IBM machines (put EXP00 directory) 47 NEMO_VALIDATION_DIR : directory in which create NEMO_VALIDATION tree, and store restart, solver.stat, tracer.stat and ocean.output files in47 NEMO_VALIDATION_DIR : directory in which create NEMO_VALIDATION tree, and store restart, run.stat, tracer.stat and ocean.output files in 48 48 tree NEMO_VALIDATION_DIR/WCONFIG_NAME/WCOMPILER_NAME/TEST_NAME/REVISION_NUMBER(or DATE) 49 49 in fcm_job.sh : -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/SETTE/all_functions.sh
r7715 r7931 219 219 fi 220 220 # Save output & debug files in NEMO_VALIDATION tree 221 echo "saving ocean & ice output, solver.stat, tracer.stat files ...." >> ${SETTE_DIR}/output.sette221 echo "saving ocean & ice output, run.stat, tracer.stat files ...." >> ${SETTE_DIR}/output.sette 222 222 echo " " >> ${SETTE_DIR}/output.sette 223 223 [ -f ${EXE_DIR}/ocean.output ] && cp ${EXE_DIR}/*ocean.output ${NEMO_VALID}/. 224 [ -f ${EXE_DIR}/ solver.stat ] && cp ${EXE_DIR}/*solver.stat ${NEMO_VALID}/.224 [ -f ${EXE_DIR}/run.stat ] && cp ${EXE_DIR}/*run.stat ${NEMO_VALID}/. 225 225 [ -f ${EXE_DIR}/output.namelist.dyn ] && cp ${EXE_DIR}/*output.nam* ${NEMO_VALID}/. 226 226 [ -f ${EXE_DIR}/tracer.stat ] && cp ${EXE_DIR}/*tracer.stat ${NEMO_VALID}/. 227 227 228 if [ -n "$(ls ${NEMO_VALID}/* solver*)" ] ; then229 echo "moved solver.stat in ${NEMO_VALID} directory" >> ${SETTE_DIR}/output.sette230 echo "moved solver.stat in ${NEMO_VALID} directory"228 if [ -n "$(ls ${NEMO_VALID}/*run*)" ] ; then 229 echo "moved run.stat in ${NEMO_VALID} directory" >> ${SETTE_DIR}/output.sette 230 echo "moved run.stat in ${NEMO_VALID} directory" 231 231 else 232 echo "problem in looking for solver.stat file in ${NEMO_VALID} directory" >> ${SETTE_DIR}/output.sette233 echo " solver.stat IS NOT in ${NEMO_VALID} directory"232 echo "problem in looking for run.stat file in ${NEMO_VALID} directory" >> ${SETTE_DIR}/output.sette 233 echo "run.stat IS NOT in ${NEMO_VALID} directory" 234 234 fi 235 235 if [ -n "$(ls ${NEMO_VALID}/*ocean.output*)" ] ; then -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/SETTE/sette.sh
r7756 r7931 56 56 # set_namelist : function declared in all_functions that sets namelist parameters 57 57 # post_test_tidyup : creates validation storage directory and copies required output files 58 # ( solver.stat and ocean.output) in it after execution of test.58 # (run.stat and ocean.output) in it after execution of test. 59 59 # 60 60 # VALIDATION tree is: … … 137 137 # ORCA2_OFF_PISCES : 5 & 6 138 138 # AMM12 : 7 & 8 139 # SAS : 9 fos SAS there is no solverso is useless to test REPRO139 # SAS : 9 fos SAS there is no run.stat so is useless to test REPRO 140 140 # ISOMIP : 10 & 11 141 141 # ORCA2_LIM3_OBS : 12 … … 661 661 export TEST_NAME="LONG" 662 662 cd ${CONFIG_DIR0} 663 . ./makenemo -m ${CMP_NAM} -n AMM12_LONG -r AMM12 -j 8 add_key "key_tide"del_key ${DEL_KEYS}663 . ./makenemo -m ${CMP_NAM} -n AMM12_LONG -r AMM12 -j 8 del_key ${DEL_KEYS} 664 664 cd ${SETTE_DIR} 665 665 . ./param.cfg … … 1121 1121 set_namelist 1_namelist_cfg nn_it000 1 1122 1122 set_namelist 1_namelist_cfg nn_itend 150 1123 set_namelist 1_namelist_cfg nn_fsbc 1 1123 1124 set_namelist 1_namelist_cfg ln_ctl .false. 1124 1125 set_namelist 1_namelist_cfg ln_clobber .true. … … 1245 1246 set_namelist 1_namelist_cfg nn_itend 300 1246 1247 set_namelist 1_namelist_cfg nn_stock 150 1248 set_namelist 1_namelist_cfg nn_fsbc 1 1247 1249 set_namelist 1_namelist_cfg ln_ctl .false. 1248 1250 set_namelist 1_namelist_cfg ln_clobber .true. … … 1283 1285 set_namelist 1_namelist_cfg nn_itend 300 1284 1286 set_namelist 1_namelist_cfg nn_stock 150 1287 set_namelist 1_namelist_cfg nn_fsbc 1 1285 1288 set_namelist 1_namelist_cfg ln_rstart .true. 1286 1289 set_namelist 1_namelist_cfg nn_rstctl 2 … … 1339 1342 set_namelist 1_namelist_cfg nn_it000 1 1340 1343 set_namelist 1_namelist_cfg nn_itend 150 1344 set_namelist 1_namelist_cfg nn_fsbc 1 1341 1345 set_namelist 1_namelist_cfg ln_ctl .false. 1342 1346 set_namelist 1_namelist_cfg ln_clobber .true. … … 1378 1382 set_namelist 1_namelist_cfg nn_itend 150 1379 1383 set_namelist 1_namelist_cfg ln_ctl .false. 1384 set_namelist 1_namelist_cfg nn_fsbc 1 1380 1385 set_namelist 1_namelist_cfg ln_clobber .true. 1381 1386 set_namelist 1_namelist_cfg ln_read_cfg .true. -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/SETTE/sette_beginner.sh
r4796 r7931 55 55 # set_namelist : function declared in all_functions that sets namelist parameters 56 56 # post_test_tidyup : creates validation storage directory and copies required output files 57 # ( solver.stat and ocean.output) in it after execution of test.57 # (run.stat and ocean.output) in it after execution of test. 58 58 # 59 59 # VALIDATION tree is: -
branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/SETTE/sette_xios.sh
r4990 r7931 52 52 # set_namelist : function declared in all_functions that sets namelist parameters 53 53 # post_test_tidyup : creates validation storage directory and copies required output files 54 # ( solver.stat and ocean.output) in it after execution of test.54 # (run.stat and ocean.output) in it after execution of test. 55 55 # 56 56 # VALIDATION tree is:
Note: See TracChangeset
for help on using the changeset viewer.