Changeset 12894
- Timestamp:
- 2020-05-08T15:40:58+02:00 (3 years ago)
- Location:
- NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/cfgs/SHARED/namelist_ice_ref
r12890 r12894 102 102 &namdyn_adv ! Ice advection 103 103 !------------------------------------------------------------------------------ 104 ln_adv_Pra = .true. ! Advection scheme (Prather)105 ln_adv_UMx = .false. 104 ln_adv_Pra = .true. ! Advection scheme (Prather) 105 ln_adv_UMx = .false. ! Advection scheme (Ultimate-Macho) 106 106 nn_UMx = 5 ! order of the scheme for UMx (1-5 ; 20=centered 2nd order) 107 107 / … … 123 123 ln_cndflx = .false. ! Use conduction flux as surface boundary conditions (i.e. for Jules coupling) 124 124 ln_cndemulate = .false. ! emulate conduction flux (if not provided in the inputs) 125 nn_qtrice = 0 ! Solar flux transmitted thru the surface scattering layer: 126 ! = 0 Grenfell and Maykut 1977 (depends on cloudiness and is 0 when there is snow) 127 ! = 1 Lebrun 2019 (equals 0.3 anytime with different melting/dry snw conductivities) 125 128 / 126 129 !------------------------------------------------------------------------------ … … 142 145 rn_cnd_s = 0.31 ! thermal conductivity of the snow (0.31 W/m/K, Maykut and Untersteiner, 1971) 143 146 ! Obs: 0.1-0.5 (Lecomte et al, JAMES 2013) 144 rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice [1/m] 147 rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice [1/m] 148 rn_kappa_s = 10.0 ! nn_qtrice = 0: radiation attenuation coefficient in snow [1/m] 149 rn_kappa_smlt = 7.0 ! nn_qtrice = 1: radiation attenuation coefficient in melting snow [1/m] 150 rn_kappa_sdry = 10.0 ! radiation attenuation coefficient in dry snow [1/m] 145 151 / 146 152 !------------------------------------------------------------------------------ -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/doc/namelists/namthd_zdf
r11025 r12894 7 7 rn_cnd_s = 0.31 ! thermal conductivity of the snow (0.31 W/m/K, Maykut and Untersteiner, 1971) 8 8 ! Obs: 0.1-0.5 (Lecomte et al, JAMES 2013) 9 rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice [1/m] 9 rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice [1/m] 10 rn_kappa_s = 10.0 ! nn_qtrice = 0: radiation attenuation coefficient in snow [1/m] 11 rn_kappa_smlt = 7.0 ! nn_qtrice = 1: radiation attenuation coefficient in melting snow [1/m] 12 rn_kappa_sdry = 10.0 ! radiation attenuation coefficient in dry snow [1/m] 10 13 / -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/ice.F90
r12890 r12894 176 176 ! ! = 1 Average N(cat) fluxes then redistribute over the N(cat) ice using T-ice and albedo sensitivity 177 177 ! ! = 2 Redistribute a single flux over categories 178 ! -- icethd_zdf -- ! 178 179 LOGICAL , PUBLIC :: ln_cndflx !: use conduction flux as surface boundary condition (instead of qsr and qns) 179 180 LOGICAL , PUBLIC :: ln_cndemulate !: emulate conduction flux (if not provided) … … 182 183 INTEGER, PUBLIC, PARAMETER :: np_cnd_ON = 1 !: forcing from conduction flux (SM0L) (compute qcn and qsr_tr via sbcblk.F90 or sbccpl.F90) 183 184 INTEGER, PUBLIC, PARAMETER :: np_cnd_EMU = 2 !: emulate conduction flux via icethd_zdf.F90 (BL99) (1st round compute qcn and qsr_tr, 2nd round use it) 184 185 INTEGER, PUBLIC :: nn_qtrice !: Solar flux transmitted thru the surface scattering layer: 186 ! ! = 0 Grenfell and Maykut 1977 (depends on cloudiness and is 0 when there is snow) 187 ! ! = 1 Lebrun 2019 (equals 0.3 anytime with different melting/dry snw conductivities) 188 ! 185 189 ! !!** ice-vertical diffusion namelist (namthd_zdf) ** 186 190 LOGICAL , PUBLIC :: ln_cndi_U64 !: thermal conductivity: Untersteiner (1964) 187 191 LOGICAL , PUBLIC :: ln_cndi_P07 !: thermal conductivity: Pringle et al (2007) 188 REAL(wp), PUBLIC :: rn_kappa_i !: coef. for the extinction of radiation Grenfell et al. (2006) [1/m]189 192 REAL(wp), PUBLIC :: rn_cnd_s !: thermal conductivity of the snow [W/m/K] 193 REAL(wp), PUBLIC :: rn_kappa_i !: coef. for the extinction of radiation in sea ice, Grenfell et al. (2006) [1/m] 194 REAL(wp), PUBLIC :: rn_kappa_s !: coef. for the extinction of radiation in snw (nn_qtrice=0) [1/m] 195 REAL(wp), PUBLIC :: rn_kappa_smlt !: coef. for the extinction of radiation in melt snw (nn_qtrice=1) [1/m] 196 REAL(wp), PUBLIC :: rn_kappa_sdry !: coef. for the extinction of radiation in dry snw (nn_qtrice=1) [1/m] 190 197 191 198 ! !!** ice-salinity namelist (namthd_sal) ** -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icesbc.F90
r12890 r12894 276 276 INTEGER :: ios, ioptio ! Local integer 277 277 !! 278 NAMELIST/namsbc/ rn_cio, rn_snwblow, nn_snwfra, nn_flxdist, ln_cndflx, ln_cndemulate278 NAMELIST/namsbc/ rn_cio, nn_snwfra, rn_snwblow, nn_flxdist, ln_cndflx, ln_cndemulate, nn_qtrice 279 279 !!------------------------------------------------------------------- 280 280 ! … … 292 292 WRITE(numout,*) '~~~~~~~~~~~~~~~~' 293 293 WRITE(numout,*) ' Namelist namsbc:' 294 WRITE(numout,*) ' drag coefficient for oceanic stress rn_cio = ', rn_cio 295 WRITE(numout,*) ' fraction of ice covered by snow (options 0,1,2) nn_snwfra = ', nn_snwfra 296 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_snwblow = ', rn_snwblow 297 WRITE(numout,*) ' Multicategory heat flux formulation nn_flxdist = ', nn_flxdist 298 WRITE(numout,*) ' Use conduction flux as surface condition ln_cndflx = ', ln_cndflx 299 WRITE(numout,*) ' emulate conduction flux ln_cndemulate = ', ln_cndemulate 294 WRITE(numout,*) ' drag coefficient for oceanic stress rn_cio = ', rn_cio 295 WRITE(numout,*) ' fraction of ice covered by snow (options 0,1,2) nn_snwfra = ', nn_snwfra 296 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_snwblow = ', rn_snwblow 297 WRITE(numout,*) ' Multicategory heat flux formulation nn_flxdist = ', nn_flxdist 298 WRITE(numout,*) ' Use conduction flux as surface condition ln_cndflx = ', ln_cndflx 299 WRITE(numout,*) ' emulate conduction flux ln_cndemulate = ', ln_cndemulate 300 WRITE(numout,*) ' solar flux transmitted thru the surface scattering layer nn_qtrice = ', nn_qtrice 301 WRITE(numout,*) ' = 0 Grenfell and Maykut 1977' 302 WRITE(numout,*) ' = 1 Lebrun 2019' 300 303 ENDIF 301 304 ! -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icethd_zdf.F90
r11536 r12894 85 85 INTEGER :: ios, ioptio ! Local integer 86 86 !! 87 NAMELIST/namthd_zdf/ ln_zdf_BL99, ln_cndi_U64, ln_cndi_P07, rn_cnd_s, rn_kappa_i 87 NAMELIST/namthd_zdf/ ln_zdf_BL99, ln_cndi_U64, ln_cndi_P07, rn_cnd_s, & 88 & rn_kappa_i, rn_kappa_s, rn_kappa_smlt, rn_kappa_sdry 88 89 !!------------------------------------------------------------------- 89 90 ! … … 101 102 WRITE(numout,*) '~~~~~~~~~~~~~~~~' 102 103 WRITE(numout,*) ' Namelist namthd_zdf:' 103 WRITE(numout,*) ' Bitz and Lipscomb (1999) formulation ln_zdf_BL99 = ', ln_zdf_BL99 104 WRITE(numout,*) ' thermal conductivity in the ice (Untersteiner 1964) ln_cndi_U64 = ', ln_cndi_U64 105 WRITE(numout,*) ' thermal conductivity in the ice (Pringle et al 2007) ln_cndi_P07 = ', ln_cndi_P07 106 WRITE(numout,*) ' thermal conductivity in the snow rn_cnd_s = ', rn_cnd_s 107 WRITE(numout,*) ' extinction radiation parameter in sea ice rn_kappa_i = ', rn_kappa_i 104 WRITE(numout,*) ' Bitz and Lipscomb (1999) formulation ln_zdf_BL99 = ', ln_zdf_BL99 105 WRITE(numout,*) ' thermal conductivity in the ice (Untersteiner 1964) ln_cndi_U64 = ', ln_cndi_U64 106 WRITE(numout,*) ' thermal conductivity in the ice (Pringle et al 2007) ln_cndi_P07 = ', ln_cndi_P07 107 WRITE(numout,*) ' thermal conductivity in the snow rn_cnd_s = ', rn_cnd_s 108 WRITE(numout,*) ' extinction radiation parameter in sea ice rn_kappa_i = ', rn_kappa_i 109 WRITE(numout,*) ' extinction radiation parameter in snw (nn_qtrice=0) rn_kappa_s = ', rn_kappa_s 110 WRITE(numout,*) ' extinction radiation parameter in melt snw (nn_qtrice=1) rn_kappa_smlt = ', rn_kappa_smlt 111 WRITE(numout,*) ' extinction radiation parameter in dry snw (nn_qtrice=1) rn_kappa_sdry = ', rn_kappa_sdry 108 112 ENDIF 109 113 ! -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icethd_zdf_bl99.F90
r12890 r12894 90 90 REAL(wp) :: zgamma = 18009._wp ! for specific heat 91 91 REAL(wp) :: zbeta = 0.117_wp ! for thermal conductivity (could be 0.13) 92 REAL(wp) :: zraext_s = 10._wp ! extinction coefficient of radiation in the snow93 92 REAL(wp) :: zkimin = 0.10_wp ! minimum ice thermal conductivity 94 93 REAL(wp) :: ztsu_err = 1.e-5_wp ! range around which t_su is considered at 0C … … 101 100 REAL(wp) :: zhfx_err, zdq ! diag errors on heat 102 101 ! 102 REAL(wp), DIMENSION(jpij) :: zraext_s ! extinction coefficient of radiation in the snow 103 103 REAL(wp), DIMENSION(jpij) :: ztsub ! surface temperature at previous iteration 104 104 REAL(wp), DIMENSION(jpij) :: zh_i, z1_h_i ! ice layer thickness … … 148 148 ! 1) Initialization 149 149 !------------------ 150 ! 151 ! extinction radiation in the snow 152 IF ( nn_qtrice == 0 ) THEN ! constant 153 zraext_s(1:npti) = rn_kappa_s 154 ELSEIF( nn_qtrice == 1 ) THEN ! depends on melting/freezing conditions 155 WHERE( t_su_1d(1:npti) < rt0 ) ; zraext_s(1:npti) = rn_kappa_sdry ! no surface melting 156 ELSEWHERE ; zraext_s(1:npti) = rn_kappa_smlt ! surface melting 157 END WHERE 158 ENDIF 159 ! 160 ! layers thicknesses 150 161 DO ji = 1, npti 151 162 zh_s(ji) = MAX( zhs_ssl , h_s_1d(ji) ) * r1_nlay_s ! set a minimum snw thickness for conduction … … 183 194 DO ji = 1, npti 184 195 ! ! radiation transmitted below the layer-th snow layer 185 zradtr_s(ji,jk) = zradtr_s(ji,0) * EXP( - zraext_s * MAX( 0._wp, zh_s(ji) * REAL(jk) - zhs_ssl ) )196 zradtr_s(ji,jk) = zradtr_s(ji,0) * EXP( - zraext_s(ji) * MAX( 0._wp, zh_s(ji) * REAL(jk) - zhs_ssl ) ) 186 197 ! ! radiation absorbed by the layer-th snow layer 187 198 zradab_s(ji,jk) = zradtr_s(ji,jk-1) - zradtr_s(ji,jk) … … 193 204 DO ji = 1, npti 194 205 ! ! radiation transmitted below the layer-th ice layer 206 zradtr_i(ji,jk) = za_s_fra(ji) * zradtr_s(ji,nlay_s) & ! part covered by snow 207 & * EXP( - rn_kappa_i * zh_i(ji) * REAL(jk) ) & 208 & + ( 1._wp - za_s_fra(ji) ) * qtr_ice_top_1d(ji) & ! part snow free 209 & * EXP( - rn_kappa_i * MAX( 0._wp, zh_i(ji) * REAL(jk) - zhi_ssl ) ) 210 195 211 zradtr_i(ji,jk) = zradtr_i(ji,0) * EXP( - rn_kappa_i * MAX( 0._wp, zh_i(ji) * REAL(jk) - zhi_ssl ) ) 196 212 ! ! radiation absorbed by the layer-th ice layer -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/SBC/sbcblk.F90
r12890 r12894 46 46 USE lib_fortran ! to use key_nosignedzero 47 47 #if defined key_si3 48 USE ice , ONLY : u_ice, v_ice, jpl, a_i_b, at_i_b, t_su, rn_cnd_s, hfx_err_dif 48 USE ice , ONLY : u_ice, v_ice, jpl, a_i_b, at_i_b, t_su, rn_cnd_s, hfx_err_dif, nn_qtrice 49 49 USE icevar ! for CALL ice_var_snwblow 50 50 #endif … … 917 917 END DO 918 918 919 ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 920 ztri(:,:) = 0.18 * ( 1.0 - cloud_fra(:,:) ) + 0.35 * cloud_fra(:,:) ! surface transmission when hi>10cm 921 ! 922 DO jl = 1, jpl 923 WHERE ( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 924 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ( ztri(:,:) + ( 1._wp - ztri(:,:) ) * ( 1._wp - phi(:,:,jl) * 10._wp ) ) 925 ELSEWHERE( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) >= 0.1_wp ) ! constant (ztri) when hi>10cm 926 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ztri(:,:) 927 ELSEWHERE ! zero when hs>0 928 qtr_ice_top(:,:,jl) = 0._wp 929 END WHERE 930 ENDDO 919 ! --- shortwave radiation transmitted thru the surface scattering layer (W/m2) --- ! 920 IF( nn_qtrice == 0 ) THEN 921 ! formulation derived from Grenfell and Maykut (1977), where transmission rate 922 ! 1) depends on cloudiness 923 ! 2) is 0 when there is any snow 924 ! 3) tends to 1 for thin ice 925 ztri(:,:) = 0.18 * ( 1.0 - cloud_fra(:,:) ) + 0.35 * cloud_fra(:,:) ! surface transmission when hi>10cm 926 DO jl = 1, jpl 927 WHERE ( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 928 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ( ztri(:,:) + ( 1._wp - ztri(:,:) ) * ( 1._wp - phi(:,:,jl) * 10._wp ) ) 929 ELSEWHERE( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) >= 0.1_wp ) ! constant (ztri) when hi>10cm 930 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ztri(:,:) 931 ELSEWHERE ! zero when hs>0 932 qtr_ice_top(:,:,jl) = 0._wp 933 END WHERE 934 ENDDO 935 ELSEIF( nn_qtrice == 1 ) THEN 936 ! formulation is derived from the thesis of M. Lebrun (2019). 937 ! It represents the best fit using several sets of observations 938 ! It comes with snow conductivities adapted to freezing/melting conditions (see icethd_zdf_bl99.F90) 939 qtr_ice_top(:,:,:) = 0.3_wp * qsr_ice(:,:,:) 940 ENDIF 931 941 ! 932 942 -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/SBC/sbccpl.F90
r12890 r12894 2111 2111 IF( .NOT.ln_cndflx ) THEN !== No conduction flux as surface forcing ==! 2112 2112 ! 2113 ! ! ===> used prescribed cloud fraction representative for polar oceans in summer (0.81) 2114 ! ! should be real cloud fraction instead (as in the bulk) but needs to be read from atm. 2115 ztri(:,:) = 0.18 * ( 1.0 - zcloud_fra(:,:) ) + 0.35 * zcloud_fra(:,:) ! surface transmission when hi>10cm (Grenfell Maykut 77) 2116 ! 2117 DO jl = 1, jpl 2118 WHERE ( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 2119 zqtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ( ztri(:,:) + ( 1._wp - ztri(:,:) ) * ( 1._wp - phi(:,:,jl) * 10._wp ) ) 2120 ELSEWHERE( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) >= 0.1_wp ) ! constant (ztri) when hi>10cm 2121 zqtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ztri(:,:) 2122 ELSEWHERE ! zero when hs>0 2123 zqtr_ice_top(:,:,jl) = 0._wp 2124 END WHERE 2125 ENDDO 2113 IF( nn_qtrice == 0 ) THEN 2114 ! formulation derived from Grenfell and Maykut (1977), where transmission rate 2115 ! 1) depends on cloudiness 2116 ! ! ===> used prescribed cloud fraction representative for polar oceans in summer (0.81) 2117 ! ! should be real cloud fraction instead (as in the bulk) but needs to be read from atm. 2118 ! 2) is 0 when there is any snow 2119 ! 3) tends to 1 for thin ice 2120 ztri(:,:) = 0.18 * ( 1.0 - zcloud_fra(:,:) ) + 0.35 * zcloud_fra(:,:) ! surface transmission when hi>10cm 2121 DO jl = 1, jpl 2122 WHERE ( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 2123 zqtr_ice_top(:,:,jl) = zqsr_ice(:,:,jl) * ( ztri(:,:) + ( 1._wp - ztri(:,:) ) * ( 1._wp - phi(:,:,jl) * 10._wp ) ) 2124 ELSEWHERE( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) >= 0.1_wp ) ! constant (ztri) when hi>10cm 2125 zqtr_ice_top(:,:,jl) = zqsr_ice(:,:,jl) * ztri(:,:) 2126 ELSEWHERE ! zero when hs>0 2127 zqtr_ice_top(:,:,jl) = 0._wp 2128 END WHERE 2129 ENDDO 2130 ELSEIF( nn_qtrice == 1 ) THEN 2131 ! formulation is derived from the thesis of M. Lebrun (2019). 2132 ! It represents the best fit using several sets of observations 2133 ! It comes with snow conductivities adapted to freezing/melting conditions (see icethd_zdf_bl99.F90) 2134 zqtr_ice_top(:,:,:) = 0.3_wp * zqsr_ice(:,:,:) 2135 ENDIF 2126 2136 ! 2127 2137 ELSEIF( ln_cndflx .AND. .NOT.ln_cndemulate ) THEN !== conduction flux as surface forcing ==! 2128 2138 ! 2129 ! 2130 ! 2139 ! ! ===> here we must receive the qtr_ice_top array from the coupler 2140 ! for now just assume zero (fully opaque ice) 2131 2141 zqtr_ice_top(:,:,:) = 0._wp 2132 2142 !
Note: See TracChangeset
for help on using the changeset viewer.