u4.64.02 Opérateur DEFI_BASE_MODALE#

Syntaxe#

Détail de la syntaxe
mode_meca = DEFI_BASE_MODALE(
    ◇ reuse = <objet de RITZ/BASE_MODALE>,
    ◆ / CLASSIQUE = _F(
           ◆ INTERF_DYNA = interf_dyna_clas,
           ◆ MODE_MECA = mode_meca,
           ◇ NMAX_MODE = int,
        ),
      / RITZ = _F(
           ◆ / MODE_MECA = mode_meca,
             / BASE_MODALE = mode_meca,
             / MODE_INTF = mode_meca / mult_elas,
           ◇ NMAX_MODE = int,
        ),
      / DIAG_MASS = _F(
           ◆ MODE_MECA = mode_meca,
           ◆ MODE_STAT = mode_meca,
        ),
      / ORTHO_BASE = _F(
           ◆ BASE = mode_meca / mult_elas,
           ◆ MATRICE = matr_asse_depl_c / matr_asse_depl_r / matr_asse_gene_r / matr_asse_pres_r,
        ),
    # Si: exists("RITZ")
        ◇ INTERF_DYNA = interf_dyna_clas,
        ◇ NUME_REF = nume_ddl,
        ◇ ORTHO = / "NON" (par défaut),
                  / "OUI",
        ◇ LIST_AMOR = listr8,
        # Si: equal_to("ORTHO", 'OUI')
            ◆ MATRICE = matr_asse_depl_c / matr_asse_depl_r / matr_asse_gene_r / matr_asse_pres_r,
    ⟐ SOLVEUR = _F(
         ◇ METHODE = / "LDLT",
                     / "MULT_FRONT",
                     / "MUMPS" (par défaut),
         # Si: equal_to("METHODE", 'MULT_FRONT')
             ◇ RENUM = / "MD",
                       / "MDA" (par défaut),
             ◇ NPREC = int (défaut: 8),
             ◇ ELIM_LAGR = / "NON" (par défaut),
                           / "OUI",
             ◇ STOP_SINGULIER = / "NON" (par défaut),
                                / "OUI",
         # Si: equal_to("METHODE", 'LDLT')
             ◇ RENUM = "RCMK",
             ◇ NPREC = int (défaut: 8),
             ◇ ELIM_LAGR = / "NON" (par défaut),
                           / "OUI",
             ◇ STOP_SINGULIER = / "NON" (par défaut),
                                / "OUI",
         # Si: equal_to("METHODE", 'MUMPS')
             ◇ RENUM = / "AMD",
                       / "AMF",
                       / "AUTO" (par défaut),
                       / "METIS",
                       / "PARMETIS",
                       / "PORD",
                       / "PTSCOTCH",
                       / "QAMD",
                       / "SCOTCH",
             ◇ NPREC = int (défaut: 8),
             ◇ ELIM_LAGR = / "LAGR2" (par défaut),
                           / "NON",
                           / "OUI",
             ◇ STOP_SINGULIER = / "NON" (par défaut),
                                / "OUI",
             ◇ TYPE_RESOL = / "AUTO" (par défaut),
                            / "NONSYM",
                            / "SYMDEF",
                            / "SYMGEN",
             ◇ ACCELERATION = / "AUTO",
                              / "FR" (par défaut),
                              / "FR+",
                              / "FR++",
                              / "LR",
                              / "LR+",
                              / "LR++",
             ◇ LOW_RANK_SEUIL = float (défaut: 0.0),
             ◇ PRETRAITEMENTS = / "AUTO" (par défaut),
                                / "SANS",
             ◇ POSTTRAITEMENTS = / "AUTO" (par défaut),
                                 / "FORCE",
                                 / "MINI",
                                 / "SANS",
             ◇ PCENT_PIVOT = int (défaut: 35),
             ◇ NB_RHS = int (défaut: 1),
             ◇ RESI_RELA = float (défaut: -1.0),
             ◇ GESTION_MEMOIRE = / "AUTO" (par défaut),
                                 / "EVAL",
                                 / "IN_CORE",
                                 / "OUT_OF_CORE",
         # Si: equal_to("METHODE", 'GCPC')
             ◇ ELIM_LAGR = / "NON" (par défaut),
                           / "OUI",
             ◇ PRE_COND = / "LDLT_DP",
                          / "LDLT_INC" (par défaut),
                          / "LDLT_SP",
             ◇ RESI_RELA = float (défaut: 1e-06),
             ◇ NMAX_ITER = int (défaut: 0),
             # Si: equal_to("PRE_COND", 'LDLT_INC')
                 ◇ RENUM = "RCMK",
                 ◇ NIVE_REMPLISSAGE = int (défaut: 0),
             # Si: is_in("PRE_COND", ('LDLT_SP', 'LDLT_DP'))
                 ◇ RENUM = / "METIS",
                           / "PARMETIS" (par défaut),
                           / "SANS",
                 ◇ REAC_PRECOND = int (défaut: 30),
                 ◇ PCENT_PIVOT = int (défaut: 20),
                 ◇ GESTION_MEMOIRE = / "AUTO" (par défaut),
                                     / "IN_CORE",
                 ◇ LOW_RANK_SEUIL = float (défaut: 0.0),
         # Si: equal_to("METHODE", 'PETSC')
             ◇ ELIM_LAGR = / "NON" (par défaut),
                           / "OUI",
             ◇ ALGORITHME = / "CG",
                            / "CR",
                            / "FGMRES" (par défaut),
                            / "GCR",
                            / "GMRES",
                            / "GMRES_LMP",
             ◇ OPTION_PETSC = text (défaut: ""),
             ◇ PRE_COND = / "BLOC_LAGR",
                          / "BOOMER",
                          / "FIELDSPLIT",
                          / "GAMG",
                          / "HPDDM",
                          / "JACOBI",
                          / "LDLT_DP",
                          / "LDLT_INC",
                          / "LDLT_SP" (par défaut),
                          / "ML",
                          / "SANS",
                          / "SOR",
                          / "UTILISATEUR",
             ◇ RESI_RELA = float (défaut: 1e-06),
             ◇ NMAX_ITER = int (défaut: 0),
             # Si: equal_to("PRE_COND", 'LDLT_INC')
                 ◇ RENUM = "RCMK",
                 ◇ NIVE_REMPLISSAGE = int (défaut: 0),
                 ◇ REMPLISSAGE = float (défaut: 1.0),
             # Si: is_in("PRE_COND", ('LDLT_SP', 'LDLT_DP'))
                 ◇ RENUM = / "METIS",
                           / "PARMETIS" (par défaut),
                           / "SANS",
                 ◇ REAC_PRECOND = int (défaut: 30),
                 ◇ PCENT_PIVOT = int (défaut: 20),
                 ◇ GESTION_MEMOIRE = / "AUTO" (par défaut),
                                     / "IN_CORE",
                 ◇ LOW_RANK_SEUIL = float (défaut: 0.0),
             # 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 = / "RCMK",
                           / "SANS" (par défaut),
      ),
    ◇ TITRE = text,
    ◇ INFO = / 1 (par défaut),
             / 2,
)


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

Opérandes#

Mot-clé facteur CLASSIQUE#

♦    /    CLASSIQUE = _F(

Mot-clé facteur pour la définition d’une base modale de type’CLASSIQUE”, quand on réalise un calcul par sous-structuration dynamique.

Opérande INTERF_DYNA#

♦    INTERF_DYNA = intdyn

Nom du concept de type interf_dyna_clasproduit par DEFI_INTERF_DYNA[U4.64.01].

L’opérateur calcule les déformées statiques correspondant aux différentes interfaces définies, en s’appuyant sur la numérotation utilisée pour le calcul des modes propres.

Opérandes MODE_MECA / NMAX_MODE#

◊    MODE_MECA = modes

Liste des concepts de type mode_meca contenant les modes propres de la structure.

◊    NMAX_MODE = nbmodes

Liste d’entiers donnant, pour chaque concept mode_meca, le nombre maximal de modes propres à retenir. A partir de la ième base modale de la liste modes, on retient alors les modes correspondant aux nbmodes[i] fréquences les plus basses.

En général, la longueur de la liste d’entiers, renseignée sous le mot-clé NMAX_MODE, doit correspondre à celle de la liste des bases modales (mot-clé MODE_MECA). La seule exception à cette règle est quand une unique valeur est donnée dans NMAX_MODE. Dans ce cas, la valeur de NMAX_MODE est utilisée pour chacune des bases modales.

Si NMAX_MODE n’est pas renseigné, on prend par défaut tous les modes de chacune de bases modales données sous le mot-clé MODE_MECA.

Mot-clé facteur RITZ#

♦    /    RITZ = _F(

Mot-clé facteur permettant:

  • dans le cas d’un calcul par sous-structuration, de construire une base modale de sous-structure de type “RITZ”;

  • dans le cas d’un calcul directement avec la structure complète, de construire une base modale enrichie (par exemple: des modes propres de vibration, qu’on enrichit de modes statiques associés à des forces extérieures).

La base est constituée de deux manières différentes: soit à partir de deux occurrences du mot-clé RITZ (une avec le mot-clé MODE_MECA ou BASE_MODALE, une autre forcément avec le mot-clé MODE_INTF, les autres possibilités ne sont pas autorisées); soit à partir d’une unique occurrence du mot-clé RITZ et seul le mot-clé MODE_MECA est alors accepté (peu utilisé sauf éventuellement pour réduire le nombre de modes ou changer la numérotation de référence).

Mot-clé MODE_MECA#

Nom du concept de type mode_meca contenant les modes propres de vibration de la structure, ou de la sous-structure dans le cas d’un calcul par sous-structuration.

Il peut être utilisé seul ou en présence d’une seconde occurrence de RITZ avec le mot-clé MODE_INTF (si on souhaite ajouter des modes d’interface par exemple).

On peut donner une liste de mode_meca obtenus pour la même structure (avec des conditions aux limites différentes par exemple).

Mot-clé MODE_INTF#

Nom du concept de type mode_meca (produit par CALC_MODES [U4.52.02] ou par MODE_STATIQUE [U4.52.14]) ou mult_elas (produit par MACRO_ELAS_MULT [U4.51.02]) contenant:

  • dans le cas d’un calcul par sous-structuration: les modes qu’on veut utiliser comme modes d’interface de la sous‑structure;

  • dans le cas d’un calcul directement sur la structure complète: des modes qui enrichissent la base de modes propres de vibration donnée sous le mot-clé MODE_MECA précédent. Cela peut par exemple être des déformées statiques associées à des forces extérieures (force imposée connue; force de choc associée à un obstacle; etc.).

Il ne peut être utilisé qu’en présence d’une seconde occurrence du mot-clé RITZ qui contiendra le mot-clé MODE_MECA ou BASE_MODALE (quitte à affecter NMAX_MODE à zéro si on ne souhaite pas prendre en compte ce mot-clé par exemple).

Mot-clé BASE_MODALE#

Nom de concept de type mode_meca produit par un appel précédent de l’opérateur de DEFI_BASE_MODALE [U4.64.02]. Il ne peut être entré que lorsque le nombre d’occurrence du mot-clé RITZ est égal à deux. L’autre occurrence du mot-clé RITZ contiendra alors obligatoirement le mot-clé MODE_INTF (pour enrichir une base existante). Le nom de concept mode_meca résultat de l’opérateur peut être différent de celui-ci ou identique (il est alors réentrant).

Opérande NMAX_MODE#

Nombre de modes à retenir dans les modes dynamiques (ou statiques) donnés par un des mots-clés précédents sous l’occurrence du mot-clé RITZ. Si on renseigne une liste de mode_meca, il faut donner soit une liste de la même taille pour les nombres de modes à retenir, soit une valeur unique (dans ce cas, cette valeur est appliquée à tous les concepts mode_meca).

Si NMAX_MODE n’est pas renseigné, on prend par défaut tous les modes.

Opérande INTERF_DYNA#

Interface dynamique de la sous-structure (à renseigner éventuellement et seulement si l’on utilise le mot-clé facteur “RITZ”).

Opérande NUME_REF#

Numérotation de référence sur laquelle tous les champs de déplacement (modes dynamiques et statiques) constituant la base de “RITZ” seront réordonnés.

Opérande LIST_AMOR#

Liste des amortissements modaux que l’utilisateur peut fournir pour enrichir les modes déclares sous le mot-clé MODE_MECA. Ça revient à ajouter des amortissements réduits pour ces modes mêmes si à l’origine ils sont des modes réels. Cette option est utile pour simuler des résultats expérimentaux.

Opérande ORTHO#

Opérande permettant de faire une orthonormalisation de la base de Ritz (à renseigner si on souhaite cette ré-orthonormalisation et seulement si l’on utilise le mot-clé facteur “RITZ”). Cette orthonormalisation est faite avec un algorithme de type Graam-Schmidt itératif (IGS) suivant la version de Kahan-Parlett.

Mot-clé MATRICE#

Nom du concept de type matr_asse_* qui sera pris en compte pour les produits scalaires lors de la réorthonormalisation de la base de RITZ. C’est un mot-clé obligatoire si ORTHO=”OUI”.

Mot-clé facteur DIAG_MASS#

♦    /    DIAG_MASS = _F(

Mot-clé permettant de recalculer les modes statiques en éliminant la contribution dynamique et en procédant à une orthogonalisation de Graam-Schmidt.

Mot-clé MODE_MECA#

Nom du concept de type mode_meca contenant les modes propres dynamiques de la sous-structure traitée.

Mot-clé MODE_STAT#

Nom du concept de type mode_meca produit par l’opérateur MODE_STATIQUE [U4.52.14] qui contient les modes statiques.

Mot-clé facteur ORTHO_BASE#

♦    /    ORTHO_BASE = _F(

Mot-clé permettant d’orthonormaliser les modes d’une base Cette orthonormalisation est faite avec un algorithme de type Graam-Schmidt itératif (IGS) suivant la version de Kahan-Parlett.

Mot-clé BASE#

Nom du concept de type mode_mecaou mult_elascontenant des modes propres dynamiques.

Mot-clé MATRICE#

Nom du concept de type matr_asse_* qui contient sera pris en compte pour les produits scalaires lors de la réorthogonalisation.

Mot-clé facteur SOLVEUR#

◊ SOLVEUR = _F(...)

Ce mot-clé facteur est facultatif : il permet de choisir un autre solveur de résolution de système. Dans le cas de cette commande, la syntaxe du mot-clé est restreinte à deux méthodes: on peut choisir entre la méthode par défaut, MULT_FRONT, et les méthodes LDLT ou MUMPS. La syntaxe étant commune à plusieurs commandes, veuillez consulter le manuel [U4.50.01].

Opérande TITRE#

◊    TITRE = titre

Titre du concept créé.

Opérande INFO#

◊    INFO =

Niveau des informations fournies dans le fichier MESSAGE:

1

pas d’impression;

2

écriture des généralités (concepts amont, type de base).

Exemples#

Sous-structuration dynamique#

Les différentes modélisations du cas-test SDLS106 présentent la mise en œuvre complète d’un calcul par sous-structuration, avec différentes méthodes (Craig-Bampton, Mc Neal, maillages compatibles ou non, etc.).

Enrichissement d’une base de modes propres avec des modes statiques#

# calcul des matrices assemblées et de la numérotation des DDL

...

# calcul des modes propres de vibration

modesvib = CALC_MODES( MATR_RIGI=K_ASSE,

MATR_MASS=M_ASSE,

CALC_FREQ=_F( NMAX_FREQ = nb_freq) ,

);

# application d'une force extérieure

force = AFFE_CHAR_MECA( MODELE=modele,

FORCE_NODALE=_F( NOEUD = 'N11',

FX=800., FY = -1000.));

# calcul de la déformée statique associée à cette force extérieure

modestat = MODE_STATIQUE( MATR_RIGI=K_ASSE,

MATR_MASS=M_ASSE,

FORCE_NODALE=_F( NOEUD='N11',

AVEC_CMP=('DX','DY') ),

);

# construction de la base modale enrichie

basemode = DEFI_BASE_MODALE( RITZ =(_F( MODE_MECA=modesvib ),

_F( MODE_INTF=modestat ),

),

NUME_REF=NUMDDL,

);

Le cas-test SDNL104c présente la mise en œuvre complète de cette technique.

Un autre exemple est donné par le cas-test SDNL301a, où les déformées statiques qui enrichissent la base des modes propres, sont celles liées à des forces extérieures engendrées par des chocs.