u4.54.01 Opérateur THER_LINEAIRE#
Syntaxe#
Détail de la syntaxe
evol_ther = THER_LINEAIRE(
◇ reuse = <objet de RESULTAT>,
◇ RESULTAT = evol_ther,
◆ MODELE = modele,
◆ CHAM_MATER = cham_mater,
◇ CARA_ELEM = cara_elem,
◆ EXCIT = _F(
◆ CHARGE = char_cine_ther / char_ther,
◇ FONC_MULT = fonction / formule / nappe,
◇ TYPE_CHARGE = "FIXE_CSTE",
),
◇ TYPE_CALCUL = / "STAT",
/ "TRAN" (par défaut),
# Si: (equal_to("TYPE_CALCUL", 'TRAN'))
◆ ETAT_INIT = _F(
◆ / STAT = "OUI" (ou non renseigné),
/ EVOL_THER = evol_ther,
/ CHAM_NO = cham_no,
/ VALE = float,
# Si: exists("EVOL_THER")
◇ NUME_ORDRE = int,
◇ INST = float,
# Si: exists("INST")
◇ CRITERE = / "ABSOLU",
/ "RELATIF" (par défaut),
# Si: (equal_to("CRITERE", 'RELATIF'))
◇ PRECISION = float (défaut: 1e-06),
# Si: (equal_to("CRITERE", 'ABSOLU'))
◆ PRECISION = float,
),
⟐ SCHEMA_TEMPS = _F(
◇ SCHEMA = "THETA",
# Si: equal_to("SCHEMA", 'THETA')
◇ THETA = float (défaut: 0.57),
),
◆ INCREMENT = _F(
# Si: exists("INST_INIT") or exists("INST_FIN")
◇ CRITERE = "RELATIF",
# Si: (equal_to("CRITERE", 'RELATIF'))
◇ PRECISION = float (défaut: 1e-06),
◆ LIST_INST = list_inst / listr8,
◇ / NUME_INST_INIT = int,
/ INST_INIT = float,
◇ / NUME_INST_FIN = int,
/ INST_FIN = float,
),
⟐ SOLVEUR = _F(
◇ METHODE = / "GCPC",
/ "LDLT",
/ "MULT_FRONT",
/ "MUMPS" (par défaut),
/ "PETSC",
# 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",
/ "OUI" (par défaut),
# Si: equal_to("METHODE", 'LDLT')
◇ RENUM = "RCMK",
◇ NPREC = int (défaut: 8),
◇ ELIM_LAGR = / "NON" (par défaut),
/ "OUI",
◇ STOP_SINGULIER = / "NON",
/ "OUI" (par défaut),
# 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",
/ "OUI" (par défaut),
◇ TYPE_RESOL = / "AUTO" (par défaut),
/ "NONSYM",
/ "SYMDEF",
/ "SYMGEN",
◇ ACCELERATION = / "AUTO" (par défaut),
/ "FR",
/ "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),
◇ REDUCTION_MPI = int (défaut: 0),
◇ NB_RHS = int (défaut: 1),
◇ RESI_RELA = float (défaut: 1e-06),
◇ GESTION_MEMOIRE = / "AUTO" (par défaut),
/ "EVAL",
/ "IN_CORE",
/ "OUT_OF_CORE",
◇ MATR_DISTRIBUEE = / "NON" (par défaut),
/ "OUI",
# 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",
◇ MATR_DISTRIBUEE = / "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 = list[int],
◇ NOM_CMP = list[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),
),
⟐ ARCHIVAGE = _F(
◆ / PAS_ARCH = int,
/ LIST_INST = listr8,
/ INST = list[float],
# Si: exists("INST") or exists("LIST_INST")
◇ CRITERE = / "ABSOLU",
/ "RELATIF" (par défaut),
# Si: equal_to("CRITERE", 'RELATIF')
◇ PRECISION = float (défaut: 1e-06),
# Si: equal_to("CRITERE", 'ABSOLU')
◆ PRECISION = float,
◇ CHAM_EXCLU = list[text] (défaut: "('RESI_NOEU', 'RESI_RELA_NOEU')"),
),
◇ TITRE = text,
◇ INFO = / 1,
/ 2,
)
◆ : obligatoire
◇ : optionnel
⟐ : présent par défaut
& : ensemble
/ : un seul parmi
| : plusieurs choix possibles
Paramètres généraux#
◆ MODELE = modele,
◆ CHAM_MATER = cham_mater,
◇ CARA_ELEM = cara_elem,
◇ INFO = / 1,
/ 2,
◇ TITRE = text,
Les paramètres généraux décrivent le modèle, le champ des matériaux et les caractéristiques élémentaires (en particulier pour les éléments de structure).
MODELE est le nom du modèle dont les éléments font l’objet du calcul thermique. La structure de données vient de la commande [AFFE_MODELE]. Il est toujours obligatoire.
Les problèmes de thermique linéaire peuvent être traités avec des modèles utilisant les éléments finis 3D, 2D, AXIS ou COQUE.
CHAM_MATER est le nom du champ de matériau affecté au modèle. La structure de données vient de la commande [AFFE_MATERIAU]. Toutes les mailles principales du modèle doivent être associées à un matériau.
CARA_ELEM est le nom des caractéristiques des éléments de coque, affectés au modèle. La structure de données vient de la commande [AFFE_CARA_ELEM]. Évidemment, ce mot-clé est optionnel: si le modèle ne contient pas de coques thermiques, il n’est pas utile; en revanche, si le modèle contient de tels éléments, il est obligatoire.
Titre#
Le mot-clef TITRE permet de donner un titre au calcul. Il sera imprimé en tête des résultats. Voir [ref:U4.03.01 <U4.03.01>].
Gestion de la verbosité#
Le mot-clef INFO permet d’effectuer dans le fichier message diverses impressions intermédiaires.
D’autres impressions sont faites systématiquement lors du calcul non linéaire, indépendamment de la valeur affectée au mot-clé INFO : ce sont les impressions des résidus au cours des itérations de Newton.
Attention, les fichiers de sortie peuvent devenir très importants avec INFO plus grand que 2.
Application des chargements et des conditions limites#
Le mot-clef facteur EXCIT permet de définir plusieurs chargements ou conditions limites. Pour chaque occurrence du mot-clef facteur, on définit CHARGE éventuellement multipliée par une fonction de temps FONC_MULT.
Le mot-clef CHARGE est un concept de type charge produit par [AFFE_CHAR_THER]. Comme pour la mécanique, il est également possible de définir une charge de type «degré de liberté imposé», ici la température, par [AFFE_CHAR_CINE].
- Remarque:
Pour chaque occurrence du mot-clef facteur EXCIT, les différents concepts char utilisés doivent être construits sur le même modèle.
Le mot-clef FONC_MULT est un coefficient multiplicatif fonction du temps (concept de type fonction, nappe ou formule) appliqué à la charge.
- Remarque:
L’utilisation concomitante de FONC_MULT avec une charge contenant des chargements thermiques dépendant de la température est interdite.
Paramétrisation du calcul#
Mot-clef TYPE_CALCUL#
Le calcul est transitoire si TYPE_CALCUL = TRAN ou stationnaire si TYPE_CALCUL=’STAT’. Dans le cas d’un calcul transitoire, il faut préciser le calcul de l’état initial dans ETAT_INIT.
Mot-clef INCREMENT#
Le mot-clef INCREMENT permet de définir les instants de calcul qui déterminent les intervalles de temps pris pour intégrer l’équation différentielle.
Les opérandes du mot clé INCREMENT ont la même signification que dans l’opérateur [STAT_NON_LINE].
- Remarque :
Si le mot clé INCREMENT est absent, on crée une liste d’instants réduite au seul réel 0 dans le cas d’un calcul stationnaire.
Mot-clef SCHEMA_TEMPS#
Ce mot-clef n’est disponible que dans le cas d’un calcul transitoire (TYPE_CALCUL = ’TRAN’).
L’argument theta est le paramètre \(theta\) de la thêta-méthode appliquée au problème transitoire. Il doit être compris entre 0 (méthode explicite) et 1 (méthode totalement implicite). En l’absence du mot clé, la valeur utilisée est \(\theta =0.57\), un peu supérieure à \(\theta =0.5\) correspondant au schéma de Crank-Nicolson. L’incidence du choix de theta sur la stabilité de la méthode est détaillée dans [R5.02.02].
Reprises, archivage et gestion de l’état initial#
◇ RESULTAT = evol_ther,
Dans le cas où l’on souhaite poursuivre un calcul déjà exécuté, le mot-clef RESULTAT indique quel objet est enrichi.
Définition d’un état initial#
Le mot-clef ETAT_INIT permet de définir un état initial de référence dans le cas d’un calcul transitoire. Le champ initial est affecté du numéro d’ordre 0 et l’instant initial prend comme valeur le premier réel de la liste d’instants telle que définie par INCREMENT.
- Remarque:
Si le mot-clef ETAT_INIT est absent, on effectue uniquement le calcul stationnaire au premier instant défini sous le mot-clef INCREMENT
Calcul stationnaire#
Si STAT = « OUI », alors la valeur initiale du champ de température est le résultat d’un calcul stationnaire préalable. C’est le mode par défaut.
Champ de température#
Le mot-clef VALE permet de définir une valeur initiale de la température constante sur toute la structure tandis que le mot-clef CHAM_NO la définit par un champ nodal de température (résultat de l’opérateur [CREA_CHAMP]) par exemple.
On peut également utiliser le champ de température initiale par extraction d’un résultat evol_ther donné par le mot-clef EVOL_THER. On peut alors donner le numéro d’ordre NUME_ORDRE ou l’instant INST du champ à extraire de cette structure de données. Si NUME_ORDRE ou INST ne sont pas remplis, on prend le dernier numéro archivé existant dans evol_ther.
- Remarque :
Attention, il s’agit du numéro d’ordre dans la structure de donnée lue en reprise par le mot-clef EVOL_THER précédent. Si cette structure de donnée a été calculée avec une liste d’instants différente de celle utilisée sous le mot-clef facteur INCREMENT de la résolution courante, il est impératif de renseigner NUME_INST_INIT sous INCREMENT, la même valeur de numéro d’ordre correspondant à des instants physiques différents. Dans le cas où les deux listes d’instants sont identiques, on peut se dispenser de renseigner deux fois le même numéro d’ordre, sous ETAT_INIT et sous INCREMENT.
Les mots-clefs PRECISION et CRITERE permettent de sélectionner finement le champ à partir de la valeur de l’instant donné par INST. Voir [U4.71.00].
On peut associer une valeur d’instant à cet état initial par le mot-clef INST_ETAT_INIT. Par défaut :
Lorsque l’état initial est défini par la donnée des champs, il n’y a pas d’instant associé.
Lorsque l’état est donné par un concept evol_ther, il s’agit de l’instant dans le précédent calcul.
Archivage des champs#
Le mot-clef ARCHIVAGE est facultatif : par défaut, l’ensemble des champs calculés pour tous les pas calculés est archivé dans le concept resultat issu de la commande. Il sert à stocker certains numéros d’ordre dans une structure de données resultat et/ou exclure du stockage certains champs.
Ce mot-clef est identique à son équivalent pour l’opérateur [STAT_NON_LINE].
- Remarque:
En cas d’arrêt du calcul par manque de temps CPU, les pas de temps précédemment calculés sont sauvegardés dans la base.
La commande [CALC_CHAMP] permet de calculer les flux de chaleur, aux points d’intégration ou aux nœuds, à partir du champ aux nœuds de température ainsi obtenu par THER_LINEAIRE.
Réglages du solveur linéaire#
Le mot-clef facteur SOLVEUR permet de choisir les options utilisées par le solveur linéaire.
La syntaxe de ce mot clé commun à plusieurs commandes est décrite dans le document [U4.50.01].