======= Commit 2016-07-01 ======= ======Aire de collage====== =====Motivations===== Comme annoncé dans nos perspectives du [[http://metafor.ltas.ulg.ac.be/dokuwiki/commit/01_05|Commit du 5 Janvier 2016]], nous avons poursuivi le développement de nos éléments de collage par ressort avec la prise en compte de l'aire de collage nodale. En d'autres termes, il est désormais possible de pondérer les forces internes développées dans les éléments de collage par l'aire de collage nodale. Cette prise en compte de l'aire de collage dans le calcul des forces présente deux atouts : * Elle permet une possible amélioration de la convergence. * Elle offre une indépendance de la raideur de collage vis-à-vis de la densité du maillage des entités à coller. =====Implémentation===== Dans le code source, nous avons ajouté la contribution de la pondération de l'aire de collage nodale dans les expressions du vecteur des forces internes et de la matrice de raideur tangente. A titre de rappel, la force de ressort s'écrit : \begin{equation} \boldsymbol{F}_{\text{spring}} = f \boldsymbol{e} \label{eq:Fspring} \end{equation} où $f$ et $\boldsymbol{e}$ sont respectivement l'amplitude et le vecteur directeur de norme unitaire de la force de rappel du ressort. En toute généralité, l'amplitude de la force $f$ s'écrit : \begin{equation} f = k \left( \left\| \boldsymbol{X}_{\text{slave}} - \boldsymbol{X}_{\text{ref}} \right\| - l_0 \right) \label{eq:force} \end{equation} où $k$, $\boldsymbol{X}_{\text{ref}}$ et $l_0$ sont respectivement la raideur de ressort, les coordonnées d'un noeud de référence et la longueur de repos. Si nous pondérons l'amplitude de la force de ressort par l'aire de collage nodale $A_s$, l'Equation ci-dessus devient : \begin{equation} f = A_s k \left( \left\| \boldsymbol{X}_{\text{slave}} - \boldsymbol{X}_{\text{ref}} \right\| - l_0 \right) \label{eq:forceWithArea} \end{equation} La matrice de raideur tangente élémentaire devient : \begin{equation} \boldsymbol{K}_e^{T} = A_s \begin{bmatrix} \boldsymbol{K}_{11} & -N_1 \boldsymbol{K}_{11} & -N_2 \boldsymbol{K}_{11} & \dots & -N_n \boldsymbol{K}_{11} \\ -N_1 \boldsymbol{K}_{11} & N_1^2 \boldsymbol{K}_{11} & N_1 N_2 \boldsymbol{K}_{11} & \dots & N_1 N_n \boldsymbol{K}_{11} \\ -N_2 \boldsymbol{K}_{11} & N_1 N_2 \boldsymbol{K}_{11} & N_2^2 \boldsymbol{K}_{11} & \dots & N_2 N_n \boldsymbol{K}_{11} \\ \vdots & \vdots & \vdots & \ddots & \vdots\\ -N_n \boldsymbol{K}_{11} & N_1 N_n \boldsymbol{K}_{11} & N_2 N_n \boldsymbol{K}_{11} & \dots & N_n^2 \boldsymbol{K}_{11} \end{bmatrix} \label{eq:KT} \end{equation} avec : \begin{equation} \boldsymbol{K}_{11} = - k \boldsymbol{I} \label{eq:dfdXslave} \end{equation} Concernant l'évaluation de l'aire de collage $A_s$ au noeud esclave, nos développements ont consisté à ce que les éléments de collage par ressort reprennent à leur compte les différentes méthodes de calcul d'aire déjà utilisées pour les éléments de contact. Pour ce faire, les propriétés des éléments de collage par ressort ont été enrichies par des énumérations analogues à celles des éléments de contact. Toutes les fonctionnalités sur les méthodes d'évaluation de l'aire de collage sont celles des éléments de contact. Elles sont renommées spécifiquement pour les éléments de collage par ressort. Ces nouvelles propriétés sont : enum StickingArea { SA_NO = 0, SA_ONCE = 1, SA_ONCEPERSTEP = 2, SA_ONCEPERITE = 3 }; enum StickingAreaBoundarySelection { SABS_EXTERNAL = 0, SABS_INTERNAL = 1 }; enum StickingAreaMethod { SAM_GEOPHYS = 0, SAM_GEOREF = 1, SAM_CONS = 2 }; enum StickingAreaMethodDim { SAMD_1D = 0, SAMD_2D = 1 }; L'aire de collage peut être évaluée à la configuration initiale uniquement (''SA_ONCE''), à chaque début de pas de temps (''SA_ONCEPERSTEP'') ou bien à chaque itération (''SA_ONCEPERITE''). Trois méthodes d'évaluation de l'aire de collage sont accessibles : * ''SAM_GEOPHYS'' : calcul de l'aire basé sur une approche géométrique dans l'espace physique (choix par défaut). * ''SAM_GEOREF'' : calcul de l'aire basé sur une approche géométrique dans l'espace de référence. * ''SAM_CONS'' : calcul de l'aire basé sur une approche énergétiquement consistante. Pour les éléments 3D, il est possible d'évaluer l'aire de collage à partir de courbes incidentes au noeud esclave (''StickingAreaMethodDim = SAMD_1D'') pour un collage d'une courbe ou d'un contour esclave sur une face maître par exemple. Pour les éléments 3D, il est également possible de combiner aire de collage évaluée à partir de faces incidentes pour les noeuds esclaves intérieurs d'une face esclave et aire de collage évaluée à partir de courbes incidentes pour les noeuds esclaves de frontière. De manière analogue aux interactions de contact, l'entité géométrique esclave frontière se définit dans le jeu de données par la méthode ''setGeoSlaveBoundary(mtGeo::GObject &_geoSlaveBoundary)''. Les classes ''Sticking2DElement'' et ''Sticking3DElement'' ont été ajoutées. Elles comprennent des routines de direction nécessaires au calcul de l'aire de collage, en reprenant quasi exactement les routines déjà implémentées dans les éléments de contact. Nous avons ainsi une duplication du code entre nos librairies ''mtContact'' et ''mtElements''. =====Batterie===== Des cas-tests sont ajoutés et modifiés dans notre batterie pour tester les nouvelles fonctionnalités et les éléments de collage soumis sous traction. Avec l'option d'évaluation de l'aire de collage à chaque itération (''SA_ONCEPERITE''), nous avons une itération supplémentaire par pas de temps en comparaison avec les autres options (pas d'aire de collage, évaluation de l'aire de collage sur la configuration initiale et mise à jour de l'aire de collage à chaque pas de temps). Nous avons une itération supplémentaire par pas de temps peu importe que la matrice de raideur tangente soit numérique ou analytique. ===== Fichiers ajoutés/supprimés ===== Added : oo_meta\mtElements\sticking\SlaveBoundary.h Added : oo_meta\mtElements\sticking\Sticking2DElement.h/.cpp Added : oo_meta\mtElements\sticking\Sticking3DElement.h/.cpp Deleted : oo_meta\mtElements\sticking\StickingElement.cpp ===== Tests ajoutés/supprimés ===== Added : oo_meta\apps\sticking\monos2dSAOncePerIte.py Added : oo_meta\apps\sticking\monos3dClearanceTY.py Added : oo_meta\apps\sticking\monos3dClearanceTYNumStiff.py Added : oo_meta\apps\sticking\monos3dClearanceTYSANo.py Added : oo_meta\apps\sticking\monos3dClearanceTYSAOncePerIte.py Added : oo_meta\apps\sticking\monos3dClearanceTYSAOncePerIteNumStiff.py Added : oo_meta\apps\sticking\monos3dClearanceTYSAOncePerStep.py Added : oo_meta\apps\sticking\monos3dClearanceTYSideWire.py Added : oo_meta\apps\sticking\monos3dClearanceTYWire.py --- //[[Y.Crutzen@ulg.ac.be|Yanick Crutzen]] 2016/07/01 //