u4.66.01 Opérateur CALC_MATR_AJOU#

Syntaxe#

Détail de la syntaxe
matr_asse_gene_r = CALC_MATR_AJOU(
    ◆ MODELE_FLUIDE = modele,
    ◆ MODELE_INTERFACE = modele,
    ◆ CHAM_MATER = cham_mater,
    ◆ CHARGE = char_ther,
    ◇ / MODE_MECA = mode_meca,
      / CHAM_NO = cham_no,
      / MODELE_GENE = modele_gene,
    ◇ / NUME_DDL_GENE = nume_ddl_gene,
    ◇ DIST_REFE = float (défaut: 0.01),
    ◇ AVEC_MODE_STAT = / "OUI" (par défaut),
                       / "NON",
    ◇ NUME_MODE_MECA = int,
    ◆ OPTION = / "MASS_AJOU",
               / "AMOR_AJOU",
               / "RIGI_AJOU",
    ◇ POTENTIEL = evol_ther,
    ◇ NOEUD_DOUBLE = / "OUI",
                     / "NON" (par défaut),
    ◇ INFO = / 1 (par défaut),
             / 2,
    ⟐ SOLVEUR = _F(
         ◇ METHODE = / "MULT_FRONT",
                     / "LDLT",
                     / "MUMPS" (par défaut),
                     / "GCPC",
                     / "PETSC",
         # 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" (par défaut),
                              / "FR",
                              / "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),
             ◇ REDUCTION_MPI = int,
             ◇ NB_RHS = int (défaut: 1),
             ◇ RESI_RELA = float (défaut: 1e-06),
             ◇ 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",
      ),
)


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

Opérandes#

Opérande MODELE_FLUIDE#

♦    MODELE_FLUIDE = fluide

Modèle thermique qu’on affecte à la partie du maillage qui correspond au fluide. Les éléments de bord à l’interface fluide/structure doivent être présents dans le modèle fluide. C’est sur ce modèle qu’on résout l’équation de Laplace avec condition aux limites de type « flux fluide », pour avoir le champ de pression dans tout le fluide et afortiori le champ de pression à l’interface fluide/structure.

Les nœuds des éléments du maillage fluide doivent tous être numérotés de telle sorte que le jacobien de l’élément soit de signe positif sur tout le maillage fluide.

Opérande MODELE_INTERFACE#

♦    MODELE_INTERFACE = interf

Modèle thermique d’interface rassemblant tous les éléments de bord définissant l’interface fluide/structure. C’est sur ce modèle qu’on calcule les termes des matrices ajoutées.

Le calcul dépend de l” orientation de la normale de ces éléments d’interface. Il faut veiller à ce que cette normale soit orientée sur tous ces éléments, de la structure vers le fluide (convention adoptée).

Si les fluides baignant la structure sont de densités différentes, il faut définir le modèle interface par autant de groupes de mailles non confondus géométriquement qu’il y a de fluides au contact de la structure. Par exemple, une tuyauterie peut avoir sa surface intérieure au contact d’un fluide de densité 1, et sa surface extérieure au contact d’un fluide de densité 2. Le modèle interface est donc construit sur deux groupes de mailles non confondus géométriquement, l’un au contact du fluide de densité 1 (interfa1) et l’autre au contact du fluide de densité 2 (interfa2).

../../../../_images/100004D20000223600001741958A414D1B56A3D8.svg

Opérandes CHAM_MATER / CHARGE#

♦    CHAM_MATER = matflui

Champ de matériau définissant le fluide immergeant la structure. Ce matériau est défini par des caractéristiques thermiques équivalentes dans l’opérateur DEFI_MATERIAU [U4.43.01]. La conductivité thermique (mot-clé LAMBDA) est toujours prise égale à1. La chaleur spécifique (mot‑clé RHO_CP) joue le rôle de masse volumique du fluide.

♦    CHARGE = charge

Charge thermique de type [char_ther] nécessaire à la résolution du système linéaire découlant de l’équation de Laplace dans le fluide. On doit imposer une température quelconque (qui joue en fait le rôle d’une pression) sur un nœud quelconque du maillage fluide, afin de rendre le système non singulier. Cette opération s’effectue avec l’opérateur AFFE_CHAR_THER [U4.44.02].

Opérandes MODE_MECA / CHAM_NO / MODELE_GENE#

♦    /    MODE_MECA = modes

Modes dynamiques calculés sur le modèle structure. Si on a plusieurs structures non connexes immergées dans un même fluide, pour lesquelles on veut déterminer les matrices ajoutées comprenant les termes de couplage par le fluide, le modèle structure qu’on définit rassemble la totalité des structures immergées. Les modes utilisés par l’opérateur sont les modes calculés pour la structure globale.


/ CHAM_NO = chamno

Champ aux nœuds de déplacements affectés sur des groupes de nœuds définissant l’interface fluide/structure. En affectant un tel champ de déplacement sur le(s) groupe(s) de nœuds d’interface grâce à l’opérateur CREA_CHAMP, on peut par exemple simuler facilement des modes de corps rigide des structures. Cet opérande est à utiliser si l’on veut estimer les termes des matrices ajoutées et de couplage pour une géométrie plane sans faire au préalable de calcul modal de la structure dans le vide, et qu’on veuille affecter ces termes dans des éléments discrets (modélisation DIS_T). L’opérande INFO doit impérativement être actif pour imprimer les termes calculés.

Attention:

L’utilisation de cet opérande **exclutcelle de l’opérande* NUME_DDL_GENE. On ne peut donc pas faire de calcul modal, transitoire ou harmonique en utilisant l’opérande CHAM_NO.

En effet, pour faire du calcul de modes en eau, il faut avoir une matrice de masse généralisée et une matrice de rigidité généralisée de la structure. Ceci suppose d’avoir fait un calcul modal sur la structure dans le vide (ce qu’on veut précisément éviter).

Cet opérande ne s’utilise en définitive que pour **évaluer la matrice de masse, de rigidité et d’amortissement ajoutés, et les utiliser pour coupler des structures de type poutre par des éléments discrets de masse, par exemple.*


/ MODELE_GENE = modgen

Modèle généralisé construit par l’opérateur DEFI_MODELE_GENE [U4.65.02]. Ce mot clé est à utiliser lorsque l’on fait un calcul par sous-structuration dynamique, et que l’on veut calculer la matrice de masse ajoutée couplant l’ensemble des sous‑structures. Dans ce cas, les sous-structures peuvent être dans des fichiers de maillage différents, ces fichiers pouvant être eux-mêmes distincts du fichier de maillage fluide. Les sous-structures qui présentent une répétitivité au sein du fluide ne sont à mailler qu’une seule fois, mais on prendra soin au niveau du maillage fluide de mailler toutes les interfaces fluide/structure. De plus, il faut veiller à ce que les nœuds d’interface fluide coïncident au mieux avec les nœuds d’interface de structure, afin de pouvoir recopier, sur la base d’un critère géométrique de proximité, les valeurs du champs de déplacement de structure sur les nœuds d’interface fluide (voir opérande DIST_REFE).

Attention:

L’utilisation de cet opérande **rend obligatoirecelle de l’opérande* NUME_DDL_GENE.

Opérande OPTION#

Ce mot clé précise le calcul de masse, rigidité ou amortissement ajouté que l’on veut faire, en utilisant respectivement “MASS_AJOU”, “RIGI_AJOU”, ou “AMOR_AJOU”. Les deux dernières options de calcul nécessitent la présence d’un potentiel (thermique) stationnaire (voir opérande POTENTIEL).

Opérande DIST_REFE#

Distance de référence à renseigner lorsqu’on fait un calcul de masse ajoutée sur un modèle généralisé. Cette distance est un critère absolu géométrique destiné à recopier des valeurs de déplacements structuraux dans un modèle fluide thermique, afin d’y résoudre l’équation de Laplace du champ de pression instationnaire. Par défaut, il est égal à 10–2 m.

Opérande NOEUD_DOUBLE#

◊    NOEUD_DOUBLE = 'OUI'

Cet opérande est à utiliser lorsqu’on fait un calcul de masse ajoutée à partir d’un modèle généralisé qui comprend une sous-structure maillée par un maillage filaire ou surfacique ( i.e. sans épaisseur comme poutre ou coque) et entourée par deux fluides. Il faut dans ce cas au niveau du maillage dédoubler les nœuds des interfaces fluides de ceux de la structure, afin de pouvoir calculer le saut de pression hydrodynamique de part et d’autre de la structure ( cf. figure ci‑dessous).

../../../../_images/1000150400002461000010050A66C58130DE2C89.svg

Opérande POTENTIEL#

◊    POTENTIEL = phi

Potentiel (thermique) stationnaire nécessaire au calcul de l’amortissement et de la rigidité ajoutés de la structure soumise à un écoulement potentiel. Ce potentiel est produit par l’opérateur THER_LINEAIRE [U4.54.01].

Opérande NUME_DDL_GENE#

◊ NUME_DDL_GENE = numgen

Numérotation généralisée basée sur les modes mécaniques de la structure globale. La présence de cet opérande permet de calculer une matrice de masse ajoutée de type matr_asse_gene_R. Il doit être nécessairement présent si on veut par la suite faire du calcul modal, harmonique ou transitoire.

Opérande INFO#

◊    INFO =

Indique le niveau d’impression des résultats de l’opérateur sur le fichier MESSAGE.

1 :

aucune impression,

2 :

impression de la partie triangulaire supérieure des matrices de masse ajoutée, amortissement ou rigidité ajoutés.

Présentation en colonne.

Mot clé facteur SOLVEUR#

Voir [U4.50.01].

Opérande AVEC_MODE_STAT#

Permet de débrancher le calcul des termes de masse ajoutée sur les modes statiques contenus dans la base modale des sous-structures dans le cas d’un calcul avec un modèle généralisé ( cf. [§3.4]).

Opérande NUME_MODE_MECA#

Permet de préciser une liste de numéros de modes retenus pour le calcul.

Phase d’exécution#

On vérifie que les modèles fluide et interface sont bien thermiques.

On vérifie que le stockage des matrices ajoutées se fait sur un profil plein .

On vérifie que les coefficients d’auto-masse ajoutée (termes diagonaux de la matrice) sont bien tous positifs. Dans le cas contraire, un message d’alarme est émis pour que l’utilisateur vérifie l’orientation des normales.

On vérifie que, pour un calcul d’amortissement ou de rigidité ajoutés, le mot clé POTENTIEL est bien renseigné.

Dans le cas d’un calcul de masse ajoutée sur un modèle généralisé, on informe l’utilisateur sur les recopies de champs de déplacements structuraux dans le fluide (nombre de valeurs recopiées) et on indique comment changer la distance de référence (DIST_REFE).

Exemple : Calcul de la matrice de masse ajoutée d’une structure constituée de deux cylindres concentriques séparés par un fluide incompressible#

Les cylindres sont supportés chacun par des ressorts. La matrice de masse ajoutée est calculée pour les deux premiers modes de la structure, à savoir les modes de corps rigide de chacun des cylindres dans la direction Ox ( cf. schéma). On ne va présenter ici que les étapes du fichier de commande, car cet exemple est inspiré du cas-test FDLV101 [V8.01.101]. Pour le détail de la syntaxe des autres opérateurs, l’utilisateur pourra donc se reporter au fichier de commande de ce cas-test.

../../../../_images/10000F2600001DC4000017FA64ACE706587A5FD4.svg
  1. Définition du matériau fluide par des caractéristiques thermiques équivalentes :

  2. Affectation de ce matériau fluide sur le maillage fluide y compris le groupe de maille définissant l’interface fluide/structure.

  3. Affectation du modèle thermique fluide (comprenant aussi l’interface)

  4. Affectation du modèle thermique d’interface

  5. Affectation du modèle structure global (comprenant les deux cylindres et leurs ressorts de supportage)

  6. Affectation d’une température imposée dans le maillage fluide

  7. Calcul des modes propres de la structure dans le vide

  8. Numérotation généralisée basée sur les modes mécaniques calculés

  9. Calcul de la matrice de masse ajoutée de type matr_asse_gene_r (opérande NUME_DDL_GENE présent). De ce fait, on peut ensuite calculer les modes propres de la structure « mouillée »

matraj = CALC_MATR_AJOU( MODELE_FLUIDE = fluide ,

MODELE_INTERFACE = interf ,

CHAM_MATER = chammat1 ,

CHARGE = charge ,

OPTION = 'MASS_AJOU' ,

MODE_MECA = modes ,

NUME_DDL_GENE = numgen ,

INFO =1 )
  1. Calcul des matrices de masse et de raideur généralisées sur la numérotation généralisée basée sur les modes mécaniques calculés numgen. Ces matrices sont de type [matr_asse_gene_r]

  2. Calcul de la matrice de masse totale de la structure (matrice de masse généralisée plus matrice de masse ajoutée)

  3. Calcul des modes de la structure immergée.

  4. Restitution des modes « mouillés » sur base physique.