u4.53.04 Opérateur DYNA_VISCO#

Syntaxe#

Détail de la syntaxe
/ mode_meca
/ datastructure
/ dyna_harmo
/ mode_meca_c = DYNA_VISCO(
    ◆ MODELE = modele,
    ◇ CARA_ELEM = cara_elem,
    ◇ MATER_ELAS = _F(
         ◆ | MATER = mater,
           | E = float,
           | AMOR_HYST = float,
           | RHO = float,
           | NU = float,
         ◆ GROUP_MA = grma,
      ),
    ◆ MATER_ELAS_FO = _F(
         ◆ E = formule / fonction,
         ◆ AMOR_HYST = formule / fonction,
         ◆ RHO = float,
         ◆ NU = float,
         ◆ GROUP_MA = grma,
      ),
    ◇ TYPE_RESU = / "HARM" (par défaut),
                  / "MODE",
    ◆ / FREQ = float,
      / LIST_FREQ = listr8,
    ◆ EXCIT = _F(
         ◆ CHARGE = char_meca,
      ),
    # Si: equal_to("TYPE_RESU", 'MODE')
        ◇ TYPE_MODE = / "REEL" (par défaut),
                      / "BETA_REEL",
                      / "COMPLEXE",
    # Si: not equal_to("TYPE_RESU", 'MODE')
        ◇ TYPE_MODE = / "REEL" (par défaut),
                      / "BETA_REEL",
    ◇ RESI_RELA = float (défaut: 0.001),
    # Si: equal_to("TYPE_RESU", 'HARM')
        ◆ COEF_FREQ_MAX = float,
        ⟐ SOLVEUR = _F(
             ◇ METHODE = / "LDLT" (par défaut),
                         / "MUMPS",
             # Si: equal_to("METHODE", 'MULT_FRONT')
                 ◇ RENUM = / "MD",
                           / "MDA" (par défaut),
                 ◇ NPREC = int (défaut: 8),
                 ◇ ELIM_LAGR = / "OUI",
                               / "NON" (par défaut),
                 ◇ STOP_SINGULIER = / "OUI" (par défaut),
                                    / "NON",
             # Si: equal_to("METHODE", 'LDLT')
                 ◇ RENUM = "RCMK",
                 ◇ NPREC = int (défaut: 8),
                 ◇ ELIM_LAGR = / "OUI",
                               / "NON" (par défaut),
                 ◇ STOP_SINGULIER = / "OUI" (par défaut),
                                    / "NON",
             # Si: equal_to("METHODE", 'MUMPS')
                 ◇ RENUM = / "AMD",
                           / "AMF",
                           / "PORD",
                           / "METIS",
                           / "QAMD",
                           / "SCOTCH",
                           / "AUTO" (par défaut),
                           / "PARMETIS",
                           / "PTSCOTCH",
                 ◇ NPREC = int (défaut: 8),
                 ◇ ELIM_LAGR = / "OUI",
                               / "NON",
                               / "LAGR2" (par défaut),
                 ◇ STOP_SINGULIER = / "OUI" (par défaut),
                                    / "NON",
                 ◇ TYPE_RESOL = / "NONSYM",
                                / "SYMGEN",
                                / "SYMDEF",
                                / "AUTO" (par défaut),
                 ◇ ACCELERATION = / "AUTO",
                                  / "FR" (par défaut),
                                  / "FR+",
                                  / "FR++",
                                  / "LR",
                                  / "LR+",
                                  / "LR++",
                 ◇ LOW_RANK_SEUIL = float,
                 ◇ PRETRAITEMENTS = / "SANS",
                                    / "AUTO" (par défaut),
                 ◇ POSTTRAITEMENTS = / "SANS",
                                     / "AUTO" (par défaut),
                                     / "FORCE",
                                     / "MINI",
                 ◇ PCENT_PIVOT = int (défaut: 35),
                 ◇ NB_RHS = int (défaut: 1),
                 ◇ RESI_RELA = float (défaut: -1.0),
                 ◇ GESTION_MEMOIRE = / "IN_CORE",
                                     / "OUT_OF_CORE",
                                     / "AUTO" (par défaut),
                                     / "EVAL",
             # Si: equal_to("METHODE", 'GCPC')
                 ◇ ELIM_LAGR = / "OUI",
                               / "NON" (par défaut),
                 ◇ PRE_COND = / "LDLT_INC" (par défaut),
                              / "LDLT_SP",
                              / "LDLT_DP",
                 ◇ RESI_RELA = float (défaut: 1e-06),
                 ◇ NMAX_ITER = int,
                 # Si: equal_to("PRE_COND", 'LDLT_INC')
                     ◇ RENUM = "RCMK",
                     ◇ NIVE_REMPLISSAGE = int,
                 # Si: is_in("PRE_COND", ('LDLT_SP', 'LDLT_DP'))
                     ◇ RENUM = / "SANS",
                               / "METIS",
                               / "PARMETIS" (par défaut),
                     ◇ REAC_PRECOND = int (défaut: 30),
                     ◇ PCENT_PIVOT = int (défaut: 20),
                     ◇ GESTION_MEMOIRE = / "IN_CORE",
                                         / "AUTO" (par défaut),
                     ◇ LOW_RANK_SEUIL = float,
             # Si: equal_to("METHODE", 'PETSC')
                 ◇ ELIM_LAGR = / "OUI",
                               / "NON" (par défaut),
                 ◇ ALGORITHME = / "CG",
                                / "CR",
                                / "GMRES",
                                / "GCR",
                                / "FGMRES" (par défaut),
                                / "GMRES_LMP",
                 ◇ OPTION_PETSC = text,
                 ◇ PRE_COND = / "LDLT_INC",
                              / "LDLT_SP" (par défaut),
                              / "LDLT_DP",
                              / "JACOBI",
                              / "SOR",
                              / "ML",
                              / "BOOMER",
                              / "GAMG",
                              / "BLOC_LAGR",
                              / "FIELDSPLIT",
                              / "UTILISATEUR",
                              / "HPDDM",
                              / "SANS",
                 ◇ RESI_RELA = float (défaut: 1e-06),
                 ◇ NMAX_ITER = int,
                 # Si: equal_to("PRE_COND", 'LDLT_INC')
                     ◇ RENUM = "RCMK",
                     ◇ NIVE_REMPLISSAGE = int,
                     ◇ REMPLISSAGE = float (défaut: 1.0),
                 # Si: is_in("PRE_COND", ('LDLT_SP', 'LDLT_DP'))
                     ◇ RENUM = / "SANS",
                               / "METIS",
                               / "PARMETIS" (par défaut),
                     ◇ REAC_PRECOND = int (défaut: 30),
                     ◇ PCENT_PIVOT = int (défaut: 20),
                     ◇ GESTION_MEMOIRE = / "IN_CORE",
                                         / "AUTO" (par défaut),
                     ◇ LOW_RANK_SEUIL = float,
                 # Si: equal_to("PRE_COND", 'ML')
                     ◇ RENUM = "SANS",
                 # Si: equal_to("PRE_COND", 'BOOMER')
                     ◇ RENUM = "SANS",
                 # Si: equal_to("PRE_COND", 'GAMG')
                     ◇ RENUM = "SANS",
                 # Si: equal_to("PRE_COND", 'HPDDM')
                     ◇ RENUM = "SANS",
                 # Si: equal_to("PRE_COND", 'BLOC_LAGR')
                     ◇ RENUM = "SANS",
                 # Si: is_in("PRE_COND", ('FIELDSPLIT'))
                     ◇ RENUM = "SANS",
                     ◇ PARTITION_CMP = int,
                     ◇ NOM_CMP = text,
                 # Si: is_in("PRE_COND", ('UTILISATEUR'))
                     ◇ KSP_UTIL = not_checked,
                     ◇ RENUM = "SANS",
                 # Si: is_in("PRE_COND", ('JACOBI','SOR','SANS'))
                     ◇ RENUM = / "SANS" (par défaut),
                               / "RCMK",
          ),
        ◇ NOM_CHAM = / "DEPL" (par défaut),
                     / "VITE",
                     / "ACCE",
        ◇ MODE_MECA = co,
    ◇ INFO = / 1 (par défaut),
             / 2,
)


◆ : obligatoire
◇ : optionnel
⟐ : présent par défaut
& : ensemble
/ : un seul parmi
| : plusieurs choix possibles

Opérandes#

Opérandes MODELE / CARA_ELEM#

♦    MODELE = modele,

◊    CARA_ELEM    = caraelem,

Ces mots-clés permettent de renseigner:

  • le nom du modèle (modele) dont les éléments font l’objet du calcul mécanique.

  • le nom des caractéristiques des éléments structuraux (plaques, poutres, discrets,…) s’ils sont utilisés dans le modèle.

Mot-clé facteur MATER_ELAS#

◊    MATER_ELAS =    _F(

♦ / MATER = mat / ♦ E = e ♦ AMOR_HYST = amorhyst ♦ RHO = rho ♦ NU = nu ♦ GROUP_MA = gma )

Ce mot-clé permet d’affecter un matériau élastique sans dépendance en fréquence aux éléments appartenant à GROUP_MA.

Le matériau peut être défini avant la macro-commande grâce à l’opérateur DEFI_MATERIAU [U4.43.01]; dans ce cas, ce matériau est rappelé avec le mot-clé MATER. Le matériau peut aussi être défini ici par ses propriétés: module d’Young E, masse volumique RHO, coefficient de Poisson NU, et amortissement hystérétique AMOR_HYST.

Ce mot-clé facteur peut être répété autant de fois qu’il y a de matériaux élastiques sans dépendance en fréquence dans la structure.

Mot-clé facteur MATER_ELAS_FO#

♦    MATER_ELAS_FO    =    _F(

♦ E = l_e ♦ AMOR_HYST = l_amor ♦ RHO = rho ♦ NU = nu ♦ GROUP_MA = gma )

Ce mot-clé permet d’affecter un matériau viscoélastique avec dépendance en fréquence aux éléments appartenant à GROUP_MA.

Les propriétés mécaniques du matériau viscoélastique sont de deux types:

  • celles qui dépendent de la fréquence: le module d’Young E et le facteur d’amortissement AMOR_HYST; elles sont renseignées par des fonctions indexées par la fréquence, produites par DEFI_FONCTION / NOM_PARA=”FREQ” [U4.31.02]);

  • celles qui sont constantes: la masse volumique RHO et le coefficient de Poisson NU.

Ce mot-clé facteur peut être répété autant de fois qu’il y a de matériaux visocélastiques avec dépendance en fréquence dans la structure.

Mot-clé TYPE_RESU#

◊    TYPE_RESU =     / ’HARM’                    [DEFAUT]

/ ’MODE’

Ce mot-clé permet de définir le type de calcul à effectuer:

  • le choix “MODE” permet de calculer les modes propres de la structure;

  • le calcul “HARM”, permet d’obtenir la réponse en fréquence de la structure à une excitation donnée; on peut aussi récupérer les modes propres calculés grâce au mot-clé MODE_MECA.

Mots-clés FREQ / LIST_FREQ#

♦    / FREQ = l_f

/ LIST_FREQ = lfreq

Dans le cas d’un calcul modal de la structure (TYPE_RESU=”MODE”), ce mot-clé permet de définir la bande fréquentielle de recherche des modes. La liste doit alors contenir exactement 2 valeurs (strictement croissantes).

Dans le cas d’un calcul harmonique de la structure (TYPE_RESU=”HARM”), ce mot-clé permet de définir les fréquences discrètes pour lesquelles la réponse de la structure est calculée. La liste doit alors contenir au moins 2 valeurs strictement croissantes.

Mot-clés TYPE_MODE / RESI_RELA#

◊    TYPE_MODE =    / ’REEL’                    [DEFAUT]

/ ’BETA’ / ’COMPLEXE’

Plusieurs choix de calcul des modes propres sont possibles: modes réels, beta-modes (qui sont des modes réels améliorés donnant une meilleure précision des résultats, cf [R5.05.09]), ainsi que modes complexes.

Le calcul des modes complexes permet d’obtenir les amortissements modaux. En revanche ce type de mode ne peut pas être utilisé pour mener un calcul harmonique (TYPE_RESU=”HARM”).

Remarque:

Si on calcule des modes complexes, on peut récupérer les amortissements modaux dans une liste python avec cette fonction: liste_python=modes.LIST_PARA()[“AMOR_REDUIT”](cela nécessite d’utiliser PAR_LOT=”NON’dans la commande DEBUT).

◊    RESI_RELA =    / 1.E-3                    [DEFAUT]

/ eps

Le calcul des modes propres avec la méthode itérative possède un critère de convergence nommé RESI_RELA. Un mode propre est retenu dans la base modale lorsque l’écart relatif entre les fréquences propres calculées entre deux itérations successives est inférieur à RESI_RELA.

Mot-clé facteur EXCIT#

♦    EXCIT =_F(

♦ CHARGE = charge )

Ce mot-clé permet l’affectation de charges (conditions aux limites, forces d’excitation, …) qui ont été définies auparavant par l’opérateur AFFE_CHAR_MECA [U4.44.01].

Remarque:

Actuellement, pour les excitations extérieures, seules les excitations de type FORCE_NODALE sont compatibles avec la commande DYNA_VISCO .

Pour le calcul harmonique, la base des modes propres est enrichie, de manière transparente pour l’utilisateur, par les modes statiques associés aux nœuds excités.

Mot-clé NOM_CHAM (si TYPE_RESU=’HARM’)#

◊    NOM_CHAM =    / ’DEPL’                    [DEFAUT]

/ ’VITE’ / ’ACCE’

Ce mot-clé permet de définir quels champs seront sauvegardés dans le concept résultat (déplacement, vitesse ou accélération). Il est possible de sauvegarder plusieurs champs en donnant une liste, par exemple NOM_CHAM=(“DEPL”,”ACCE”).

Mot-clé MODE_MECA (si TYPE_RESU=’HARM’)#

◊ MODE_MECA = CO( “modes” )

Si ce mot-clé est présent, deux concepts seront produits par la macro-commande:

  • le concept modes de type mode_meca

  • le concept visco de type dyna_harmo

Le concept modes peut par exemple être imprimé classiquement avec la commande IMPR_RESU [U4.91.01].

Mot-clé COEF_FREQ_MAX (si TYPE_RESU=’HARM’)#

◊ COEF_FREQ_MAX = cfmax [R]

Lors d’un calcul harmonique, le coefficient multiplicateur COEF_FREQ_MAX permet d’obtenir des valeurs de réponses en fréquence plus précises, en multipliant par COEF_FREQ_MAX la valeur de la fréquence maximale de calcul de la base modale de projection.

La valeur minimale de ce paramètre est 1,5.

Mot-clé INFO#

◊    INFO =        / 1                                [DEFAUT]

/ 2

Indique le niveau d’impression dans le fichier MESSAGE.

Exemples#


Définition de la dépendance en fréquence des propriétés des matériaux viscoélastiques#

# fréquences pour lesquelles les paramètres du matériaux sont donnés

list_f=DEFI_LIST_REEL(VALE=(1,10,50,100,500,1000,1500,),);

# valeurs (de la partie réelle) du module de Young aux fréquences de list_f

list_E=DEFI_LIST_REEL(VALE=(23.2E6,58.E6,145.E6,203.E6,348.E6,435.E6,464.E6,),);

# valeurs du facteur de perte aux fréquences de list_f

list_eta=DEFI_LIST_REEL(VALE=(1.1,0.85,0.7,0.6,0.4,0.35,0.34,),);

fonc_E=DEFI_FONCTION(NOM_PARA=”FREQ”,

VALE_PARA=list_f,

VALE_FONC=list_E,

INTERPOL=(“LIN”,”LIN”,),

PROL_DROITE=”LINEAIRE”,

PROL_GAUCHE=”CONSTANT”,);

fonc_eta=DEFI_FONCTION(NOM_PARA=”FREQ”,

VALE_PARA=list_f,

VALE_FONC=list_eta,

INTERPOL=(“LIN”,”LIN”,),

PROL_DROITE=”LINEAIRE”,

PROL_GAUCHE=”CONSTANT”,);

Calcul des modes propres complexes#

modes=DYNA_VISCO(MODELE=modele,

CARA_ELEM=cara_ele,

# matériaux à propriétés constantes :

MATER_ELAS=_F(E=2.1e11,

NU=0.3,

RHO=7800.,

AMOR_HYST=0.002,

GROUP_MA=”SUPPORT”),

# matériaux à propriétés dépendantes de la fréquence :

MATER_ELAS_FO =_F(E=fonc_E,

AMOR_HYST=fonc_eta,

RHO=1200.,

NU=0.45,

GROUP_MA=”VISCO”),

TYPE_RESU=”MODE”,

TYPE_MODE=”BETA”,

# bande fréquentielle de recherche

FREQ=(1.,1500.),

EXCIT=_F(CHARGE=condlim),

);

Calcul de la réponse harmonique#

# DEFINITION DU CHARGEMENT

excit=AFFE_CHAR_MECA(MODELE=modele,

FORCE_NODALE=_F(GROUP_NO=”A”,

FZ=1.,),);

# DEFINITION DES FREQUENCES DE CALCUL DE LA REPONSE

listfr=DEFI_LIST_REEL(DEBUT=1.,

INTERVALLE=(_F(JUSQU_A=500.,

PAS=1.,),),);

# REPONSE HARMONIQUE

visco=DYNA_VISCO(MODELE=modele,

CARA_ELEM=cara_ele,

EXCIT=_F(CHARGE=(condlim, excit),),

MATER_ELAS=(_F(E=2.1E11,

NU=0.3,

RHO=7800.,

AMOR_HYST=0.002,

GROUP_MA=”DESSOUS”),

_F(E=7.0E10,

NU=0.3,

RHO=2700.,

AMOR_HYST=0.001,

GROUP_MA=”DESSUS”),),

MATER_ELAS_FO=(_F(E=fonc_E,

AMOR_HYST=fonc_eta,

RHO=1200.,

NU=0.45,

GROUP_MA=”VOLUME”,),),

TYPE_RESU=”HARM”,

TYPE_MODE=”REEL”,

LIST_FREQ=listfr,

# champs à sauvegardés

NOM_CHAM=(“DEPL”,”VITE”),

# sauvegarde des modes propres de la structure :

MODE_MECA=CO(“modes”),

);