Généralités =========== Principes --------- Il y a trois grandes catégories d’opérande: * Les opérandes appliquant des conditions cinématiques ou chargements de Dirichlet, c’est-à-dire des relations entre les degrés de liberté. Dans AFFE_CHAR_MECA, ces conditions sont appliquées par dualisation (méthode des doubles Lagrange, voir [:external:ref:`R3.03.01 `]); * Les opérandes appliquant des chargements de type «forces» ou chargements de Neumann, appliquées sous forme faible, ce qui implique l’utilisation d’un schéma d’intégration numérique. Certains chargements impliquent la présence d’éléments de bord dans le modèle; * Les opérandes appliquant des chargements spéciaux, y compris de type mixte Dirichlet/Neumann. La plupart des opérandes sont construits sur le même principe: * Spécification du lieu d’application des conditions limites par les mots-clefs standards GROUP_NO, GROUP_MA et parfois SANS_GROUP_NO et SANS_GROUP_MA. * Spécification des composantes affectées, qui se répartissent en trois groupes: * Composantes standards de la grandeur considérée. Il s’agit de la grandeur DEPL_R (ou DEPL_C ou DEPL_F), représentant les degrés de liberté du problème de mécanique * Composantes combinées DNOR et DTAN, qui construisent une combinaison entre les composantes de la grandeur DEPL_R sur des considérations relatives aux tangentes et à la normale; * Composantes en efforts, moments ou pression utilisant soit la grandeur FORC_R (ou FORC_C ou FORC_F), la grandeur PRES_R (ou PRES_C ou PRES_F); * Les composantes affectées doivent être du bon type selon l’opérateur utilisé: * Du type réel pour l’opérateur AFFE_CHAR_MECA; * Du type complexe pour l’opérateur AFFE_CHAR_MECA_C; * Du type fonction (créé notamment par l’un des opérateurs DEFI_FONCTION, DEFI_NAPPE ou DEFI_CONSTANTE) pour l’opérateur AFFE_CHAR_MECA_F. Ceci est vrai à une exception près: l’argument de COEF_MULT pour le mot clé facteur LIAISON_DDL dans AFFE_CHAR_MECA_F est obligatoirement de type réel. Pour les chargements LIAISON_DDL, LIAISON_MAIL, LIAISON_GROUP et LIAISON_UNIF, la liste des composantes applicables est restreinte à certains degrés de liberté. Remarque L'usage du mot-clef GROUP_MA ne présuppose pas que les chargements seront appliqués sur les éléments, c'est aussi pour faciliter la vie des utilisateurs. Par exemple, pour les chargements de Dirichlet, GROUP_MA est utilisé mais on récupère les noeuds qui appartiennent aux éléments ainsi désignés Hypothèses et limitations ------------------------- En plus de la définition des hypothèses et limitations propres à chaque chargement, il existe des hypothèses générales que l’on va rappeler ici. Linéarité des relations cinématiques ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Une relation cinématique permet d’écrire une équation du type: .. math:: {\sum}_{i=1}^{r}{\alpha}_{i}{U}_{i} = \beta Avec :math:`{U}_{i}` la liste des :math:`r` degrés de liberté, :math:`{\alpha}_{i}` les coefficients et :math:`\beta` le second membre. Les relations cinématiques sont des relations **linéaires** , c’est-à-dire: * Elles ne peuvent pas dépendre *a priori* de la déformation ou du mouvement de la structure: elles restent valables uniquement dans l’hypothèse des petites perturbations, sauf mention contraire (voir LIAISON_SOLIDE); * Les coefficients :math:`{\alpha}_{i}` de la relation linéaire ne peuvent pas être des fonctions du temps, car la matrice :math:`B` des conditions de Dirichlet est constante pendant tout le transitoire. Par contre, ces coefficients peuvent être des fonctions de la géométrie **initiale** ; * Le second membre :math:`\beta` peut être une fonction du temps ou de la géométrie **initiale** ; Chargements de Neumann ~~~~~~~~~~~~~~~~~~~~~~ Il est tout à fait possible que certains chargements de Neumann soient non-linéaires, et, en particulier, dépendent de la déformation de la structure. De tels chargements sont communément appelés chargements **suiveurs** . Néanmoins, dans ce cas, le problème devenant non-linéaire, il est nécessaire d’utiliser un opérateur de calcul adéquat comme STAT_NON_LINE ou DYNA_NON_LINE et de préciser que ces chargements sont effectivement considérés comme suiveurs (voir [:external:ref:`U4.51.03 `]). La plupart des chargements de Neumann (sauf FORCE_NODALE) sont appliqués sous forme faible, c’est-à-dire qu’on utilise une formule de quadrature numérique. De plus, on ne peut appliquer simultanément un chargement de Neumann et un chargement de Dirichlet sur le même nœud et dans la même direction. De ce fait, il peut exister une différence entre la solution théorique et la solution éléments finis. Par exemple, sur une structure insuffisamment maillée, il est possible de constater un écart entre la somme des efforts nodaux correspondant au chargement de pesanteur et la valeur du poids réel, l’écart correspondant *grosso modo* au nombre de nœuds encastrés de la structure. Un raffinement du maillage permet de minimiser cette différence. On peut également faire en sorte que les éléments finis, sur lesquels des conditions cinématiques sont imposées, soient d’une taille suffisamment petite pour que leur poids soit négligeable devant celle de la structure totale. Une autre solution est de dédoubler les nœuds sur lesquels la condition cinématique est imposée et de faire par exemple un LIAISON_DDL entre les deux nœuds ou d’utiliser des éléments discrets. Disponibilités des chargements suivant le type ---------------------------------------------- Les chargements disponibles ne sont pas forcément applicables dans les trois opérateurs AFFE_CHAR_MECA. Voici la liste des disponibilités suivant le type de l’opérateur: .. csv-table:: "**Mot-clef**", "**AFFE_CHAR_MECA**", "**AFFE_CHAR_MECA_C**", "**AFFE_CHAR_MECA_F**" "**ARETE_IMPO**", "OUI", "NON", "NON" "**CHAMNO_IMPO**", "OUI", "NON", "NON" "**DDL_IMPO**", "OUI", "OUI", "OUI" "**EFFE_FOND**", "OUI", "NON", "OUI" "**EVOL_CHAR**", "OUI", "NON", "NON" "**FACE_IMPO**", "OUI", "NON", "OUI" "**FLUX_THM_REP**", "OUI", "NON", "OUI" "**FORCE_ARETE**", "OUI", "NON", "OUI" "**FORCE_CONTOUR**", "OUI", "NON", "OUI" "**FORCE_COQUE**", "OUI", "NON", "OUI" "**FORCE_COQUE_FO**", "OUI", "NON", "NON" "**FORCE_ELEC**", "OUI", "NON", "NON" "**FORCE_FACE**", "OUI", "NON", "OUI" "**FORCE_INTERNE**", "OUI", "NON", "OUI" "**FORCE_NODALE**", "OUI", "NON", "OUI" "**FORCE_POUTRE**", "OUI", "OUI", "OUI" "**FORCE_SOL**", "OUI", "NON", "NON" "**FORCE_TUYAU**", "OUI", "NON", "OUI" "**LIAISON_CHAMNO**", "OUI", "NON", "NON" "**LIAISON_ CYCL**", "OUI", "NON", "NON" "**LIAISON_DDL**", "OUI", "OUI", "OUI" "**LIAISON_ ELEM**", "OUI", "NON", "NON" "**LIAISON_GROUP**", "OUI", "NON", "OUI" "**LIAISON_INTERF**", "OUI", "NON", "NON" "**LIAISON_MAIL**", "OUI", "NON", "NON" "**LIAISON_OBLIQUE**", "OUI", "NON", "OUI" "**LIAISON_RBE3**", "OUI", "NON", "NON" "**LIAISON_SOLIDE**", "OUI", "NON", "NON" "**LIAISON_UNIF**", "OUI", "NON", "OUI" "**ONDE_FLUI**", "OUI", "NON", "NON" "**ONDE_PLANE**", "NON", "NON", "OUI" "**PESANTEUR**", "OUI", "NON", "NON" "**PRE_EPSI**", "OUI", "NON", "OUI" "**PRE_SIGM**", "OUI", "NON", "NON" "**PRES_REP**", "OUI", "NON", "OUI" "**RELA_CINE_BP**", "OUI", "NON", "NON" "**ROTATION**", "OUI", "NON", "NON" "**VECT_ASSE**", "OUI", "NON", "NON" "**VITE_FACE**", "OUI", "NON", "OUI" Messages d’erreur possibles --------------------------- Il arrive parfois qu’une commande de calcul mécanique s’arrête en erreur fatale lors du calcul des seconds membres élémentaires dus aux chargements définis dans la commande. Lorsque le code s’arrête pendant ces calculs élémentaires, une information importante du message d’erreur est le nom de l’option de calcul demandée par le code. Le nom de cette option est en général inconnue de l’utilisateur et il lui est donc difficile de comprendre le message. Dans le tableau ci-dessous, on établit une correspondance entre des mots-clefs facteurs et les noms d’option de calcul qu’ils activent: .. csv-table:: "**Mot-clef**", "**Nom de l’option**" "**EVOL_CHAR**", "CHAR_MECA_PRES_R CHAR_MECA_FR3D3D CHAR_MECA_FR2D2D CHAR_MECA_FR2D3D CHAR_MECA_FR1D2D" "**PESANTEUR**", "CHAR_MECA_PESA_R" "**ROTATION**", "CHAR_MECA_ROTA_R" "**PRE_SIGM**", "FORC_NODA" "**FORCE_NODALE**", "CHAR_MECA_FORC_R CHAR_MECA_FORC_F" "**FORCE_ARETE**", "CHAR_MECA_FR1D3D CHAR_MECA_FF1D3D" "**FORCE_CONTOUR**", "CHAR_MECA_FR1D2D CHAR_MECA_FF1D2D" "**FORCE_FACE**", "CHAR_MECA_FR2D3D CHAR_MECA_FF2D3D" "**FORCE_INTERNE**", "CHAR_MECA_FR2D2D CHAR_MECA_FR3D3D CHAR_MECA_FF2D2D CHAR_MECA_FF3D3D" "**PRES_REP**", "CHAR_MECA_PRES_R CHAR_MECA_PRES_F" "**EFFE_FOND**", "CHAR_MECA_EFON_R CHAR_MECA_EFON_F" "**PRE_EPSI**", "CHAR_MECA_EPSI_R CHAR_MECA_EPSI_F" "**FORCE_ELEC**", "CHAR_MECA_FRELEC" "**FORCE_POUTRE**", "CHAR_MECA_FR1D1D CHAR_MECA_FC1D1D CHAR_MECA_FF1D1D" "**FORCE_TUYAU**", "CHAR_MECA_PRES_R CHAR_MECA_PRES_F" "**FORCE_COQUE**", "CHAR_MECA_FRCO2D CHAR_MECA_FRCO3D CHAR_MECA_FFCO2D CHAR_MECA_FFCO3D" "**FLUX_THM_REP**", "CHAR_MECA_FLUX_R CHAR_MECA_FLUX_F" Choix des unités ---------------- Pour les chargements de Neumann, les forces sont à fournir : * par unité de maillage pour les efforts linéiques, * par unité de maillage au carré pour les efforts surfaciques, * et par unité de maillage au cube pour les efforts volumiques, en cohérence avec la définition des propriétés matériaux (module d’Young par exemple). Dans le cas axisymétrique, les forces à fournir sont ramenées à un secteur de :math:`1` radian (diviser le chargement réel par :math:`2\pi` ). Cas des grandes transformations ------------------------------- Problématique ~~~~~~~~~~~~~ Lorsqu'on applique un chargement de Dirichlet sur une structure en grandes transformations (grands déplacements, grandes rotations), il faut veiller à ce que ce chargement soit applicable lorsque l'hypothèse des petites perturbations n'est plus vérifiée. C'est naturellement le cas des chargements suivants: * DDL_IMPO mais si on utilise AFFE_CHAR_MECA_F, il faut le faire avec des fonctions qui représentent le déplacement imposé **réel** (curviligne en général). Si on ne le fait pas, l’interpolation en temps nous fait passer par des états intermédiaires «faux»; * LIAISON_MAIL + TYPE_RACCORD=’MASSIF’; * LIAISON_UNIF; * LIAISON_OBLIQUE; * LIAISON_DDL; * LIAISON_CHAM_NO; * CHAMNO_IMPO; * LIAISON_SOLIDE à condition d'appliquer l'hypothèse d'un chargement suiveur. Par contre, pour les chargements suivants, l’hypothèse des grandes transformations n'est pas applicable et provoquera des résultats faux: * FACE_IMPO avec DNOR=f(t): la «normale» change en grandes rotations; * LIAISON_MAIL + TYPE_RACCORD=’COQUE_MASSIF’et LIAISON_MAIL + 'MASSIF_COQUE'; * LIAISON_ELEM; * LIAISON_RBE3. Chargements suiveurs ~~~~~~~~~~~~~~~~~~~~ Pour les opérateurs non-linéaires (STAT_NON_LINE et DYNA_NON_LINE), certains chargements peuvent être «suiveurs», c’est-à-dire que leur application dépend du déplacement et donc change à chaque itération de Newton. Il est alors nécessaire que l’utilisateur le précise par l’opérande TYPE_CHARGE dans le mot-clef facteur EXCIT de ces commandes (voir [:external:ref:`U4.51.03 `]). Le fait de préciser que le chargement est suiveur ajoute parfois une contribution dans la matrice de rigidité (voir par exemple [:external:ref:`R3.03.04 `]) et peut la rendre non-symétrique. Pour le chargement EVOL_CHAR, il n’est pas nécessaire de préciser que les chargements sont suiveurs, ils le sont automatiquement par défaut. Le fait de le préciser va simplement activer la contribution matricielle supplémentaire et donc agir sur la vitesse de convergence (et non sur la précision du résultat). Le chargement EFFE_FOND en mode suiveur est une approximation de la réalité. Il est activé car il dépend simultanément d'un chargement de type PRES_REP. Par contre, si, dans la zone où est appliquée le chargement EFFE_FOND, les mouvements ne sont pas négligeables (variation de la section tel qu'ovalisation ou rotation non-négligeable qui modifie la normale), on commet une erreur. Désignation des entités topologiques d’affectation des chargements ------------------------------------------------------------------ De façon générale, lorsque les entités sur lesquelles des valeurs doivent être affectées sont définies: * Sur un seul nœud: on utilise l’opérande GROUP_NO qui ne doit évidemment contenir qu’un seul nœud; * Sur une liste de nœuds: on peut utiliser l’opérande GROUP_NO mais aussi l’opérande GROUP_MA ou TOUT=’OUI’pour affecter sur tout le maillage; * Sur une seule maille: on utilise l’opérande GROUP_MA qui ne doit évidemment contenir qu’une seule maille; * Sur une liste de mailles: on peut utiliser l’opérande GROUP_MA ou TOUT=’OUI’ pour affecter sur tout le maillage; Certains mots-clefs ont besoin de définir plusieurs entités topologiques (des groupes de nœuds en vis-à-vis par exemple), dans ce cas, les noms peuvent varier légèrement (GROUP_NO_2, GROUP_MA_ESCL, etc.). Il est possible dans la plupart des mots clefs d’exclure des nœuds ou des mailles à l’aide de mot-clefs de type SANS_* . Cette fonctionnalité évite de redéfinir des groupes dans votre maillage ou dans la commande [:ref:`DEFI_GROUP `]s. Règles de surcharge et de rémanence ----------------------------------- Pour définir le domaine d’affectation le plus simplement possible, on utilise la règle de surcharge définie dans le document [:ref:`U1.03.00 `] dont on rappelle les principes: * Les affectations se font en superposant les effets des différents chargements; * En cas de conflit, le dernier chargement l’emporte sur les précédents; Si par exemple, l’utilisateur fait: .. code-block:: text FORCE_FACE=_F(GROUP_MA=’G1’,FX= 12 ), PRES_REP=_F(GROUP_MA=’G1’,PRES= 13 ) Et si la normale pour :math:`{G1}` est orientée selon :math:`X` , alors tout se passera comme si on avait fait: .. code-block:: text FORCE_FACE=_F(GROUP_MA=’G1’, FX= 25) La règle de surcharge précédente doit être complétée par une autre règle pour préciser ce qui se passe lorsqu’on peut affecter plusieurs quantités pour chaque occurrence d’un chargement. Soit par exemple: .. code-block:: text FORCE_INTERNE=( _F(TOUT = ’OUI’, FX = 1. ), _F(GROUP_MA = ’GM1’, FY = 2. ), ) La règle de surcharge nous dit que la deuxième occurrence de FORCE_INTERNE surcharge la première. Mais que vaut FX sur une maille appartenant à GM1? A-t-il été effacé par la deuxième occurrence? Si la seule règle de surcharge est appliquée, FX n’est pas défini sur GM1. On utilise donc une deuxième règle dite de rémanence qui précise que lors de l’application de la règle de surcharge sur des occurrences, on conserve les composantes qui ne sont pas surchargées. En appliquant la règle de rémanence sur l’exemple, FX conserve la valeur affectée au préalable. Tous les éléments du modèle ont donc une valeur pour FX et les éléments de GM1 ont une valeur à la fois pour FX et FY Définition des repères ---------------------- La plupart des chargements sont définis dans le repère **global** du maillage, sauf: * Pour les éléments de structure; * Pour les mots-clefs DNOR, DTAN et les chargements de type pression. Dans ce cas, il est nécessaire de définir normales et tangentes, voire éventuellement d’utiliser la commande [:ref:`MODI_MAILLAGE `]; * Quand le mot-clef ANGL_NAUT est utilisable; Dans les autres cas, il est généralement possible de définir des fonctions de l’espace. Normales et tangentes aux mailles ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ On donne ici la définition standard des normales et des tangentes suivant le type de maille de bord: * Pour les éléments segments en 2D, la tangente est celle définie par le segment orienté par ses deux premiers nœuds, la normale :math:`\underline{n}` est alors telle que :math:`(\underline{n},\underline{t})` forment un repère direct .. figure:: images/100002E80000089400000457B8CE41B364143DAC.svg :width: 200 :height: 150 Définition de la normale dans le cas bi-dimensionnel .. figure:: images/10000386000008AF000007A62A00C6CBF19E3838.svg :width: 200 :height: 150 Définition de la tangente dans le cas bi-dimensionnel * Pour les éléments triangles ou quadrangles en 3D, l’orientation de la normale :math:`\underline{n}` est celle correspondant au sens direct de la description de la maille. .. figure:: images/1000076C000019D700000707B9DB2381FC2441CD.svg :width: 300 :height: 200 Définition de la normale dans le cas tri-dimensionnel Si DNOR (ou DTAN) est spécifié, la normale (ou la tangente) sur un nœud est la moyenne des normales ou des tangentes des mailles sur lesquelles sont affectées les conditions limites et qui ont ce nœud en commun (sauf pour les éléments quadratiques courbes où la normale est correctement calculée en tout point). .. figure:: images/100004A2000010BE000006ED6AE0FD3CA03A9B57.svg :width: 200 :height: 100 Lissage des normales L’opérateur MODI_MAILLAGE permet de s’assurer de la continuité de l’orientation de la normale aux bords des éléments massifs de milieu continu. Cas des éléments de structure ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les éléments de structure (poutres, plaques et coques) ont leur propre repère **local** dont la définition est donnée dans la documentation de la commande [:ref:`AFFE_CARA_ELEM `]. Définition d’un repère par les angles nautiques ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Certains chargements offrent la possibilité de donner leur direction d’application en utilisant des angles nautiques dont on rappelle ici la définition. Les angles nautiques :math:`\alpha`, :math:`\beta` , :math:`\gamma` fournis en degrés, sont les angles permettant de passer du repère global de définition des coordonnées des nœuds :math:`(P,X,Y,Z)` au repère local :math:`(P,{X}_{3},{Y}_{3},{Z}_{3})`. Celui-ci est obtenu par trois rotations: * Une rotation d’angle :math:`\alpha` autour de :math:`Z`, transformant :math:`(XYZ)` en :math:`({X}_{1}{Y}_{1}{Z}_{1})` avec :math:`{Z}_{1}\equiv Z`;` .. figure:: images/10000000000001150000010F926B712830D3F866.png :width: 200 :height: 150 Définition de l'angle :math:`\alpha` * Une rotation d’angle :math:`\beta` autour de :math:`{Y}_{1}`, transformant :math:`({X}_{1}{Y}_{1}{Z}_{1})` en :math:`({X}_{2}{Y}_{2}{Z}_{2})` avec :math:`{Y}_{2}\equiv {Y}_{1}`; .. figure:: images/100000000000012500000107BF6F9ECA7DAA2232.png :width: 200 :height: 150 Définition de l'angle :math:`\beta` ( l’angle de rotation :math:`\beta` est négatif) * Une rotation d’angle :math:`\gamma` autour de :math:`{X}_{2}`, transformant :math:`({X}_{2}{Y}_{2}{Z}_{2})` en :math:`({X}_{3}{Y}_{3}{Z}_{3})` avec :math:`{X}_{3}\equiv {X}_{2}`; .. figure:: images/10000000000000E4000000D535841AC46D6286CE.png :width: 200 :height: 150 Définition de l'angle :math:`\gamma` Le repère local est: :math:`({X}_{3}{Y}_{3}{Z}_{3})`. .. figure:: images/10000000000001C5000001A617B17BAA9B5DCDBE.png :width: 440 :height: 409 Représentation des repères global et local