Domain Decomposition: Interpolating FE function from value on grid points efficiently.

25 views
Skip to first unread message

manuJayadharan

unread,
Oct 11, 2019, 8:17:51 PM10/11/19
to deal.II User Group

dd_vt.png


Hi all, 

I have a question regarding how to efficiently interpolate the normal trace of flux in a slightly complicated scenario. To get a little perspective, here is a brief description of what I am trying to achieve: 

 

 Context: I am working on a domain decomposition technique for a time-dependent parabolic problem using mixed finite element( RT_k x DGQ_k)  where I use non-matching grid and non-matching time steps for different sub-domains. As you can see from the figure, there is one extra dimension coming from time discretization. I need to project the normal component of flux across the colored interfaces in the figure. Ideally this would be easier if for flux I am working with a FE which is RT_k in the space dimension and DQ in the time dimension. But since I don't expect anyone to implement such a FE in dealii,  I figured I could use DQ_k on the colored interface to approximate the normal trace of the flux on the interface. 


Question: If I start by assuming that I have values of the flux(approximated using RT_k elements for each fixed time step) at different points on the red interface from my earlier computations in terms of dof_handler for Omega_1 and solution_vectors for different time step, how do I efficiently use  this information to interpolate this to a DGQ_k function so that this new interpolated function will give the normal trace of flux on the red interface? I think this could be done with the help of FEFieldFunction class, but I would like to know if there is a more efficient way of doing this using some other function class. 


I'm sorry if  the problem seems convoluted, I thought about it quite a bit and I could try explaining more if needed. 


Any help is appreciated,


Manu

Wolfgang Bangerth

unread,
Oct 20, 2019, 10:33:20 PM10/20/19
to dea...@googlegroups.com
On 10/11/19 6:17 PM, manuJayadharan wrote:
>
> *Question: *If I start by assuming that I have values of the flux(approximated
> using RT_k elements for each fixed time step) at different points on the red
> interface from my earlier computations in terms of dof_handler for Omega_1 and
> solution_vectors for different time step, how do I efficiently use  this
> information to interpolate this to a DGQ_k function so that this new
> interpolated function will give the normal trace of flux on the red interface?
> I think this could be done with the help of FEFieldFunction class, but I would
> like to know if there is a more efficient way of doing this using some other
> function class.

Do you want to represent the normal fluxes on the red mesh as a DGQ_k function
*also* on the red mesh, or did you mean to say *blue* mesh? If the former,
then there is no need to interpolate: the normal traces of an RT_k field in
the volume are in DGQ_k (as a field on the surface), so the interpolation is
equivalent to just evaluating the RT_k's normal flux.

In general, it is difficult to interpolate from one mesh to another because it
requires doing the work that FEFieldFunction does -- namely, for a random
point at which you want the solution to be evaluated you have to find which
cell (or, in your case, face) the point is in and then transform back to the
reference cell. This is expensive. It's one of the reasons why people don't
generally want to use non-matching DD methods any more :-)

It's a different thing if you just have non-matching time levels on the two
sides because in that case the interpolation at arbitrary times is generally
just a linear combination of the solutions at the two involved time steps.

Best
W.

--
------------------------------------------------------------------------
Wolfgang Bangerth email: bang...@colostate.edu
www: http://www.math.colostate.edu/~bangerth/

manuJayadharan

unread,
Oct 23, 2019, 2:25:34 PM10/23/19
to deal.II User Group
Hi Prof Wolfgang,
Thanks for the insight. I figured a way of implementing it without any interpolation, but to just use the normal traces of RT_0 in  2d at different time levels directly to get the normal traces of RT_0 in 3d(2Dspace-1Dtime mesh). 

regards,
Manu
Reply all
Reply to author
Forward
0 new messages