===== 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 --- //[[pjoris@ulg.ac.be|Pierre Joris]] 2015/09/11 //