210 if (this%u%n .gt. 0)
call add2(this%u%x, fld_data_add%u%x, this%u%n)
211 if (this%v%n .gt. 0)
call add2(this%v%x, fld_data_add%v%x, this%v%n)
212 if (this%w%n .gt. 0)
call add2(this%w%x, fld_data_add%w%x, this%w%n)
213 if (this%p%n .gt. 0)
call add2(this%p%x, fld_data_add%p%x, this%p%n)
214 if (this%t%n .gt. 0)
call add2(this%t%x, fld_data_add%t%x, this%t%n)
216 do i = 1, this%n_scalars
217 if (this%s(i)%n .gt. 0)
call add2(this%s(i)%x, fld_data_add%s(i)%x, &
259 to_msh, tolerance)
result(global_interp)
261 type(
dofmap_t),
intent(in),
target :: to_dof
262 type(
mesh_t),
intent(in),
target :: to_msh
263 real(kind=
rp),
intent(in) :: tolerance
269 real(kind=
rp),
allocatable :: x_coords(:,:,:,:), y_coords(:,:,:,:), &
271 real(kind=
rp) :: center_x, center_y, center_z
275 type(
space_t),
pointer :: to_xh
279 if (.not.
allocated(this%x%x) .or. &
280 .not.
allocated(this%y%x) .or. &
281 .not.
allocated(this%z%x))
call neko_error(
"Unable to retrieve &
282&mesh information from fld data.")
285 call fld_xh%init(
gll, this%lx, this%ly, this%lz)
289 allocate(x_coords(to_xh%lx, to_xh%ly, to_xh%lz, to_msh%nelv))
290 allocate(y_coords(to_xh%lx, to_xh%ly, to_xh%lz, to_msh%nelv))
291 allocate(z_coords(to_xh%lx, to_xh%ly, to_xh%lz, to_msh%nelv))
297 do e = 1, to_msh%nelv
302 center_x = center_x + to_dof%x(i, 1, 1, e)
303 center_y = center_y + to_dof%y(i, 1, 1, e)
304 center_z = center_z + to_dof%z(i, 1, 1, e)
306 center_x = center_x / to_xh%lxyz
307 center_y = center_y / to_xh%lxyz
308 center_z = center_z / to_xh%lxyz
310 x_coords(i, 1, 1, e) = to_dof%x(i, 1, 1, e) - &
311 tolerance * (to_dof%x(i, 1, 1, e) - center_x)
312 y_coords(i, 1, 1, e) = to_dof%y(i, 1, 1, e) - &
313 tolerance * (to_dof%y(i, 1, 1, e) - center_y)
314 z_coords(i, 1, 1, e) = to_dof%z(i, 1, 1, e) - &
315 tolerance * (to_dof%z(i, 1, 1, e) - center_z)
321 call global_interp%init(this%x%x, this%y%x, this%z%x, this%gdim, &
322 this%nelv, fld_xh, tol = tolerance)
323 call global_interp%find_points(x_coords, y_coords, z_coords, &