Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2017:11_26

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

commit:2017:11_26 [2017/11/26 18:36] – created wauteletcommit:2017:11_26 [2017/11/26 18:52] (current) wautelet
Line 1: Line 1:
 ===== Commit 2017-11-26 ====== ===== Commit 2017-11-26 ======
  
-Ce commit est pour nettoyer les éléments de contact et les opérateurs de projection.+Ce commit est pour nettoyer les éléments de contact et les opérateurs de projection dans le but de rapatrier mes derniers développements. On observe un gain en mémoire et un gain en temps CPU.
  
 +===== ContactElement =====
  
-===== mtGeoSkinProjectionSelector =====+La plupart des std::vector existant sont définis sous forme de pointer pour ne pas assigner des variables par défaut vide et non utilisée au cours du calcul.
  
-Dans le cadre d'un entité maître du type mtGeoMultiProjSkin, la normale n'est pas tout continue si on passe d'une side à l'autre sur cette entité. Il faut dès lors parmi toutes les projections admissibles, retenir les projections pertinentes et si besoin appliquer un correctif de la normale, si nous avons une projection sur un coin, sur un bord ou une double projection. Je vous fais grâce du raisonnement que j'ai suivi pour obtenir une projection finale car l’entièreté du code source est documenté sur ce sujet là et nous fonctionnons sous forme de filtre, c'est à dire que l'on élimine au fur et à mesure les projections admissibles que l'on avance dans l'algorithme pour au final avoir qu'une seule projection ou deux projections admissibles à partir desquelles on traite les cas particuliers. +La variable exclusionList pour l'auto-contact est stockée désormais l'élément de contact et certaines variables également pour le contact avec aire nodaleSauf changement de topologie (rupture des éléments)ces variables ne changent pas au cours du calcul.
-Je tiens à ajouter que ceci n'est pas encore parfait car il manque des types de projection en 3D, qui sont des projections dites triples pour capter la courbure locale de la surface correctementsinon on oscille entre deux paires de projection possible à travers les itérations de NR ...    +
-  +
-<note important> +
-Par défaut, l’entièreté des cas tests tourne avec les nouvelles versions des sélecteur de projection en 2D/3D. +
-On peut si besoin activer l'ancienne version par la procédure définie ci-dessus. +
-</note>+
  
-<code> +===== ProjectionOperator =====
-ci Rd|Dd|ScContactInteraction(1) +
-ci.setUseClassicalProjectionSelector(True|False) +
-</code>+
  
-===== Traitement des projection double en 3D =====+J'ai empêché la construction par copy et l'assignement operator (DISABLE_COPY).
  
-J'ai fait une modification sur le calcul de la position du nœud esclave sur le segment de droite commun aux deux sides adjacentes lors d'une projection double en 3D. Ce calcul est plus robuste que la méthodologie proposée précédente (La fonction giveCornerEdgeProjection() au lieu de la fonction  giveEdgeProjectionOnPlane()). Par la même occasion, j'ai adapté le calcul de la matrice de raideur tangente analytique de contact pour ces cas de figure. +===== ProjectionState =====
  
-===== mtGeoProjectionOperator ===== +Représentation du std::vector<intsecondarySegmentNumber sous forme de pointer.
- +
-J'ai activé le test des triangles dans le cas ou la side contient une surface est plane et un wire quelconque pour déterminer l'appartenance d'un point lors de l'opération de projection. +
- +
-===== apps.biomec.longBone.boneRepairWithRod ===== +
- +
-Après inspection du cas test biomec, j'ai constaté que les surfaces de contact étaient très mal définies pour l'interaction de contact entre l'os et la barre il y a des sides à l'intérieur de l'os (qui partage deux éléments finis volumiques). Pour palier au problème, il faudrait ajouter une filtre au sélecteur de noeuds lors de l'ajout dans un groupe, pour conserver par exemple que les nœuds sur une peau extérieure. +
- +
-===== Verbose pour le contact ===== +
- +
-J'ai ajouté deux types de verbose pour le contact afin de débugger en version release : +
-<code> +
-    prpCont = ElementProperties (Contact2D|3DElement) +
-    prpCont.put(VERBOSESTIFFNESSCONTACT, True|False) +
-    prpCont.put(VERBOSEDECIDECONTACT, True|False) +
-</code> +
- +
-Le premier verbose permet d'afficher la matrice de raideur tangente de contact (numérique ou analytique). +
-Le second verbose permet d'afficher le statut et le type de la projection de contact.  +
- +
-===== Visualisation pour le contact ===== +
- +
-La profondeur maximale (Tree level dans la fenêtre ContactTool de BWin) est calculée de manière globale pour toutes les hiérarchies de volume frontière pour la détection globale de contact.  +
- +
-L'affichage d'un outil de contact maillé pour une interaction de contact rigide-déformable a été implémentée et on peut le visualiser sans problème. +
- +
-===== Information sur une interaction de contact ===== +
- +
-J'ai enrichi l'affichage d'information sur le nombre de nœuds en contact, en contact collant ou glissant sur une interaction de contact, ainsi que le nombre de nœuds dans chaque type de configuration de contact. Ceci peut être utile pour comprendre la raison pour laquelle la procédure de Newton Raphson ne converge pas. +
- +
-<code> +
-ci = Rd|Dd|ScContactInteraction(1) +
-ci.setShowInformation(True|False) +
-</code>+
  
-Si besoin, de plus d'informations sur le contact, il suffit d'enrichir la classe ContactInteractionInfo. 
  
 ===== Fichiers ajoutés/supprimés ====== ===== Fichiers ajoutés/supprimés ======
  
 <code> <code>
-[a]:mtGeo/mtGeoSkinProjectionSelector.inl +[a]:
-[a]:mtGeo/mtGeoSkinProjectionSelector.cpp +
-[a]:mtGeo/mtGeoSkinProjectionSelector.h +
-[a]:mtContact/ContactInteractionInfo.h +
-[a]:mtContact/ContactInteractionInfo.cpp+
 [r]: [r]:
 </code> </code>
commit/2017/11_26.1511717797.txt.gz · Last modified: 2017/11/26 18:36 by wautelet

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki