tpaviot / smesh

An extension to oce, provides advanced meshing features
69 stars 24 forks source link

freecad externalize smesh / common oce base #46

Open looooo opened 7 years ago

looooo commented 7 years ago

FreeCAD has a smesh version included. We have adopted the latest netgen. For conda everything is currently based on occt7.1.0. My personal view is that your approach to have smesh in an external repo is much better than ours where we include all the smesh sources directly in the code. I would like to bundle forces towards an external smesh based on the latest sources. The main problem in my eyes is the divorced oce-library. While python-occ and this smesh-version use oce FreeCAD has adopted occt. Would it be possible to create a simple fork of occt7.1.0 as a oce18-dev and adopt the necessary diff from older oce-versions slowly? Having the same base (oce based on occt7.1.0) would decrease the maintaining work. (FreeCAD also slowly moves towards conda-packaging, and we have a occt-version available with conda-forge: https://anaconda.org/conda-forge/occt/files) Somehow it would make much sense to have only one oce/occt.

So my suggestion is to:

As there are not many people working on all these difficult libraries, I think it would make much sense if we could bundle our forces and work towards a common oce/occt base. As I do not have any insights into your development plan, I would like to know which points you agree with, and what the current plan for oce, python-occ and smesh is. Maybe we can find some common points...

tpaviot commented 7 years ago

@looooo thank you for this proposal, which makes sense. But it's a long development process.

My current plans are:

  1. port smesh to 8.2.0 (i.e. extract smesh from latest salome8.20 release). This is a WIP (branch https://github.com/tpaviot/smesh/tree/review/salome-smesh-820). It still doesn't compile on windows and osx, been tryin

  2. support netgen531. This is the netgen version officially supported by salome. @trelau tested netgen61 and 62, found some issues. Many people work at salome, skilled mesh engineers, my opinion is to trust them and to move up to netgen6 when they officially support it ;

  3. integration smesh-8.2.0 into pythonocc ;

  4. After that, move the underlying oce version (slowly move up all that stuff to occt-710).

If someone decides to go on with occt710 into oce, the previous plan might be changed.

trelau commented 7 years ago

Based on my experience with netgen 6.2, I agree with your plan to stick with 5.3.1 if it makes the SMESH integration easier (there are numerous patches I applied manually to 6.2). I actually experienced similar meshing issues with netgen 4 and 5 as I did 6. It seems there are some things that could be improved with the core meshing algorithm, although I couldn't replicate the issue on a small enough scale to try and isolate it. I think the main difference in the netgen 6 versions are more on the solver and Python interface side, but the core meshing algorithms are almost the same.

tpaviot commented 7 years ago

@trelau did you applied the netgen531 patch from the salome community ? see https://git.salome-platform.org/gitweb/?p=plugins/netgenplugin.git;a=blob;f=src/NETGEN/netgen53ForSalome.patch;h=ccd4e8c93a10df652300e72a1eec875fafb0b4bc;hb=HEAD

As you can see there are many changes over the codebase.

FYI I decide to create a new repository netgen4smesh, including the original netgen531, the previous patch, and a build system/ci.

trelau commented 7 years ago

@tpaviot I believe I applied the 531 patch netgen 6.2 from the latest version of SMESH I experimented with which was 7.7.1.

looooo commented 7 years ago

@tpaviot @trelau thanks for your fast reply.

But it's a long development process.

While it maybe is a long development process, setting up a future oce branch based on occt7.1.0 wouldn't be a really big thing.

first copy/paste occt710 (just a few minutes), then apply the set of patches we have at oce (I would say from 150 to 200), solve conflicts etc. And the last one ensure it buids on most platforms.

While the first step should be quite easy, applying the patches is maybe a bit more of work. My suggestion is to do the first step as soon as possible, and applying the patches one by one. It would be nice if you can setup a branch for the latest occt.

support netgen531. This is the netgen version officially supported by salome. @trelau tested netgen61 and 62, found some issues. Many people work at salome, skilled mesh engineers, my opinion is to trust them and to move up to netgen6 when they officially support it

FreeCAD is now using a patched version of salome to be able to use netgen6.2 (development) and occt7.1. Maybe it is possible to port some changes back to the origin project. A common salome-smesh base would simplify our lives a lot. But to get there it's necessary to also update oce to a newer occt. The sooner a version of occt7 based oce is available, the sooner we can start working on this. Creating a occt7.1 branch on oce would be a first step

tpaviot commented 7 years ago

@looooo occt7.1 integration into oce repository: WIP

hobbes1069 commented 6 years ago

Just found this issue and read everything but can't say I completely understood it :)

I'm still working on getting FreeCAD 0.17 to build with this fork of smesh... https://github.com/FreeCAD/FreeCAD/pull/1407

luzpaz commented 5 years ago

bump