2. Syntax#

meca_mode = COMB_SISM_MODAL (
    ◆ MODE_MECA = meca fashion,
    ◇/TOUT_ORDRE =/"OUI ",
                     /"NON ",
      /NUME_ORDRE = int,
      /FREQ = float,
      /NUME_MODE = int,
      /LIST_FREQ = listr8,
      /LIST_ORDRE = listis,
    # If: exists (" FREQ ") or exists (" LIST_FREQ ")
        ◇ PRECISION = float (default: 0.001),
        ◇ CRITERE =/"RELATIF" (by default),
                    /"ABSOLU ",
    ◆/AMOR_REDUIT = float,
      /LIST_AMOR = listr8,
      /AMOR_GENE = matr_asse_gene_r,
    ◇ MODE_CORR =/"OUI ",
                  /"NON" (by default),
    # If: equal_to (" MODE_CORR ", 'OUI')
        ◆ PSEUDO_MODE = meca fashion,
        ◇ FREQ_COUP = float,
    ◇ TYPE_ANALYSE =/"MONO_APPUI" (by default),
                     /"MULT_APPUI ",
    # If: equal_to (" TYPE_ANALYSE ", 'MULT_APPUI')
        ◆ APPUIS = _F (
             ◆ NOM = text,
             ◆ GROUP_NO = grno,
          ),
    # If: equal_to (" TYPE_ANALYSE ", 'MONO_APPUI')
        ◆ SPECTRE = _F (
             ◆ LIST_AXE =/"X",
                          /"Y",
                          /"Z",
             ◆ SPEC_OSCI = formula/tablecloth,
             ◇ ECHELLE = float (default: 1.0),
             ◇ NATURE =/"ACCE" (by default),
                        /"VITE ",
                        /"DEPL ",
             ◇ CORR_FREQ =/"OUI ",
                           /"NON" (by default),
          ),
    # If: equal_to (" TYPE_ANALYSE ", 'MULT_APPUI')
        ◆ SPECTRE = _F (
             ◆ LIST_AXE =/"X",
                          /"Y",
                          /"Z",
             ◆ SPEC_OSCI = formula/tablecloth,
             ◇ ECHELLE = float (default: 1.0),
             ◇ NATURE =/"ACCE" (by default),
                        /"VITE ",
                        /"DEPL ",
             ◇ CORR_FREQ =/"OUI ",
                           /"NON" (by default),
             ◆ NOM_APPUI = text,
          ),
    ◇ DEPL_MULT_APPUI = _F (
         ◆ MODE_STAT = meca fashion,
         ◆ NOM_APPUI = text,
         ◆ | DX = float,
           | DY = float,
           | DZ = float,
      ),
    ◆ COMB_MODE = _F (
         ◇ TYPE =/"SRSS ",
                  /"CQC" (by default),
                  /"DSC ",
                  /"ABS ",
                  /"DPC ",
                  /"GUPTA ",
         # If: equal_to (" TYPE ", 'GUPTA')
             ◆ FREQ_1 = float,
             ◆ FREQ_2 = float,
         # If: equal_to (" TYPE ", 'DSC')
             ◆ DUREE = float,
      ),
    ◇ COMB_DIRECTION =/"QUAD ",
                       /"NEWMARK" (by default),
    # If: equal_to (" TYPE_ANALYSE ", 'MULT_APPUI')
        ◆ GROUP_APPUI_CORRELE = _F (
             ◆/TOUT = "OUI" (or not specified),
               /LIST_APPUI = text,
             ◆ NOM = text,
          ),
    # If: equal_to (" TYPE_ANALYSE ", 'MULT_APPUI')
        ◇ COMB_DDS_CORRELE =/"QUAD ",
                             /"LINE ",
                             /"ABS" (by default),
    ◆ OPTION =/"DEPL ",
               /"VITE ",
               /"ACCE_ABSOLU ",
               /"REAC_NODA ",
               /"FORC_NODA ",
               /"SIGM_ELNO ",
               /"SIEF_ELGA ",
               /"SIPO_ELNO ",
               /"EFGE_ELNO ",
               /"EGRU_ELNO ",
               /"SIEF_ELNO ",
    # If: equal_to (" TYPE_ANALYSE ", 'MONO_APPUI')
        ◆ TYPE_RESU = _F (
             ◇ TYPE =/"VALE_SPEC ",
                      /"VALE_QS ",
                      /"VALE_DIRE ",
                      /"VALE_DYNA ",
                      /"VALE_INER ",
                      /"VALE_TOTA" (by default),
             # If: equal_to (" TYPE ", 'VALE_SPEC')
                 ◆/TOUT_ORDRE =/"OUI ",
                                  /"NON ",
                   /NUME_ORDRE = int,
                   /LIST_ORDRE = listis,
                   /NUME_MODE = int,
                   /FREQ = float,
                   /LIST_FREQ = listr8,
                 # If: exists (" FREQ ") or exists (" LIST_FREQ ")
                     ◇ PRECISION = float (default: 0.001),
                     ◇ CRITERE =/"RELATIF" (by default),
                                 /"ABSOLU ",
                 ◆ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
             # If: equal_to (" TYPE ", 'VALE_OSCI')
                 ◇ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
             # If: equal_to (" TYPE ", 'VALE_QS')
                 ◇ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
             # If: equal_to (" TYPE ", 'VALE_DIRE')
                 ◆ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
             # If: equal_to (" TYPE ", 'VALE_TOTA')
                 ◇ NEWMARK =/"OUI ",
                             /"NON ",
             # If: equal_to (" TYPE ", 'VALE_DYNA')
                 ◇ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
             # If: equal_to (" TYPE ", 'VALE_INER')
                 ◇ NEWMARK =/"OUI ",
                             /"NON ",
                 ◇ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
          ),
    # If: equal_to (" TYPE_ANALYSE ", 'MULT_APPUI')
        ◆ TYPE_RESU = _F (
             ◇ TYPE =/"VALE_SPEC ",
                      /"VALE_QS ",
                      /"VALE_DIRE ",
                      /"VALE_DDS ",
                      /"VALE_DYNA ",
                      /"VALE_INER ",
                      /"VALE_TOTA" (by default),
             # If: equal_to (" TYPE ", 'VALE_SPEC')
                 ◆/TOUT_ORDRE =/"OUI ",
                                  /"NON ",
                   /NUME_ORDRE = int,
                   /LIST_ORDRE = listis,
                   /NUME_MODE = int,
                   /FREQ = float,
                   /LIST_FREQ = listr8,
                 # If: exists (" FREQ ") or exists (" LIST_FREQ ")
                     ◇ PRECISION = float (default: 0.001),
                     ◇ CRITERE =/"RELATIF" (by default),
                                 /"ABSOLU ",
                 ◇/LIST_APPUI = text,
                   /TOUT_APPUI = "OUI" (or not specified),
                 ◆ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
             # If: equal_to (" TYPE ", 'VALE_OSCI')
                 ◇ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
             # If: equal_to (" TYPE ", 'VALE_QS')
                 ◇ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
             # If: equal_to (" TYPE ", 'VALE_DDS')
                 ◇ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
             # If: equal_to (" TYPE ", 'VALE_DIRE')
                 ◆ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
             # If: equal_to (" TYPE ", 'VALE_TOTA')
                 ◇ NEWMARK = "OUI" (or not specified),
             # If: equal_to (" TYPE ", 'VALE_DYNA')
                 ◇ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
             # If: equal_to (" TYPE ", 'VALE_INER')
                 ◇ LIST_AXE =/"X",
                              /"Y",
                              /"Z",
          ),
    ◇ INFO =/1 (by default),
             /2,
    ◇ TITRE = text,
)

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