u4.44.03 Opérateurs AFFE_CHAR_CINE et AFFE_CHAR_CINE_F#
Syntaxe#
Détail de la syntaxe
/ char_cine_acou
/ char_cine_meca
/ char_cine_ther = AFFE_CHAR_CINE(
◆ MODELE = modele,
◆ / MECA_IMPO = _F(
◆ / TOUT = "OUI" (ou non renseigné),
/ GROUP_MA = list[grma],
/ GROUP_NO = list[grno],
◆ | DX = float,
| DY = float,
| DZ = float,
| DRX = float,
| DRY = float,
| DRZ = float,
| GRX = float,
| PRES = float,
| PHI = float,
| TEMP = float,
| PRE1 = float,
| PRE2 = float,
| UI2 = float,
| UI3 = float,
| VI2 = float,
| VI3 = float,
| WI2 = float,
| WI3 = float,
| UO2 = float,
| UO3 = float,
| VO2 = float,
| VO3 = float,
| WO2 = float,
| WO3 = float,
| UI4 = float,
| UI5 = float,
| VI4 = float,
| VI5 = float,
| WI4 = float,
| WI5 = float,
| UO4 = float,
| UO5 = float,
| VO4 = float,
| VO5 = float,
| WO4 = float,
| WO5 = float,
| UI6 = float,
| UO6 = float,
| VI6 = float,
| VO6 = float,
| WI6 = float,
| WO6 = float,
| WO = float,
| WI1 = float,
| WO1 = float,
| GONF = float,
| H1X = float,
| H1Y = float,
| H1Z = float,
| H1PRE1 = float,
| K1 = float,
| K2 = float,
| K3 = float,
| V11 = float,
| V12 = float,
| V13 = float,
| V21 = float,
| V22 = float,
| V23 = float,
| V31 = float,
| V32 = float,
| V33 = float,
| PRES11 = float,
| PRES12 = float,
| PRES13 = float,
| PRES21 = float,
| PRES22 = float,
| PRES23 = float,
| PRES31 = float,
| PRES32 = float,
| PRES33 = float,
| LH1 = float,
| GLIS = float,
| PSI = float,
| LAG_GV = float,
| EPXX = float,
| EPYY = float,
| EPZZ = float,
| EPXY = float,
| EPXZ = float,
| EPYZ = float,
),
/ THER_IMPO = _F(
◆ / TOUT = "OUI" (ou non renseigné),
/ GROUP_MA = list[grma],
/ GROUP_NO = list[grno],
◆ | TEMP = float,
| TEMP_MIL = float,
| TEMP_INF = float,
| TEMP_SUP = float,
),
/ ACOU_IMPO = _F(
◆ / TOUT = "OUI" (ou non renseigné),
/ GROUP_MA = list[grma],
/ GROUP_NO = list[grno],
◆ PRES = complex,
),
/ EVOL_IMPO = evol_elas / evol_noli / evol_ther,
# Si: exists("EVOL_IMPO")
◇ NOM_CMP = list[text],
◇ INFO = / 1 (par défaut),
/ 2,
)
◆ : obligatoire
◇ : optionnel
⟐ : présent par défaut
& : ensemble
/ : un seul parmi
| : plusieurs choix possibles
Généralités#
Ces deux commandes créent des concepts de type char_cine_* (_meca/_ther).
La commande AFFE_CHAR_CINE peut également créer des concepts de type char_cine_acou.
Ces types sont différents du type charge créé par les commandes AFFE_CHAR_MECA[U4.44.01], AFFE_CHAR_THER[U4.44.02] ou AFFE_CHAR_ACOU[U4.44.04]).
Les objets créés ne sont donc pas interchangeables.
L’avantage des charges “cinématiques” est qu’elles n’augmentent pas le nombre d’inconnues des systèmes à résoudre, contrairement à la méthode de dualisation par multiplicateurs de LAGRANGE, utilisée dans les commandes produisant un concept de type charge.
En revanche, l’utilisation de ces charges comporte les limitations suivantes :
on ne peut les utiliser que dans le cas de relation de type “ddl imposé” (et non pour des relations linéaires),
ces charges ne sont pas encore admises dans toutes les commandes globales. Aujourd’hui les commandes possibles sont :
MECA_STATIQUE, STAT_NON_LINE, DYNA_NON_LINE
THER_LINEAIRE
pour un calcul n’utilisant pas les commandes globales : assemblage d’une matrice, puis résolution, la séquence de commandes à utiliser est plus compliquée qu’avec des charges “ordinaires” comme on peut le voir dans l’exemple 2 [§ 5.2].
Opérandes#
Généralités sur les opérandes#
Les opérandes sous les mots clés facteurs MECA_IMPO, THER_IMPO et ACOU_IMPO sont de deux formes:
les opérandes spécifiant les entités géométriques sur lesquelles sont affectées les chargements (mots clés GROUP_MA, GROUP_NO…). Les arguments de ces opérandes sont identiques pour les deux opérateurs.
les opérandes spécifiant les valeurs affectées (DX, DY, DZ, etc …). La signification de ces opérandes est la même pour les deux opérateurs. Les arguments de ces opérandes sont tous du type réel pour l’opérateur AFFE_CHAR_CINE et du type fonction(ou formule) pour l’opérateur AFFE_CHAR_CINE_F.
Ceci est vrai à une exception près : le mot clé facteur ACOU_IMPO(qui n’existe pas dans la commande AFFE_CHAR_CINE_F) est toujours de type complexe.
Nous ne distinguerons donc pas dans ce document, sauf mention expresse du contraire, les deux opérateurs AFFE_CHAR_CINE et AFFE_CHAR_CINE_F.
De façon générale, les entités sur lesquelles des valeurs doivent être affectées sont définies par nœuds:
soit par l’opérande TOUT = “OUI’qui permet de désigner tous les nœuds du maillage,
soit par l’opérande GROUP_NOpermettant de désigner une liste de groupes de nœuds,
soit par l’opérande GROUP_MApermettant de désigner tous les nœuds portés par les mailles désignées par les listes de GROUP_MA.
Comportement en cas de surcharge :#
Surcharge au sein d’une seule commande AFFE_CHAR_CINE#
Lorsqu’on utilise au sein d’une même commande, plusieurs occurrences de MECA_IMPO(ou THER_IMPO, …) et que certains noeuds sont affectés plusieurs fois, c’est la dernière occurrence qui prime. Par exemple :
chcine= AFFE_CHAR_CINE( MECA_IMPO=(
_F( TOUT=”OUI”, DX= 1., …)
_F( GROUP_NO=”GN3”, DX= 3., …)
Dans ce cas, le déplacement imposé DXpour le noeud GN3vaut : 3.
Surcharge entre plusieurs commandes AFFE_CHAR_CINE#
Si on utilise plusieurs commandes différentes, le comportement est différent. Par exemple :
chcin1= AFFE_CHAR_CINE( MECA_IMPO= _F( TOUT=”OUI”, DX= 1., …)
chcin2= AFFE_CHAR_CINE( MECA_IMPO= _F( GROUP_NO=”GN3”, DX= 3., …)
Dans ce cas, le déplacement imposé DXpour le noeud GN3vaut : 4 (car 1+3)
Surcharge entre AFFE_CHAR_CINE et AFFE_CHAR_MECA#
Si on « mixe » les commandes AFFE_CHAR_MECA et AFFE_CHAR_CINE, le code s’arrêtera en erreur fatale (FACTOR_41) en expliquant qu’il y a une relation de blocage sur-abondante (NOEUDN3 / DX).
Opérande MODELE#
♦ MODELE = mo
Concept produit par l’opérateur AFFE_MODELE[U4.41.01] où sont définis les types d’éléments finis affectés sur le maillage.
Mot clé MECA_IMPO#
But#
Mot clé facteur utilisable pour imposer, à des nœuds, une valeur de déplacement, définie composante par composante dans le repère global.
Ces conditions aux limites seront traitées, par la suite, par la méthode dite d’élimination des degrés de liberté imposés (c’est à dire sans dualisation, contrairement au traitement du même type de condition limite par l’utilisation des opérateurs AFFE_CHAR_MECA ou AFFE_CHAR_MECA_F[U4.44.01]).
Syntaxe#
AFFE_CHAR_CINE
/ MECA_IMPO = (_F ( ♦ / TOUT = “OUI” , | GROUP_NO = lgno , [l_gr_noeud] | GROUP_MA = lgma , [l_gr_maille] ♦ | DX = ux , [R] | DY = uy , [R] | … (voir la liste complète ci-dessous) ),),
AFFE_CHAR_CINE_F
/ MECA_IMPO = (_F ( ♦ / TOUT = “OUI” , | GROUP_NO = lgno , [l_gr_noeud] | GROUP_MA = lgma , [l_gr_maille] ♦ | DX = uxf , [fonction(*)] | DY = uyf , [fonction(*)] | … (voir la liste complète ci-dessous)
),),
fonction(*) : fonction ou formule
Liste des mots clés disponibles sous MECA_IMPO dans AFFE_CHAR_CINE:
Liste des mots clés disponibles sous MECA_IMPO dans AFFE_CHAR_CINE_F:
Ce sont les noms des degrés de liberté portés par les éléments finis du modèle. La signification de ces noms est à chercher dans la documentation de AFFE_CHAR_MECA [U4.44.01].
Opérandes#
/ MECA_IMPO
DX = ux ou uxf DY = uy ou uyf DZ = uz ou uzf |
Valeur de la composante de déplacement en translation imposée sur les nœuds spécifiés |
Uniquement pour les nœuds d’un modèle 3D comportant des éléments de poutre, plaque, coque, discret:
DRX = drx ou drxf DRY = dry oudryf DRZ = drz oudrzf |
Valeur de la composante de déplacement en rotation imposée sur les nœuds spécifiés |
Pour les degrés de liberté plus « exotiques »: GRX, TEMP, PRESet PHI, on se reportera à la documentation de la commande AFFE_CHAR_MECA[U4.44.01 §3.9].
Attention:
On vérifie que le degré de liberté spécifié existe en ce nœud pour au moins un des éléments du modèle (mot clé MODELE) qui s’appuient sur ce nœud.
De plus, la règle de surcharge est appliquée quand le même degré de liberté d’un même nœud est imposé plusieurs fois : on ne retient que la dernière valeur.
Mot clé THER_IMPO#
But#
Mot clé facteur utilisable pour imposer, à des nœuds, une valeur de température nodale.
Ces conditions aux limites seront traitées, par la suite, par la méthode dite d’élimination des degrés de liberté imposés (c’est à dire : sans dualisation contrairement au traitement du même type de condition limite par l’utilisation des opérateurs AFFE_CHAR_THER ou AFFE_CHAR_THER_F[U4.44.02])
Syntaxe#
pour AFFE_CHAR_CINE
/ THER_IMPO = (_F ( ♦ / TOUT = “OUI” , | GROUP_NO = lgno , [l_gr_noeud] | GROUP_MA = lgma , [l_gr_maille] ♦ | TEMP = t , [R] | TEMP_SUP = tsup , [R] | TEMP_INF = tinf , [R] ), ),
pour AFFE_CHAR_CINE_F
/ THER_IMPO = (_F ( ♦ / TOUT = “OUI” , | GROUP_NO = lgno , [l_gr_noeud] | GROUP_MA = lgma , [l_gr_maille] ♦ | TEMP = ft , [fonction(*)] | TEMP_SUP = ftsup , [fonction(*)] | TEMP_INF = ftinf , [fonction(*)] ), ),
fonction(*) : fonction ou formule
Opérandes#
Température imposée sur les nœuds (ou sur le feuillet moyen pour les coques thermiques)
Température imposée sur la face inférieure pour les éléments de coques thermiques.
Température imposée sur la face supérieure pour les éléments de coques thermiques.
Pour les coques, les faces inférieure et supérieure sont définies, maille par maille, par la direction de la normale extérieure déduite de la numérotation des nœuds : voir FACE_IMPO de AFFE_CHAR_MECA[U4.44.01].
Mot clé ACOU_IMPO#
But#
Mot clé facteur utilisable pour imposer, à des nœuds, une valeur de pression acoustique.
Ces conditions aux limites seront traitées, par la suite, par la méthode dite d’élimination des degrés de liberté imposés (c’est à dire : sans dualisation contrairement au traitement du même type de condition limite par l’utilisation de l’opérateur AFFE_CHAR_ACOU[U4.44.04]).
Syntaxe#
Pour AFFE_CHAR_CINE
/ ACOU_IMPO = (_F ( ♦ / TOUT = “OUI” , | GROUP_NO = lgno , [l_gr_noeud] | GROUP_MA = lgma , [l_gr_maille] ♦ PRES = p , [C] ), ),
Pour AFFE_CHAR_CINE_F:
Pas de mot clé ACOU_IMPO car il n’y a pas encore de fonction complexe.
Opérandes#
PRES
Valeur de la pression acoustique complexe imposée sur le(s) nœud(s) spécifié(s).
Mot clé EVOL_IMPO#
/ EVOL_IMPO = evoimp / [evol_ther]
/ [evol_elas] / [evol_noli] ◊ NOM_CMP = lcmp [l_TXM]
Ce mot clé permet le « zoom structural » (voir par exemple le test zzzz230a).
L’effet de ce mot clé est d’imposer tous les ddls de l’évolution evoimpcomme si c’étaient des fonctions du temps. Cette possibilité est offerte pour les structures de données evol_elas, evol_noli et evol_ther.
Pour faire un «zoom structural», il ne faut imposer les ddls que sur les nœuds du bord du modèle «zoom». Cela veut dire qu’il faut en général projeter le calcul «grossier» sur les mailles du bord du modèle «zoom».
Si, de plus, on ne veut pas imposer toutes les composantes, il faut utiliser le mot clé NOM_CMP pour choisir les composantes à imposer (par défaut : toutes).
Remarques :
Attention à ne pas utiliser plusieurs EVOL_IMPO sur des zones communes (sinon il y aura cumul des valeurs imposées)
Attention à l’usage de FONC_MULT avec EVOL_IMPO : le résultat ne sera peut être pas ce que l’on attend !
L” EVOL_IMPO sera utilisé pour toute valeur du temps comprise entre \(\mathit{tmin}\) et \(\mathit{tmax}\) (valeurs extrêmes des instants du transitoire EVOL_IMPO ). En dehors de cet intervalle, on émet une erreur fatale (extrapolation interdite).
Si l” EVOl_IMPO n’a qu’un instant, on permet le prolongement « constant » et on émet une alarme.
Exemples#
Degrés de liberté imposés en mécanique#
chcine = AFFE_CHAR_CINE (MODELE = mo,
MECA_IMPO=( _F (TOUT = “OUI” , DRZ = 0.), _F (GROUP_NO = “bord1”, DX = 0., DY = 0., DZ = 0., DRX = 0., DRY = 0.,)))
Pour ce problème de plaque dans le plan \(\mathrm{XY}\) , on bloque tous les degrés de liberté de rotation autour de \(Z\) et on encastre la plaque sur son bord \(\mathrm{bord1}\) .
Utilisation comparée des charges cinématiques et « ordinaires »#
Commandes globales#
ch1 = AFFE_CHAR_THER ( ... )
ch2 = AFFE_CHAR_CINE_F ( TEMP_IMPO = _F ( ... ))
evoth = THER_LINEAIRE ( ...
EXCIT = ( _F (CHARGE = ch1), _F (CHARGE = ch2),) …)
Il n’y a pas de différence.
Calcul « pas à pas »#
Charges ordinaires
ch1 = AFFE_CHAR_MECA ( … ) mel = CALC_MATR_ELEM ( … OPTION = “RIGI_MECA” , CHARGE = ch1) matas = ASSE_MATRICE ( MATR_ELEM = mel …) matas = FACTORISER ( reuse = matas, MATR_ASSE = matas ) U = RESOUDRE ( MATR = matas , CHAM_NO = F )
Charges cinématiques
ch1 = AFFE_CHAR_CINE ( … ) mel = CALC_MATR_ELEM ( … OPTION = “RIGI_MECA” ) matas = ASSE_MATRICE ( MATR_ELEM = mel, …, CHAR_CINE = ch1 ) matas = FACTORISER ( reuse = matas, MATR_ASSE = matas, ) vcine = CALC_CHAR_CINE ( …, CHAR_CINE = ch2, ) U = RESOUDRE ( MATR = matas , CHAM_NO = F, CHAM_CINE = vcine)
Les termes induits par les charges cinématiques sont reportés au second membre ce qui nécessite le calcul d’un champ aux nœuds supplémentaire vcinepar la commande CALC_CHAR_CINE[U4.61.03].