2. Syntaxe#

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

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