20 USE modi_get_vegtype_2_patch_mask
23 USE yomhook
,ONLY : lhook, dr_hook
24 USE parkind1
,ONLY : jprb
30 TYPE(dst_t),
INTENT(INOUT) :: dst
33 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
35 INTEGER,
DIMENSION(:),
POINTER :: ksize_nature_p
36 INTEGER,
DIMENSION(:,:),
POINTER :: kr_nature_p
37 INTEGER,
INTENT(IN) :: kpatch
38 REAL,
DIMENSION(:,:,:),
POINTER :: pvegtype_patch
41 CHARACTER(LEN=4) :: crgunit
48 INTEGER :: isize_largest_dst
49 REAL(KIND=JPRB) :: zhook_handle
52 IF (lhook) CALL dr_hook(
'INIT_DST',0,zhook_handle)
56 ALLOCATE(dst%XEMISRADIUS_DST(ndstmde))
57 ALLOCATE(dst%XEMISSIG_DST (ndstmde))
58 ALLOCATE(dst%XMSS_FRC_SRC (ndstmde))
63 IF(cemisparam_dst.EQ.
"She84")
THEN
65 xemisradius_ini_dst(:) = 0.5d6 * (/ 0.0111e-6, 2.524e-6, 42.10e-6 /)
66 xemissig_ini_dst(:) = (/ 1.89 , 2.0 , 2.13 /)
67 xmss_frc_src_ini(:) = (/2.6e-6, 0.781, 0.219/)
68 ELSEIF(cemisparam_dst.EQ.
"PaG77")
THEN
70 xemisradius_ini_dst(:) = 0.5d6 * (/0.27e-6 , 5.6e-6 , 57.6e-6 /)
71 xemissig_ini_dst(:) = (/ 1.88, 2.2 , 1.62 /)
72 xmss_frc_src_ini(:) = (/0.036, 0.957, 0.007/)
73 ELSEIF(cemisparam_dst.EQ.
"Dal87")
THEN
76 xemisradius_ini_dst(:) = 0.5d6 * (/ 0.832e-6 , 4.82e-6 , 19.38e-6 /)
77 xemissig_ini_dst(:) = (/ 2.10, 1.90 , 1.60 /)
78 xmss_frc_src_ini(:) = (/0.036, 0.957, 0.007/)
79 ELSEIF (cemisparam_dst.EQ.
"alf98".OR.cemisparam_dst.eq.
"EXPLI")
THEN
80 IF (cemisparam_dst.EQ.
"alf98") xflx_mss_fdg_fct = 6e-4
81 IF (cemisparam_dst.EQ.
"EXPLI") xflx_mss_fdg_fct = 3.5e-4
83 xemisradius_ini_dst(:) = 0.5*(/ 1.5, 6.7, 14.2 /)
84 xemissig_ini_dst(:) = (/1.70, 1.60, 1.50/)
85 xmss_frc_src_ini(:) = (/0.01, 0.19, 0.8 /)
86 ELSEIF (cemisparam_dst.EQ.
"AMMA ")
THEN
87 xflx_mss_fdg_fct = 105.e-4
89 xemisradius_ini_dst(:) = 0.5*(/ 0.078, 0.641, 5.00 /)
90 xemissig_ini_dst(:) = (/ 1.75, 1.76, 1.70/)
91 xmss_frc_src_ini(:) = (/0.008, 0.092, 0.99/)
92 ELSEIF (cemisparam_dst.EQ.
"CRUM ")
THEN
93 xflx_mss_fdg_fct = 10.e-4
95 xemisradius_ini_dst(:) = 0.5*(/ 0.078, 0.641, 5.00 /)
96 xemissig_ini_dst(:) = (/ 1.75, 1.76, 1.70 /)
97 xmss_frc_src_ini(:) = (/0.0005, 0.0029, 0.9966/)
99 WRITE(iluout,*)
" FATAL ERROR "
100 WRITE(iluout,*)
" YOU MUST DECIDE THE EMISSIUON PARAMETERIZATION, YOU USES "
101 WRITE(iluout,*)
" CEMISPARAM_DST = ",cemisparam_dst,
" AND IT IS NOT DEFINED "
102 WRITE(iluout,*)
" see init_dstn.f90 to see what dust parameterization is available. "
103 CALL
abor1_sfx(
"INIT_DST: CEMISPARAM_DST not defined ")
107 jmode_idx=jorder_dst(jmode)
109 dst%XEMISSIG_DST (jmode) = xemissig_ini_dst(jmode_idx)
110 dst%XEMISRADIUS_DST(jmode) = xemisradius_ini_dst(jmode_idx)
111 dst%XMSS_FRC_SRC (jmode) = xmss_frc_src_ini(jmode_idx)
114 IF (crgunit==
'MASS') &
115 dst%XEMISRADIUS_DST(jmode) = dst%XEMISRADIUS_DST(jmode) * exp(-3.d0 * (log(dst%XEMISSIG_DST(jmode)))**2)
121 IF(sum(dst%XMSS_FRC_SRC(:)).LT.1.) dst%XMSS_FRC_SRC(:) = dst%XMSS_FRC_SRC(:) / sum(dst%XMSS_FRC_SRC(:))
129 ALLOCATE(dst%NVT_DST(nvegno_dst))
132 dst%NVT_DST(1) = nvt_no
133 dst%NVT_DST(2) = nvt_rock
136 ALLOCATE(dst%Z0_EROD_DST(nvegno_dst))
140 dst%Z0_EROD_DST(1) = 30.d-6
141 dst%Z0_EROD_DST(2) = 200.d-6
144 IF (.NOT.
ASSOCIATED(dst%NSIZE_PATCH_DST))
ALLOCATE(dst%NSIZE_PATCH_DST(nvegno_dst,kpatch))
147 DO jveg = 1,nvegno_dst
149 dst%NSIZE_PATCH_DST(jveg,jpatch) = count(pvegtype_patch(:,dst%NVT_DST(jveg),jpatch) > 0.)
155 isize_largest_dst = 0
157 DO jveg = 1,nvegno_dst
158 isize_largest_dst = max(isize_largest_dst,dst%NSIZE_PATCH_DST(jveg,jpatch))
163 ALLOCATE(dst%NR_PATCH_DST(isize_largest_dst,nvegno_dst,kpatch))
166 dst%NR_PATCH_DST(:,:,:)=0
171 jveg_in = dst%NVT_DST(jveg)
174 dst%NSIZE_PATCH_DST(jveg,jpatch), &
175 ksize_nature_p(jpatch), &
178 kr_nature_p(:ksize_nature_p(jpatch),jpatch),&
180 dst%NR_PATCH_DST(:dst%NSIZE_PATCH_DST(jveg,jpatch),jveg,jpatch), &
187 dst%NSIZE_PATCH_DST(jveg,jpatch), &
188 ksize_nature_p(jpatch), &
192 dst%NR_PATCH_DST(:dst%NSIZE_PATCH_DST(jveg,jpatch),jveg,jpatch), &
201 IF (lhook) CALL dr_hook(
'INIT_DST',1,zhook_handle)
subroutine abor1_sfx(YTEXT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine init_dst(DST, U, HPROGRAM, KSIZE_NATURE_P, KR_NATURE_P, KPATCH, PVEGTYPE_PATCH)
subroutine get_vegtype_2_patch_mask(KLUOUT, KSIZE_VEG, KSIZE_PATCH, KSIZE_NAT, KMASK_PATCH_NATURE, PVEGTYPE_PATCH, KMASK, KPATCH_MAX, KPATCH, KVEGTYPE)