Hi Luca, Brilliant! I'll definitely take a look inside FEValues to see how its done - I'm sure it'll be quite apparent when I see it.
Thanks very much for your time and the help. Best regards, J-P On 2 February 2010 14:45, Luca Heltai <[email protected]> wrote: > Those you can obtain by the gradient of the transformation on the > surface (namely, the Jacobian). If you open the source code of > FEValues and look at the way the normals are computed, you will see > that they use the Jacobian. You can obtain this information by setting > the appropriate flags in the FEFaceValues class, and then calling > > fe_v.jacobians(0) > > which will give you the vectors you are looking for. > > Luca. > > On Tue, Feb 2, 2010 at 12:50 PM, Jean-Paul Pelteret > <[email protected]> wrote: >> On 2 February 2010 13:49, Jean-Paul Pelteret <[email protected]> >> wrote: >>> Hi Luca, >>> >>> Yes thanks, that is partially what I'm looking for. That would allow >>> me to get the normal at any point on the face. However, I'm also >>> looking for the two tangential (covariant base) vectors that, when >>> operated on by a cross-product, give the normal vector. Any ideas? >>> >>> J-P >>> >>> On 2 February 2010 13:37, Luca Heltai <[email protected]> wrote: >>>> I'm not sure I understand what you need, but assuming I do, this is >>>> how I'd do what I think that you want to do. :) >>>> >>>> 1. express your arbitrary point in reference coordinates on the face >>>> (you can do this by transforming your real point back to the reference >>>> cell, then project it to the face of interest) >>>> 2. construct a quadrature formula that contains the given point and >>>> 1.0 as a weight >>>> 3. construct a FEFaceValues object with the given quadrature formula >>>> and all the flags you need. >>>> >>>> I hope this clarify things a bit, if not, I might have not understood >>>> what you needed... >>>> >>>> Luca. >>>> >>>> If the point is truly arbitrary, then you have to >>>> >>>> On Tue, Feb 2, 2010 at 12:20 PM, Jean-Paul Pelteret >>>> <[email protected]> wrote: >>>>> Hi all, >>>>> >>>>> I'm currently working on a contact formulation for solid mechanics, >>>>> and it requires that I'm able to get information at an arbitrary point >>>>> on a boundary face on a cell. In particular, I need to get the >>>>> convected bases at this point (one of them will be the outward normal >>>>> to the face at the point, while the others, when mapped back to the >>>>> reference cell, will give the other two isoparametric basis vectors). >>>>> I see that there is a tool in the mapping class, namely >>>>> Mapping::transform, that potentially caters for this but requires >>>>> input information ( const InternalDataBase &internal) that I don't >>>>> think one has access to through a public interface in either the >>>>> mapping or fe_values classes. >>>>> >>>>> Is there any function that I can use to get what I need or am I >>>>> missing something obvious regarding the function I've described above? >>>>> >>>>> Thanks in advance for the help. >>>>> Best regards, >>>>> Jean-Paul >>>>> _______________________________________________ >>>>> dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii >>>>> >>>> >>> >> > _______________________________________________ dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii
