2. Syntax#

/harm_gene
/dyna_harmo
/tran_gene
/Fashion_meca
/dyna_trans = DYNA_LINE (
    ◆ TYPE_CALCUL =/"HARM ",
                    /"TRAN ",
    ◆ BASE_CALCUL =/"PHYS ",
                    /"GENE ",
    ◆ MODELE = model,
    ◇ CHAM_MATER = mater_field,
    ◇ CARA_ELEM = cara_elem,
    ◇ CHARGE = char_meca/char_cine_meca,
    ◇ BANDE_ANALYSE = float,
    ◇ PCENT_COUP = int (default: 90),
    # If: equal_to (" BASE_CALCUL ", 'GENE')
        ◇ BASE_RESU = co,
        ◇ RESU_GENE = co,
    # If: equal_to (" TYPE_CALCUL ", 'HARM')
        ◆/FREQ = float,
          /LIST_FREQ = listr8,
    # If: equal_to (" TYPE_CALCUL ", 'TRAN')
        SCHEMA_TEMPS = _F (
             ◇ SCHEMA =/"NEWMARK ",
                        /"WILSON ",
                        /"DIFF_CENTRE ",
                        /"DEVOGE" (by default),
                        /"ADAPT_ORDRE1 ",
                        /"ADAPT_ORDRE2 ",
                        /"RUNGE_KUTTA_32 ",
                        /"RUNGE_KUTTA_54 ",
                        /"ITMI ",
             # If: equal_to (" SCHEMA ", 'NEWMARK')
                 ◇ BETA = float (default: 0.25),
                 ◇ GAMMA = float (default: 0.5),
             # If: equal_to (" SCHEMA ", 'WILSON')
                 ◇ THETA = float (default: 1.4),
             # If: equal_to (" SCHEMA ", 'RUNGE_KUTTA_54', '') or equal_to (" SCHEMA ", 'RUNGE_KUTTA_32') or equal_to (" SCHEMA ", '', 'DEVOGE')
                 ◇ TOLERANCE = float (default: 1e-05),
                 ◇ ALPHA = float,
             # If: equal_to (" SCHEMA ", 'ADAPT_ORDRE1') or equal_to (" SCHEMA ", 'ADAPT_ORDRE2')
                 ◇ VITE_MIN =/"MAXI ",
                              /"NORM" (by default),
                 ◇ COEF_MULT_PAS = float (default: 1.1),
                 ◇ COEF_DIVI_PAS = float (default: 1.3333334),
                 ◇ PAS_LIMI_RELA = float (default: 1e-06),
                 ◇ NB_POIN_PERIODE = int (default: 50),
             # If: is_in (" SCHEMA ", ('RUNGE_KUTTA_54', '', '', 'RUNGE_KUTTA_32', 'DEVOGE', 'ADAPT_ORDRE1', 'ADAPT_ORDRE2'))
                 ◇ PAS_MINI = float,
                 ◇ PAS_MAXI = float,
                 ◇ NMAX_ITER_PAS = int (default: 16),
          ),
        ◆ INCREMENT = _F (
             ◇ INST_INIT = float,
             ◇ PAS = float,
             ◆ INST_FIN = float,
          ),
    # If: equal_to (" BASE_CALCUL ", 'PHYS') and equal_to (" TYPE_CALCUL ", 'TRAN')
        ◇ ARCHIVAGE = _F (
             ◆ | PAS_ARCH = int,
               | LIST_INST = listr8,
               | INST = float,
             # If: (exists (" LIST_INST ") or exists (" INST "))
                 ◇ CRITERE =/"RELATIF" (by default),
                             /"ABSOLU ",
                 # If: (equal_to (" CRITERE ", 'RELATIF'))
                     ◇ PRECISION = float (default: 1e-06),
                 # If: (equal_to (" CRITERE ", 'ABSOLU'))
                     ◆ PRECISION = float,
             ◇ CHAM_EXCLU =/"DEPL ",
                            /"VITE ",
                            /"ACCE ",
          ),
    # If: not equal_to (" BASE_CALCUL ", 'PHYS') and equal_to (" TYPE_CALCUL ", 'TRAN')
        ◇ ARCHIVAGE = _F (
             ◆ | PAS_ARCH = int,
               | LIST_INST = listr8,
               | INST = float,
          ),
    # If: equal_to (" TYPE_CALCUL ", 'TRAN')
        ◆ | INIT_STATE = _F (
               ◇ DEPL = cham_no,
               ◇ VITE = cham_no,
            ),
          | EXCIT = _F (
               ◇ TYPE_APPUI =/"MONO ",
                              /"MULTI ",
               # If: not exists (" TYPE_APPUI ")
                   ◆ CHARGE = char_meca,
                   ◆ FONC_MULT = tablecloth/formula/function,
               # If: equal_to (" TYPE_APPUI ", 'MONO')
                   ◆ DIRECTION = float,
                   ◇/FONC_MULT = tablecloth/formula/function,
                     /ACCE = tablecloth/formula/function,
                   ◇ & VITE = tablecloth/formula/function,
                     & ◆ DEPL = tablecloth/formula/function,
                   ◇ GROUP_NO = big,
               # If: equal_to (" TYPE_APPUI ", 'MULTI')
                   ◆ DIRECTION = float,
                   ◇ GROUP_NO = big,
                   ◇/FONC_MULT = tablecloth/formula/function,
                     /ACCE = tablecloth/formula/function,
                   ◇ & VITE = tablecloth/formula/function,
                     & ◆ DEPL = tablecloth/formula/function,
            ),
    # If: equal_to (" TYPE_CALCUL ", 'HARM')
        ◆ EXCIT = _F (
             ◇ TYPE_APPUI =/"MONO ",
                            /"MULTI ",
             ◆/FONC_MULT_C = function_c/formula_c,
               /FONC_MULT = tablecloth/formula/function,
               /COEF_MULT = float,
               /COEF_MULT_C = complex,
             ◇ PHAS_DEG = float,
             ◇ PUIS_PULS = int,
             # If: not exists (" TYPE_APPUI ")
                 ◆ CHARGE = char_meca,
             # If: equal_to (" TYPE_APPUI ", 'MONO')
                 ◆ DIRECTION = float,
                 ◇ GROUP_NO = big,
             # If: equal_to (" TYPE_APPUI ", 'MULTI')
                 ◆ DIRECTION = float,
                 ◆ GROUP_NO = grno,
          ),
    # If: equal_to (" TYPE_CALCUL ", 'TRAN') and equal_to (" BASE_CALCUL ", 'PHYS')
        ◇ AMORTISSEMENT = _F (
             ◆ TYPE_AMOR = "RAYLEIGH" (or not specified),
             ◇ VNOR =/1.0 (by default),
                      /-1.0,
          ),
    # If: equal_to (" TYPE_CALCUL ", 'HARM') and equal_to (" BASE_CALCUL ", 'PHYS')
        ◇ AMORTISSEMENT = _F (
             ◆ TYPE_AMOR =/"RAYLEIGH ",
                           /"HYST ",
             # If: equal_to (" TYPE_AMOR ", 'RAYLEIGH')
                 ◇ VNOR =/1.0 (by default),
                          /-1.0,
                 ◇ MATR_IMPE_PHI =/"OUI ",
                                   /"NON" (by default),
          ),
    # If: equal_to (" TYPE_CALCUL ", 'TRAN') and equal_to (" BASE_CALCUL ", 'GENE')
        ◇ AMORTISSEMENT = _F (
             ◆ TYPE_AMOR =/"RAYLEIGH ",
                           /"MODAL ",
             # If: equal_to (" TYPE_AMOR ", 'MODAL')
                 ◆ AMOR_REDUIT = float,
             # If: equal_to (" TYPE_AMOR ", 'RAYLEIGH')
                 ◇ VNOR =/1.0 (by default),
                          /-1.0,
          ),
    # If: equal_to (" TYPE_CALCUL ", 'HARM') and equal_to (" BASE_CALCUL ", 'GENE')
        ◇ AMORTISSEMENT = _F (
             ◆ TYPE_AMOR =/"RAYLEIGH ",
                           /"MODAL ",
                           /"HYST ",
             # If: equal_to (" TYPE_AMOR ", 'MODAL')
                 ◆ AMOR_REDUIT = float,
             # If: equal_to (" TYPE_AMOR ", 'RAYLEIGH')
                 ◇ VNOR =/1.0 (by default),
                          /-1.0,
                 ◇ MATR_IMPE_PHI =/"OUI ",
                                   /"NON" (by default),
          ),
    # If: equal_to (" BASE_CALCUL ", 'PHYS') and equal_to (" TYPE_CALCUL ", 'HARM')
        SOLVEUR = _F (
             ◇ METHODE =/"MULT_FRONT ",
                         /"LDLT ",
                         /"MUMPS" (by default),
             # If: equal_to (" METHODE ", 'MULT_FRONT')
                 ◇ RENUM =/"MD",
                           /"MDA" (by default),
                 ◇ NPREC = int (default: 8),
                 ◇ ELIM_LAGR =/"OUI ",
                               /"NON" (by default),
                 ◇ STOP_SINGULIER =/"OUI" (by default),
                                    /"NON ",
             # If: equal_to (" METHODE ", 'LDLT')
                 ◇ RENUM = "RCMK ",
                 ◇ NPREC = int (default: 8),
                 ◇ ELIM_LAGR =/"OUI ",
                               /"NON" (by default),
                 ◇ STOP_SINGULIER =/"OUI" (by default),
                                    /"NON ",
             # If: equal_to (" METHODE ", 'MUMPS')
                 ◇ RENUM =/"AMD ",
                           /"AMF ",
                           /"PORD ",
                           /"METIS ",
                           /"QAMD ",
                           /"SCOTCH ",
                           /"AUTO" (by default),
                           /"PARMETIS ",
                           /"PTSCOTCH ",
                 ◇ NPREC = int (default: 8),
                 ◇ ELIM_LAGR =/"OUI ",
                               /"NON ",
                               /"LAGR2" (by default),
                 ◇ STOP_SINGULIER =/"OUI" (by default),
                                    /"NON ",
                 ◇ TYPE_RESOL =/"NONSYM ",
                                /"SYMGEN ",
                                /"SYMDEF ",
                                /"AUTO" (by default),
                 ◇ ACCELERATION =/"AUTO ",
                                  /"FR" (by default),
                                  /"FR+",
                                  /"FR++",
                                  /"LR",
                                  /"LR+",
                                  /"LR++",
                 ◇ LOW_RANK_SEUIL = float,
                 ◇ PRETRAITEMENTS =/"SANS ",
                                    /"AUTO" (by default),
                 ◇ POSTTRAITEMENTS =/"SANS ",
                                     /"AUTO" (by default),
                                     /"FORCE ",
                                     /"MINI ",
                 ◇ PCENT_PIVOT = int (default: 35),
                 ◇ NB_RHS = int (default: 1),
                 ◇ RESI_RELA = float (default: -1.0),
                 ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                     /"OUT_OF_CORE ",
                                     /"AUTO" (by default),
                                     /"EVAL ",
             # If: equal_to (" METHODE ", 'GCPC')
                 ◇ ELIM_LAGR =/"OUI ",
                               /"NON" (by default),
                 ◇ PRE_COND =/"LDLT_INC" (by default),
                              /"LDLT_SP ",
                              /"LDLT_DP ",
                 ◇ RESI_RELA = float (default: 1e-06),
                 ◇ NMAX_ITER = int,
                 # If: equal_to (" PRE_COND ", 'LDLT_INC')
                     ◇ RENUM = "RCMK ",
                     ◇ NIVE_REMPLISSAGE = int,
                 # If: is_in (" PRE_COND ", ('LDLT_SP', 'LDLT_DP'))
                     ◇ RENUM =/"SANS ",
                               /"METIS ",
                               /"PARMETIS" (by default),
                     ◇ REAC_PRECOND = int (default: 30),
                     ◇ PCENT_PIVOT = int (default: 20),
                     ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                         /"AUTO" (by default),
                     ◇ LOW_RANK_SEUIL = float,
             # If: equal_to (" METHODE ", 'PETSC')
                 ◇ ELIM_LAGR =/"OUI ",
                               /"NON" (by default),
                 ◇ ALGORITHME =/"CG",
                                /"CR",
                                /"GMRES ",
                                /"GCR ",
                                /"FGMRES" (by default),
                                /"GMRES_LMP ",
                 ◇ OPTION_PETSC = text,
                 ◇ PRE_COND =/"LDLT_INC ",
                              /"LDLT_SP" (by default),
                              /"LDLT_DP ",
                              /"JACOBI ",
                              /"SOR ",
                              /"ML",
                              /"BOOMER ",
                              /"GAMG ",
                              /"BLOC_LAGR ",
                              /"FIELDSPLIT ",
                              /"UTILISATEUR ",
                              /"HPDDM ",
                              /"SANS ",
                 ◇ RESI_RELA = float (default: 1e-06),
                 ◇ NMAX_ITER = int,
                 # If: equal_to (" PRE_COND ", 'LDLT_INC')
                     ◇ RENUM = "RCMK ",
                     ◇ NIVE_REMPLISSAGE = int,
                     ◇ REMPLISSAGE = float (default: 1.0),
                 # If: is_in (" PRE_COND ", ('LDLT_SP', 'LDLT_DP'))
                     ◇ RENUM =/"SANS ",
                               /"METIS ",
                               /"PARMETIS" (by default),
                     ◇ REAC_PRECOND = int (default: 30),
                     ◇ PCENT_PIVOT = int (default: 20),
                     ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                         /"AUTO" (by default),
                     ◇ LOW_RANK_SEUIL = float,
                 # 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 =/"SANS" (by default),
                               /"RCMK ",
          ),
    # If: equal_to (" BASE_CALCUL ", 'PHYS') and equal_to (" TYPE_CALCUL ", 'TRAN')
        SOLVEUR = _F (
             ◇ METHODE =/"MULT_FRONT ",
                         /"LDLT ",
                         /"MUMPS" (by default),
                         /"GCPC ",
                         /"PETSC ",
             # If: equal_to (" METHODE ", 'MULT_FRONT')
                 ◇ RENUM =/"MD",
                           /"MDA" (by default),
                 ◇ NPREC = int (default: 8),
                 ◇ ELIM_LAGR =/"OUI ",
                               /"NON" (by default),
                 ◇ STOP_SINGULIER =/"OUI" (by default),
                                    /"NON ",
             # If: equal_to (" METHODE ", 'LDLT')
                 ◇ RENUM = "RCMK ",
                 ◇ NPREC = int (default: 8),
                 ◇ ELIM_LAGR =/"OUI ",
                               /"NON" (by default),
                 ◇ STOP_SINGULIER =/"OUI" (by default),
                                    /"NON ",
             # If: equal_to (" METHODE ", 'MUMPS')
                 ◇ RENUM =/"AMD ",
                           /"AMF ",
                           /"PORD ",
                           /"METIS ",
                           /"QAMD ",
                           /"SCOTCH ",
                           /"AUTO" (by default),
                           /"PARMETIS ",
                           /"PTSCOTCH ",
                 ◇ NPREC = int (default: 8),
                 ◇ ELIM_LAGR =/"OUI ",
                               /"NON ",
                               /"LAGR2" (by default),
                 ◇ STOP_SINGULIER =/"OUI" (by default),
                                    /"NON ",
                 ◇ TYPE_RESOL =/"NONSYM ",
                                /"SYMGEN ",
                                /"SYMDEF ",
                                /"AUTO" (by default),
                 ◇ ACCELERATION =/"AUTO" (by default),
                                  /"EN",
                                  /"FR+",
                                  /"FR++",
                                  /"LR",
                                  /"LR+",
                                  /"LR++",
                 ◇ LOW_RANK_SEUIL = float,
                 ◇ PRETRAITEMENTS =/"SANS ",
                                    /"AUTO" (by default),
                 ◇ POSTTRAITEMENTS =/"SANS ",
                                     /"AUTO" (by default),
                                     /"FORCE ",
                                     /"MINI ",
                 ◇ PCENT_PIVOT = int (default: 35),
                 ◇ REDUCTION_MPI = int,
                 ◇ NB_RHS = int (default: 1),
                 ◇ RESI_RELA = float (default: -1.0),
                 ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                     /"OUT_OF_CORE ",
                                     /"AUTO" (by default),
                                     /"EVAL ",
                 ◇ FILTRAGE_MATRICE = float (default: -1.0),
                 ◇ MIXER_PRECISION =/"OUI ",
                                     /"NON" (by default),
             # If: equal_to (" METHODE ", 'GCPC')
                 ◇ ELIM_LAGR =/"OUI ",
                               /"NON" (by default),
                 ◇ PRE_COND =/"LDLT_INC" (by default),
                              /"LDLT_SP ",
                              /"LDLT_DP ",
                 ◇ RESI_RELA = float (default: 1e-06),
                 ◇ NMAX_ITER = int,
                 # If: equal_to (" PRE_COND ", 'LDLT_INC')
                     ◇ RENUM = "RCMK ",
                     ◇ NIVE_REMPLISSAGE = int,
                 # If: is_in (" PRE_COND ", ('LDLT_SP', 'LDLT_DP'))
                     ◇ RENUM =/"SANS ",
                               /"METIS ",
                               /"PARMETIS" (by default),
                     ◇ REAC_PRECOND = int (default: 30),
                     ◇ PCENT_PIVOT = int (default: 20),
                     ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                         /"AUTO" (by default),
                     ◇ LOW_RANK_SEUIL = float,
             # If: equal_to (" METHODE ", 'PETSC')
                 ◇ ELIM_LAGR =/"OUI ",
                               /"NON" (by default),
                 ◇ ALGORITHME =/"CG",
                                /"CR",
                                /"GMRES ",
                                /"GCR ",
                                /"FGMRES" (by default),
                                /"GMRES_LMP ",
                 ◇ OPTION_PETSC = text,
                 ◇ PRE_COND =/"LDLT_INC ",
                              /"LDLT_SP" (by default),
                              /"LDLT_DP ",
                              /"JACOBI ",
                              /"SOR ",
                              /"ML",
                              /"BOOMER ",
                              /"GAMG ",
                              /"BLOC_LAGR ",
                              /"FIELDSPLIT ",
                              /"UTILISATEUR ",
                              /"HPDDM ",
                              /"SANS ",
                 ◇ RESI_RELA = float (default: 1e-06),
                 ◇ NMAX_ITER = int,
                 # If: equal_to (" PRE_COND ", 'LDLT_INC')
                     ◇ RENUM = "RCMK ",
                     ◇ NIVE_REMPLISSAGE = int,
                     ◇ REMPLISSAGE = float (default: 1.0),
                 # If: is_in (" PRE_COND ", ('LDLT_SP', 'LDLT_DP'))
                     ◇ RENUM =/"SANS ",
                               /"METIS ",
                               /"PARMETIS" (by default),
                     ◇ REAC_PRECOND = int (default: 30),
                     ◇ PCENT_PIVOT = int (default: 20),
                     ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                         /"AUTO" (by default),
                     ◇ LOW_RANK_SEUIL = float,
                 # 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 =/"SANS" (by default),
                               /"RCMK ",
          ),
    # If: equal_to (" TYPE_CALCUL ", 'HARM') and equal_to (" BASE_CALCUL ", 'GENE')
        ◇/ISS = "OUI" (or not specified),
          /IFS = "OUI" (or not specified),
        # If: not exists (" IFS ")
            SOLVEUR = _F (
                 ◇ METHODE =/"LDLT" (by default),
                             /"MUMPS ",
                 # If: equal_to (" METHODE ", 'MULT_FRONT')
                     ◇ RENUM =/"MD",
                               /"MDA" (by default),
                     ◇ NPREC = int (default: 8),
                     ◇ ELIM_LAGR =/"OUI ",
                                   /"NON" (by default),
                     ◇ STOP_SINGULIER =/"OUI" (by default),
                                        /"NON ",
                 # If: equal_to (" METHODE ", 'LDLT')
                     ◇ RENUM = "RCMK ",
                     ◇ NPREC = int (default: 8),
                     ◇ ELIM_LAGR =/"OUI ",
                                   /"NON" (by default),
                     ◇ STOP_SINGULIER =/"OUI" (by default),
                                        /"NON ",
                 # If: equal_to (" METHODE ", 'MUMPS')
                     ◇ RENUM =/"AMD ",
                               /"AMF ",
                               /"PORD ",
                               /"METIS ",
                               /"QAMD ",
                               /"SCOTCH ",
                               /"AUTO" (by default),
                               /"PARMETIS ",
                               /"PTSCOTCH ",
                     ◇ NPREC = int (default: 8),
                     ◇ ELIM_LAGR =/"OUI ",
                                   /"NON ",
                                   /"LAGR2" (by default),
                     ◇ STOP_SINGULIER =/"OUI" (by default),
                                        /"NON ",
                     ◇ TYPE_RESOL =/"NONSYM ",
                                    /"SYMGEN ",
                                    /"SYMDEF ",
                                    /"AUTO" (by default),
                     ◇ ACCELERATION =/"AUTO ",
                                      /"FR" (by default),
                                      /"FR+",
                                      /"FR++",
                                      /"LR",
                                      /"LR+",
                                      /"LR++",
                     ◇ LOW_RANK_SEUIL = float,
                     ◇ PRETRAITEMENTS =/"SANS ",
                                        /"AUTO" (by default),
                     ◇ POSTTRAITEMENTS =/"SANS ",
                                         /"AUTO" (by default),
                                         /"FORCE ",
                                         /"MINI ",
                     ◇ PCENT_PIVOT = int (default: 35),
                     ◇ NB_RHS = int (default: 1),
                     ◇ RESI_RELA = float (default: -1.0),
                     ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                         /"OUT_OF_CORE ",
                                         /"AUTO" (by default),
                                         /"EVAL ",
                 # If: equal_to (" METHODE ", 'GCPC')
                     ◇ ELIM_LAGR =/"OUI ",
                                   /"NON" (by default),
                     ◇ PRE_COND =/"LDLT_INC" (by default),
                                  /"LDLT_SP ",
                                  /"LDLT_DP ",
                     ◇ RESI_RELA = float (default: 1e-06),
                     ◇ NMAX_ITER = int,
                     # If: equal_to (" PRE_COND ", 'LDLT_INC')
                         ◇ RENUM = "RCMK ",
                         ◇ NIVE_REMPLISSAGE = int,
                     # If: is_in (" PRE_COND ", ('LDLT_SP', 'LDLT_DP'))
                         ◇ RENUM =/"SANS ",
                                   /"METIS ",
                                   /"PARMETIS" (by default),
                         ◇ REAC_PRECOND = int (default: 30),
                         ◇ PCENT_PIVOT = int (default: 20),
                         ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                             /"AUTO" (by default),
                         ◇ LOW_RANK_SEUIL = float,
                 # If: equal_to (" METHODE ", 'PETSC')
                     ◇ ELIM_LAGR =/"OUI ",
                                   /"NON" (by default),
                     ◇ ALGORITHME =/"CG",
                                    /"CR",
                                    /"GMRES ",
                                    /"GCR ",
                                    /"FGMRES" (by default),
                                    /"GMRES_LMP ",
                     ◇ OPTION_PETSC = text,
                     ◇ PRE_COND =/"LDLT_INC ",
                                  /"LDLT_SP" (by default),
                                  /"LDLT_DP ",
                                  /"JACOBI ",
                                  /"SOR ",
                                  /"ML",
                                  /"BOOMER ",
                                  /"GAMG ",
                                  /"BLOC_LAGR ",
                                  /"FIELDSPLIT ",
                                  /"UTILISATEUR ",
                                  /"HPDDM ",
                                  /"SANS ",
                     ◇ RESI_RELA = float (default: 1e-06),
                     ◇ NMAX_ITER = int,
                     # If: equal_to (" PRE_COND ", 'LDLT_INC')
                         ◇ RENUM = "RCMK ",
                         ◇ NIVE_REMPLISSAGE = int,
                         ◇ REMPLISSAGE = float (default: 1.0),
                     # If: is_in (" PRE_COND ", ('LDLT_SP', 'LDLT_DP'))
                         ◇ RENUM =/"SANS ",
                                   /"METIS ",
                                   /"PARMETIS" (by default),
                         ◇ REAC_PRECOND = int (default: 30),
                         ◇ PCENT_PIVOT = int (default: 20),
                         ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                             /"AUTO" (by default),
                         ◇ LOW_RANK_SEUIL = float,
                     # 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 =/"SANS" (by default),
                                   /"RCMK ",
              ),
            ◇ ENRI_STAT =/"OUI" (by default),
                          /"NON ",
            # If: equal_to (" ENRI_STAT ", 'OUI')
                ◇ ORTHO =/"OUI ",
                          /"NON" (by default),
                ◇ FREQ_COUP_STAT = float,
        # If: equal_to (" ISS ", 'OUI')
            ◇ VERSION_MISS =/"V6.7" (by default),
                             /"V6.6",
                             /"V6.5",
            ◇ CALC_IMPE_FORC =/"OUI" (by default),
                               /"NON ",
            ◆ GROUP_MA_INTERF = GRMA,
            ◆ GROUP_NO_INTERF = grno,
            ◇ TYPE_MODE =/"PSEUDO ",
                          /"CRAIG_BAMPTON" (by default),
                          /"INTERF ",
            # If: equal_to (" TYPE_MODE ", 'INTERF')
                ◆ NB_MODE_INTERF = int,
            # If: equal_to (" CALC_IMPE_FORC ", 'NON')
                ◆ UNITE_RESU_IMPE = unit,
                ◆ UNITE_RESU_FORC = unit,
            # If: equal_to (" CALC_IMPE_FORC ", 'OUI')
                ◇ UNITE_IMPR_ASTER = unit,
                ◇ UNITE_RESU_IMPE = unit,
                ◇ UNITE_RESU_FORC = unit,
                  /TABLE_SOL = table,
                ◇/MATER_SOL = _F (
                       ◆ E = float,
                       ◆ NU = float,
                       ◆ RHO = float,
                       ◇ AMOR_HYST = float,
                    ),
                ◇ PARAMETRE = _F (
                     ◇/FREQ_MIN = float,
                     ◇ & FREQ_MAX = float,
                       & ◆ FREQ_PAS = float,
                       /LIST_FREQ = float,
                       /FREQ_IMAG = float,
                     ◇ Z0 = float,
                     ◇ TYPE =/"BINAIRE ",
                              /"ASCII" (by default),
                     ◇ ALLU = float,
                     ◇ SURF =/"OUI ",
                              /"NON" (by default),
                     ◇ DREF = float,
                     ◇ & OFFSET_MAX = float,
                       & OFFSET_NB = int,
                     ◇ AUTO =/"OUI ",
                              /"NON" (by default),
                     # If: equal_to (" AUTO ", 'OUI')
                         ◇ OPTION_DREF =/"OUI ",
                                         /"NON" (by default),
                         ◇ OPTION_RFIC =/"OUI ",
                                         /"NON" (by default),
                         ◇ RFIC = float,
                         ◇ SPEC_MAX = float,
                         ◇ SPEC_NB = int,
                         ◇ COEF_OFFSET = int (default: 12),
                     # If: equal_to (" AUTO ", 'NON')
                         ◇ ALGO =/"DEPL ",
                                  /"REGU ",
                         ◇ RFIC = float,
                         ◇ & SPEC_MAX = float,
                           & SPEC_NB = int,
                  ),
        # If: equal_to (" IFS ", 'OUI')
            ◇ FORC_AJOU = "OUI" (or not specified),
            ◆ GROUP_MA_INTERF = GRMA,
            ◆ GROUP_MA_FLUIDE = GRMA,
            ◆ MODELISATION_FLU =/"3D",
                                 /"COQUE ",
            ◆ RHO_FLUIDE = _F (
                 ◆ RHO = float,
                 ◆/TOUT = "OUI" (or not specified),
                   /GROUP_MA = grma,
              ),
            ◆ PRESSION_FLU_IMPO = _F (
                 ◆ PRES_FLUIDE = float,
                 ◆ GROUP_NO = grno,
              ),
    # If: equal_to (" TYPE_CALCUL ", 'TRAN') and equal_to (" BASE_CALCUL ", 'GENE')
        ◇/ISS = "OUI" (or not specified),
          /IFS = "OUI" (or not specified),
        # If: not exists (" IFS ")
            SOLVEUR = _F (
                 ◇ METHODE =/"MULT_FRONT ",
                             /"LDLT" (by default),
                             /"MUMPS ",
                 # If: equal_to (" METHODE ", 'MULT_FRONT')
                     ◇ RENUM =/"MD",
                               /"MDA" (by default),
                     ◇ NPREC = int (default: 8),
                     ◇ ELIM_LAGR =/"OUI ",
                                   /"NON" (by default),
                     ◇ STOP_SINGULIER =/"OUI" (by default),
                                        /"NON ",
                 # If: equal_to (" METHODE ", 'LDLT')
                     ◇ RENUM = "RCMK ",
                     ◇ NPREC = int (default: 8),
                     ◇ ELIM_LAGR =/"OUI ",
                                   /"NON" (by default),
                     ◇ STOP_SINGULIER =/"OUI" (by default),
                                        /"NON ",
                 # If: equal_to (" METHODE ", 'MUMPS')
                     ◇ RENUM =/"AMD ",
                               /"AMF ",
                               /"PORD ",
                               /"METIS ",
                               /"QAMD ",
                               /"SCOTCH ",
                               /"AUTO" (by default),
                               /"PARMETIS ",
                               /"PTSCOTCH ",
                     ◇ NPREC = int (default: 8),
                     ◇ ELIM_LAGR =/"OUI ",
                                   /"NON ",
                                   /"LAGR2" (by default),
                     ◇ STOP_SINGULIER =/"OUI" (by default),
                                        /"NON ",
                     ◇ TYPE_RESOL =/"NONSYM ",
                                    /"SYMGEN ",
                                    /"SYMDEF ",
                                    /"AUTO" (by default),
                     ◇ ACCELERATION =/"AUTO ",
                                      /"FR" (by default),
                                      /"FR+",
                                      /"FR++",
                                      /"LR",
                                      /"LR+",
                                      /"LR++",
                     ◇ LOW_RANK_SEUIL = float,
                     ◇ PRETRAITEMENTS =/"SANS ",
                                        /"AUTO" (by default),
                     ◇ POSTTRAITEMENTS =/"SANS ",
                                         /"AUTO" (by default),
                                         /"FORCE ",
                                         /"MINI ",
                     ◇ PCENT_PIVOT = int (default: 35),
                     ◇ NB_RHS = int (default: 1),
                     ◇ RESI_RELA = float (default: -1.0),
                     ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                         /"OUT_OF_CORE ",
                                         /"AUTO" (by default),
                                         /"EVAL ",
                 # If: equal_to (" METHODE ", 'GCPC')
                     ◇ ELIM_LAGR =/"OUI ",
                                   /"NON" (by default),
                     ◇ PRE_COND =/"LDLT_INC" (by default),
                                  /"LDLT_SP ",
                                  /"LDLT_DP ",
                     ◇ RESI_RELA = float (default: 1e-06),
                     ◇ NMAX_ITER = int,
                     # If: equal_to (" PRE_COND ", 'LDLT_INC')
                         ◇ RENUM = "RCMK ",
                         ◇ NIVE_REMPLISSAGE = int,
                     # If: is_in (" PRE_COND ", ('LDLT_SP', 'LDLT_DP'))
                         ◇ RENUM =/"SANS ",
                                   /"METIS ",
                                   /"PARMETIS" (by default),
                         ◇ REAC_PRECOND = int (default: 30),
                         ◇ PCENT_PIVOT = int (default: 20),
                         ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                             /"AUTO" (by default),
                         ◇ LOW_RANK_SEUIL = float,
                 # If: equal_to (" METHODE ", 'PETSC')
                     ◇ ELIM_LAGR =/"OUI ",
                                   /"NON" (by default),
                     ◇ ALGORITHME =/"CG",
                                    /"CR",
                                    /"GMRES ",
                                    /"GCR ",
                                    /"FGMRES" (by default),
                                    /"GMRES_LMP ",
                     ◇ OPTION_PETSC = text,
                     ◇ PRE_COND =/"LDLT_INC ",
                                  /"LDLT_SP" (by default),
                                  /"LDLT_DP ",
                                  /"JACOBI ",
                                  /"SOR ",
                                  /"ML",
                                  /"BOOMER ",
                                  /"GAMG ",
                                  /"BLOC_LAGR ",
                                  /"FIELDSPLIT ",
                                  /"UTILISATEUR ",
                                  /"HPDDM ",
                                  /"SANS ",
                     ◇ RESI_RELA = float (default: 1e-06),
                     ◇ NMAX_ITER = int,
                     # If: equal_to (" PRE_COND ", 'LDLT_INC')
                         ◇ RENUM = "RCMK ",
                         ◇ NIVE_REMPLISSAGE = int,
                         ◇ REMPLISSAGE = float (default: 1.0),
                     # If: is_in (" PRE_COND ", ('LDLT_SP', 'LDLT_DP'))
                         ◇ RENUM =/"SANS ",
                                   /"METIS ",
                                   /"PARMETIS" (by default),
                         ◇ REAC_PRECOND = int (default: 30),
                         ◇ PCENT_PIVOT = int (default: 20),
                         ◇ GESTION_MEMOIRE =/"IN_CORE ",
                                             /"AUTO" (by default),
                         ◇ LOW_RANK_SEUIL = float,
                     # 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 =/"SANS" (by default),
                                   /"RCMK ",
              ),
            ◇ ENRI_STAT =/"OUI" (by default),
                          /"NON ",
            # If: equal_to (" ENRI_STAT ", 'OUI')
                ◇ ORTHO =/"OUI ",
                          /"NON" (by default),
                ◇ FREQ_COUP_STAT = float,
        # If: equal_to (" ISS ", 'OUI')
            ◇ VERSION_MISS =/"V6.6" (by default),
                             /"V6.5",
            ◇ CALC_IMPE_FORC =/"OUI" (by default),
                               /"NON ",
            ◆ GROUP_MA_INTERF = GRMA,
            ◆ GROUP_NO_INTERF = grno,
            ◇ TYPE_MODE =/"PSEUDO ",
                          /"CRAIG_BAMPTON" (by default),
                          /"INTERF ",
            # If: equal_to (" TYPE_MODE ", 'INTERF')
                ◆ NB_MODE_INTERF = int,
            # If: equal_to (" CALC_IMPE_FORC ", 'NON')
                ◆ UNITE_RESU_IMPE = unit,
                ◆ UNITE_RESU_FORC = unit,
            # If: equal_to (" CALC_IMPE_FORC ", 'OUI')
                ◇ UNITE_IMPR_ASTER = unit,
                ◇ UNITE_RESU_IMPE = unit,
                ◇ UNITE_RESU_FORC = unit,
                  /TABLE_SOL = table,
                ◇/MATER_SOL = _F (
                       ◆ E = float,
                       ◆ NU = float,
                       ◆ RHO = float,
                       ◇ AMOR_HYST = float,
                    ),
                ◇ PARAMETRE = _F (
                     ◆/FREQ_MIN = float,
                     ◇ & FREQ_MAX = float,
                       & ◆ FREQ_PAS = float,
                       /LIST_FREQ = float,
                       /FREQ_IMAG = float,
                     ◇ Z0 = float,
                     ◇ TYPE =/"BINAIRE ",
                              /"ASCII" (by default),
                     ◇ ALLU = float,
                     ◇ SURF =/"OUI ",
                              /"NON" (by default),
                     ◇ DREF = float,
                     ◇ & OFFSET_MAX = float,
                       & OFFSET_NB = int,
                     ◇ AUTO =/"OUI ",
                              /"NON" (by default),
                     # If: equal_to (" AUTO ", 'OUI')
                         ◇ OPTION_DREF =/"OUI ",
                                         /"NON" (by default),
                         ◇ OPTION_RFIC =/"OUI ",
                                         /"NON" (by default),
                         ◇ RFIC = float,
                         ◇ SPEC_MAX = float,
                         ◇ SPEC_NB = int (default: 16384),
                         ◇ COEF_OFFSET = int (default: 12),
                     # If: equal_to (" AUTO ", 'NON')
                         ◇ ALGO =/"DEPL ",
                                  /"REGU ",
                         ◇ RFIC = float,
                         ◇ & SPEC_MAX = float,
                           & SPEC_NB = int,
                  ),
            ◆ | ACCE_X = function_c,
              | ACCE_Y = function_c,
              | ACCE_Z = function_c,
              | DEPL_X = function_c,
              | DEPL_Y = function_c,
              | DEPL_Z = function_c,
        # If: equal_to (" IFS ", 'OUI')
            ◇ FORC_AJOU = "OUI" (or not specified),
            ◆ GROUP_MA_INTERF = GRMA,
            ◆ GROUP_MA_FLUIDE = GRMA,
            ◆ MODELISATION_FLU =/"3D",
                                 /"COQUE ",
            ◆ RHO_FLUIDE = _F (
                 ◆ RHO = float,
                 ◆/TOUT = "OUI" (or not specified),
                   /GROUP_MA = grma,
              ),
            ◆ PRESSION_FLU_IMPO = _F (
                 ◆ PRES_FLUIDE = float,
                 ◆ GROUP_NO = grno,
              ),
        # If: not exists (" ISS ") and not exists (" IFS ")
            ◇ COMPORTEMENT = _F (
                 ◆ RELATION =/"DIS_CHOC ",
                              /"ROTOR_FISS ",
                              /"FLAMBAGE ",
                              /"ANTI_SISM ",
                              /"DIS_VISC ",
                              /"DIS_ECRO_TRAC ",
                              /"CHOC_ELAS_TRAC ",
                              /"RELA_EFFO_DEPL ",
                              /"RELA_EFFO_VITE ",
                 # If: equal_to (" RELATION ", 'DIS_CHOC')
                     ◇ INTITULE = text,
                     ◆/GROUP_MA = grma,
                       /GROUP_NO_1 = grno,
                     ◇/GROUP_NO_2 = grno,
                     ◆ OBSTACLE = table_function,
                     ◇ ORIG_OBST = float,
                     ◆ NORM_OBST = float,
                     ◇ ANGL_VRIL = float,
                     ◇ JEU = float (default: 1.0),
                     ◇ DIST_1 = float,
                     ◇ DIST_2 = float,
                     ◇ SOUS_STRUC_1 = text,
                     ◇ SOUS_STRUC_2 = text,
                     ◇ REPERE = text (default: "GLOBAL "),
                     ◆ RIGI_NOR = float,
                     ◇ AMOR_NOR = float,
                     ◇ RIGI_TAN = float,
                     ◇ AMOR_TAN = float,
                     ◇ FROTTEMENT =/"NON" (by default),
                                    /"COULOMB ",
                                    /"COULOMB_STAT_DYNA ",
                     # If: equal_to (" FROTTEMENT ", 'COULOMB')
                         ◆ COULOMB = float,
                         ◇ UNIDIRECTIONNEL =/"OUI ",
                                             /"NON" (by default),
                     # If: equal_to (" FROTTEMENT ", 'COULOMB_STAT_DYNA')
                         ◆ COULOMB_STAT = float,
                         ◆ COULOMB_DYNA = float,
                         ◇ UNIDIRECTIONNEL =/"OUI ",
                                             /"NON" (by default),
                 # If: equal_to (" RELATION ", 'ROTOR_FISS')
                     ◇ ANGL_INIT = float,
                     ◇ ANGL_ROTA = formula/function,
                     ◇/GROUP_NO_G = grno,
                     ◆/GROUP_NO_D = grno,
                     ◆ K_ PHI = formula/function,
                     ◆ DK_DPHI = formula/function,
                 # If: equal_to (" RELATION ", 'FLAMBAGE')
                     ◇ INTITULE = text,
                     ◆/GROUP_NO_1 = grno,
                     ◇/GROUP_NO_2 = grno,
                     ◆ OBSTACLE = table_function,
                     ◇ ORIG_OBST = float,
                     ◆ NORM_OBST = float,
                     ◇ ANGL_VRIL = float,
                     ◇ JEU = float (default: 1.0),
                     ◇ DIST_1 = float,
                     ◇ DIST_2 = float,
                     ◇ REPERE = text (default: "GLOBAL "),
                     ◆ RIGI_NOR = float,
                     ◇ AMOR_NOR = float,
                     ◆ FNOR_CRIT = float,
                     ◆ FNOR_POST_FL = float,
                     ◇ ENFO_FL = float (default: 1e-20),
                     ◇ AMOR_FL = float,
                     ◇ LARG_PLAT = float,
                     ◇ DEPL_POST_FL = float,
                     ◇ RIGI_POST_FL = float,
                     ◇ AMOR_POST_FL = float,
                     ◇ CRIT_AMOR =/"INCLUS" (by default),
                                   /"EXCLUS ",
                 # If: equal_to (" RELATION ", 'ANTI_SISM')
                     ◆/GROUP_NO_1 = grno,
                     ◆/GROUP_NO_2 = grno,
                     ◇ RIGI_K1 = float,
                     ◇ RIGI_K2 = float,
                     ◇ SEUIL_FX = float,
                     ◇ C = float,
                     ◇ PUIS_ALPHA = float,
                     ◇ DX_MAX = float (default: 1.0),
                 # If: equal_to (" RELATION ", 'DIS_VISC')
                     ◆/GROUP_NO_1 = grno,
                     ◆/GROUP_NO_2 = grno,
                     ◆/K1 = float,
                       /UNSUR_K1 = float,
                     ◆/K2 = float,
                       /UNSUR_K2 = float,
                     ◆/K3 = float,
                       /UNSUR_K3 = float,
                     ◆ C = float,
                     ◇ PUIS_ALPHA = float (default: 0.5),
                     ◇ ITER_INTE_MAXI = int (default: 20),
                     ◇ RESI_INTE = float (default: 1e-06),
                 # If: equal_to (" RELATION ", 'DIS_ECRO_TRAC')
                     ◆/GROUP_NO_1 = grno,
                     ◆/GROUP_NO_2 = grno,
                     ◆/FX = function,
                       /FTAN = function,
                     # If: exists (" FTAN ")
                         ◆ ECROUISSAGE =/"ISOTROPE ",
                                         /"CINEMATIQUE ",
                     ◇ ITER_INTE_MAXI = int (default: 20),
                     ◇ RESI_INTE = float (default: 1e-06),
                 # If: equal_to (" RELATION ", 'CHOC_ELAS_TRAC')
                     ◆/GROUP_NO_1 = grno,
                     ◆/GROUP_NO_2 = grno,
                     ◇ DIST_1 = float,
                     ◇ DIST_2 = float,
                     ◆ FX = function,
                 # If: equal_to (" RELATION ", 'RELA_EFFO_DEPL')
                     ◆/GROUP_NO = grno,
                     ◇ SOUS_STRUC = text,
                     ◇ NOM_CMP = text,
                     ◆ FONCTION = tablecloth/formula/function,
                 # If: equal_to (" RELATION ", 'RELA_EFFO_VITE')
                     ◆/GROUP_NO = grno,
                     ◇ SOUS_STRUC = text,
                     ◇ NOM_CMP = text,
                     ◆ FONCTION = tablecloth/formula/function,
              ),
)

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