u4.56.01 Opérateur SECH_NON_LINE#
Syntaxe#
Détail de la syntaxe
evol_sech = SECH_NON_LINE(
◇ reuse = <objet de RESULTAT>,
◇ RESULTAT = evol_sech,
◆ MODELE = modele,
◆ CHAM_MATER = cham_mater,
◆ COMPORTEMENT = _F(
◆ RELATION = / "SECH_BAZANT",
/ "SECH_GRANGER",
/ "SECH_MENSI",
/ "SECH_NAPPE",
/ "SECH_RFT",
◆ / TOUT = "OUI" (ou non renseigné),
/ GROUP_MA = list[grma],
),
◆ EXCIT = _F(
◆ CHARGE = char_cine_ther / char_ther,
◇ FONC_MULT = fonction / formule / nappe,
◇ TYPE_CHARGE = "FIXE_CSTE",
),
⟐ AFFICHAGE = _F(
◇ INFO_RESIDU = / "NON" (par défaut),
/ "OUI",
◇ INFO_TEMPS = / "NON" (par défaut),
/ "OUI",
◇ UNITE = unit,
◇ PAS = int,
),
◇ METHODE = / "NEWTON" (par défaut),
/ "NEWTON_KRYLOV",
# Si: equal_to("METHODE", 'NEWTON') or equal_to("METHODE", 'NEWTON_KRYLOV')
⟐ NEWTON = _F(
◇ REAC_ITER = int (défaut: 0),
◇ RESI_LINE_RELA = float (défaut: 0.001),
◇ ITER_LINE_MAXI = int (défaut: 0),
),
◇ TYPE_CALCUL = "TRAN",
◆ 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,
),
# Si: (equal_to("TYPE_CALCUL", 'TRAN'))
◇ PARM_THETA = float (défaut: 0.57),
◆ ETAT_INIT = _F(
◇ / STAT = "OUI" (ou non renseigné),
/ EVOL_SECH = evol_sech,
/ CHAM_NO = cham_no,
/ VALE = float,
# Si: exists("EVOL_SECH")
◇ 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,
),
# Si: (equal_to("TYPE_CALCUL", 'STAT'))
◆ 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,
),
⟐ CONVERGENCE = _F(
◇ RESI_GLOB_MAXI = float,
◇ RESI_GLOB_RELA = float,
◇ ITER_GLOB_MAXI = int (défaut: 10),
),
⟐ 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: -1.0),
◇ GESTION_MEMOIRE = / "AUTO" (par défaut),
/ "EVAL",
/ "IN_CORE",
/ "OUT_OF_CORE",
◇ FILTRAGE_MATRICE = float (défaut: -1.0),
◇ MIXER_PRECISION = / "NON" (par défaut),
/ "OUI",
◇ 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",
◇ TYPE_RESOL = / "AUTO" (par défaut),
/ "GENEO",
/ "HARMO",
◇ NB_MODE = int (défaut: 30),
◇ SEUIL = float,
# 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')"),
),
◇ OBSERVATION = _F(
◆ / TOUT = "OUI" (ou non renseigné),
/ NOEUD = list[no],
/ GROUP_NO = list[grno],
/ GROUP_MA = list[grma],
/ MAILLE = list[ma],
◇ TITRE = text,
◇ OBSE_ETAT_INIT = / "NON",
/ "OUI" (par défaut),
◇ EVAL_CHAM = / "MAX",
/ "MAXI_ABS",
/ "MIN",
/ "MINI_ABS",
/ "MOY",
/ "VALE" (par défaut),
◆ / NOM_CMP = list[text],
◇ EVAL_CMP = / "FORMULE",
/ "VALE" (par défaut),
◇ INST = list[float],
◇ LIST_INST = listr8,
◇ PAS_OBSE = int,
◇ CRITERE = / "ABSOLU",
/ "RELATIF" (par défaut),
◆ NOM_CHAM = "SECH" (ou non renseigné),
# Si: (equal_to("EVAL_CMP", 'FORMULE'))
◆ FORMULE = formule,
# Si: (equal_to("CRITERE", 'RELATIF'))
◇ PRECISION = float (défaut: 1e-06),
# Si: (equal_to("CRITERE", 'ABSOLU'))
◆ PRECISION = float,
),
◇ 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,
◇ INFO = / 1,
/ 2,
◇ TITRE = text,
Les paramètres généraux décrivent le modèle et le champ des matériaux.
Modèle#
Le mot-clé MODELE permet de déclarer le modèle du calcul provenant de la commande AFFE_MODELE qui affecte des modélisations sur des élements du maillage. Les seules modélisations autorisées dans SECH_NON_LINE sont 3D_SECH, 3D_SECH_DIAG, AXIS_SECH et AXIS_SECH_DIAG.
Champ de matériaux#
Le mot-clé CHAM_MATER permet de déclarer le nom du champ de matériau affecté sur le 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.
Titre#
Le mot-clef TITRE permet de donner un titre que l’on veut donner au résultat, structure de données de type evol_sech [U4.03.01].
Gestion de la verbosité#
Le mot-clef INFO permet d’effectuer dans le fichier message diverses impressions intermédiaires.
Application des chargements et des conditions limites#
Le mot-clef facteur EXCIT permettant 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_SECH].
- 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 dépendant de la température (c’est-à-dire pour le chargement de type FLUX_NL) est interdite.
Réglages des solveurs non-linéaires#
◇ METHODE =/ "NEWTON" (par défaut),
/ "NEWTON_KRYLOV",
Le mot-clef METHODE permet de choisir la méthode de résolution du problème incrémental non linéaire.
Méthodes de Newton#
Quand on choisit “NEWTON”, on utilise l’algorithme de Newton-Raphson pour résoudre le problème (voir [R5.03.01]).
Avec “NEWTON_KRYLOV”, on utilise une version inexacte de l’algorithme de Newton-Raphson ; la précision des résolutions de systèmes linéaires par une méthode itérative est adaptée au cours de chaque pas de chargement.
Comportements non-linéaires#
◆ COMPORTEMENT = _F(
◆ RELATION = / "SECH_BAZANT",
/ "SECH_GRANGER",
/ "SECH_MENSI",
/ "SECH_NAPPE",
/ "SECH_RFT",
◆ / TOUT = "OUI" (ou non renseigné),
/ GROUP_MA = list[grma],
),
Les comportements de séchage sont décrits par le mot-clef facteur répétable et obligatoire COMPORTEMENT. Le mot-clef GROUP_MA spécifie les mailles sur lesquelles la relation de comportement est appliquée. De façon analogue à la mécanique, on peut utiliser plusieurs lois de séchage différentes, appliquées à des groupes de mailles complémentaires.
Ce mot-clef facteur permet de choisir l’un des modèles de séchage, défini par l’expression du coefficient de diffusion.
Résolution du problème et description des modèles de diffusion#
La résolution du séchage est caractérisée par:
C’est l’équation de la chaleur non linéaire où la variable de séchage \(C\) tient le rôle de la température. Le choix de la relation de comportement permet de définir le coefficient de diffusion \(D(C,T)\) selon diverses formes usuelles de la littérature.
Dans le cas général, le séchage est résolu après un calcul thermique préalable (calcul non couplé mais chaîné thermique/séchage). Le champ de température, intervenant comme variable auxiliaire, est nécessaire pour calculer le coefficient de diffusion de certaines lois. La température est donc une donnée d’entrée du calcul du séchage, qui doit obligatoirement être renseignée comme variable de commande pour les lois “SECH_GRANGER”, “SECH_NAPPE” et “SECH_RFT”, dans AFFE_MATERIAU. Les données thermiques renseignées dans AFFE_MATERIAU peuvent être des champs ou, comme c’est le cas le plus souvent, des résultats obtenus par une exécution d’un opérateur de thermique, linéaire ou non.
Modèle de Granger#
Pour RELATION=”SECH_GRANGER”, la formulation de Granger du coefficient de diffusion est donnée par l’expression:
On se reportera à la documentation de l’opérateur [DEFI_MATERIAU] pour la signification des différents paramètres. Dans le cas de l’utilisation de la loi SECH_GRANGER, il est nécessaire de s’assurer de la cohérence entre le matériau utilisé et la loi de comportement : c’est à dire que le mot clé SECH_GRANGER a bien été renseigné dans [DEFI_MATERIAU] pour le matériau utilisé.
Modèle de Mensi#
Pour RELATION=”SECH_MENSI”, on applique la résolution du séchage caractérisée par la loi de Mensi.
Dans le cas de l’utilisation de cette loi SECH_MENSI, il est nécessaire de s’assurer de la cohérence entre le matériau utilisé et la loi de comportement : c’est à dire que le mot clé SECH_MENSI a bien été renseigné dans [DEFI_MATERIAU] pour le matériau utilisé.
Modèle de Bazant#
Pour RELATION=”SECH_BAZANT”, on applique la résolution du séchage caractérisée par la loi de Bazant.
Dans le cas de l’utilisation de cette loi SECH_BAZANT, il est nécessaire de s’assurer de la cohérence entre le matériau utilisé et la loi de comportement : c’est à dire que le mot clé SECH_BAZANT a bien été renseigné dans [DEFI_MATERIAU] pour le matériau utilisé.
Modèle général#
Pour RELATION=”SECH_NAPPE”, on applique la résolution du séchage avec un coefficient de diffusion défini par une nappe définie par la commande [DEFI_NAPPE].
Dans le cas de l’utilisation de cette loi, il est nécessaire de s’assurer de la cohérence entre le matériau utilisé et la loi de comportement : c’est à dire que le mot clé SECH_NAPPE a bien été renseigné dans [DEFI_MATERIAU] pour le matériau utilisé.
Modèle RFT#
Pour RELATION=”SECH_RFT”, on applique la résolution du séchage caractérisée par la loi RFT (RICHARD_FICK_TEMPERATURE). L’expression du coefficient de diffusion de cette loi est présentée dans [R7.01.12].
Dans le cas de l’utilisation de cette loi SECH_RFT, il est nécessaire de s’assurer de la cohérence entre le matériau utilisé et la loi de comportement : les mots clés SECH_RFT et BETON_DESORP doivent être renseignés dans [DEFI_MATERIAU] pour le matériau utilisé.
Reprises, archivage et gestion de l’état initial#
◇ RESULTAT = evol_sech,
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#
◆ ETAT_INIT = _F(
◆ / STAT = "OUI" (ou non renseigné),
/ EVOL_SECH = evol_sech,
/ CHAM_NO = cham_no,
/ VALE = float,
# Si: exists("EVOL_SECH")
◇ 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,
),
Le mot-clef ETAT_INIT permet de définir un état initial de référence dans le cas d’un calcul transitoire. Contrairement au cas de la mécanique, cet état initial est obligatoire, il n’y a pas de valeur par défaut.
Calcul stationnaire#
Si STAT = « OUI », alors la valeur initiale du champ de concentration en eau est alors le résultat d’un calcul stationnaire préalable. C’est le mode par défaut.
Champ de concentration en eau ou de séchage#
Le mot-clef VALE permet de définir une valeur initiale de la concentration en eau constante sur toute la structure tandis que le mot-clef CHAM_NO la définit par un champ nodal (résultat de l’opérateur [CREA_CHAMP]) par exemple.
On peut également utiliser le champ de concentration en eau initiale par extraction d’un résultat evol_sech donné par le mot-clef EVOL_SECH. 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 l’objet evol_sech.
- Remarque :
Attention, il s’agit du numéro d’ordre dans la structure de donnée lue en reprise par le mot-clef EVOL_SECH 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].
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, aux points d’intégration ou aux nœuds, à partir du champ aux nœuds de concentration en eau ainsi obtenu par SECH_NON_LINE.
Paramètres communs avec THER_NON_LINE#
Les paramètres suivants sont identiques à ceux de l’opérateur THER_NON_LINE.
Paramétrisation du calcul#
Voir Paramétrisation du calcul Pour le moment, la valeur « STAT » du mot-clé TYPE_CALCUL n’est pas disponible dans SECH_NON_LINE.
Réglages de la convergence#
Réglages du solveur linéaire#
Suivi du calcul#
Voir Suivi du calcul