@@ -129,75 +129,14 @@ SUBROUTINE init_dim_obs_l_pdaf(domain_p, step, dim_obs_f, dim_obs_l)
129129#endif
130130
131131 ! Count observations within cradius
132- #ifdef CLMSA
133- obsind = 0
134- obsdist = 0.0
135- dim_obs_l = 0
136- if (point_obs.eq. 0 ) then
137- max_var_id = MAXVAL (var_id_obs_nc(:,:))
138- allocate (log_var_id(max_var_id))
139- log_var_id(:) = .TRUE.
140132
141- do m = 1 , dim_nx
142- do k = 1 , dim_ny
143- i = (m-1 )* dim_ny + k
144- do j = 1 , max_var_id
145- if (log_var_id(j) .and. var_id_obs_nc(k,m) == j) then
146- dx = abs (longxy_obs(i) - longxy(domain_p))
147- dy = abs (latixy_obs(i) - latixy(domain_p))
148- dist = sqrt (real (dx)** 2 + real (dy)** 2 )
149- ! obsdist(i) = dist
150- if (dist == 0 ) then
151- dim_obs_l = dim_obs_l + 1
152- obsind(i) = 1
153- log_var_id(j) = .FALSE.
154- obsdist(i) = dist
155- EXIT
156- end if
157- end if
158- end do
159- enddo
160- enddo
161-
162- do m = 1 , dim_nx
163- do k = 1 , dim_ny
164- i = (m-1 )* dim_ny + k
165- do j = 1 , max_var_id
166- if (log_var_id(j) .and. var_id_obs_nc(k,m) == j) then
167- dx = abs (longxy_obs(i) - longxy(domain_p))
168- dy = abs (latixy_obs(i) - latixy(domain_p))
169- dist = sqrt (real (dx)** 2 + real (dy)** 2 )
170- ! obsdist(i) = dist
171- if (dist <= real (cradius)) then
172- dim_obs_l = dim_obs_l + 1
173- obsind(i) = 1
174- log_var_id(j) = .FALSE.
175- dx = abs (lon_var_id(j) - longxy(domain_p))
176- dy = abs (lat_var_id(j) - latixy(domain_p))
177- obsdist(i) = sqrt (real (dx)** 2 + real (dy)** 2 )
178- end if
179- end if
180- end do
181- enddo
182- enddo
183- else
184- do i = 1 ,dim_obs
185- dx = abs (longxy_obs(i) - longxy(domain_p))
186- dy = abs (latixy_obs(i) - latixy(domain_p))
187- dist = sqrt (real (dx)** 2 + real (dy)** 2 )
188- obsdist(i) = dist
189- if (dist <= real (cradius)) then
190- dim_obs_l = dim_obs_l + 1
191- obsind(i) = 1
192- end if
193- end do
194- end if
195- #else
196- #ifdef PARFLOW_STAND_ALONE
133+ #ifndef CLMSA
134+ #ifndef OBS_ONLY_CLM
197135 obsind = 0
198136 obsdist = 0.0
199137 dim_obs_l = 0
200138 if (point_obs.eq. 0 ) then
139+ if (model == tag_model_parflow) THEN
201140 max_var_id = MAXVAL (var_id_obs_nc(:,:))
202141 allocate (log_var_id(max_var_id))
203142 log_var_id(:) = .TRUE.
@@ -228,7 +167,9 @@ SUBROUTINE init_dim_obs_l_pdaf(domain_p, step, dim_obs_f, dim_obs_l)
228167 end do
229168 end do
230169 end do
170+ end if
231171 else
172+ if (model == tag_model_parflow) THEN
232173 do i = 1 ,dim_obs
233174 dx = abs (x_idx_obs_nc(i) - int (xcoord_fortran(domain_p_coord))- 1 )
234175 dy = abs (y_idx_obs_nc(i) - int (ycoord_fortran(domain_p_coord))- 1 )
@@ -239,45 +180,21 @@ SUBROUTINE init_dim_obs_l_pdaf(domain_p, step, dim_obs_f, dim_obs_l)
239180 obsind(i) = 1
240181 end if
241182 end do
183+ endif
242184 endif
243- #else
185+ #endif
186+ #endif
187+
188+ #ifndef PARFLOW_STAND_ALONE
189+ #ifndef OBS_ONLY_PARFLOW
244190 obsind = 0
245191 obsdist = 0.0
246192 dim_obs_l = 0
247193 if (point_obs.eq. 0 ) then
248- if (model == tag_model_parflow) THEN
249194 max_var_id = MAXVAL (var_id_obs_nc(:,:))
250195 allocate (log_var_id(max_var_id))
251196 log_var_id(:) = .TRUE.
252197
253- do m = 1 , dim_nx
254- do k = 1 , dim_ny
255- i = (m-1 )* dim_ny + k
256- do j = 1 , max_var_id
257- if (log_var_id(j) .and. var_id_obs_nc(k,m) == j) then
258- dx = abs (x_idx_obs_nc(i) - int (xcoord_fortran(domain_p_coord))- 1 )
259- dy = abs (y_idx_obs_nc(i) - int (ycoord_fortran(domain_p_coord))- 1 )
260- dist = sqrt (real (dx)** 2 + real (dy)** 2 )
261- ! obsdist(i) = dist
262- if (dist <= real (cradius) .AND. dist > 0 ) then
263- dim_obs_l = dim_obs_l + 1
264- obsind(i) = 1
265- log_var_id(j) = .FALSE.
266- dx = abs (ix_var_id(j) - int (xcoord_fortran(domain_p_coord))- 1 )
267- dy = abs (iy_var_id(j) - int (ycoord_fortran(domain_p_coord))- 1 )
268- obsdist(i) = sqrt (real (dx)** 2 + real (dy)** 2 )
269- else if (dist == 0 ) then
270- dim_obs_l = dim_obs_l + 1
271- obsind(i) = 1
272- log_var_id(j) = .FALSE.
273- obsdist(i) = dist
274- end if
275- end if
276- end do
277- end do
278- end do
279- end if
280-
281198 if (model == tag_model_clm) THEN
282199 do m = 1 , dim_nx
283200 do k = 1 , dim_ny
@@ -322,22 +239,7 @@ SUBROUTINE init_dim_obs_l_pdaf(domain_p, step, dim_obs_f, dim_obs_l)
322239 enddo
323240 enddo
324241 end if
325- ! print *,'mype_filter dim_obs_l ', mype_filter, dim_obs_l
326- else
327- if (model == tag_model_parflow) THEN
328- do i = 1 ,dim_obs
329- dx = abs (x_idx_obs_nc(i) - int (xcoord_fortran(domain_p_coord))- 1 )
330- dy = abs (y_idx_obs_nc(i) - int (ycoord_fortran(domain_p_coord))- 1 )
331- dist = sqrt (real (dx)** 2 + real (dy)** 2 )
332- obsdist(i) = dist
333- if (dist <= real (cradius)) then
334- dim_obs_l = dim_obs_l + 1
335- obsind(i) = 1
336- end if
337- end do
338- endif
339-
340- #ifndef OBS_ONLY_PARFLOW
242+ else
341243 if (model == tag_model_clm) THEN
342244 do i = 1 ,dim_obs
343245 dx = abs (longxy_obs(i) - longxy(domain_p))
@@ -348,13 +250,13 @@ SUBROUTINE init_dim_obs_l_pdaf(domain_p, step, dim_obs_f, dim_obs_l)
348250 dim_obs_l = dim_obs_l + 1
349251 obsind(i) = 1
350252 end if
351- end do
253+ end do
352254 end if
353- #endif
354- endif
255+ end if
355256#endif
356257#endif
357-
258+ !- -----------------------------------------------------------------------
259+
358260 ! kuw: allocate and determine local observation index and distance
359261 ! #ifndef CLMSA
360262 ! Initialize index array for local observations in full observed vector
0 commit comments