On 2013-10-17 15:15, Douglas N Arnold wrote:
I think that having a basic mesh generator integrated into FEniCS
is important for the uptake of FEniCS by new users, as well as
for instruction.  Although serious users will indeed usually need
to construct a mesh, even for them, it is useful to have something
quick and handy.  You wouldn't consider removing UnitSquareMesh
and UnitCubeMesh would you?.

No - these are essential.

Everyone uses them all the time,
because of the convenience of quickly getting a mesh when you want
to focus on other things, such as testing or demoing some code.
But rectangles are not sufficient for testing or demoing many
things, e.g., non-uniform meshes.  FEniCS has UnitCircleMesh,
which produces a very poor mesh for most purposes (bad enough it
may be a negative advertisement),

Yes, it really needs to fixed. I've created a bug report:

    https://bitbucket.org/fenics-project/dolfin/issue/136

so if I want to pop up a mesh
on a curved domain, I am glad the CGAL mesh generator is there.

Of course, there are other mesh generators, and there is
dolfin-convert.  But when introducing new users and students to
FEniCS, the learning code is already steep, and that adds more
things to learn.

So I think it would be a shame to lose CGAL without replacing it
with some other easy to use integrated mesh generator, preferably
including the constructive solid geometry CGAL has.


A problem with CGAL is that it doesn't really do constructive solid geometry - it polyhedralises objects (with relative few faces) before doing CSG and mesh generation. At present with the CGAL interface for a sphere, as the cell size is reduced, the domain does not get closer to a sphere because what's being meshed is a polyhedron with a low number of facets. Increasing the number of facets in the 'polyhedral' sphere leads to CGAL mesh generation failures. CGAL can do a good job with meshing spheres and the like via implicit function representations, but that is awkward in combination with polyhedra. Also, CGAL via the DOLFIN interface often produces extremely bad meshes in 3D.

It seems there is demand for mesh generation and CSG, so I let's remove CGAL once an alternative with a similar interface is in place. The best alternative is probably gmsh (operating via files or an API). Gmsh also supports periodic boundaries and curved boundaries, which will be useful going forward.

Garth


  -- Doug


On 10/17/2013 04:06 AM, Garth N. Wells wrote:
On 2013-10-17 06:42, Anders Logg wrote:
On Wed, Oct 16, 2013 at 08:48:31PM +0100, Garth N. Wells wrote:
On 2013-10-16 20:17, Anders Logg wrote:
>On Wed, Oct 16, 2013 at 01:00:08PM +0100, Chris Richardson wrote:
>>On 16/10/2013 09:25, Garth N. Wells wrote:
>>>Does anyone have an opinion on keeping or removing CGAL from DOLFIN?
>>>Below are some pros and cons:
>>>
>>>- CGAL makes DOLFIN slow to build and builds use a lot of memory.
>>>- CGAL is unpredictable in throwing errors (predictable in that it
>>>will throw cryptic errors, unpredictable when or with which
compiler).
>>>- CGAL is difficult to understand and the latest version has very
>>>cryptic interface changes.
>>>- Almost all of the random DOLFIN buildbot failures are due to CGAL
>>>mesh generation failures.
>>>
>>>+ CGAL provides mesh generation for a variety of simple shape
>>>combinations (the DOLFIN interface to CGAL is not rich enough for
>>>anything serious).
>>
>>Agreed. Anyone serious will make their mesh independently, so CGAL
>>is really just an annoying toy in this context... (!)
>
>That may be true, but simple also has a use.
>
>It's an optional dependency, so why is it a big problem?
>

(a) the tests keep failing randomly; (b) it breaks with GCC 4.8; and
(c) updating to CGAL 3.4 is a cryptic mess.

I think

(a) enable the tests only on one buildbot, the one where we know it
fails the least

(b) + (c) try to find a replacement backend mesher (or write our own
mesher) as a long-term solution


The question to ask is what is the purpose of built-in mesh generation?.
I can only think of teaching. Anything else?

Writing our own mesh generation would be a huge waste of time. There are
good mesh generators available (netgen, gmsh, etc).

Garth


--
Anders


_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics
_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics

Reply via email to