dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #13276
Re: ufc ordering in parallel
On Wed, Apr 29, 2009 at 07:31:16AM -0500, Matthew Knepley wrote:
> On Wed, Apr 29, 2009 at 6:17 AM, Jed Brown <jed@xxxxxxxx> wrote:
>
> Matthew Knepley wrote:
>
> > I cannot be more emphatic here. <voice_of_god>THERE IS NO SPECIAL
> > CASING</voice_of_god>. At all. In the whole thing. You can argue that
> > in some cases it might be slower, but it works for any arrangement in
> > any dimension. I will never put that special case crap in my
> > code. Ever.
>
> Voice of g-d or otherwise, the code disagrees.
>
> compute{Triangle,Quadrilateral,Tetrahedral,Hexahedral,LineFace}Geometry
> orientTriangle
>
> MeshInterpolatePoints - Assumes 3D and tetrahedron
>
>
> Yep, it is geometric, not topological.
>
>
>
> Sieve/MeshSurgery.hh is all special-cased
>
>
> Not mine.
>
>
>
> But the above is either necessary or superficial. Now consider
> Selection::numFaceVertices which appears to require homogeneous topology
> and assume that all faces have the same topology. Furthermore, if you
> want to support dim > 3 or more exotic polyhedrons, it is no longer the
> case that topological dimension and total number of vertices defines the
> element topology.
>
> switch (cellDim) {
> case 0 :
> _numFaceVertices = 0;
> break;
> case 1 :
> _numFaceVertices = 1;
> break;
> case 2:
> switch (numCorners) {
> case 3 : // triangle
> _numFaceVertices = 2; // Edge has 2 vertices
> break;
> case 4 : // quadrilateral
> _numFaceVertices = 2; // Edge has 2 vertices
> break;
> default :
> throw ALE::Exception("Invalid number of face corners");
> }
> break;
> case 3:
> switch (numCorners) {
> case 4 : // tetradehdron
> _numFaceVertices = 3; // Face has 3 vertices
> break;
> case 8 : // hexahedron
> _numFaceVertices = 4; // Face has 4 vertices
> break;
> default :
> throw ALE::Exception("Invalid number of face corners");
> }
> break;
> default:
> throw ALE::Exception("Invalid cell dimension");
> }
>
>
> Selection::faceOrientation is the same pattern with a bunch more code
> (including another switch over orientation of each face of a hex, which
> can be replaced with an array describing the canonical orientation).
> The point is that this information needs to show up somewhere. The MBCN
> convention allows it to show up in a couple of arrays defined in one
> place, *reducing* the number of places that you need to special-case.
>
>
> None of which is necessary for this crap. That code is used to construct fault
> surfaces inside of a volume. I know how to do this topologically, but it
> requires
> a fully interpolated mesh. PyLith was unwilling to do this, so we had to
> special
> case since topology is thrown away.
>
> The real way to solve this is to construct the intermediates on the fly, but it
> takes
> some real thinking to make this efficient, and I am only one person.
>
>
>
> This is drifting rather off-topic for Dolfin, especially since they only
> work with simplices anyway, so perhaps we should continue the discussion
> off-list.
>
>
> I'm sure they care (a little).
>
> Matt
I care. It sure has a certain entertainment value. ;-)
--
Anders
Attachment:
signature.asc
Description: Digital signature
References
-
Re: ufc ordering in parallel
From: Anders Logg, 2009-04-28
-
Re: ufc ordering in parallel
From: Matthew Knepley, 2009-04-28
-
Re: ufc ordering in parallel
From: Anders Logg, 2009-04-28
-
Re: ufc ordering in parallel
From: Matthew Knepley, 2009-04-28
-
Re: ufc ordering in parallel
From: Jed Brown, 2009-04-28
-
Re: ufc ordering in parallel
From: Matthew Knepley, 2009-04-28
-
Re: ufc ordering in parallel
From: Jed Brown, 2009-04-29
-
Re: ufc ordering in parallel
From: Matthew Knepley, 2009-04-29
-
Re: ufc ordering in parallel
From: Jed Brown, 2009-04-29
-
Re: ufc ordering in parallel
From: Matthew Knepley, 2009-04-29