[Nek5000-users] Spectral interpolation of velocity gradients
nek5000-users at lists.mcs.anl.gov
nek5000-users at lists.mcs.anl.gov
Wed Jul 1 10:55:35 CDT 2015
Hi Philipp,
Your approach sounds correct.
Nek automatically migrates particles to wherever the geometry is. This is done using a relatively
efficient generalized all-to-all (that requires only log P message exchanges). Point identification is
done through a combination of a hash table, to identify candidate elements, and a very robust
Newton iteration to identify the computational point in r,s,t, space that corresponds to x,y,z.
Of these processes, findpts is the most expensive. Subsequent interpolation onto multiple
fields is relatively cheap.
I have some code developed by another user that will interpolate many fields in a single go ---
there are computational advantages for doing so --- but it is not yet general purpose (by
the author's own admission). My hope is to get this into the repo soon but I could provide
it off-list if you are keen to dig into some C code -- only if you are keen. Otherwise, I think
there are other optimizations that could be tackled, and we will indeed be working on these
over the next few weeks.
Paul
________________________________
From: nek5000-users-bounces at lists.mcs.anl.gov [nek5000-users-bounces at lists.mcs.anl.gov] on behalf of nek5000-users at lists.mcs.anl.gov [nek5000-users at lists.mcs.anl.gov]
Sent: Monday, June 29, 2015 12:58 PM
To: nek5000-users at lists.mcs.anl.gov
Subject: [Nek5000-users] Spectral interpolation of velocity gradients
Hi Neks,
I study particles in a turbulent flow and need to know velocity gradients dvi_dxj at particle positions x_p.
In order to do this, I modified the subroutine interp_v(uvw,xyz,n) from the particle tracking example ''hemi''. First, I calculate the velocity gradients with the subroutine gradm1():
call gradm1(vxx,vxy,vxz,vx)
call gradm1(vyx,vzy,vzz,vy)
call gradm1(vzx,vzy,vzz,vz)
Second, I interpolate the velocity gradients to the particle positions with the subroutine intpts():
call opcopy(wrk(1,1),wrk(1,2),wrk(1,3),vxx,vyx,vzx)
call intpts(wrk,ndm,pts,npart,outint,ifjac,ifpts,ihandle)
I have a few questions regarding this approach:
1. Is intpts() capable of interpolating derived fields like the velocity gradient field?
2. Do you have a good explanatory reference where the mathematical principles behind intpts() are explained?
3. As far as I understand, the fields vx, vy, vz and consequently the derived fields vxx, vxy, vxz, ... are local and defined on the local coordinate fields xm1, ym1, zm1. What is happens if an interpolation point is on a different processor and outside the coordinates stored in xm1, ym1, zm1?
Best regards, Philipp Weiss
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/nek5000-users/attachments/20150701/60701ead/attachment.html>
More information about the Nek5000-users
mailing list