89 param , & ! IN: global parameter set
90 is_present , & ! IN: flag indicating presence of soil
91 nHorizons , & ! IN: Number of Horizons of Soiltype
92 nTillHorizons , & ! IN: Number of tillage Horizons
93 LCover0 , & ! IN: land cover ids at level 0
94 clay , & ! IN: clay content
95 DbM , & ! IN: mineral Bulk density
96 Db , & ! IN: Bulk density
97 COSMIC_L3_till , & ! OUT: COSMIC paramter L3 tillage layer
98 latWat_till , & ! OUT: lattice water content tillage layer
99 COSMIC_L3 , & ! OUT: COSMIC paramter L3 tillage layer
100 latWat & ! OUT: lattice water contente
104 use mo_message,
only: error_message
111 integer(i4),
intent(in) :: process_case
112 real(dp),
dimension(:),
intent(in) :: param
113 integer(i4),
dimension(:),
intent(in) :: is_present
114 integer(i4),
dimension(:),
intent(in) :: nhorizons
115 integer(i4),
dimension(:),
intent(in) :: ntillhorizons
116 real(dp),
dimension(:,:),
intent(in) :: dbm
117 real(dp),
dimension(:,:,:),
intent(in) :: db
118 integer(i4),
dimension(:),
intent(in) :: lcover0
119 real(dp),
dimension(:,:),
intent(in) :: clay
122 real(dp),
dimension(:,:,:),
intent(out) :: cosmic_l3_till
123 real(dp),
dimension(:,:,:),
intent(out) :: latwat_till
124 real(dp),
dimension(:,:),
intent(out) :: cosmic_l3
125 real(dp),
dimension(:,:),
intent(out) :: latwat
131 integer(i4) :: tmp_minsoilhorizon
135 tmp_minsoilhorizon = minval(ntillhorizons(:))
140 cosmic_l3_till = 0.000001_dp
141 cosmic_l3 = 0.000001_dp
142 latwat_till = 0.000001_dp
150 do i = 1,
size(is_present)
151 if ( is_present(i) .lt. 1 ) cycle
152 horizon:
do j = 1, nhorizons(i)
155 if ( j .le. ntillhorizons(i) )
then
157 do l = 1, maxval( lcover0 )
158 if(process_case .EQ. 1)
call latticewater(param(2:3), clay(i,j), latwat_till(i,j,l))
159 if(process_case .EQ. 2)
then
160 call calcl3(param(6:7), db(i,j,l), cosmic_l3_till(i,j,l))
161 call latticewater(param(8:9), clay(i,j), latwat_till(i,j,l))
166 if(process_case .EQ. 1)
call latticewater(param(2:3), clay(i,j), latwat(i,j-tmp_minsoilhorizon))
167 if(process_case .EQ. 2)
then
168 call calcl3(param(6:7), dbm(i,j), cosmic_l3(i,j-tmp_minsoilhorizon))
169 call latticewater(param(8:9), clay(i,j), latwat(i,j-tmp_minsoilhorizon))
177 do i = 1,
size(is_present)
178 if ( is_present(i) .lt. 1 ) cycle
184 do l = 1, maxval( lcover0 )
185 if(process_case .EQ. 1)
call latticewater(param(2:3), clay(i,j), latwat_till(i,j,l))
186 if(process_case .EQ. 2)
then
187 call calcl3(param(6:7), db(i,j,l), cosmic_l3_till(i,j,l))
188 call latticewater(param(8:9), clay(i,j), latwat_till(i,j,l))
194 if(process_case .EQ. 1)
call latticewater(param(2:3), clay(i,j), latwat(i,j))
195 if(process_case .EQ. 2)
then
196 call calcl3(param(6:7), dbm(i,j), cosmic_l3(i,j))
204 call error_message(
'***ERROR: iFlag_soilDB option given does not exist. Only 0 and 1 is taken at the moment.')
subroutine, public mpr_neutrons(process_case, param, is_present, nhorizons, ntillhorizons, lcover0, clay, dbm, db, cosmic_l3_till, latwat_till, cosmic_l3, latwat)
multiscale parameter regionalization for neutrons