u4.61.21 Macro-commande ASSEMBLAGE#
Syntaxe#
Détail de la syntaxe
/ matr_asse_depl_c
/ matr_asse_depl_r
/ matr_asse_pres_c
/ cham_no
/ nume_ddl
/ matr_asse_temp_r = ASSEMBLAGE(
◆ MODELE = modele,
◇ CHAM_MATER = cham_mater,
◇ INST = float,
◇ CARA_ELEM = cara_elem,
◇ CHARGE = char_ther / char_meca / char_acou,
◇ CHAR_CINE = char_cine_acou / char_cine_ther / char_cine_meca,
◆ NUME_DDL = co / nume_ddl,
◆ | MATR_ASSE = _F(
◆ MATRICE = co,
◆ OPTION = / "RIGI_MECA",
/ "MASS_MECA",
/ "MASS_MECA_DIAG",
/ "AMOR_MECA",
/ "RIGI_MECA_HYST",
/ "IMPE_MECA",
/ "ONDE_FLUI",
/ "RIGI_FLUI_STRU",
/ "MASS_FLUI_STRU",
/ "RIGI_ROTA",
/ "RIGI_GEOM",
/ "MECA_GYRO",
/ "RIGI_GYRO",
/ "RIGI_THER",
/ "RIGI_ACOU",
/ "MASS_ACOU",
/ "AMOR_ACOU",
# Si: is_in("OPTION", ('RIGI_GYRO', 'MECA_GYRO', 'IMPE_MECA',
'AMOR_MECA', 'MASS_MECA', 'RIGI_MECA',
'MASS_MECA_DIAG','MASS_FLUI_STRU'))
◇ GROUP_MA = grma,
# Si: equal_to("OPTION", 'RIGI_MECA')
◇ MODE_FOURIER = int,
# Si: equal_to("OPTION", 'RIGI_GEOM')
◆ SIEF_ELGA = cham_elem,
◇ MODE_FOURIER = int,
# Si: equal_to("OPTION", 'RIGI_THER')
◇ MODE_FOURIER = int,
# Si: equal_to("OPTION", 'AMOR_MECA')
◇ AMOR_FLUI = / "OUI" (par défaut),
/ "NON",
◇ VNOR = / 1.0 (par défaut),
/ -1.0,
◇ TYPE_AMOR = / "TOUT" (par défaut),
/ "ABSO",
# Si: equal_to("OPTION", 'IMPE_MECA')
◇ VNOR = / 1.0 (par défaut),
/ -1.0,
# Si: equal_to("OPTION", 'AMOR_ACOU')
◇ VNOR = / 1.0 (par défaut),
/ -1.0,
),
| VECT_ASSE = _F(
◆ VECTEUR = co,
◆ OPTION = / "CHAR_MECA",
/ "CHAR_ACOU",
/ "CHAR_THER",
# Si: equal_to("OPTION", 'CHAR_MECA')
◇ CHARGE = char_meca,
◇ MODE_FOURIER = int,
# Si: equal_to("OPTION", 'CHAR_THER')
◇ CHARGE = char_ther,
# Si: equal_to("OPTION", 'CHAR_ACOU')
◇ CHARGE = char_acou,
),
◇ TITRE = text,
◇ INFO = / 1 (par défaut),
/ 2,
)
◆ : obligatoire
◇ : optionnel
⟐ : présent par défaut
& : ensemble
/ : un seul parmi
| : plusieurs choix possibles
Opérandes#
Concepts créés par la macro-commande#
Cette macro-commande crée plusieurs concepts typés:
une matr_asse_* à chaque occurrence du mot clé facteur MATR_ASSE (mot clé MATRICE),
une cham_no à chaque occurrence du mot clé facteur VECT_ASSE (mot clé VECTEUR),
éventuellement un nume_ddl (mot clé NUME_DDL) si celui-ci n’existe pas au préalable.
Soit par exemple la séquence:
...
# nu n'est pas un concept encore existant.
ASSEMBLAGE (MODELE = mo , ...
NUME_DDL = CO(« nu »), MATR_ASSE = ( _F( MATRICE= CO(« K »), OPTION=”RIGI_MECA”), VECT_ASSE = ( _F( VECTEUR= CO(« F »), OPTION=”CHAR_MECA”))
ASSEMBLAGE (MODELE = mo , …
NUME_DDL = nu, MATR_ASSE = ( _F(MATRICE=CO(« M »),OPTION=”MASS_MECA”), _F(MATRICE=CO(« A »),OPTION=”AMOR_MECA”),
),)
le 1erappel à ASSEMBLAGEcrée |
1 MATR_ASSE : K |
1 VECT_ASSE : F |
|
1 NUME_DDL : nu |
|
le 2èmeappel à ASSEMBLAGEcrée |
2 MATR_ASSE : Met A |
Remarque:
Lors du 2èmeappel, le concept nume_ddlest fourni (il existe, il a été créé par le 1erappel). Dans ce cas, il est supposé convenir aux 2 matr_asseà créer ; il est donc important que le nume_ddlsoit d’abord calculé pour une option de type « RIGIDITE » pour contenir les nœuds de Lagrange des charges de blocages (cf. CALC_MATR_ELEM [U4.61.01]).
Dans l’exemple précédent, les 3 matr_asseK, Met A et le vecteur F s’appuient sur la même numérotation des inconnues (nu). C’est une condition nécessaire pour les algorithmes de recherche de modes propres.
Opérandes MODELE / CHAM_MATER / CARA_ELEM / INST#
♦ MODELE = mo
Cet opérande sert à indiquer les éléments pour lesquels doivent être effectués les calculs élémentaires : on rappelle que les éléments finis sont pour la plupart définis dans le modèle.
Il y a quelques exceptions:
Les éléments de dualisation des conditions de DIRICHLET, c’est-à-dire les éléments permettant d’imposer des conditions sur les degrés de liberté de déplacement en mécanique, les degrés de liberté de température en thermique et les degrés de liberté de pression en acoustique.
Les éléments de chargement nodal, d’échange thermique entre parois, …
Ces éléments sont définis dans les concepts de type char_meca, char_ther ou char_acou.
On doit donc fournir l’argument l_char pour le calcul des matrices assemblées de rigidité : RIGI_MECA, RIGI_THER, RIGI_ACOU, RIGI_MECA_HYST et RIGI_THER_CONV(_D).
◊ CHAM_MATER = chmater
Nom du champ de matériau où sont définies les caractéristiques des matériaux des éléments.
Cet argument est presque toujours nécessaire.
En pratique, on peut s’en passer:
pour les éléments discrets dont les matrices élémentaires sont définies dans le concept cara_elem. Voir AFFE_CARA_ELEM [U4.42.01],
pour le calcul des rigidités dues à la dualisation des conditions aux limites.
◊ CARA_ELEM = carac
Les caractéristiques élémentaires carac sont nécessaires s’il existe dans le modèle des éléments de structure (poutre, coque ou éléments discrets) ou des éléments de milieu continu non isotropes.
◊ INST= tps
L’argument tps est utilisé lorsque les caractéristiques matérielles ou les chargements dépendent du temps. Un cas assez fréquent est celui d’un matériau mécanique dépendant de la température qui elle même dépend du temps.
Opérandes CHARGE#
◊ CHARGE = l_char
Cet opérande a plusieurs fonctions distinctes:
préciser les éléments pour lesquels sont faits les calculs élémentaires de rigidité (conditions de DIRICHLET),
pour les options “RIGI_THER_CONV(_D)” : donner la valeur de la vitesse de convection,
pour l’option “IMPE_MECA” : donner la valeur de l’impédance acoustique des mailles du bord,
pour l’option “ONDE_FLUI” : donner la valeur de la pression de l’onde incidente,
pour l’option “RIGI_ROTA” : donner la valeur de la rotation imposée au modèle.
Remarque:
Attention pour les deux opérande sCHARGE : Celui sous VECT_ASSE ne peut pas remplacer celui sous ASSEMBLAGE *.* Si l’on ne renseigne que CHARGE sous VECT_ASSE , les chargements ne sont pas pris en compte dans les fonctions en dessous.
Lors d’un appel à la macro-commande pour l’assemblage des vecteurs dans le cas où le concept nu me_ddl est entrant (sous le mot-clé NUME_DDL ), la valeur du mot clé CHARGE l_char doit être identique à celle utilisée pour la création d u nume_ddl .
Soit par exemple la séquence suivante:
...
# nu n'est pas un concept encore existant.
ASSEMBLAGE (MODELE = mo , CHARGE = (char_1,char_2),...
NUME_DDL = CO(« nu »), MATR_ASSE = ( _F( MATRICE= CO(« K »), OPTION=”RIGI_MECA”))
# nu existe et est un concept entrant.
ASSEMBLAGE (MODELE = mo , CHARGE = (char_1,char_2),…
NUME_DDL = nu, VECT_ASSE = ( _F(VECTEUR=CO(« F »),OPTION=”CHAR_MECA”, CHARGE=CHAR_F),),)
Opérande CHAR_CINE#
◊ CHAR_CINE = lchci
Cet opérande permet de ne pas « dualiser » certaines conditions aux limites de Dirichlet (blocages). Ceux-ci seront éliminés.
Opérande NUME_DDL#
♦ NUME_DDL = nu
L’utilisateur de la macro doit toujours donner un nom de concept derrière le mot clé NUME_DDL. Si le concept n’existe pas, il est créé.
Si le concept existe, il est utilisé pour numéroter les matrices.
Mot clé MATR_ASSE#
Ce mot clé facteur permet de demander le calcul d’une matrice assemblée (à chaque occurrence).
Le nom de la matrice assemblée est donné par l’opérande MATRICE et la « nature » de la matrice est définie par l’opérande OPTION .
Les options possibles : “RIGI_MECA”, “MASS_MECA”, … sont décrites dans [U4.61.01].
Le choix de l’option détermine le type de la matr_asse_* résultat [U4.61.01].
Opérandes particulières à certaines options#
Opérande MODE_FOURIER#
◊ MODE_FOURIER = nh
Entier positif ou nul indiquant l’harmonique de FOURIER sur laquelle on calcule les matrices.
Par défaut : nh = 0
Opérande SIEF_ELGA (option “RIGI_GEOM”)#
♦ SIEF_ELGA = sig
Le champ de contraintes sig donné pour le calcul de l’option “RIGI_GEOM” doit avoir été calculé avec l’option “SIEF_ELGA” (champ de contraintes aux points de GAUSS des éléments) (cf. commandes CALC_CHAM_ELEM [U4.81.03] ou CALC_CHAMP [U4.81.04]).
Opérande GROUP_MA (options’MECA_GYRO” et “RIGI_GYRO”)#
◊ GROUP_MA = grma
On peut restreindre le calcul des options 'MECA_GYRO'et 'RIGI_GYRO'sur les mailles spécifiées par GROUP_MA.
Opérandes AMOR_FLUI, VNOR et TYPE_AMOR#
◊ AMOR_FLUI =
Cette option nous permet de désactiver la contribution des frontières fluides absorbantes (“3D_FLUI_ABSO”, “2D_FLUI_ABSO” et “AXIS_FLUI_ABSO”). En particulier, si on utilise la formulation fluide \(u-p-\phi\) dans un calcul harmonique, on a la possibilité de prendre en compte la contribution des frontières fluides absorbantes via le calcul d’une matrice de troisième ordre (avec l’option IMPE_MECA). Cette matrice de troisième ordre est utilisable seulement dans un calcul harmonique (opérande MATR_IMPE_PHI dans DYNA_VIBRA) et nous permet de symétriser la matrice (au contraire du calcul de cette contribution via AMOR_MECA). L’option AMOR_FLUI = ‘NON’ nous évite de calculer cette contribution deux fois. Par défaut, AMOR_FLUI = ‘OUI’. Cet opérande est disponible exclusivement pour l’option AMOR_MECA.
◊ VNOR=
Cette option nous permet de prendre en compte le cas d’une frontière émissive. Le cas le plus commun est celui radiative (ou partiellement radiatif si on définit un coefficient de réflexion \(\alpha \ne 0\) ). Dans le cas d’une frontière radiative VNOR= 1. (option activée par défaut). Dans le cas d’une frontière émissive VNOR= -1. Ce coefficient est multiplié à la valeur de l’impédance des frontières fluides absorbantes (“3D_FLUI_ABSO”, “2D_FLUI_ABSO’et “AXIS_FLUI_ABSO”). Cet opérande est disponible exclusivement pour les options AMOR_MECA, IMPE_MECA et AMOR_ACOU.
◊ TYPE_AMOR=
Cette option nous permet de calculer toutes les sources d’amortissement présentes dans le modèle ou seulement la source liée aux éléments de frontière absorbante (fluide ou non). L’option par défaut (TYPE_AMOR= ‘TOUT’) prend en compte l’éventuel amortissement de Rayleigh, l’amortissement venant des éléments discret et celui venant des éléments de frontière absorbante. Dans ce cas on est obligé de fournir soit les matrices de masse et rigidité pour l’amortissement de Rayleigh (et le champ matériau), soit les caractéristiques des éléments discrets. Si on est en présence du seul amortissement venant des éléments de frontière absorbante, il faut spécifier TYPE_AMOR= ‘ABSO’ et fournir en entrée seulement le champ matériau. Cet opérande est disponible exclusivement pour l’option AMOR_MECA.
Mot clé VECT_ASSE#
Ce mot clé facteur permet de demander le calcul d’un vecteur assemblé (à chaque occurrence).
Le nom du vecteur assemblée est donné par l’opérande VECTEUR.
Dans les options possibles de calcul élémentaire et d’assemblage de vecteurs, seules certaines possibilités parmi toutes celles proposées dans les commandes CALC_VECT_ELEM et ASSE_VECTEUR sont proposées ici: “CHAR_MECA” pour les phénomènes mécaniques, “CHAR_THER” et “CHAR_ACOU” pour les phénomènes thermiques et acoustiques respectivement.
L’ensemble d’options et opérandes associées sont décrites dans [u4.61.02] et [u4.61.23].
Remarque:
L’option “FORC_NODA” et la prise en compte d’un modèle contenant des sous-structures sous l’option “CHAR_MECA”, souvent utilisée dans le cas de la statique, ne sont pas disponibles dans cette macro-commande.
Opérandes particulières à certaines options#
Opérande MODE_FOURIER#
◊ MODE_FOURIER = nh
Entier positif ou nul indiquant l’harmonique de FOURIER sur laquelle on calcule les vecteurs dans le cas des phénomènes mécaniques.
Par défaut : nh = 0
Opérande CHARGE#
◊ CHARGE = l_char_v
Cette opérande permet d'accéder aux informations de chargement spécifiques à chaque vecteur. Les valeurs de l_char_v complètent ( par addition ) les charges l_char spécifiées sous le mot-clé CHARGE en dehors du mot clé VECT_ASSE.
Remarque:
Les doublons dans les charges données dans l_char et dans l_char v sont interdits.
Attention pour les deux opérande s deCHARGE : Celui sous VECT_ASSE ne peut pas remplacer celui sous ASSEMBLAGE *.* Si l’on ne renseigne que CHARGE sous VECT_ASSE , les chargements ne sont pas pris en compte dans les fonctions mentionnées dans le chapitre 3.3.
Exemple pour le traitement des chargements:
ASSEMBLAGE (MODELE = mo , …
CHARGE = (char_1,char_2), NUME_DDL = CO(« nu »), MATR_ASSE = ( _F( MATRICE= CO(« K »), OPTION=”RIGI_MECA”), VECT_ASSE = ( _F( VECTEUR= CO(« F1 »), OPTION=”CHAR_MECA”,CHARGE=char_A ), _F( VECTEUR= CO(« F2 »), OPTION=”CHAR_MECA”,CHARGE=char_B ), _F( VECTEUR= CO(« F3 »), OPTION=”CHAR_MECA”),)
Dans l’exemple ci-dessus, les charges assemblées pour chaque vecteur sont:
Vecteur |
Charges assemblées |
F1 |
char_1, char_2, char_A |
F2 |
char_1, char_2, char_B |
F3 |
char_1, char_2 |
Opérande TITRE#
◊ TITRE
Titre que l’on veut donner au résultat [U4.03.01].
Exemples#
Calcul de modes propres mécaniques#
ASSEMBLAGE ( MODELE = mo , CHARGE = ch_blocage ,
CHAM_MATER = chmat , CARA_ELEM = carac , NUME_DDL = CO(« nu ») , MATR_ASSE = (_F (MATRICE = CO(« K »), OPTION = “RIGI_MECA”), _F (MATRICE = CO(« M »), OPTION = “MASS_MECA”),),)
modes = CALC_MODES ( MATR_RIGI = K,
MATR_MASS = M,
…)
Calcul de modes de flambement d’Euler#
# chsief est le champ de contraintes lié au chargement
ASSEMBLAGE ( MODELE = mo , CHARGE = ch_blocage ,
CHAM_MATER = chmat , CARA_ELEM = carac , NUME_DDL = CO(« nu »),
MATR_ASSE = ( _F(MATRICE= CO(« K »), OPTION=”RIGI_MECA”),
_F(MATRICE= CO(« KG »), OPTION=”RIGI_GEOM”, SIEF_ELGA=chsief),),)
modflamb = CALC_MODES ( MATR_RIGI = K,
MATR_MASS = KG,
…)
Calcul de réponse forcée#
ASSEMBLAGE ( MODELE = mo , CHARGE = ch_blocage ,
CHAM_MATER = chmat , CARA_ELEM = carac , NUME_DDL = CO(« nu ») , MATR_ASSE = (_F (MATRICE = CO(« K »), OPTION = “RIGI_MECA”), _F (MATRICE = CO(« M »), OPTION = “MASS_MECA”),), VECT_ASSE = ( _F( VECTEUR= CO(« F »), OPTION=”CHAR_MECA”,CHARGE=char_A ),)
reponse = DYNA_VIBRA ( MATR_RIGI = K, MATR_MASS = M,
EXCIT = _F( VECT_ASSE = F, …)…)