2. Syntaxe#

table = INFO_MODE(
    ◇ TYPE_MODE = / "MODE_COMPLEXE",
                  / "DYNAMIQUE" (par défaut),
                  / "MODE_FLAMB",
                  / "GENERAL",
    ◇ INFO = / 1 (par défaut),
             / 2,
    # Si: equal_to("TYPE_MODE", 'DYNAMIQUE')
        ◆ MATR_RIGI = matr_asse_pres_r / matr_asse_depl_c / matr_asse_depl_r / matr_asse_gene_c / matr_asse_gene_r / matr_asse_temp_r,
        ◆ MATR_MASS = matr_asse_pres_r / matr_asse_temp_r / matr_asse_gene_r / matr_asse_depl_r,
        ◆ FREQ = float,
        ⟐ COMPTAGE = _F(
             ◇ METHODE = / "AUTO" (par défaut),
                         / "STURM",
             ◇ SEUIL_FREQ = float (défaut: 0.01),
             ◇ PREC_SHIFT = float (défaut: 0.05),
             ◇ NMAX_ITER_SHIFT = int (défaut: 3),
          ),
    # Si: equal_to("TYPE_MODE", 'MODE_FLAMB')
        ◆ MATR_RIGI = matr_asse_pres_r / matr_asse_depl_c / matr_asse_depl_r / matr_asse_gene_c / matr_asse_gene_r / matr_asse_temp_r,
        ◆ MATR_RIGI_GEOM = matr_asse_pres_r / matr_asse_temp_r / matr_asse_gene_r / matr_asse_depl_r,
        ◆ CHAR_CRIT = float,
        ⟐ COMPTAGE = _F(
             ◇ METHODE = / "AUTO" (par défaut),
                         / "STURM",
             ◇ SEUIL_CHAR_CRIT = float (défaut: 0.01),
             ◇ PREC_SHIFT = float (défaut: 0.05),
             ◇ NMAX_ITER_SHIFT = int (défaut: 3),
          ),
    # Si: equal_to("TYPE_MODE", 'MODE_COMPLEXE')
        ◆ MATR_RIGI = matr_asse_pres_r / matr_asse_depl_c / matr_asse_depl_r / matr_asse_gene_c / matr_asse_gene_r / matr_asse_temp_r,
        ◆ MATR_MASS = matr_asse_pres_r / matr_asse_temp_r / matr_asse_gene_r / matr_asse_depl_r,
        ◇ MATR_AMOR = matr_asse_pres_r / matr_asse_temp_r / matr_asse_gene_r / matr_asse_depl_r,
        ◇ TYPE_CONTOUR = / "CERCLE" (par défaut),
                         / "CERCLE" (par défaut),
        ◆ RAYON_CONTOUR = float,
        ◇ CENTRE_CONTOUR = complex,
        ⟐ COMPTAGE = _F(
             ◇ METHODE = / "AUTO" (par défaut),
                         / "APM",
             ◇ NBPOINT_CONTOUR = int (défaut: 40),
             ◇ NMAX_ITER_CONTOUR = int (défaut: 3),
          ),
    # Si: equal_to("TYPE_MODE", 'GENERAL')
        ◆ MATR_A = matr_asse_pres_r / matr_asse_depl_c / matr_asse_depl_r / matr_asse_gene_c / matr_asse_gene_r / matr_asse_temp_r,
        ◆ MATR_B = matr_asse_pres_r / matr_asse_temp_r / matr_asse_gene_r / matr_asse_depl_r,
        ◇ MATR_C = matr_asse_pres_r / matr_asse_temp_r / matr_asse_gene_r / matr_asse_depl_r,
        ◇ CHAR_CRIT = float,
        # Si: not exists("CHAR_CRIT")
            ◇ TYPE_CONTOUR = / "CERCLE" (par défaut),
                             / "CERCLE" (par défaut),
            ◆ RAYON_CONTOUR = float,
            ◇ CENTRE_CONTOUR = complex,
        ⟐ COMPTAGE = _F(
             ◇ METHODE = / "AUTO" (par défaut),
                         / "STURM",
                         / "APM",
             ◇ SEUIL_CHAR_CRIT = float (défaut: 0.01),
             ◇ PREC_SHIFT = float (défaut: 0.05),
             ◇ NMAX_ITER_SHIFT = int (défaut: 3),
          ),
        ◇ NBPOINT_CONTOUR = int (défaut: 40),
        ◇ NMAX_ITER_CONTOUR = int (défaut: 3),
    ◇ TITRE = text,
    ⟐ SOLVEUR = _F(
         ◇ METHODE = / "MULT_FRONT",
                     / "LDLT",
                     / "MUMPS" (par défaut),
         # Si: equal_to("METHODE", 'MULT_FRONT')
             ◇ RENUM = / "MD",
                       / "MDA" (par défaut),
             ◇ NPREC = int (défaut: 8),
         # Si: equal_to("METHODE", 'LDLT')
             ◇ RENUM = "RCMK",
             ◇ NPREC = int (défaut: 8),
         # 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 = / "NON",
                           / "LAGR2" (par défaut),
             ◇ TYPE_RESOL = / "NONSYM",
                            / "SYMGEN",
                            / "SYMDEF",
                            / "AUTO" (par défaut),
             ◇ ACCELERATION = / "AUTO",
                              / "FR" (par défaut),
                              / "FR+",
                              / "FR++",
                              / "LR",
                              / "LR+",
                              / "LR++",
             ◇ LOW_RANK_SEUIL = float,
             ◇ PRETRAITEMENTS = / "SANS",
                                / "AUTO" (par défaut),
             ◇ PCENT_PIVOT = int (défaut: 35),
             ◇ NB_RHS = int (défaut: 1),
             ◇ GESTION_MEMOIRE = / "IN_CORE",
                                 / "OUT_OF_CORE",
                                 / "AUTO" (par défaut),
                                 / "EVAL",
         # Si: equal_to("METHODE", 'GCPC')
             ◇ 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')
             ◇ 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",
      ),
    ◇ NIVEAU_PARALLELISME = / "PARTIEL",
                            / "COMPLET" (par défaut),
    ⟐ PARALLELISME_MACRO = _F(
      ),
)

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