u4.55.01 Opérateur FACTORISER#
Syntaxe#
Détail de la syntaxe
/ matr_asse_depl_c
/ matr_asse_depl_r
/ matr_asse_pres_c
/ matr_asse_pres_r
/ matr_asse_temp_c
/ matr_asse_temp_r = FACTORISER(
◇ reuse = <objet de MATR_ASSE>,
◆ MATR_ASSE = matr_asse_depl_c / matr_asse_depl_r / matr_asse_pres_c / matr_asse_pres_r / matr_asse_temp_c / matr_asse_temp_r,
◇ METHODE = / "GCPC",
/ "LDLT",
/ "MULT_FRONT",
/ "MUMPS" (par défaut),
/ "PETSC",
# Si: equal_to("METHODE", 'MULT_FRONT')
◇ RENUM = / "MD",
/ "MDA" (par défaut),
◇ STOP_SINGULIER = / "NON",
/ "OUI" (par défaut),
◇ NPREC = int (défaut: 8),
# Si: equal_to("METHODE", 'LDLT')
◇ RENUM = "RCMK",
◇ STOP_SINGULIER = / "NON",
/ "OUI" (par défaut),
◇ NPREC = int (défaut: 8),
◇ / BLOC_DEBUT = int,
/ DDL_DEBUT = int,
◇ / BLOC_FIN = int,
/ DDL_FIN = int,
# Si: equal_to("METHODE", 'MUMPS')
◇ RENUM = / "AMD",
/ "AMF",
/ "AUTO" (par défaut),
/ "METIS",
/ "PARMETIS",
/ "PORD",
/ "PTSCOTCH",
/ "QAMD",
/ "SCOTCH",
◇ STOP_SINGULIER = / "NON",
/ "OUI" (par défaut),
◇ NPREC = int (défaut: 8),
◇ TYPE_RESOL = / "AUTO" (par défaut),
/ "NONSYM",
/ "SYMDEF",
/ "SYMGEN",
◇ PRETRAITEMENTS = / "AUTO" (par défaut),
/ "SANS",
◇ PCENT_PIVOT = int (défaut: 20),
◇ ELIM_LAGR = / "LAGR2" (par défaut),
/ "NON",
◇ GESTION_MEMOIRE = / "EVAL",
/ "IN_CORE" (par défaut),
/ "OUT_OF_CORE",
◇ ACCELERATION = / "AUTO" (par défaut),
/ "FR",
/ "FR+",
/ "LR",
/ "LR+",
◇ LOW_RANK_SEUIL = float (défaut: 0.0),
# Si: equal_to("METHODE", 'GCPC') or equal_to("METHODE", 'PETSC')
◇ PRE_COND = / "JACOBI",
/ "LDLT_DP",
/ "LDLT_INC" (par défaut),
/ "LDLT_SP",
/ "SOR",
# Si: equal_to("PRE_COND", 'LDLT_INC')
◇ NIVE_REMPLISSAGE = int (défaut: 0),
◇ REMPLISSAGE = float (défaut: 1.0),
◇ RENUM = "RCMK",
# Si: is_in("PRE_COND", ('LDLT_SP', 'LDLT_DP'))
◇ GESTION_MEMOIRE = / "AUTO" (par défaut),
/ "IN_CORE",
◇ PCENT_PIVOT = int (défaut: 20),
◇ REAC_PRECOND = int (défaut: 30),
◇ LOW_RANK_SEUIL = float (défaut: 1e-06),
◇ RENUM = / "METIS",
/ "PARMETIS",
/ "SANS" (par défaut),
# Si: equal_to("PRE_COND", 'JACOBI') or equal_to("PRE_COND", 'SOR')
◇ RENUM = "SANS",
# Si: equal_to("METHODE", 'PETSC')
◇ OPTION_PETSC = text (défaut: ""),
◇ TITRE = text,
◇ INFO = / 1,
/ 2,
)
◆ : obligatoire
◇ : optionnel
⟐ : présent par défaut
& : ensemble
/ : un seul parmi
| : plusieurs choix possibles
Opérandes#
Le choix de la méthode de résolution est fait au préalable dans la commande NUME_DDL (mot clé METHODE).
Cinq méthodes sont possibles: “MULT_FRONT”, “MUMPS”,”GCPC”, “PETSC” et “LDLT”.
Mot clé reuse = matas#
Par souci de simplification de la programmation et aussi pour gagner de l’espace disque, la factorisation «en place» de la matrice (usage de reuse) est en général obligatoire.
L” exception est le couple (“GCPC”, “LDLT_INC”). Dans ce cas, il est interdit d’utiliser reuse.
Opérande MATR_ASSE#
♦ MATR_ASSE= mat
Nom de la matrice assemblée à factoriser ou à pré conditionner selon la méthode.
Pour les méthodes “LDLT”, “MULT_FRONT” et “MUMPS”, cette matrice peut être réelle ou complexe, symétrique ou non. Par contre pour les méthodes “GCPC” et “PETSC”, cette matrice doit être réelle. Pour “GCPC”, la matrice doit aussi être symétrique.
Opérandes STOP_SINGULIER, NPREC, TYPE_RESOL , PCENT_PIVOT, PRETRAITEMENTS, GESTION_MEMOIRE, ACCELERATION, LOW_RANK_SEUIL, PRE_COND, NIVE_REMPLISSAGE, REMPLISSAGE, RENUM, REAC_PRECOND et ELIM_LAGR#
Ces mots clés sont décrits dans [U4.50.01].
Opérande TITRE#
◊ TITRE= titre
Titre que l’on veut donner au résultat [U4.02.01].
Opérande INFO#
◊ INFO=
1: pas d’impression
Factorisation partielle (méthode LDLT)#
Pour la méthode “LDLT”, l’opérateur permet de ne factoriser que partiellement la matrice. Cette possibilité permet de factoriser la matrice en plusieurs fois (plusieurs travaux) voire de modifier à la volée les dernières lignes de cette factorisée. Aujourd’hui, cette fonctionnalité présente peu d’intérêt hormis pour certaines méthodes (dite discrètes) de contact-frottement où l’on a, à dessein, placé dans les dernières lignes de la matrice les termes concernant les nœuds susceptibles d’être en contact. Ainsi, au fur et à mesure des itérations d’appariement, les relations entre ces nœuds changeant, on efface puis recalcule que ces dernières contributions de la factorisée. C’est un exemple typique où l’usage astucieux d’un algorithme assez frustre peu amener des gains majeurs (en temps).
◊ / BLOC_DEBUT= bd
bd: factorisation partielle depuis le bd-ième bloc inclus.
/ DDL_DEBUT= dd
dd: factorisation partielle depuis la dd-ième équation incluse (en numérotation interne établie par l’opérateur NUME_DDL [U4.61.11]).
◊ / BLOC_FIN= bf
bf: factorisation partielle jusqu’au bf-ième bloc inclus.
/ DDL_FIN= df
df: factorisation partielle jusqu’à la df-ième équation incluse (en numérotation interne établie par l’opérateur NUME_DDL [U4.61.11]).
BLOC_DEBUT et DDL_DEBUT
en l’absence des mots clés BLOC_DEBUT et DDL_DEBUT, la matrice sera factorisée à partir de sa première ligne.
si l’argument bd du mot clé BLOC_DEBUT est négatif ou nul, la matrice sera factorisée à partir du premier bloc. Sinon, on effectue une factorisation partielle à partir du bd-ième bloc inclus.
si l’argument dd du mot clé DDL_DEBUT est négatif ou nul, la matrice sera factorisée à partir de la première équation. Sinon, on effectue une factorisation partielle à partir de la dd-ième équation incluse.
Exemples#
Voir les exemples dans la documentation de la commande RESOUDRE [U4.55.02].