1. Syntax#

evol_noli = STAT_NON_LINE (
    ◇ reuse = <objet de RESULTAT >,
    ◇ RESULTAT = evol_noli,
    ◆ MODELE = model,
    ◆ CHAM_MATER = cham_master,
    ◇ CARA_ELEM = cara_elem,
    ◇ EXCIT = _F (
         ◆ CHARGE = char_cine_meca/char_meca,
         ◇ FONC_MULT = function/formula/table cloth,
         ◇ TYPE_CHARGE =/"DIDI ",
                         /"FIXE_CSTE" (by default),
                         /"FIXE_PILO ",
                         /"SUIV ",
                         /"SUIV_PILO ",
      ),
    ◇ CONTACT = char_contact,
    ◇ SOUS_STRUC = _F (
         ◆ CAS_CHARGE = text,
         ◆/TOUT = "OUI" (or not specified),
           /SUPER_MAILLE = my,
         ◇ FONC_MULT = function/formula/table cloth,
      ),
    ◇ SCHEMA_THM = _F (
         ◇ PARM_THETA = float (default: 1.0),
         ◇ PARM_ALPHA = float (default: 1.0),
      ),
    COMPORTEMENT = _F (
         # If: is_in (" RELATION ", ('VMIS_ISOT_LINE', '', '', 'VMIS_ISOT_TRAC', 'VISCOCHAB', 'VISC_ISOT_LINE', 'VISC_ISOT_TRAC',))
             ◇ POST_ITER = "CRIT_RUPT" (or not specified),
         # If: 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" (or not specified),
           /GROUP_MA = grma,
         ◇ RELATION =/"ARME ",
                      /"ASSE_CORN ",
                      /"BETON_BURGER ",
                      /"BETON_DOUBLE_DP ",
                      /"BETON_GRANGER ",
                      /"BETON_GRANGER_V ",
                      /"BETON_RAG ",
                      /"BETON_REGLE_PR ",
                      /"BETON_UMLV ",
                      /"Barcelona",
                      /"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" (by default),
                      /"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 ",
                      /"Inflation",
                      /"HAYHURST ",
                      /"HOEK_BROWN ",
                      /"HOEK_BROWN_EFF ",
                      /"HOEK_BROWN_TOT ",
                      /"HUJEUX ",
                      /"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 ",
                      /"MetaSteel EPIL_PT ",
                      /"Mohr Coulombas",
                      /"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_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" (by default),
                       /"OUI ",
         # If: equal_to (" RELATION ", 'MONOCRISTAL')
             ◆ COMPOR = compor,
         # If: equal_to (" RELATION ", 'MULTIFIBRE')
             ◇ RIGI_GEOM =/"DEFAUT" (by default),
                           /"OUI ",
         # If: equal_to (" RELATION ", 'POLYCRISTAL')
             ◆ COMPOR = compor,
         # If: equal_to (" RELATION ", 'UMAT')
             ◆ NB_VARI = int,
             ◆ LIBRAIRIE = text,
             ◆ NOM_ROUTINE = text,
         # If: equal_to (" RELATION ", 'MFRONT')
             ◆ COMPOR_MFRONT = compor_mgis,
             ◇ VERI_BORNE =/"ARRET" (by default),
                            /"MESSAGE ",
                            /"SANS ",
             ◇ ALGO_CPLAN =/"ANALYTIQUE ",
                            /"DEBORST" (by default),
             ◇ SYME_MATR_TANG =/"NON ",
                                /"OUI" (by default),
         # If: not equal_to ('RELATION', 'MFRONT')
         # If: 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 ",
         # If: equal_to (" RELATION ", 'KIT_CG')
             ◆ RELATION_KIT =/"CABLE_GAINE_FROT ",
                              /"ELAS ",
                              /"PINTO_MENEGOTTO ",
                              /"SANS ",
                              /"VMIS_CINE_LINE ",
                              /"VMIS_ISOT_LINE ",
                              /"VMIS_ISOT_TRAC ",
         # If: is_in (" RELATION ", ['KIT_HHM', ['', '', 'KIT_HH', '', '', '', '', '', '', '', 'KIT_H', '', '', 'KIT_HM', 'KIT_THHM', 'KIT_THM', '', 'KIT_THV', 'KIT_THH2M', '', ',') KIT_THH KIT_HH2M KIT_HH2 KIT_THH2
             ◆ RELATION_KIT =/"Barcelona",
                              /"CAM_CLAY ",
                              /"CJS ",
                              /"CSSM ",
                              /"CZM_EXP_REG ",
                              /"CZM_LIN_REG ",
                              /"DRUCK_PRAGER ",
                              /"DRUCK_PRAG_N_A ",
                              /"ELAS ",
                              /"ENDO_ISOT_BETON ",
                              /"GAZ ",
                              /"Inflation",
                              /"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 ",
             # If: 'MFRONT' in value (" RELATION_KIT ")
                 ◆ COMPOR_MFRONT = compor_mgis,
                 ◇ VERI_BORNE =/"ARRET" (by default),
                                /"MESSAGE ",
                                /"SANS ",
                 ◇ ALGO_CPLAN =/"ANALYTIQUE ",
                                /"DEBORST" (by default),
                 ◇ RESI_INTE = float (default: 1e-08),
                 ◇ ITER_INTE_MAXI = int,
                 ◇ SYME_MATR_TANG =/"NON ",
                                    /"OUI" (by default),
             # If: 'MFRONT' not in value (" RELATION_KIT ")
         # If: value (" RELATION ") .startswith ('META_') and not value (" RELATION ") .startswith ('META_LEMA_ANI')
             ◆ RELATION_KIT =/"ACIER ",
                              /"ZIRC ",
         ◇ DEFORMATION =/"GDEF_LOG ",
                         /"GREEN_LAGRANGE ",
                         /"GROT_GDEP ",
                         /"PETIT" (by default),
                         /"PETIT_REAC ",
                         /"SIMO_MIEHE ",
         ◇ RESI_CPLAN_MAXI = float,
         # If: not exists (" RESI_CPLAN_MAXI ")
             ◇ RESI_CPLAN_RELA = float (default: 1e-06),
         ◇ ITER_CPLAN_MAXI = int (default: 10),
         # If: (equal_to (" RELATION ", 'MFRONT'))
             ◇ RESI_INTE = float,
             ◇ ITER_INTE_MAXI = int,
         # If: is_in (" RELATION ", ('RGI_BETON', '', '', 'FLUA_PORO_BETON', 'FLUA_ENDO_PORO', 'RGI_BETON_BA',))
             ◇ RESI_INTE = float (default: 1e-06),
             ◇ ITER_INTE_MAXI = int (default: -1),
         # If: not is_in (" RELATION ", ('MFRONT', '', '', 'RGI_BETON', 'FLUA_PORO_BETON', 'FLUA_ENDO_PORO', 'RGI_BETON_BA',))
             ◇ RESI_INTE = float (default: 1e-06),
             ◇ ITER_INTE_MAXI = int (default: 20),
         # If: is_in (" DEFORMATION ", ('PETIT', '', 'PETIT_REAC', 'GROT_GDEP'))
             ◇ ITER_INTE_PAS = int (default: 0),
         ◇ ALGO_INTE =/"ANALYTIQUE ",
                       /"BASCULE_EXPLICITE ",
                       /"BRENT ",
                       /"DEKKER ",
                       /"NEWTON ",
                       /"NEWTON_1D ",
                       /"NEWTON_PERT ",
                       /"NEWTON_RELI ",
                       /"RUNGE_KUTTA ",
                       /"SANS_OBJET ",
                       /"SECANTE ",
                       /"SEMI_EXPLICITE ",
                       /"SPECIFIQUE ",
         # If: not is_in (" RELATION ", ('RGI_BETON', '', '', 'FLUA_PORO_BETON', 'FLUA_ENDO_PORO', 'RGI_BETON_BA', 'ENDO_PORO_BETON'))
             ◇ TYPE_MATR_TANG =/"PERTURBATION ",
                                /"VERIFICATION ",
             # If: (exists (" TYPE_MATR_TANG "))
                 ◇ VALE_PERT_RELA = float (default: 1e-05),
             # If: equal_to (" TYPE_MATR_TANG ", 'TANGENTE_SECANTE')
                 ◇ SEUIL = float (default: 3.0),
                 ◇ AMPLITUDE = float (default: 1.5),
                 ◇ TAUX_RETOUR = float (default: 0.05),
             ◇ PARM_THETA = float (default: 1.0),
             # If: not exists (" TYPE_MATR_TANG ")
                 ◇ RESI_RADI_RELA = float,
         # If: is_in (" RELATION ", ('RGI_BETON', '', '', 'FLUA_PORO_BETON', 'FLUA_ENDO_PORO', 'RGI_BETON_BA', 'ENDO_PORO_BETON'))
             ◇ TYPE_MATR_TANG =/"MATR_ELAS" (by default),
                                /"MATR_ENDO ",
             ◇ PARM_THETA = float (default: 1.0),
             # If: not exists (" TYPE_MATR_TANG ")
                 ◇ RESI_RADI_RELA = float,
      ),
    ◇ ETAT_INIT = _F (
         ◆ | DELP = cham_no,
           | EVOL_NOLI = evol_noli,
           | SIGM = map/cham_elem,
           | TRUE = cham_elem,
           | COHE=cham_elem,
         ◇ STRX = cham_elem,
         # If: exists (" EVOL_NOLI ")
             ◇ NUME_ORDRE = int,
             ◇ NUME_DIDI = int,
             ◇ INST = float,
             # If: exists (" INST ")
                 ◇ CRITERE =/"ABSOLU ",
                             /"RELATIF" (by default),
                 # If: (equal_to (" CRITERE ", 'RELATIF'))
                     ◇ PRECISION = float (default: 1e-06),
                 # If: (equal_to (" CRITERE ", 'ABSOLU'))
                     ◆ PRECISION = float,
      ),
    ◆ INCREMENT = _F (
         # If: exists (" INST_INIT ") or exists (" INST_FIN ")
             ◇ CRITERE = "RELATIF ",
             # If: (equal_to (" CRITERE ", 'RELATIF'))
                 ◇ PRECISION = float (default: 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" (by default),
                /"NEWTON_KRYLOV ",
    # If: equal_to (" METHODE ", 'NEWTON') or equal_to (" METHODE ", 'NEWTON_KRYLOV')
        NEWTON = _F (
             ◇ REAC_INCR = int (default: 1),
             ◇ PREDICTION =/"DEPL_CALCULE ",
                            /"ELASTIQUE ",
                            /"EXTRAPOLE ",
                            /"TANGENTE ",
             ◇ MATRICE =/"ELASTIQUE ",
                         /"TANGENTE" (by default),
             ◇ PAS_MINI_ELAS = float,
             ◇ REAC_ITER = int (default: 1),
             ◇ REAC_ITER_ELAS = int (default: 0),
             ◇ EVOL_NOLI = evol_noli,
             ◇ MATR_RIGI_SYME =/"NON" (by default),
                                /"OUI ",
          ),
    # If: equal_to (" METHODE ", 'MODELE_REDUIT')
        ◆ MODELE_REDUIT = _F (
             ◇ REAC_INCR = int (default: 1),
             ◇ PREDICTION =/"DEPL_CALCULE ",
                            /"ELASTIQUE ",
                            /"EXTRAPOLE ",
                            /"TANGENTE" (by default),
             ◇ MATRICE =/"ELASTIQUE ",
                         /"TANGENTE" (by default),
             ◇ REAC_ITER = int (default: 1),
             ◆ BASE_PRIMAL = mode_empi,
             ◇ DOMAINE_REDUIT =/"NON" (by default),
                                /"OUI ",
             ◇ EVOL_NOLI = evol_noli,
             # If: (equal_to (" DOMAINE_REDUIT ", 'OUI'))
                 ◆ GROUP_NO_INTERF = grno,
                 ◇ CORR_COMPLET =/"NON" (by default),
                                  /"OUI ",
                 # If: (equal_to (" CORR_COMPLET ", 'OUI'))
                     ◇ COEF_PENA = float (default: 1000000.0),
                     ◆ GROUP_NO_ENCASTRE = grno,
          ),
    ◇ RECH_LINEAIRE = _F (
         ◇ METHODE =/"CORDE" (by default),
                     /"MIXTE ",
                     /"PILOTAGE ",
         ◇ RESI_LINE_RELA = float (default: 0.1),
         ◇ ITER_LINE_MAXI = int (default: 3),
         ◇ RHO_MIN = float (default: 0.01),
         ◇ RHO_MAX = float (default: 10.0),
         ◇ RHO_EXCL = float (default: 0.009),
      ),
    ◇ PILOTAGE = _F (
         ◆ TYPE =/"ANA_LIM ",
                  /"DDL_IMPO ",
                  /"DEFORMATION ",
                  /"LONG_ARC ",
                  /"PRED_ELAS ",
                  /"SAUT_IMPO ",
                  /"SAUT_LONG_ARC ",
         ◇ COEF_MULT = float (default: 1.0),
         ◇ EVOL_PARA =/"CROISSANT ",
                       /"DECROISSANT ",
                       /"SANS" (by default),
         ◇ ETA_PILO_MAX = float,
         ◇ ETA_PILO_MIN = float,
         ◇ ETA_PILO_R_MAX = float,
         ◇ ETA_PILO_R_MIN = float,
         ◇ PROJ_BORNES =/"NON ",
                         /"OUI" (by default),
         # If: equal_to (" TYPE ", 'LONG_ARC') or equal_to (" TYPE ", 'SAUT_LONG_ARC')
             ◇ SELECTION =/"ANGL_INCR_DEPL ",
                           /"MIXTE ",
                           /"NORM_INCR_DEPL" (by default),
                           /"RESIDU ",
         # If: not equal_to (" TYPE ", 'LONG_ARC') and not equal_to (" TYPE ", 'SAUT_LONG_ARC')
             ◇ SELECTION =/"MIXTE ",
                           /"NORM_INCR_DEPL" (by default),
                           /"RESIDU ",
         ◇/TOUT = "OUI" (or not specified),
           /GROUP_MA = grma,
         ◇ FISSURE = fiss_xfem,
         ◇/NOEUD = no,
           /GROUP_NO = big,
         ◇ NOM_CMP = text,
         ◇ DIRE_PILO = text,
      ),
    CONVERGENCE = _F (
         # If: 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 (default: 10),
         ◇ ITER_GLOB_ELAS = int (default: 25),
         ◇ ARRET =/"NON ",
                   /"OUI" (by default),
         ◇ VERIF =/"AU_MOINS_UN ",
                   /"TOUT" (by default),
      ),
    SOLVEUR = _F (
         ◇ METHODE =/"GCPC ",
                     /"LDLT ",
                     /"MULT_FRONT ",
                     /"MUMPS" (by default),
                     /"PETSC ",
         # If: equal_to (" METHODE ", 'MULT_FRONT')
             ◇ RENUM =/"MD",
                       /"MDA" (by default),
             ◇ NPREC = int (default: 8),
             ◇ ELIM_LAGR =/"NON" (by default),
                           /"OUI ",
             ◇ STOP_SINGULIER =/"NON ",
                                /"OUI" (by default),
         # If: equal_to (" METHODE ", 'LDLT')
             ◇ RENUM = "RCMK ",
             ◇ NPREC = int (default: 8),
             ◇ ELIM_LAGR =/"NON" (by default),
                           /"OUI ",
             ◇ STOP_SINGULIER =/"NON ",
                                /"OUI" (by default),
         # If: equal_to (" METHODE ", 'MUMPS')
             ◇ RENUM =/"AMD ",
                       /"AMF ",
                       /"AUTO" (by default),
                       /"METIS ",
                       /"PARMETIS ",
                       /"PORD ",
                       /"PTSCOTCH ",
                       /"QAMD ",
                       /"SCOTCH ",
             ◇ NPREC = int (default: 8),
             ◇ ELIM_LAGR =/"LAGR2" (by default),
                           /"NON ",
                           /"OUI ",
             ◇ STOP_SINGULIER =/"NON ",
                                /"OUI" (by default),
             ◇ TYPE_RESOL =/"AUTO" (by default),
                            /"NONSYM ",
                            /"SYMDEF ",
                            /"SYMGEN ",
             ◇ ACCELERATION =/"AUTO" (by default),
                              /"EN",
                              /"FR+",
                              /"FR++",
                              /"LR",
                              /"LR+",
                              /"LR++",
             ◇ LOW_RANK_SEUIL = float (default: 0.0),
             ◇ PRETRAITEMENTS =/"AUTO" (by default),
                                /"SANS ",
             ◇ POSTTRAITEMENTS =/"AUTO" (by default),
                                 /"FORCE ",
                                 /"MINI ",
                                 /"SANS ",
             ◇ PCENT_PIVOT = int (default: 35),
             ◇ REDUCTION_MPI = int (default: 0),
             ◇ NB_RHS = int (default: 1),
             ◇ RESI_RELA = float (default: -1.0),
             ◇ GESTION_MEMOIRE =/"AUTO" (by default),
                                 /"EVAL ",
                                 /"IN_CORE ",
                                 /"OUT_OF_CORE ",
             ◇ FILTRAGE_MATRICE = float (default: -1.0),
             ◇ MIXER_PRECISION =/"NON" (by default),
                                 /"OUI ",
             ◇ MATR_DISTRIBUEE =/"NON" (by default),
                                 /"OUI ",
         # If: equal_to (" METHODE ", 'GCPC')
             ◇ ELIM_LAGR =/"NON" (by default),
                           /"OUI ",
             ◇ PRE_COND =/"LDLT_DP ",
                          /"LDLT_INC" (by default),
                          /"LDLT_SP ",
             ◇ RESI_RELA = float (default: 1e-06),
             ◇ NMAX_ITER = int (default: 0),
             # If: equal_to (" PRE_COND ", 'LDLT_INC')
                 ◇ RENUM = "RCMK ",
                 ◇ NIVE_REMPLISSAGE = int (default: 0),
             # If: is_in (" PRE_COND ", ('LDLT_SP', 'LDLT_DP'))
                 ◇ RENUM =/"METIS ",
                           /"PARMETIS" (by default),
                           /"SANS ",
                 ◇ REAC_PRECOND = int (default: 30),
                 ◇ PCENT_PIVOT = int (default: 20),
                 ◇ GESTION_MEMOIRE =/"AUTO" (by default),
                                     /"IN_CORE ",
                 ◇ LOW_RANK_SEUIL = float (default: 0.0),
         # If: equal_to (" METHODE ", 'PETSC')
             ◇ ELIM_LAGR =/"NON" (by default),
                           /"OUI ",
             ◇ MATR_DISTRIBUEE =/"NON" (by default),
                                 /"OUI ",
             ◇ ALGORITHME =/"CG",
                            /"CR",
                            /"FGMRES" (by default),
                            /"GCR ",
                            /"GMRES ",
                            /"GMRES_LMP ",
             ◇ OPTION_PETSC = text (default: ""),
             ◇ PRE_COND =/"BLOC_LAGR ",
                          /"BOOMER ",
                          /"FIELDSPLIT ",
                          /"GAMG ",
                          /"HPDDM ",
                          /"JACOBI ",
                          /"LDLT_DP ",
                          /"LDLT_INC ",
                          /"LDLT_SP" (by default),
                          /"ML",
                          /"SANS ",
                          /"SOR ",
                          /"UTILISATEUR ",
             ◇ RESI_RELA = float (default: 1e-06),
             ◇ NMAX_ITER = int (default: 0),
             # If: equal_to (" PRE_COND ", 'LDLT_INC')
                 ◇ RENUM = "RCMK ",
                 ◇ NIVE_REMPLISSAGE = int (default: 0),
                 ◇ REMPLISSAGE = float (default: 1.0),
             # If: is_in (" PRE_COND ", ('LDLT_SP', 'LDLT_DP'))
                 ◇ RENUM =/"METIS ",
                           /"PARMETIS" (by default),
                           /"SANS ",
                 ◇ REAC_PRECOND = int (default: 30),
                 ◇ PCENT_PIVOT = int (default: 20),
                 ◇ GESTION_MEMOIRE =/"AUTO" (by default),
                                     /"IN_CORE ",
                 ◇ LOW_RANK_SEUIL = float (default: 0.0),
             # If: equal_to (" PRE_COND ", 'ML')
                 ◇ RENUM = "SANS ",
             # If: equal_to (" PRE_COND ", 'BOOMER')
                 ◇ RENUM = "SANS ",
             # If: equal_to (" PRE_COND ", 'GAMG')
                 ◇ RENUM = "SANS ",
             # If: equal_to (" PRE_COND ", 'HPDDM')
                 ◇ RENUM = "SANS ",
             # If: equal_to (" PRE_COND ", 'BLOC_LAGR')
                 ◇ RENUM = "SANS ",
             # If: is_in (" PRE_COND ", ('FIELDSPLIT'))
                 ◇ RENUM = "SANS ",
                 ◇ PARTITION_CMP = int,
                 ◇ NOM_CMP = text,
             # If: is_in (" PRE_COND ", ('UTILISATEUR'))
                 ◇ KSP_UTIL = not_checked,
                 ◇ RENUM = "SANS ",
             # If: is_in (" PRE_COND ", ('JACOBI', '', 'SOR', 'SANS'))
                 ◇ RENUM =/"RCMK ",
                           /"SANS" (by default),
      ),
    ◇ OBSERVATION = _F (
         ◇ TITRE = text,
         ◇ OBSE_ETAT_INIT =/"NON ",
                            /"OUI" (by default),
         ◇ EVAL_CHAM =/"MAX ",
                       /"MAXI_ABS ",
                       /"MIN ",
                       /"MINI_ABS ",
                       /"MOY ",
                       /"VALE" (by default),
         ◆/NOM_CMP = text,
           /NOM_VARI = text,
         ◇ EVAL_CMP =/"FORMULE ",
                      /"VALE" (by default),
         ◇ INST = float,
         ◇ LIST_INST = listr8,
         ◇ PAS_OBSE = int,
         ◇ CRITERE =/"ABSOLU ",
                     /"RELATIF" (by default),
         ◆ NOM_CHAM =/"ACCE ",
                      /"ACCE_ABSOLU ",
                      /"CONT_ELEM ",
                      /"CONT_NOEU ",
                      /"DEPL ",
                      /"DEPL_ABSOLU ",
                      /"EPSI_ELGA ",
                      /"FORC_NODA ",
                      /"SIEF_ELGA ",
                      /"VARI_ELGA ",
                      /"VITE ",
                      /"VITE_ABSOLU ",
         # If: (equal_to (" EVAL_CMP ", 'FORMULE'))
             ◆ FORMULE = formula,
         # If: is_in (" NOM_CHAM ", ('DEPL', '', '', 'VITE', '', '', 'ACCE', '', 'FORC_NODA', '', 'CONT_NOEU', 'DEPL_ABSOLU', '', '', 'VITE_ABSOLU', 'ACCE_ABSOLU') TEMP
             ◆/TOUT = "OUI" (or not specified),
               /NOEUD = no,
               /GROUP_NO = big,
               /GROUP_MA = grma,
               /MAILLE = my,
         # If: is_in (" NOM_CHAM ", ('SIEF_ELGA', '', 'EPSI_ELGA', 'VARI_ELGA'))
             ◆/TOUT = "OUI" (or not specified),
               /GROUP_MA = grma,
               /MAILLE = my,
             ◇ EVAL_ELGA =/"MAX ",
                           /"MIN ",
                           /"VALE" (by default),
             # If: (equal_to (" EVAL_ELGA ", 'VALE'))
                 ◆ POINT = int,
                 ◇ SOUS_POINT = int,
         # If: (equal_to (" NOM_CHAM ", 'CONT_ELEM'))
             ◆/TOUT = "OUI" (or not specified),
               /GROUP_MA = grma,
               /MAILLE = my,
         # If: (equal_to (" CRITERE ", 'RELATIF'))
             ◇ PRECISION = float (default: 1e-06),
         # If: (equal_to (" CRITERE ", 'ABSOLU'))
             ◆ PRECISION = float,
      ),
    MESURE = _F (
         ◇ TABLE =/"NON" (by default),
                   /"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" (by default),
         ◆/NOM_CMP = text,
           /NOM_VARI = text,
         ◇ EVAL_CMP =/"FORMULE ",
                      /"VALE" (by default),
         # If: (equal_to (" EVAL_CMP ", 'FORMULE'))
             ◆ FORMULE = formula,
         # If: is_in (" NOM_CHAM ", ('DEPL', '', '', 'VITE', 'ACCE', 'FORC_NODA', 'CONT_NOEU'))
             ◆/TOUT = "OUI" (or not specified),
               /NOEUD = no,
               /GROUP_NO = big,
               /GROUP_MA = grma,
               /MAILLE = my,
         # If: is_in (" NOM_CHAM ", ('SIEF_ELGA', '', 'EPSI_ELGA', 'VARI_ELGA'))
             ◆/TOUT = "OUI" (or not specified),
               /GROUP_MA = grma,
               /MAILLE = my,
             ◇ EVAL_ELGA =/"MAX ",
                           /"MIN ",
                           /"VALE" (by default),
             # If: (equal_to (" EVAL_ELGA ", 'VALE'))
                 ◆ POINT = int,
                 ◇ SOUS_POINT = int,
         ◇ TITRE = text,
      ),
    ARCHIVAGE = _F (
         ◆/PAS_ARCH = int,
           /LIST_INST = listr8,
           /INST = float,
         # If: exists (" INST ") or exists (" LIST_INST ")
             ◇ CRITERE =/"ABSOLU ",
                         /"RELATIF" (by default),
             # If: equal_to (" CRITERE ", 'RELATIF')
                 ◇ PRECISION = float (default: 1e-06),
             # If: equal_to (" CRITERE ", 'ABSOLU')
                 ◆ PRECISION = float,
         ◇ CHAM_EXCLU = text (default: "('RESI_NOEU', 'RESI_RELA_NOEU')"),
      ),
    ◇ CRIT_QUALITE = _F (
         ◇ ERRE_TEMPS_THM =/"NON" (by default),
                            /"OUI ",
      ),
    ◇ ENERGIE = _F (
         ◇ CALCUL = "OUI ",
      ),
    AFFICHAGE = _F (
         ◇ INFO_RESIDU =/"NON" (by default),
                         /"OUI ",
         ◇ INFO_TEMPS =/"NON" (by default),
                        /"OUI ",
         ◇ UNITE = unit,
         ◇ PAS = int,
      ),
    ◇ CRIT_STAB = _F (
         ◇ OPTION =/"BANDE ",
                    /"CALIBRATION ",
                    /"PLUS_PETITE" (by default),
         # If: (equal_to (" OPTION ", 'BANDE'))
             ◇ CHAR_CRIT = float,
         # If: (equal_to (" OPTION ", 'PLUS_PETITE'))
             ◇ NMAX_CHAR_CRIT = int (default: 3),
         # If: (equal_to (" OPTION ", 'CALIBRATION'))
             ◇ CHAR_CRIT = float,
         ◇ COEF_DIM_ESPACE = int (default: 5),
         ◇ RIGI_GEOM =/"NON ",
                       /"OUI" (by default),
         ◇ MODI_RIGI =/"NON" (by default),
                       /"OUI ",
         ◇ TYPE =/"FLAMBEMENT" (by default),
                  /"STABILITE ",
         ◇ PREC_INSTAB = float (default: 1e-06),
         ◇ SIGNE =/"NEGATIF ",
                   /"POSITIF ",
                   /"POSITIF_NEGATIF" (by default),
         # If: (equal_to (" RIGI_GEOM ", 'NON'))
             ◇ DDL_EXCLUS =/"DAMG ",
                            /"DCX ",
                            /"DCY ",
                            /"DCZ ",
                            /"DRX ",
                            /"DRY ",
                            /"DRZ ",
                            /"XX",
                            /"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 ",
         # If: equal_to (" TYPE ", 'STABILITE') and equal_to (" RIGI_GEOM ", 'NON')
             ◆ DDL_STAB =/"DAMG ",
                          /"DCX ",
                          /"DCY ",
                          /"DCZ ",
                          /"DRX ",
                          /"DRY ",
                          /"DRZ ",
                          /"XX",
                          /"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 = float,
         ◇ CRITERE =/"ABSOLU ",
                     /"RELATIF" (by default),
         # If: (equal_to (" CRITERE ", 'RELATIF'))
             ◇ PRECISION = float (default: 1e-06),
         # If: (equal_to (" CRITERE ", 'ABSOLU'))
             ◆ PRECISION = float,
      ),
    ◇ INFO =/1,
             /2,
    # If: equal_to (" INFO ", 2)
        ◇ INFO_DBG =/"APPARIEMENT ",
                     /"CONTACT ",
                     /"FACTOR ",
                     /"MECANONLINE ",
                     /"PILOTAGE ",
                     /"SOLVEUR ",
    ◇ TITRE = text,
)

◆: mandatory
◇: optional
: present by default
&: together
/: only one among
|: several possible choices