Dear Luca,

As Matt has already mentioned in item 2, we could use Firedrake `interpolate` function (https://www.firedrakeproject.org/interpolation.html) for this purpose if we are interpolating the coordinates in a finite element space of point evaluation nodes, e.g. ("CG", 2), as:

mesh = UnitSquareMesh(1, 1)

# Interpolate the coordinates in ("CG", 2) space with dimension = spatial dimension

V2 = VectorFunctionSpace(mesh, "CG", 2)

coord2 = interpolate(mesh.coordinates, V2)

print(coord2.dat.data_ro)


Thank you,

Koki

From: firedrake-bounces@imperial.ac.uk <firedrake-bounces@imperial.ac.uk> on behalf of Matthew Knepley <knepley@gmail.com>
Sent: Wednesday, December 11, 2019 12:55 PM
To: Luca Mechelli <luca.mechelli@uni-konstanz.de>
Cc: firedrake <firedrake@imperial.ac.uk>
Subject: Re: [firedrake] Mesh coordinates for higher degree of FE
 
On Wed, Dec 11, 2019 at 7:12 AM Luca Mechelli <luca.mechelli@uni-konstanz.de> wrote:

*******************
This email from originates from outside Imperial. Do not click on links and attachments unless you recognise the sender.
If you trust the sender, add them to your safe senders list https://spam.ic.ac.uk/SpamConsole/Senders.aspx to disable email stamping for this address.
*******************
Dear all,

I am wondering if it is possible to access the list of all points used by piecewise quadratic (or higher order) elements on a regular mesh.
For example, let's say I use the simple example of the Poisson equation at https://www.firedrakeproject.org/demos/poisson.py.html

If I print mesh.coordinates.dat.data_ro I can see the verteces of the mesh, but not the middle points used to build the quadratic elements, then if I print u.dat.data_ro the array has not the same length of mesh.coordinates.dat.data_ro because the middle points nodes are missing from the second array. Is it possible to obtain the full list of coordinates used? If yes, how?

The problem is that this is a completely crazy way of thinking about finite elements that we are stuck with thanks to Tom Hughes
and his followers. Coordinates on a mesh are a field, just like any other field, and are discretized using a finite element space, just
like any other field. What are the consequences of this?

1) You should not assume that the dual basis for coordinates are point evaluation functionals, or another way, not assume
     that we store coordinates by the values at certain points that you know ahead of time. For example, we might store them
     as Bezier curves, or splines, or using model DG.

2) If you want the coordinates at a point, you should interpolate them there just as you would a solution field.

3) You cannot assume that coordinates use the same space, or degree, as the solution.

I am sure the FD folks can tell you the nicest way to interpolate.

  Thanks,

     Matt
 
Thank you in advance,
best regards,
Luca Mechelli


--
Dr. Luca Mechelli
Wissenschaftlicher Mitarbeiter
Arbeitsgruppe Numerik
Fachbereich Mathematik und Statistik

Universität Konstanz
Fach D 198
D-78464 Konstanz
Telefon: +49-(0) 7531-88-3646

_______________________________________________
firedrake mailing list
firedrake@imperial.ac.uk
https://mailman.ic.ac.uk/mailman/listinfo/firedrake


--
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener