Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2015:09_11

Commit 2015-09-11

Automatisation des procédures de remaillage

Ca y est, on peut maintenant lancer une simulation et la laisser remailler automatiquement en fonction d'un critère de remaillage, jusqu'à ce que l'entièreté de la simulation soit complète (en 2D, le 3D extrudé est en cours…) ! Une page de doc sera réalisée sous peu (càd dans les 15 jours) pour expliquer comment utiliser ces routines (si vous êtes du genre à faire des cas-tests un peu corrects et pas à foutre des global partout, ça devrait être assez simple).

Critères d'arrêt

Jusqu'à présent, une simulation avec remaillage consistait en une suite de simulations que l'on redémarrait avec la commande setNextTime. C'était donc assez fastidieux de préparer une simulation avec de nombreux remaillages, et il fallait savoir à quels instants on devait remailler avant même de lancer la simulation.

A présent, on peut utiliser des critères d'arrêts qui, lorsqu'ils sont vérifiés, vont fermer proprement l'intégration temporelle, écrire un fac (et rendre la main à la procédure automatique de remaillage si on souhaite remailler).

Un premier critère, TimeStopCriterion, permet d'arrêter la simulation à des temps donnés, pour qu'on puisse toujours faire (un peu plus proprement) ce qui était déjà possible (voir apps.remeshing.fullAuto.forgeDynRemeshing).

Un second critère, ValueExtractorStopCriterion, est déjà plus polyvalent. On lui donne un ValueExtractor quelconque et une valeur d'arrêt, et au terme de chaque pas de temps il va tester si le critère est vérifié et terminer l'intégration si besoin (voir apps.remeshing.fullAuto.dCupExtrusionRemeshing). Cela permet d'arrêter la simulation sur base de critères géométriques, de qualité de maillage, de déplacement de part…

Extrusion de la géométrie

Des petites modifs ont été apportées aux routines qui extrudent la géométrie en 3D (requise si on souhaite remailler du 3D extrudé). Pour l'instant, des hash_set étaient utilisés, donc on n'avait aucune cohérence entre les numéros de noeuds avant et après remaillage. Cela posait des problèmes pour, après remaillage, appliquer le déplacement des outils.

A présent, on utilise des objets set ordonnés sur base du UserNo, ce qui garanti d'avoir les mêmes objets dans le même ordre après chaque remaillage.

Remailleurs avec trous

Les remailleurs ont été légèrement modifiés pour pouvoir tenir compte de trous dans la géométrie.

Restructuration des cas-tests de remaillage

Le dossier remeshing2 a été divisé en 4 sous-dossiers :

  • fullAuto : teste la procédure automatique de remaillage, avec rééquilibrage et critères d'arrêts.
  • semiAuto : teste la procédure de remaillage semi-automatique, ce qui correpond à une étape de la procédure automatique (_1 intègre, _2 remaillage, transfert, rééquilibre et redémarre).
  • manual: teste les différentes étapes liées au remaillage une par une (_1 intègre, _2 remaille et transfert, _3 rééquilibre et _4 redémarre).
  • nullRemesh : teste les différentes étapes liées au remaillage une par une dans le cas où le remailleur se contente de copier le maillage.
Si vous avez besoin d'un modèle pour écrire un cas-test avec remaillage, allez voir dans fullAuto. Les cas-tests dans les trois autres dossiers sont là pour tester les méthodos et pas pour servir d'exemple.

Fichiers ajoutés/supprimés

A : oo_meta/MtFem/StopCriterion.cpp
A : oo_meta/MtFem/StopCriterion.h
A : oo_meta/MtFem/TimeStopCriterion.cpp
A : oo_meta/MtFem/TimeStopCriterion.h
A : oo_meta/MtFem/ValueExtractorStopCriterion.cpp
A : oo_meta/MtFem/ValueExtractorStopCriterion.h

R : 

Tests ajoutés/supprimés

A : apps.qs.beamBendingRot
A : apps.qs.beamBendingRotInit
A : apps.remeshing2.fullAuto.dCupExtrusionRemeshing
A : apps.remeshing2.fullAuto.forgeDynRemeshing
A : apps.remeshing2.fullAuto.forgeQSRemeshing
A : apps.remeshing2.manual.beamBendingDyn_1
A : apps.remeshing2.manual.beamBendingDyn_2
A : apps.remeshing2.manual.beamBendingDyn_3
A : apps.remeshing2.manual.beamBendingDyn_4
A : apps.remeshing2.manual.dCupExtrusion_1
A : apps.remeshing2.manual.dCupExtrusion_2
A : apps.remeshing2.manual.dCupExtrusion_3
A : apps.remeshing2.manual.dCupExtrusion_4
A : apps.remeshing2.manual.forgeDyn_1
A : apps.remeshing2.manual.forgeDyn_2
A : apps.remeshing2.manual.forgeDyn_3
A : apps.remeshing2.manual.forgeDyn_4
A : apps.remeshing2.manual.forgeQS_1
A : apps.remeshing2.manual.forgeQS_2
A : apps.remeshing2.manual.forgeQS_3
A : apps.remeshing2.manual.forgeQS_4
A : apps.remeshing2.nullRemesh.beamBendingDyn_1
A : apps.remeshing2.nullRemesh.beamBendingDyn_2
A : apps.remeshing2.nullRemesh.beamBendingDyn_3
A : apps.remeshing2.nullRemesh.beamBendingDyn_4
A : apps.remeshing2.nullRemesh.dCupExtrusion_1
A : apps.remeshing2.nullRemesh.dCupExtrusion_2
A : apps.remeshing2.nullRemesh.dCupExtrusion_3
A : apps.remeshing2.nullRemesh.dCupExtrusion_4
A : apps.remeshing2.nullRemesh.forgeDyn_1
A : apps.remeshing2.nullRemesh.forgeDyn_2
A : apps.remeshing2.nullRemesh.forgeDyn_3
A : apps.remeshing2.nullRemesh.forgeDyn_4
A : apps.remeshing2.nullRemesh.forgeQS_1
A : apps.remeshing2.nullRemesh.forgeQS_2
A : apps.remeshing2.nullRemesh.forgeQS_3
A : apps.remeshing2.nullRemesh.forgeQS_4
A : apps.remeshing2.semiAuto.beamBendingDynRot_1
A : apps.remeshing2.semiAuto.beamBendingDynRot_2
A : apps.remeshing2.semiAuto.beamBendingDynRotInit_1
A : apps.remeshing2.semiAuto.beamBendingDynRotInit_2
A : apps.remeshing2.semiAuto.beamBendingQS_1
A : apps.remeshing2.semiAuto.beamBendingQS_2
A : apps.remeshing2.semiAuto.forgeDyn_1
A : apps.remeshing2.semiAuto.forgeDyn_2
A : apps.remeshing2.semiAuto.forgeDynGF0_1
A : apps.remeshing2.semiAuto.forgeDynGF0_2

R : apps.remeshing2.beamBendingDyn_1
R : apps.remeshing2.beamBendingDyn_2
R : apps.remeshing2.beamBendingDyn_3
R : apps.remeshing2.beamBendingDyn_4
R : apps.remeshing2.beamBendingNullRemeshDyn_1
R : apps.remeshing2.beamBendingNullRemeshDyn_2
R : apps.remeshing2.beamBendingNullRemeshDyn_3
R : apps.remeshing2.beamBendingNullRemeshDyn_4
R : apps.remeshing2.beamBendingQS_1
R : apps.remeshing2.beamBendingQS_2
R : apps.remeshing2.beamBendingQS_3
R : apps.remeshing2.beamBendingQS_4
R : apps.remeshing2.dCupExtrusion_1
R : apps.remeshing2.dCupExtrusion_2
R : apps.remeshing2.dCupExtrusion_3
R : apps.remeshing2.dCupExtrusion_4
R : apps.remeshing2.forgeDyn_1
R : apps.remeshing2.forgeDyn_2
R : apps.remeshing2.forgeDyn_3
R : apps.remeshing2.forgeDyn_4
R : apps.remeshing2.forgeDynGF0_1
R : apps.remeshing2.forgeDynGF0_2
R : apps.remeshing2.forgeDynGF0_3
R : apps.remeshing2.forgeDynGF0_4
R : apps.remeshing2.forgeDynRemesh
R : apps.remeshing2.forgeDynV2_1
R : apps.remeshing2.forgeDynV2_2
R : apps.remeshing2.forgeNullRemeshDyn_1
R : apps.remeshing2.forgeNullRemeshDyn_2
R : apps.remeshing2.forgeNullRemeshDyn_3
R : apps.remeshing2.forgeNullRemeshDyn_4
R : apps.remeshing2.forgeNullRemeshQS_1
R : apps.remeshing2.forgeNullRemeshQS_2
R : apps.remeshing2.forgeNullRemeshQS_3
R : apps.remeshing2.forgeNullRemeshQs_4
R : apps.remeshing2.forgeQS_1
R : apps.remeshing2.forgeQS_2
R : apps.remeshing2.forgeQS_3
R : apps.remeshing2.forgeQS_4

Pierre Joris 2015/09/11

commit/2015/09_11.txt · Last modified: 2016/03/30 15:23 (external edit)