*ERROR in e_c3d: nonpositive jacobian determinant in element

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
User avatar
-alex-
Veteran
Posts: 1856
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Post by -alex- »

.
schupin
Posts: 476
Joined: Sun Jan 21, 2018 1:43 pm

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Post by schupin »

-alex- wrote: Tue Oct 22, 2019 10:40 pm J'en dirait plus demain quand j'aurai du temps.
-alex- wrote: Wed Oct 23, 2019 4:55 pm.
En effet, tu es bien plus bavard aujourd'hui :D
User avatar
-alex-
Veteran
Posts: 1856
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Post by -alex- »

schupin wrote: Wed Oct 23, 2019 6:26 pm En effet, tu es bien plus bavard aujourd'hui :D
:lol:
J'ai fait une erreur de manip, du coup j'ai juste mis un . dans le post, que j'étais en train d'éditer en ce moment.
J'aurai du marquer " post en cours...."
Du coup je vais faire un nouveau post tout propre :D
User avatar
-alex-
Veteran
Posts: 1856
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Post by -alex- »

Donc, après pas mal de tâtonnements, voici un flux de travail pour exploiter un maillage de qualité insuffisante en vue du maillage avec gmsh par exemple.

A- Je détail d’abord quelques échecs, à titre informatif:

- import du maillage md_ad.stl dans Freecad

Il faut l'analyser pour voir ce qu'il en est:
- module mesh design
- d'abord un premier coup d’œil avec Mesh -> check solid mesh -> "The mesh md_ad is not a solid": ce n'est pas un solide, c'est pas bon
- puis on pousse l'analyse: Mesh -> Analyse -> Evaluate and repair mesh...
md_ad_mesh_analyse.png
md_ad_mesh_analyse.png (93.94 KiB) Viewed 1432 times

On constate 75 plis sur faces (des plis sur des faces triangulaires c'est un concept qui me dépasse :roll: )

A ce stade on peu être tenté d'effectuer certaines opérations avec Freecad, par exemple:
- repair -> élimine les 75 plis mais créé 19 non-manifolds (sommets non raccordés), si on réitère la réparation plusieurs fois on fini par éliminer tout message d’erreur.
- avec les outils Mesh, on peut tenter de supprimer manuellement les surfaces en rouge, boucher les trous (manuellement ou en auto), harmoniser les normales de face, ....
Toutes ces opérations, manuelles ou auto et dans un ordre ou un autre échoueront au finale à donner un maillage FEM valide :evil:

A ce stade, avec ou sans retouche du maillage, on peut tout de même essayer d'obtenir un solide, juste pour voir, au cas ou :mrgreen: :

1- Sur maillage md_ad.stl d'origine sans retouche: 723 points, 1456 faces
- Atelier Part -> Create shape from mesh...
- Sur l'objet obtenu -> Check geometry: pas de message d’erreur, et dans Shape content: 3 shells et 0 solide répertoriées
- Application d'un filtre Compund filter (type Window-area)
- Check geom -> shape content -> 1shell et 0 solid : 715 points, 1448 faces
- Sur l'objet compound filter -> Part/Shape builder -> solid from shell (refine shape) -> selection d'une face : obtention de l'objet "Solid"
- Check geom sur l'objet "solid": 1 erreur forme non valide et Shape content -> 1 shell et 1 solid
On a 1 solide à 1 coque, malgré l'erreur "forme non valide" j’essaie de mailler avec gmsh (élément 3D sélectionné, taille défaut =0 auto):

Code: Select all

Error   : Self intersecting surface mesh, computing intersections (this could take a while)
Warning : Volume 1 consists of no elements
- FEM mesh info: 5) Total number of volumes = 0
Conclusion: ça ne fonctionne pas :cry:

2- Sur maillage réparé (Mesh->analyze->Evalutate and repair mesh...) sans message d'erreur résiduel: 676 points, 1280 faces
- Atelier Part -> Create shape from mesh...
- Sur l'objet obtenu -> Check geometry: pas de message d’erreur, et dans Shape content: 1 shell et 0 solide répertoriées
- Check geom -> shape content -> 1shell et 0 solid : 676 points, 1280 faces
- Sur l'objet md_ad001 -> Part/Shape builder -> solid from shell (refine shape) -> selection d'une face : obtention de l'objet "Solid"
- Check geom sur l'objet "Solid": 1 erreur coque non connectée et Shape content -> 1 shell et 1 solid
On a 1 solide à 1 coque, malgré l'erreur "coque non connecté" j’essaie de mailler avec gmsh (élément 3D sélectionné, taille défaut =0 auto):

Code: Select all

Error   : No tetrahedra in region 1 0
Warning : Volume 1 consists of no elements
- FEM mesh info: 5) Total number of volumes = 0
Conclusion: ça ne fonctionne pas :cry:

Le flux qui fonctionne dans le poste suivant....
User avatar
-alex-
Veteran
Posts: 1856
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Post by -alex- »

B- Le flux décrit ci-dessous fonctionne, il n'est pas exhaustif, il peut être à adapter en fonction de la qualité du maillage à traiter:

Ok, à ce stade il faut passer sous Blender pour la réparation du maillage:
Nous sommes sur le forum Freecad, mais je pense pouvoir faire référence à ce superbe logiciel ici sans souci :D

Blender V2.8:
- nouveau fichier
- suppression du cube présent par défaut
- fichier-> import-> md_ad.stl

L'objet est importé sans mise à l'échelle, sous Blender l'unité est le mètre, ici les dimensions en mm du mandibule passent en mètres, il est donc 1000x plus grand. Ça n'a pas vraiment d'importance, mais il faut en avoir conscience si on rentre des valeurs de seuil en distance dans certaines fonctions de retouche.

- selection de l'objet dans l'arbre
- clic droit sur la scène -> menu contextuel -> set origin -> Geometry to origin
- View -> Frame all
- TAB pourentrer en mode édition de l'objet
- par défaut toutes les faces sont sélectionnées, cliquer dans la scène désélectionne tout
- touche A sélectionne tout (tous les raccourcis clavier sont dans les menus, il faut explorer)
- edit -> Preferences -> add-ons -> charger l'addon Mesh 3D Print toolbox (taper "print" dans la barre de recherche) -> save n load
- entre en mode édition -> touche TAB
- presse la touche N pour faire apparaitre le panneau de l'addon 3D printing
- check all -> 6 arrêtes non raccordées et 2 faces en interférences
md_ad_mesh_blender_3Dprint_tools.png
md_ad_mesh_blender_3Dprint_tools.png (907.32 KiB) Viewed 1404 times

- clic sur la case "non manifold edges: 6 pour selectionner ces arrêtes non raccordées
- fait suppr. et clique "edges" pour les supprimer
-check all
- clic sur la case "non manifold edges: 10 pour visualiser les arrêtes non raccordées et repère les 2 arrêtes qui sont seules, qui ne sont au bord d'aucune face: supprime les
md_ad_mesh_blender_suppr_edges.png
md_ad_mesh_blender_suppr_edges.png (239.32 KiB) Viewed 1404 times

- Select all A
- Mesh -> clean up -> file holes -> seuil =5
- check all -> 0 arrêtes non raccordées mais non flat face =1
- clic distorded
- check all -> tout est ok
- TAB
- export stl md_ad_OK.stl

- Importe md_ad_OK dans Freecad
- Part -> Create shape from mesh
- check geometry -> 723 points et 1454 faces et 0 solid et 3 shell
Les 3 shell c'est à cause de petites porosités qui forment des coques isolées
Il doit être possible de nettoyer ça sous blender, mais on va les filtrer avec:
- Compound filter (filter type Window volume) -> solid 0 shell 1
- Part -> shape builder -> solid from shell (refine shape)
- selectionnes une face du modèle -> create
- check geom sur l'ojet "solid" obtenu -> 1 shell et 1 solid
Le "Solid" obtenu est valide pour le maillage FEM :D

La suite est aisée:
FEM -> Analysis
-sur "Solid" -> gmsh 3D element (12sec sur ma machine)
- Puis une analyse statique avec matériau PLA juste pour voir -> 3sec sur ma machine
Last edited by -alex- on Thu Oct 31, 2019 11:54 pm, edited 1 time in total.
User avatar
-alex-
Veteran
Posts: 1856
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Post by -alex- »

Une image de résultat:
md_ad_mesh_von_mises.png
md_ad_mesh_von_mises.png (152.82 KiB) Viewed 1402 times
md_ad_OK.stl
(71.08 KiB) Downloaded 31 times
User avatar
Forthman
Veteran
Posts: 2650
Joined: Fri Apr 27, 2018 11:23 am
Location: Tarn-et-Garonne (82)

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Post by Forthman »

Quelle persévérance Alex :shock:
Super boulot en tout cas ;)
User avatar
papy
Posts: 245
Joined: Sun Sep 09, 2018 10:00 am
Location: Moselle

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Post by papy »

Bonjour,
Toujours aussi impressionné par Alex.
Chapeau bas.
schupin
Posts: 476
Joined: Sun Jan 21, 2018 1:43 pm

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Post by schupin »

Super chouette Alex !

Il y a un truc que j'ai du rater quelque part : tu mets quoi comme conditions aux limites ?
(ou c'est un calcul harmonique ?)
lena22
Posts: 18
Joined: Tue Sep 10, 2019 8:08 pm

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Post by lena22 »

Merci Alex pour ce super travail!

Je tente de reproduire tes étapes sur mes autres modèles et vous tiens au courant pour connaître la reproductibilité.

En tout cas merci pour ton investissement!
Post Reply