Changeset 5871
- Timestamp:
- Nov 18, 2025, 11:04:21 AM (3 weeks ago)
- Location:
- LMDZ6/branches/lmdz-snow/libf/phylmd
- Files:
-
- 4 edited
-
lmdz_blowing_snow_ini.f90 (modified) (2 diffs)
-
lmdz_blowing_snow_sublim_sedim.f90 (modified) (8 diffs)
-
lmdz_call_blowing_snow.f90 (modified) (3 diffs)
-
physiq_mod.F90 (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/lmdz-snow/libf/phylmd/lmdz_blowing_snow_ini.f90
r5612 r5871 70 70 CALL getin_p('fallv_bs',fallv_bs) 71 71 72 coef_sub_bs = 0. 172 coef_sub_bs = 0.01 73 73 CALL getin_p('coef_sub_bs',coef_sub_bs) 74 74 … … 79 79 CALL getin_p('iflag_sedim_bs',iflag_sedim_bs) 80 80 81 r_bs= 150.0e-681 r_bs=50.0e-6 82 82 CALL getin_p('r_bs',r_bs) 83 83 -
LMDZ6/branches/lmdz-snow/libf/phylmd/lmdz_blowing_snow_sublim_sedim.f90
r5268 r5871 2 2 3 3 contains 4 subroutine blowing_snow_sublim_sedim(ngrid,nlay,dtime, temp,qv,qb,pplay,paprs,dtemp_bs,dqv_bs,dqb_bs,bsfl,precip_bs)4 subroutine blowing_snow_sublim_sedim(ngrid,nlay,dtime,ustar,temp,qv,qb,pplay,paprs,dtemp_bs,dqv_bs,dqb_bs,bsfl,precip_bs) 5 5 6 6 !============================================================================== … … 27 27 integer, intent(in) :: ngrid,nlay 28 28 real, intent(in) :: dtime 29 real, intent(in), dimension(ngrid) :: ustar 29 30 real, intent(in), dimension(ngrid,nlay) :: temp 30 31 real, intent(in), dimension(ngrid,nlay) :: qv … … 55 56 real :: maxdqvmelt, rhoair, dz, dqbsedim 56 57 real :: delta_p, b_p, a_p, c_p, c_sub, qvsub 57 real :: p0, T0, Dv, Aprime, Bprime, Ka 58 real :: p0, T0, Dv, Aprime, Bprime, Ka, radius0, radius 58 59 real, dimension(ngrid) :: ztemp,zqv,zqb,zpres,qsi,dqsi,qsl,dqsl,qzero,sedim 59 60 real, dimension(ngrid) :: zpaprsup, zpaprsdn, ztemp_up, zqb_up, zvelo 60 real, dimension(ngrid,nlay) :: temp_seri, qb_seri, qv_seri 61 real, dimension(ngrid,nlay) :: temp_seri, qb_seri, qv_seri, zz 61 62 62 63 !++++++++++++++++++++++++++++++++++++++++++++++++++ … … 72 73 precip_bs(:)=0. 73 74 bsfl(:,:)=0. 75 zz(:,:)=0. 74 76 75 77 … … 82 84 qv_seri(i,k)=qv(i,k) 83 85 qb_seri(i,k)=qb(i,k) 86 zz(i,k)=zz(i,k)+(paprs(i,k)-paprs(i,k+1)) / (pplay(i,k)/RD/temp(i,k)*RG) 84 87 ENDDO 85 88 ENDDO … … 175 178 zpaprsup(i)=paprs(i,k+1) 176 179 zpaprsdn(i)=paprs(i,k) 180 181 ! computation of blowing snow mean radius. Either constant value = r_bs if >0 182 ! or use of the height-dependent formulation from Sauter et al. 2013 and Saigger et al. 2024 183 IF (r_bs .GT. 0.) THEN 184 radius=r_bs 185 ELSE 186 radius0=0.5*(ustar(i)*(7.8e-6)/0.036+31.e-6) 187 radius=radius0*zz(i,k)**(-0.258) 188 ENDIF 189 177 190 ENDDO 178 191 … … 213 226 ! Sublimation formulation for ice crystals from Pruppacher & Klett, Rutledge & Hobbs 1983 214 227 ! assuming monodispered crystal distrib 215 ! dqb/dt_sub=-coef_sub_bs*(1-qv/qsi)*nc*8*r _bs/(Aprime+Bprime)216 ! assuming Mi=rhobs*4/3*pi*r _bs**3217 ! rhoair qb=nc*Mi -> nc=rhoairqb/Mi218 ! dqb/dt_sub=-coef_sub_bs*(1-qv/qsi)*6* rhoair*qb/(rhobs*pi*r_bs**2)/(Aprime+Bprime)228 ! dqb/dt_sub=-coef_sub_bs*(1-qv/qsi)*nc*8*radius/(Aprime+Bprime) 229 ! assuming Mi=rhobs*4/3*pi*radius**3 230 ! qb=nc*Mi -> nc=qb/Mi 231 ! dqb/dt_sub=-coef_sub_bs*(1-qv/qsi)*6*qb/(rhobs*pi*radius**2)/(Aprime+Bprime) 219 232 ! dqb/dt_sub=-c_sub(1-qv/qsi)*qb 220 ! c_sub=coef_sub_bs*6 *rhoair/(rhobs*pi*r_bs**2)/(Aprime+Bprime)233 ! c_sub=coef_sub_bs*6/(rhobs*pi*radius**2)/(Aprime+Bprime) 221 234 ! 222 235 ! Note the strong coupling between specific contents of water vapor and blowing snow during sublimation … … 228 241 IF (zqv(i) .LT. qsi(i)) THEN 229 242 rhoair=zpres(i)/ztemp(i)/RD 230 Dv=0.0001*0.211*(p0/zpres(i))*((ztemp(i)/RTT)**1.94) ! water vapor diffusivity in air, SI243 Dv=0.0001*0.211*(p0/zpres(i))*((ztemp(i)/RTT)**1.94) ! water vapor diffusivity in air, SI 231 244 Ka=(5.69+0.017*(ztemp(i)-RTT))*1.e-5*100.*4.184 ! thermal conductivity of the air, SI 232 245 Aprime=RLSTT/Ka/ztemp(i)*(RLSTT/RV/ztemp(i) -1.) 233 246 Bprime=1./(rhoair*Dv*qsi(i)) 234 c_sub=coef_sub_bs* 6.*rhoair/(rhobs*RPI*r_bs**2)/(Aprime+Bprime)247 c_sub=coef_sub_bs*3./(rhobs*radius**2)/(Aprime+Bprime) 235 248 c_p=-zqb(i) 236 249 b_p=1.+c_sub*dtime-c_sub*dtime/qsi(i)*zqb(i)-c_sub*dtime/qsi(i)*zqv(i) -
LMDZ6/branches/lmdz-snow/libf/phylmd/lmdz_call_blowing_snow.f90
r5841 r5871 4 4 contains 5 5 6 subroutine call_blowing_snow_sublim_sedim(ngrid,nlay,dtime, temp,q,qbs,pplay,paprs, &6 subroutine call_blowing_snow_sublim_sedim(ngrid,nlay,dtime,ustar,temp,q,qbs,pplay,paprs, & 7 7 dtemp_bs,dq_bs,dqbs_bs,bsfl,precip_bs) 8 8 … … 15 15 integer, intent(in) :: ngrid,nlay 16 16 real, intent(in) :: dtime 17 real, intent(in), dimension(ngrid) :: ustar 17 18 real, intent(in), dimension(ngrid,nlay) :: temp 18 19 real, intent(in), dimension(ngrid,nlay) :: q … … 35 36 36 37 37 call blowing_snow_sublim_sedim(ngrid,nlay,dtime, temp,q,qbs,pplay,paprs, &38 call blowing_snow_sublim_sedim(ngrid,nlay,dtime,ustar,temp,q,qbs,pplay,paprs, & 38 39 dtemp_bs,dq_bs,dqbs_bs,bsfl,precip_bs) 39 40 -
LMDZ6/branches/lmdz-snow/libf/phylmd/physiq_mod.F90
r5842 r5871 3098 3098 IF (ok_bs) THEN 3099 3099 3100 CALL call_blowing_snow_sublim_sedim(klon,klev,phys_tstep, t_seri,q_seri,qbs_seri,pplay,paprs, &3100 CALL call_blowing_snow_sublim_sedim(klon,klev,phys_tstep,zustar,t_seri,q_seri,qbs_seri,pplay,paprs, & 3101 3101 d_t_bsss,d_q_bsss,d_qbs_bsss,bsfl,bs_fall) 3102 3102
Note: See TracChangeset
for help on using the changeset viewer.
