===== Commit 2015-10-23=====
==== Le "Friction Stir Welding" revisité ====
Ca y est, enfin, après avoir enlevé plus de mines qu'il n'y en a entre Israël et la Syrie, le FSW tourne avec mes procédures !
Vous trouverez donc dans "apps" un dossier "welding2" (pour ne pas changer les conventions). Il contient un dossier "tools" où se trouvent les définitions des pins, des plaques, des matériaux et du procédé, ainsi que deux scripts pour lancer le cas de la pin triangulaire en 2D et en 3D (d'autres tests suivront ultérieurement).
**__ATTENTION__** (je ne saurai pas insister assez), le nettoyage des cas-tests n'a pas été fait jusqu'au bout (parce que cela nécessiterait de cliquer sur "new document" et de tout réécrire...).
J'ai déjà pas mal simplifié, mais ça reste quand même un bon gros marais. Si jamais Romain ou Luc parviennent à trouver un pigeon pour se plonger la dedans, qu'il soit prévenu...
(Si le pigeon n'est pas très subtil, ce que j'essaie de dire c'est : "RUN AWAY BEFORE IT'S TOO LATE, YOU FOOL !)"
=== Partial Interaction ===
Un des problèmes rencontrés est le fait que, pour réduire le temps du transfert, on souhaite transférer les données en utilisant la méthode rapide sur la partie de la pièce où le maillage est simplement copié, et la méthode plus précise sur l'anneau qui lui est remaillé. Comme le transfert est réalisé sur des interactions, cela nécessite de définir des interactions différentes sur ces deux parties. Cependant, l'ALE aussi est réalisé sur base d'interactions, et on souhaite évidemment que la matière soit convectée à travers l'entièreté de la pièce, donc il faut n'utiliser qu'une seule interaction.
Par l'absurde, on arrive donc à démontrer qu'il est impossible de combiner l'ALE et le transfert de données de façon efficace (c'est normal, c'est une simulation très compliquée donc ça doit prendre beaucoup de temps ! :-P ). La solution qui a été adoptée consiste en la définition d'une "PartialInteraction", qui dérive de "FieldApplicator" et est définie de la même façon, si ce n'est qu'elle n'a aucun rôle lors de l'intégration temporelle et sert juste à réaliser le transfert de données.
Ces "PartialInteractions" sont stockées dans un "PartialInteractionSet" qui est lui-même dans Metafor (désolé Luc...).
=== Divers ===
mtGeoHexaBuilder::checkElements a été modifié pour calculer le jacobien sur la conf courante et non plus l'initiale (peut-être y a-t-il d'autres builders à modifier?).
==== Modification de la procédure automatique de remaillage ====
La procédure se charge maintenant de déterminer le bon workspace.
Les boutons de Gaëtan (pause, save fac, next step...) sont maintenant utilisables en remaillage.
Les TSC ne sont plus affichés à la fin du rééquilibrage, uniquement au terme de l’entièreté de la procédure. Le nombre d'ités total n'est par contre pas correct, à investiguer...
La possibilité de transférer par "PartialInteraction" a enfin été ajoutée
==== Modifications diverses ====
Des tabulations on été remplacées par des espaces dans plusieurs cas-tests.
Le calcul des erreurs due au transfert a été commentarisé car ça me semble peu utile de calculer ça à chaque fois. Si quelqu'un n'est pas d'accord, je veux bien mettre une option s'il me le demande __gentiment__ avant fin de journée :-).
Le nombre maximal d'itérations mécaniques par step était fixé en dur à 50. J'ai éliminé cette limite et l'ai remplacée par un warning dès qu'on dépasse 10 ités.
Si un critère d'arrêt était vérifié lors du dernier step de l'intégration temporelle, Metafor sortait sur ce critère au lieu du "successful run" attendu. Ceci est maintenant résolu.
Les critères d'arrêts ont aussi été réécrits un peu plus proprement.
==== Cas-tests ====
Les cas-tests "de base" ont été dupliqués/déplacés depuis les différents dossiers (ale, qs..) où ils se trouvaient et regroupés dans remeshing2.baseTests. Les tests forge, dCup... sont donc identiques à 90%, mais comme ça ils peuvent être modifiés indépendamment sans devoir chaque fois rajouter des if['ale'], if['remeshing']... En outre, cela évite les jeux de pistes compliqués pour retrouver les cas-tests de base, tout est rassemblé dans remeshing2.
J'ai aussi ajouté quelques tests, notamment pour avoir des cas-tests très simples pour guider des gens dans l'utilisation de ma procédure :
* cont2ValueExtractorRemeshing
* cont2TimeRemeshing
* cont2TimeDensitiesRemeshing
et aussi pour la tester en 3D extrudé :
* backwardExtrusionRemeshing
* backwardExtrusion3DRemeshing
* beamBending3DRemeshing.
===== Fichiers ajoutés/supprimés =====
A : mtElements.PartialInteraction.cpp
A : mtElements.PartialInteraction.h
R :
===== Tests ajoutés/supprimés =====
A : apps.remeshing2.baseTests.backwardExtrusion
A : apps.remeshing2.baseTests.backwardExtrusion3D
A : apps.remeshing2.baseTests.beamBending
A : apps.remeshing2.baseTests.beamBending3D
A : apps.remeshing2.baseTests.beamBendingRot
A : apps.remeshing2.baseTests.beamBendingRotInit
A : apps.remeshing2.baseTests.cont2
A : apps.remeshing2.baseTests.dCupExtrusion
A : apps.remeshing2.baseTests.forge
A : apps.remeshing2.fullAuto.backwardExtrusion3DRemeshing
A : apps.remeshing2.fullAuto.backwardExtrusionRemeshing
A : apps.remeshing2.fullAuto.beamBending3DRemeshing
A : apps.remeshing2.fullAuto.cont2ValueExtractorRemeshing
A : apps.remeshing2.fullAuto.cont2TimeRemeshing
A : apps.remeshing2.fullAuto.cont2TimeDensitiesRemeshing
A : apps.welding2.tools.fswCntToolPlateALERezoner
A : apps.welding2.tools.fswPlateMaterial
A : apps.welding2.tools.fswProcess_2D
A : apps.welding2.tools.fswProcess_3D
A : apps.welding2.tools.fswToolMaterial
A : apps.welding2.tools.fswToolMesh
A : apps.welding2.tools.fswToolMeshNoCircular
A : apps.welding2.fswRemeshing2DTriangular
A : apps.welding2.fswRemeshing3DTriangular
R : apps.ale.dCupExtrusion2
R : apps.ale.forge2
R : apps.qs.beamBending
R : apps.qs.beamBendingRot
R : apps.qs.beamBendingInit
--- //[[pjoris@ulg.ac.be|Pierre Joris]] 2015/10/23 //