j-fu / VoronoiFVM.jl

Solution of nonlinear multiphysics partial differential equation systems using the Voronoi finite volume method
MIT License
183 stars 33 forks source link

Consolidate use of Triangle #2

Closed j-fu closed 4 years ago

j-fu commented 4 years ago

The use of Triangle in the various Julia packages needs to be consolidated.

We have TriangleMesh by @konsim83 and Triangle by @furio . Both hide the full functionality of Triangle behind their particular mesh structure. In this package I need yet another particular mesh structure (I need triangles, triangle attributes, segments, segment markers). I was not able to access these data with either package. I think there should be one module e.g. TriangleRaw which gives full Julianic access to Triangle which everyone can use. Based on @konsim83 's code (which has some good architectural ideas within this respect) I made a prototype for this which sits in the subdirectory src/triangle of this package. Before making yet another Triangle package out of this I suggest to try to have some consensus. Same IMHO would be good for TetGen and possibly other mesh generators. CC to @SimonDanisch and @ChrisRackauckas .

Jürgen (Fuhrmann)

PS: What is the appropriate place for discussing this ? It is on the intersection of geometry and PDEs...

furio commented 4 years ago

Hi,

I'm open to an expansion of Triangle if necessary. The lib started as a wrapper for a specific use case, with the wish to make it more generic with time (that I didn't have anymore).

If you've any patch/idea ecc I'm open to merge in the main repo (or add you or who wants to collaborate).

j-fu commented 4 years ago

Hi, I am also in contact with @konsim83 of TriangleMesh and in the moment more or less plan a pull request to his package (just because it is easier for me to navigate and to modify). I can find time for this around Friday. Structurally, I am not sure in the moment which of your packages could be seen as a primary one. My main interest is to have an interface which maps the C triangulateio to a julia structure just consisting of all possible arrays I think there should be exactly one package which has this functionality. It could be part of either Triangle or TriangleMesh, I then would use the one which provides this functionality. Alternatively, we create TriangleRaw (tentative name) and all three interface this one.

furio commented 4 years ago

I think that, at least mine, doesn't have all the stuff to be a generic entrypoint: I did all the stuff to be able to bind the lib from every OS (NativeInterface section) then used it for a narrow use-case.

I think your suggestion to make a package that works on raw-input/output (modernizing the build process as well) is a good idea. We make the interface as stupid as possible, maybe simplyfing the switches access (kinda like i did with https://github.com/cvdlab/Triangle.jl/blob/master/src/NativeInterface/options_structure.jl ).

Then everyone uses as it wants (myself included). If we do smth like this I can donate the Triangle name (i hope there is a way to do it) to such lib.

j-fu commented 4 years ago

Sounds like a plan:

konsim83 commented 4 years ago

Sounds like a plan! :-)

j-fu commented 4 years ago

So here is my attempt on the triangle package: TriangleRaw. Let us continue there.