1. Syntaxe#

evol_noli = STAT_NON_LINE(
    ◇ reuse = <objet de RESULTAT>,
    ◇ RESULTAT = evol_noli,
    ◆ MODELE = modele,
    ◆ CHAM_MATER = cham_mater,
    ◇ CARA_ELEM = cara_elem,
    ◇ EXCIT = _F(
         ◆ CHARGE = char_cine_meca / char_meca,
         ◇ FONC_MULT = fonction / formule / nappe,
         ◇ TYPE_CHARGE = / "DIDI",
                         / "FIXE_CSTE" (par défaut),
                         / "FIXE_PILO",
                         / "SUIV",
                         / "SUIV_PILO",
      ),
    ◇ CONTACT = char_contact,
    ◇ SOUS_STRUC = _F(
         ◆ CAS_CHARGE = text,
         ◆ / TOUT = "OUI" (ou non renseigné),
           / SUPER_MAILLE = list[ma],
         ◇ FONC_MULT = fonction / formule / nappe,
      ),
    ◇ SCHEMA_THM = _F(
         ◇ PARM_THETA = float (défaut: 1.0),
         ◇ PARM_ALPHA = float (défaut: 1.0),
      ),
    ⟐ COMPORTEMENT = _F(
         # Si: is_in("RELATION", ('VMIS_ISOT_LINE','VMIS_ISOT_TRAC','VISCOCHAB','VISC_ISOT_LINE','VISC_ISOT_TRAC',))
             ◇ POST_ITER = "CRIT_RUPT" (ou non renseigné),
         # Si: is_in("RELATION", ('VMIS_ISOT_LINE','VMIS_CINE_LINE','VMIS_ECMI_LINE','VMIS_ISOT_TRAC','VMIS_CIN1_CHAB','VMIS_CIN2_CHAB'))
             ◇ POST_INCR = / "REST_ECRO",
                           / "SANS",
         ◆ / TOUT = "OUI" (ou non renseigné),
           / GROUP_MA = list[grma],
         ◇ RELATION = / "ARME",
                      / "ASSE_CORN",
                      / "BETON_AGEING",
                      / "BETON_BURGER",
                      / "BETON_DOUBLE_DP",
                      / "BETON_GRANGER",
                      / "BETON_GRANGER_V",
                      / "BETON_RAG",
                      / "BETON_REGLE_PR",
                      / "BETON_UMLV",
                      / "Barcelone",
                      / "CABLE",
                      / "CABLE_GAINE_FROT",
                      / "CAM_CLAY",
                      / "CHOC_ELAS_TRAC",
                      / "CHOC_ENDO",
                      / "CHOC_ENDO_PENA",
                      / "CJS",
                      / "CORR_ACIER",
                      / "CSSM",
                      / "CZM_ELAS_MIX",
                      / "CZM_EXP_MIX",
                      / "CZM_EXP_REG",
                      / "CZM_FAT_MIX",
                      / "CZM_LAB_MIX",
                      / "CZM_LIN_REG",
                      / "CZM_OUV_MIX",
                      / "CZM_TAC_MIX",
                      / "CZM_TRA_MIX",
                      / "CZM_TURON",
                      / "DASHPOT",
                      / "DHRC",
                      / "DIS_BILI_ELAS",
                      / "DIS_CHOC",
                      / "DIS_CONTACT",
                      / "DIS_ECRO_CINE",
                      / "DIS_ECRO_TRAC",
                      / "DIS_GOUJ2E_ELAS",
                      / "DIS_GOUJ2E_PLAS",
                      / "DIS_GRICRA",
                      / "DIS_VISC",
                      / "DRUCK_PRAGER",
                      / "DRUCK_PRAG_N_A",
                      / "ELAS" (par défaut),
                      / "ELAS_HYPER",
                      / "ELAS_HYPER_VISC",
                      / "ELAS_MEMBRANE_NH",
                      / "ELAS_MEMBRANE_SV",
                      / "ELAS_POUTRE_GR",
                      / "ELAS_VMIS_LINE",
                      / "ELAS_VMIS_PUIS",
                      / "ELAS_VMIS_TRAC",
                      / "ENDO_CARRE",
                      / "ENDO_FISS_EXP",
                      / "ENDO_HETEROGENE",
                      / "ENDO_ISOT_BETON",
                      / "ENDO_LOCA_EXP",
                      / "ENDO_LOCA_TC",
                      / "ENDO_ORTH_BETON",
                      / "ENDO_PORO_BETON",
                      / "ENDO_SCALAIRE",
                      / "FLUA_ENDO_PORO",
                      / "FLUA_PORO_BETON",
                      / "FONDATION",
                      / "GLRC_DAMAGE",
                      / "GLRC_DM",
                      / "GRAN_IRRA_LOG",
                      / "GRILLE_CINE_LINE",
                      / "GRILLE_ISOT_LINE",
                      / "GRILLE_PINTO_MEN",
                      / "GTN",
                      / "GonfElas",
                      / "HAYHURST",
                      / "HOEK_BROWN",
                      / "HOEK_BROWN_EFF",
                      / "HOEK_BROWN_TOT",
                      / "HUJEUX",
                      / "HYPER_HILL",
                      / "IRRAD3M",
                      / "Iwan",
                      / "JOINT_BA",
                      / "JOINT_BANDIS",
                      / "JOINT_MECA_ENDO",
                      / "JOINT_MECA_FROT",
                      / "JOINT_MECA_RUPT",
                      / "JONC_ENDO_PLAS",
                      / "KICHENIN_NL",
                      / "KIT_CG",
                      / "KIT_DDI",
                      / "KIT_H",
                      / "KIT_HH",
                      / "KIT_HH2",
                      / "KIT_HH2M",
                      / "KIT_HHM",
                      / "KIT_HM",
                      / "KIT_THH",
                      / "KIT_THH2",
                      / "KIT_THH2M",
                      / "KIT_THHM",
                      / "KIT_THM",
                      / "KIT_THV",
                      / "LAIGLE",
                      / "LEMAITRE",
                      / "LEMAITRE_IRRA",
                      / "LEMA_SEUIL",
                      / "LETK",
                      / "LKR",
                      / "MAZARS",
                      / "MAZARS_UNIL",
                      / "MCC",
                      / "META_LEMA_ANI",
                      / "META_LEMA_ANI",
                      / "META_P_CL",
                      / "META_P_CL_PT",
                      / "META_P_CL_PT_RE",
                      / "META_P_CL_RE",
                      / "META_P_IL",
                      / "META_P_IL_PT",
                      / "META_P_IL_PT_RE",
                      / "META_P_IL_RE",
                      / "META_P_INL",
                      / "META_P_INL_PT",
                      / "META_P_INL_PT_RE",
                      / "META_P_INL_RE",
                      / "META_V_CL",
                      / "META_V_CL_PT",
                      / "META_V_CL_PT_RE",
                      / "META_V_CL_RE",
                      / "META_V_IL",
                      / "META_V_IL_PT",
                      / "META_V_IL_PT_RE",
                      / "META_V_IL_RE",
                      / "META_V_INL",
                      / "META_V_INL_PT",
                      / "META_V_INL_PT_RE",
                      / "META_V_INL_RE",
                      / "MFRONT",
                      / "MOHR_COULOMB",
                      / "MONOCRISTAL",
                      / "MULTIFIBRE",
                      / "MetaAcierEPIL_PT",
                      / "MohrCoulombAS",
                      / "NLH_CSRM",
                      / "NORTON",
                      / "NORTON_HOFF",
                      / "PINTO_MENEGOTTO",
                      / "POLYCRISTAL",
                      / "RANKINE",
                      / "RELAX_ACIER",
                      / "RGI_BETON",
                      / "RGI_BETON_BA",
                      / "ROUSSELIER",
                      / "ROUSS_PR",
                      / "ROUSS_VISC",
                      / "RUPT_FRAG",
                      / "SANS",
                      / "UMAT",
                      / "VENDOCHAB",
                      / "VISCOCHAB",
                      / "VISC_CIN1_CHAB",
                      / "VISC_CIN2_CHAB",
                      / "VISC_CIN2_MEMO",
                      / "VISC_CIN2_NRAD",
                      / "VISC_DRUC_PRAG",
                      / "VISC_ENDO_LEMA",
                      / "VISC_GTN",
                      / "VISC_IRRA_LOG",
                      / "VISC_ISOT_LINE",
                      / "VISC_ISOT_NL",
                      / "VISC_ISOT_PLAS",
                      / "VISC_ISOT_TRAC",
                      / "VISC_MAXWELL",
                      / "VISC_MAXWELL_MT",
                      / "VISC_MEMO_NRAD",
                      / "VISC_TAHERI",
                      / "VMIS_ASYM_LINE",
                      / "VMIS_CIN1_CHAB",
                      / "VMIS_CIN2_CHAB",
                      / "VMIS_CIN2_MEMO",
                      / "VMIS_CIN2_NRAD",
                      / "VMIS_CINE_GC",
                      / "VMIS_CINE_LINE",
                      / "VMIS_CINE_LINE",
                      / "VMIS_ECMI_LINE",
                      / "VMIS_ECMI_TRAC",
                      / "VMIS_ISOT_LINE",
                      / "VMIS_ISOT_NL",
                      / "VMIS_ISOT_PUIS",
                      / "VMIS_ISOT_TRAC",
                      / "VMIS_JOHN_COOK",
                      / "VMIS_MEMO_NRAD",
         ◇ REGU_VISC = / "NON" (par défaut),
                       / "OUI",
         # Si: equal_to("RELATION", 'MONOCRISTAL')
             ◆ COMPOR = compor,
         # Si: equal_to("RELATION", 'MULTIFIBRE')
             ◇ RIGI_GEOM = / "DEFAUT" (par défaut),
                           / "OUI",
         # Si: equal_to("RELATION", 'POLYCRISTAL')
             ◆ COMPOR = compor,
         # Si: equal_to("RELATION", 'UMAT')
             ◆ NB_VARI = int,
             ◆ LIBRAIRIE = text,
             ◆ NOM_ROUTINE = text,
         # Si: equal_to("RELATION", 'MFRONT')
             ◆ COMPOR_MFRONT = compor_mgis,
             ◇ VERI_BORNE = / "ARRET" (par défaut),
                            / "MESSAGE",
                            / "SANS",
             ◇ ALGO_CPLAN = / "ANALYTIQUE",
                            / "DEBORST" (par défaut),
             ◇ SYME_MATR_TANG = / "NON",
                                / "OUI" (par défaut),
         # Si: not equal_to('RELATION', 'MFRONT')
         # Si: equal_to("RELATION", 'KIT_DDI')
             ◆ RELATION_KIT = / "BETON_DOUBLE_DP",
                              / "BETON_GRANGER",
                              / "BETON_GRANGER_V",
                              / "BETON_UMLV",
                              / "ENDO_ISOT_BETON",
                              / "GLRC_DM",
                              / "MAZARS",
                              / "ROUSS_PR",
                              / "VMIS_CINE_LINE",
                              / "VMIS_ISOT_LINE",
                              / "VMIS_ISOT_PUIS",
                              / "VMIS_ISOT_TRAC",
         # Si: equal_to("RELATION", 'KIT_CG')
             ◆ RELATION_KIT = / "CABLE_GAINE_FROT",
                              / "ELAS",
                              / "PINTO_MENEGOTTO",
                              / "SANS",
                              / "VMIS_CINE_LINE",
                              / "VMIS_ISOT_LINE",
                              / "VMIS_ISOT_TRAC",
         # Si: is_in("RELATION", ['KIT_HHM','KIT_HH', 'KIT_H','KIT_HM','KIT_THHM', 'KIT_THH','KIT_THM','KIT_THV','KIT_THH2M','KIT_HH2M','KIT_HH2','KIT_THH2'])
             ◆ RELATION_KIT = / "BETON_AGEING",
                              / "Barcelone",
                              / "CAM_CLAY",
                              / "CJS",
                              / "CSSM",
                              / "CZM_EXP_REG",
                              / "CZM_LIN_REG",
                              / "DRUCK_PRAGER",
                              / "DRUCK_PRAG_N_A",
                              / "ELAS",
                              / "ENDO_ISOT_BETON",
                              / "GAZ",
                              / "GonfElas",
                              / "HOEK_BROWN_EFF",
                              / "HOEK_BROWN_TOT",
                              / "HUJEUX",
                              / "HYDR_ENDO",
                              / "HYDR_TABBAL",
                              / "HYDR_UTIL",
                              / "HYDR_VGC",
                              / "HYDR_VGM",
                              / "Iwan",
                              / "JOINT_BANDIS",
                              / "LAIGLE",
                              / "LETK",
                              / "LIQU_AD_GAZ",
                              / "LIQU_AD_GAZ_VAPE",
                              / "LIQU_GAZ",
                              / "LIQU_GAZ_ATM",
                              / "LIQU_SATU",
                              / "LIQU_VAPE",
                              / "LIQU_VAPE_GAZ",
                              / "LKR",
                              / "MAZARS",
                              / "MCC",
                              / "MFRONT",
                              / "MOHR_COULOMB",
                              / "NLH_CSRM",
                              / "RANKINE",
                              / "VISC_DRUC_PRAG",
                              / "VISC_MAXWELL",
                              / "VISC_MAXWELL_MT",
             # Si: 'MFRONT' in value("RELATION_KIT")
                 ◆ COMPOR_MFRONT = compor_mgis,
                 ◇ VERI_BORNE = / "ARRET" (par défaut),
                                / "MESSAGE",
                                / "SANS",
                 ◇ ALGO_CPLAN = / "ANALYTIQUE",
                                / "DEBORST" (par défaut),
                 ◇ RESI_INTE = float (défaut: 1e-08),
                 ◇ ITER_INTE_MAXI = int,
                 ◇ SYME_MATR_TANG = / "NON",
                                    / "OUI" (par défaut),
             # Si: 'MFRONT' not in value("RELATION_KIT")
         # Si: value("RELATION").startswith('META_') and not value("RELATION").startswith('META_LEMA_ANI')
             ◆ RELATION_KIT = / "ACIER",
                              / "ZIRC",
         ◇ DEFORMATION = / "GDEF_LOG",
                         / "GREEN_LAGRANGE",
                         / "GROT_GDEP",
                         / "PETIT" (par défaut),
                         / "PETIT_REAC",
                         / "SIMO_MIEHE",
         ◇ RESI_CPLAN_MAXI = float,
         # Si: not exists("RESI_CPLAN_MAXI")
             ◇ RESI_CPLAN_RELA = float (défaut: 1e-06),
         ◇ ITER_CPLAN_MAXI = int (défaut: 10),
         # Si: (equal_to("RELATION", 'MFRONT'))
             ◇ RESI_INTE = float,
             ◇ ITER_INTE_MAXI = int,
         # Si: (equal_to("RELATION", 'VISC_ISOT_PLAS'))
             ◇ RESI_INTE = float (défaut: 5e-14),
             ◇ ITER_INTE_MAXI = int (défaut: 100),
         # Si: is_in("RELATION", ('RGI_BETON','FLUA_PORO_BETON','FLUA_ENDO_PORO', 'RGI_BETON_BA',))
             ◇ RESI_INTE = float (défaut: 1e-06),
             ◇ ITER_INTE_MAXI = int (défaut: -1),
         # Si: not is_in("RELATION", ('MFRONT','VISC_ISOT_PLAS','RGI_BETON','FLUA_PORO_BETON','FLUA_ENDO_PORO','RGI_BETON_BA',))
             ◇ RESI_INTE = float (défaut: 1e-06),
             ◇ ITER_INTE_MAXI = int (défaut: 20),
         # Si: is_in("DEFORMATION", ('PETIT','PETIT_REAC','GROT_GDEP'))
             ◇ ITER_INTE_PAS = int (défaut: 0),
         ◇ ALGO_INTE = / "ANALYTIQUE",
                       / "BASCULE_EXPLICITE",
                       / "BRENT",
                       / "DEKKER",
                       / "NEWTON",
                       / "NEWTON_1D",
                       / "NEWTON_PERT",
                       / "NEWTON_RELI",
                       / "RUNGE_KUTTA",
                       / "SANS_OBJET",
                       / "SECANTE",
                       / "SEMI_EXPLICITE",
                       / "SPECIFIQUE",
         # Si: not is_in("RELATION", ('RGI_BETON','FLUA_PORO_BETON','FLUA_ENDO_PORO', 'RGI_BETON_BA', 'ENDO_PORO_BETON'))
             ◇ TYPE_MATR_TANG = / "PERTURBATION",
                                / "VERIFICATION",
             # Si: (exists("TYPE_MATR_TANG"))
                 ◇ VALE_PERT_RELA = float (défaut: 1e-05),
             # Si: equal_to("TYPE_MATR_TANG", 'TANGENTE_SECANTE')
                 ◇ SEUIL = float (défaut: 3.0),
                 ◇ AMPLITUDE = float (défaut: 1.5),
                 ◇ TAUX_RETOUR = float (défaut: 0.05),
             ◇ PARM_THETA = float (défaut: 1.0),
             # Si: not exists("TYPE_MATR_TANG")
                 ◇ RESI_RADI_RELA = float,
         # Si: is_in("RELATION", ('RGI_BETON','FLUA_PORO_BETON','FLUA_ENDO_PORO', 'RGI_BETON_BA', 'ENDO_PORO_BETON'))
             ◇ TYPE_MATR_TANG = / "MATR_ELAS" (par défaut),
                                / "MATR_ENDO",
             ◇ PARM_THETA = float (défaut: 1.0),
             # Si: not exists("TYPE_MATR_TANG")
                 ◇ RESI_RADI_RELA = float,
      ),
    ◇ ETAT_INIT = _F(
         ◆ | DEPL = cham_no,
           | EVOL_NOLI = evol_noli,
           | SIGM = carte / cham_elem,
           | VARI = cham_elem,
         ◇ STRX = cham_elem,
         # Si: exists("EVOL_NOLI")
             ◇ NUME_ORDRE = int,
             ◇ NUME_DIDI = 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,
      ),
    ◆ 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,
      ),
    ◇ METHODE = / "IMPLEX",
                / "MODELE_REDUIT",
                / "NEWTON" (par défaut),
                / "NEWTON_KRYLOV",
    # Si: equal_to("METHODE", 'NEWTON') or equal_to("METHODE", 'NEWTON_KRYLOV')
        ⟐ NEWTON = _F(
             ◇ REAC_INCR = int (défaut: 1),
             ◇ PREDICTION = / "DEPL_CALCULE",
                            / "ELASTIQUE",
                            / "EXTRAPOLE",
                            / "TANGENTE",
             ◇ MATRICE = / "ELASTIQUE",
                         / "TANGENTE" (par défaut),
             ◇ PAS_MINI_ELAS = float,
             ◇ REAC_ITER = int (défaut: 1),
             ◇ REAC_ITER_ELAS = int (défaut: 0),
             ◇ EVOL_NOLI = evol_noli,
             ◇ MATR_RIGI_SYME = / "NON" (par défaut),
                                / "OUI",
          ),
    # Si: equal_to("METHODE", 'MODELE_REDUIT')
        ◆ MODELE_REDUIT = _F(
             ◇ REAC_INCR = int (défaut: 1),
             ◇ PREDICTION = / "DEPL_CALCULE",
                            / "ELASTIQUE",
                            / "EXTRAPOLE",
                            / "TANGENTE" (par défaut),
             ◇ MATRICE = / "ELASTIQUE",
                         / "TANGENTE" (par défaut),
             ◇ REAC_ITER = int (défaut: 1),
             ◆ BASE_PRIMAL = mode_empi,
             ◇ DOMAINE_REDUIT = / "NON" (par défaut),
                                / "OUI",
             ◇ EVOL_NOLI = evol_noli,
             # Si: (equal_to("DOMAINE_REDUIT", 'OUI'))
                 ◆ GROUP_NO_INTERF = grno,
                 ◇ CORR_COMPLET = / "NON" (par défaut),
                                  / "OUI",
                 # Si: (equal_to("CORR_COMPLET", 'OUI'))
                     ◇ COEF_PENA = float (défaut: 1000000.0),
                     ◆ GROUP_NO_ENCASTRE = grno,
          ),
    ◇ RECH_LINEAIRE = _F(
         ◇ METHODE = / "CORDE" (par défaut),
                     / "MIXTE",
                     / "PILOTAGE",
         ◇ RESI_LINE_RELA = float (défaut: 0.1),
         ◇ ITER_LINE_MAXI = int (défaut: 3),
         ◇ RHO_MIN = float (défaut: 0.01),
         ◇ RHO_MAX = float (défaut: 10.0),
         ◇ RHO_EXCL = float (défaut: 0.009),
      ),
    ◇ PILOTAGE = _F(
         ◆ TYPE = / "ANA_LIM",
                  / "DDL_IMPO",
                  / "DEFORMATION",
                  / "LONG_ARC",
                  / "PRED_ELAS",
         ◇ COEF_MULT = float (défaut: 1.0),
         ◇ EVOL_PARA = / "CROISSANT",
                       / "DECROISSANT",
                       / "SANS" (par défaut),
         ◇ ETA_PILO_MAX = float,
         ◇ ETA_PILO_MIN = float,
         ◇ ETA_PILO_R_MAX = float,
         ◇ ETA_PILO_R_MIN = float,
         ◇ PROJ_BORNES = / "NON",
                         / "OUI" (par défaut),
         # Si: equal_to("TYPE", 'LONG_ARC') or equal_to("TYPE", )
             ◇ SELECTION = / "ANGL_INCR_DEPL",
                           / "MIXTE",
                           / "NORM_INCR_DEPL" (par défaut),
                           / "RESIDU",
         # Si: not equal_to("TYPE", 'LONG_ARC')
             ◇ SELECTION = / "MIXTE",
                           / "NORM_INCR_DEPL" (par défaut),
                           / "RESIDU",
         ◇ / TOUT = "OUI" (ou non renseigné),
           / GROUP_MA = list[grma],
         ◇ / NOEUD = list[no],
           / GROUP_NO = list[grno],
         ◇ NOM_CMP = list[text],
      ),
    ⟐ CONVERGENCE = _F(
         # Si: exists("RESI_REFE_RELA")
             ◆ | EFFORT_REFE = float,
               | SIGM_REFE = float,
               | EPSI_REFE = float,
               | FLUX_THER_REFE = float,
               | MOMENT_REFE = float,
               | FLUX_HYD1_REFE = float,
               | FLUX_HYD2_REFE = float,
               | VARI_REFE = float,
               | DEPL_REFE = float,
               | LAGR_REFE = float,
               | PI_REFE = float,
         ◆ | RESI_REFE_RELA = float,
           | RESI_GLOB_MAXI = float,
           | RESI_GLOB_RELA = float,
         ◇ / RESI_COMP_RELA = float,
         ◇ ITER_GLOB_MAXI = int (défaut: 10),
         ◇ ITER_GLOB_ELAS = int (défaut: 25),
         ◇ ARRET = / "NON",
                   / "OUI" (par défaut),
         ◇ VERIF = / "AU_MOINS_UN",
                   / "TOUT" (par défaut),
      ),
    ⟐ 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),
      ),
    ◇ OBSERVATION = _F(
         ◇ 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],
           / NOM_VARI = 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 = / "ACCE",
                      / "ACCE_ABSOLU",
                      / "CONT_ELEM",
                      / "CONT_NOEU",
                      / "DEPL",
                      / "DEPL_ABSOLU",
                      / "EPSI_ELGA",
                      / "FORC_NODA",
                      / "SIEF_ELGA",
                      / "VARI_ELGA",
                      / "VITE",
                      / "VITE_ABSOLU",
         # Si: (equal_to("EVAL_CMP", 'FORMULE'))
             ◆ FORMULE = formule,
         # Si: is_in("NOM_CHAM", ('DEPL','VITE','ACCE','FORC_NODA','CONT_NOEU','DEPL_ABSOLU','VITE_ABSOLU','ACCE_ABSOLU'))
             ◆ / TOUT = "OUI" (ou non renseigné),
               / NOEUD = list[no],
               / GROUP_NO = list[grno],
               / GROUP_MA = list[grma],
               / MAILLE = list[ma],
         # Si: is_in("NOM_CHAM", ('SIEF_ELGA','EPSI_ELGA','VARI_ELGA'))
             ◆ / TOUT = "OUI" (ou non renseigné),
               / GROUP_MA = list[grma],
               / MAILLE = list[ma],
             ◇ EVAL_ELGA = / "MAX",
                           / "MIN",
                           / "VALE" (par défaut),
             # Si: (equal_to("EVAL_ELGA", 'VALE'))
                 ◆ POINT = list[int],
                 ◇ SOUS_POINT = list[int],
         # Si: (equal_to("NOM_CHAM", 'CONT_ELEM'))
             ◆ / TOUT = "OUI" (ou non renseigné),
               / GROUP_MA = list[grma],
               / MAILLE = list[ma],
         # Si: (equal_to("CRITERE", 'RELATIF'))
             ◇ PRECISION = float (défaut: 1e-06),
         # Si: (equal_to("CRITERE", 'ABSOLU'))
             ◆ PRECISION = float,
      ),
    ⟐ MESURE = _F(
         ◇ TABLE = / "NON" (par défaut),
                   / "OUI",
         ◇ UNITE = unit,
      ),
    ◇ SUIVI_DDL = _F(
         ◆ NOM_CHAM = / "ACCE",
                      / "DEPL",
                      / "EPSI_ELGA",
                      / "FORC_NODA",
                      / "SIEF_ELGA",
                      / "VARI_ELGA",
                      / "VITE",
         ◇ EVAL_CHAM = / "MAX",
                       / "MAXI_ABS",
                       / "MIN",
                       / "MINI_ABS",
                       / "MOY",
                       / "VALE" (par défaut),
         ◆ / NOM_CMP = list[text],
           / NOM_VARI = list[text],
         ◇ EVAL_CMP = / "FORMULE",
                      / "VALE" (par défaut),
         # Si: (equal_to("EVAL_CMP", 'FORMULE'))
             ◆ FORMULE = formule,
         # Si: is_in("NOM_CHAM", ('DEPL','VITE','ACCE','FORC_NODA','CONT_NOEU'))
             ◆ / TOUT = "OUI" (ou non renseigné),
               / NOEUD = list[no],
               / GROUP_NO = list[grno],
               / GROUP_MA = list[grma],
               / MAILLE = list[ma],
         # Si: is_in("NOM_CHAM", ('SIEF_ELGA','EPSI_ELGA','VARI_ELGA'))
             ◆ / TOUT = "OUI" (ou non renseigné),
               / GROUP_MA = list[grma],
               / MAILLE = list[ma],
             ◇ EVAL_ELGA = / "MAX",
                           / "MIN",
                           / "VALE" (par défaut),
             # Si: (equal_to("EVAL_ELGA", 'VALE'))
                 ◆ POINT = list[int],
                 ◇ SOUS_POINT = list[int],
         ◇ TITRE = list[text],
      ),
    ⟐ 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')"),
      ),
    ◇ CRIT_QUALITE = _F(
         ◇ ERRE_TEMPS_THM = / "NON" (par défaut),
                            / "OUI",
      ),
    ◇ ENERGIE = _F(
         ◇ CALCUL = "OUI",
      ),
    ⟐ AFFICHAGE = _F(
         ◇ INFO_RESIDU = / "NON" (par défaut),
                         / "OUI",
         ◇ INFO_TEMPS = / "NON" (par défaut),
                        / "OUI",
         ◇ UNITE = unit,
         ◇ PAS = int,
      ),
    ◇ CRIT_STAB = _F(
         ◇ OPTION = / "BANDE",
                    / "CALIBRATION",
                    / "PLUS_PETITE" (par défaut),
         # Si: (equal_to("OPTION", 'BANDE'))
             ◇ CHAR_CRIT = list[float],
         # Si: (equal_to("OPTION", 'PLUS_PETITE'))
             ◇ NMAX_CHAR_CRIT = int (défaut: 3),
         # Si: (equal_to("OPTION", 'CALIBRATION'))
             ◇ CHAR_CRIT = list[float],
         ◇ COEF_DIM_ESPACE = int (défaut: 5),
         ◇ RIGI_GEOM = / "NON",
                       / "OUI" (par défaut),
         ◇ MODI_RIGI = / "NON" (par défaut),
                       / "OUI",
         ◇ TYPE = / "FLAMBEMENT" (par défaut),
                  / "STABILITE",
         ◇ PREC_INSTAB = float (défaut: 1e-06),
         ◇ SIGNE = / "NEGATIF",
                   / "POSITIF",
                   / "POSITIF_NEGATIF" (par défaut),
         # Si: (equal_to("RIGI_GEOM", 'NON'))
             ◇ DDL_EXCLUS = / "DAMG",
                            / "DCX",
                            / "DCY",
                            / "DCZ",
                            / "DRX",
                            / "DRY",
                            / "DRZ",
                            / "DX",
                            / "DY",
                            / "DZ",
                            / "GONF",
                            / "GRX",
                            / "H1X",
                            / "H1Y",
                            / "H1Z",
                            / "K1",
                            / "K2",
                            / "K3",
                            / "LAGS_C",
                            / "LAG_GV",
                            / "LIAISON",
                            / "PHI",
                            / "PRE1",
                            / "PRE2",
                            / "PRES",
                            / "PRES11",
                            / "PRES12",
                            / "PRES13",
                            / "PRES21",
                            / "PRES22",
                            / "PRES23",
                            / "PRES31",
                            / "PRES32",
                            / "PRES33",
                            / "TEMP",
                            / "UI2",
                            / "UI3",
                            / "UI4",
                            / "UI5",
                            / "UI6",
                            / "UO2",
                            / "UO3",
                            / "UO4",
                            / "UO5",
                            / "UO6",
                            / "V11",
                            / "V12",
                            / "V13",
                            / "V21",
                            / "V22",
                            / "V23",
                            / "V31",
                            / "V32",
                            / "V33",
                            / "VARI",
                            / "VI2",
                            / "VI3",
                            / "VI4",
                            / "VI5",
                            / "VI6",
                            / "VO2",
                            / "VO3",
                            / "VO4",
                            / "VO5",
                            / "VO6",
                            / "WI1",
                            / "WI2",
                            / "WI3",
                            / "WI4",
                            / "WI5",
                            / "WI6",
                            / "WO",
                            / "WO1",
                            / "WO2",
                            / "WO3",
                            / "WO4",
                            / "WO5",
                            / "WO6",
         # Si: equal_to("TYPE", 'STABILITE') and equal_to("RIGI_GEOM", 'NON')
             ◆ DDL_STAB = / "DAMG",
                          / "DCX",
                          / "DCY",
                          / "DCZ",
                          / "DRX",
                          / "DRY",
                          / "DRZ",
                          / "DX",
                          / "DY",
                          / "DZ",
                          / "GONF",
                          / "GRX",
                          / "H1X",
                          / "H1Y",
                          / "H1Z",
                          / "K1",
                          / "K2",
                          / "K3",
                          / "LAGS_C",
                          / "LAG_GV",
                          / "LIAISON",
                          / "PHI",
                          / "PRE1",
                          / "PRE2",
                          / "PRES",
                          / "PRES11",
                          / "PRES12",
                          / "PRES13",
                          / "PRES21",
                          / "PRES22",
                          / "PRES23",
                          / "PRES31",
                          / "PRES32",
                          / "PRES33",
                          / "TEMP",
                          / "UI2",
                          / "UI3",
                          / "UI4",
                          / "UI5",
                          / "UI6",
                          / "UO2",
                          / "UO3",
                          / "UO4",
                          / "UO5",
                          / "UO6",
                          / "V11",
                          / "V12",
                          / "V13",
                          / "V21",
                          / "V22",
                          / "V23",
                          / "V31",
                          / "V32",
                          / "V33",
                          / "VARI",
                          / "VI2",
                          / "VI3",
                          / "VI4",
                          / "VI5",
                          / "VI6",
                          / "VO2",
                          / "VO3",
                          / "VO4",
                          / "VO5",
                          / "VO6",
                          / "WI1",
                          / "WI2",
                          / "WI3",
                          / "WI4",
                          / "WI5",
                          / "WI6",
                          / "WO",
                          / "WO1",
                          / "WO2",
                          / "WO3",
                          / "WO4",
                          / "WO5",
                          / "WO6",
         ◇ / LIST_INST = listr8,
           / PAS_CALC = int,
           / INST = list[float],
         ◇ CRITERE = / "ABSOLU",
                     / "RELATIF" (par défaut),
         # Si: (equal_to("CRITERE", 'RELATIF'))
             ◇ PRECISION = float (défaut: 1e-06),
         # Si: (equal_to("CRITERE", 'ABSOLU'))
             ◆ PRECISION = float,
      ),
    ◇ INFO = / 1,
             / 2,
    # Si: equal_to("INFO", 2)
        ◇ INFO_DBG = / "APPARIEMENT",
                     / "CONTACT",
                     / "FACTOR",
                     / "MECANONLINE",
                     / "PILOTAGE",
                     / "SOLVEUR",
    ◇ TITRE = text,
)

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