| 1 | module lmdz_blowing_snow_ini |
|---|
| 2 | |
|---|
| 3 | IMPLICIT NONE |
|---|
| 4 | |
|---|
| 5 | REAL, SAVE, protected :: RCPD, RV, RLSTT, RLVTT, RLMLT, RVTMP2, RTT,RD,RG, RPI |
|---|
| 6 | REAL, SAVE, protected :: coef_sub_bs, fallv_bs, zeta_bs, c_esalt_bs |
|---|
| 7 | REAL, SAVE, protected :: prt_bs, pbst_bs, qbst_bs, r_bs |
|---|
| 8 | INTEGER, SAVE, protected :: iflag_saltation_bs, iflag_sedim_bs, iflag_sublim_bs |
|---|
| 9 | |
|---|
| 10 | !$OMP THREADPRIVATE(RCPD, RV, RLSTT, RLVTT, RLMLT, RVTMP2, RTT,RD,RG, RPI) |
|---|
| 11 | !$OMP THREADPRIVATE(coef_sub_bs, fallv_bs, r_bs, zeta_bs, c_esalt_bs) |
|---|
| 12 | !$OMP THREADPRIVATE(pbst_bs, prt_bs, qbst_bs) |
|---|
| 13 | !$OMP THREADPRIVATE(iflag_sedim_bs, iflag_sublim_bs) |
|---|
| 14 | |
|---|
| 15 | REAL, SAVE, protected :: tbsmelt=278.15 ! parameter to calculate melting fraction of BS sedimentation |
|---|
| 16 | REAL, SAVE, protected :: taumeltbs0=600.0 ! Melting time scale of blowing snow at 273.15K |
|---|
| 17 | REAL, SAVE, protected :: qbmin=1.E-10 ! Minimum blowing snow specific content |
|---|
| 18 | !$OMP THREADPRIVATE(tbsmelt, taumeltbs0, qbmin) |
|---|
| 19 | |
|---|
| 20 | REAL, SAVE, protected :: tau_dens0_bs=864000. ! 10 days by default, in s |
|---|
| 21 | REAL, SAVE, protected :: tau_densmin_bs= 21600. ! 1/4 days according to in situ obs by C. Amory during blowing snow + |
|---|
| 22 | ! Marshall et al. 1999 (snow densification during rain) |
|---|
| 23 | REAL, SAVE, protected :: tau_eqsalt_bs= 10. ! Nemoto and Nishimura 2004 show that steady-state saltation is achieved within a time tau_eqsalt of about 10s |
|---|
| 24 | REAL, SAVE, protected :: rhofresh_bs = 300.0 ! fresh snow density kg/m3 |
|---|
| 25 | REAL, SAVE, protected :: rhohard_bs = 450.0 ! hard snow density kg/m3 |
|---|
| 26 | REAL, SAVE, protected :: rhoice_bs = 920.0 ! ice density kg/m3 |
|---|
| 27 | REAL, SAVE, protected :: rhobs=900.0 ! blowing snow density (kg/m3) following Bintanja et al. 2001 part I |
|---|
| 28 | !$OMP THREADPRIVATE(rhoice_bs, rhofresh_bs, rhohard_bs, tau_dens0_bs, tau_densmin_bs, tau_eqsalt_bs, rhobs) |
|---|
| 29 | |
|---|
| 30 | |
|---|
| 31 | CONTAINS |
|---|
| 32 | |
|---|
| 33 | SUBROUTINE blowing_snow_ini(RCPD_in, RLSTT_in, RLVTT_in, RLMLT_in,& |
|---|
| 34 | RVTMP2_in, RTT_in,RD_in,RG_in, RV_in, RPI_in) |
|---|
| 35 | |
|---|
| 36 | USE lmdz_ioipsl_getin_p, ONLY: getin_p |
|---|
| 37 | |
|---|
| 38 | REAL, INTENT(IN) :: RCPD_in, RLSTT_in, RLVTT_in, RLMLT_in, RPI_in |
|---|
| 39 | REAL, INTENT(IN) :: RVTMP2_in, RTT_in, RD_in, RG_in, RV_in |
|---|
| 40 | |
|---|
| 41 | |
|---|
| 42 | RG=RG_in |
|---|
| 43 | RD=RD_in |
|---|
| 44 | RV=RV_in |
|---|
| 45 | RCPD=RCPD_in |
|---|
| 46 | RLVTT=RLVTT_in |
|---|
| 47 | RLSTT=RLSTT_in |
|---|
| 48 | RLMLT=RLMLT_in |
|---|
| 49 | RTT=RTT_in |
|---|
| 50 | RG=RG_in |
|---|
| 51 | RVTMP2=RVTMP2_in |
|---|
| 52 | RPI=RPI_in |
|---|
| 53 | |
|---|
| 54 | c_esalt_bs= 3.25 |
|---|
| 55 | CALL getin_p('c_esalt_bs',c_esalt_bs) |
|---|
| 56 | |
|---|
| 57 | qbst_bs= 0.001 |
|---|
| 58 | CALL getin_p('qbst_bs',qbst_bs) |
|---|
| 59 | |
|---|
| 60 | pbst_bs= 0.0003 |
|---|
| 61 | CALL getin_p('pbst_bs',pbst_bs) |
|---|
| 62 | |
|---|
| 63 | prt_bs= 0.0003 |
|---|
| 64 | CALL getin_p('prt_bs',prt_bs) |
|---|
| 65 | |
|---|
| 66 | zeta_bs= 3. |
|---|
| 67 | CALL getin_p('zeta_bs',zeta_bs) |
|---|
| 68 | |
|---|
| 69 | fallv_bs = 0.1 |
|---|
| 70 | CALL getin_p('fallv_bs',fallv_bs) |
|---|
| 71 | |
|---|
| 72 | coef_sub_bs = 0.1 |
|---|
| 73 | CALL getin_p('coef_sub_bs',coef_sub_bs) |
|---|
| 74 | |
|---|
| 75 | iflag_sublim_bs=1 |
|---|
| 76 | CALL getin_p('iflag_sublim_bs',iflag_sublim_bs) |
|---|
| 77 | |
|---|
| 78 | iflag_sedim_bs=1 |
|---|
| 79 | CALL getin_p('iflag_sedim_bs',iflag_sedim_bs) |
|---|
| 80 | |
|---|
| 81 | r_bs=150.0e-6 |
|---|
| 82 | CALL getin_p('r_bs',r_bs) |
|---|
| 83 | |
|---|
| 84 | END SUBROUTINE blowing_snow_ini |
|---|
| 85 | |
|---|
| 86 | END MODULE lmdz_blowing_snow_ini |
|---|