2. Syntaxe#

/ tran_gene
/ harm_gene
/ table
/ char_meca = CALC_MISS(
    ◆ TYPE_RESU = / "HARM_GENE",
                  / "TRAN_GENE",
                  / "TABLE",
                  / "TABLE_CONTROL",
                  / "FICHIER",
                  / "FICHIER_TEMPS",
                  / "CHARGE",
    ◇ PROJET = text (défaut: "MODELE"),
    ◇ REPERTOIRE = text,
    ◇ VERSION = / "V6.7" (par défaut),
                / "V6.6",
                / "V6.5",
      / TABLE_SOL = table,
    ◇ / MATER_SOL = _F(
           ◆ E = float,
           ◆ NU = float,
           ◆ RHO = float,
           ◇ AMOR_HYST = float,
        ),
    ◇ MATER_FLUIDE = _F(
         ◆ RHO = float,
         ◆ CELE = float,
         ◇ AMOR_BETA = float,
         ◇ DEMI_ESPACE = / "OUI" (par défaut),
                         / "NON",
      ),
    ◇ ISSF = / "OUI",
             / "NON" (par défaut),
    # Si: is_in("TYPE_RESU", ("FICHIER", "TABLE_CONTROL"))
        ◆ / MACR_ELEM_DYNA = macr_elem_dyna,
          / BASE_MODALE = mode_meca,
        # Si: exists("BASE_MODALE")
            ◇ MATR_RIGI = matr_asse_depl_c / matr_asse_depl_r,
            ◇ MATR_MASS = matr_asse_depl_r,
        ◇ AMOR_REDUIT = float,
        ◆ GROUP_MA_INTERF = grma,
        ◇ & GROUP_MA_FLU_STR = grma,
          & GROUP_MA_FLU_SOL = grma,
        ◇ GROUP_MA_SOL_SOL = grma,
        ◇ UNITE_IMPR_ASTER = unit,
        ◇ UNITE_RESU_IMPE = unit,
        ◇ UNITE_RESU_FORC = unit,
        ◇ / SOURCE_SOL = _F(
               ◆ POINT = float,
               ◆ DIRECTION = float,
            ),
          / SOURCE_FLUIDE = _F(
               ◆ POINT = float,
            ),
    # Si: equal_to("TYPE_RESU", "FICHIER_TEMPS")
        ◆ / MACR_ELEM_DYNA = macr_elem_dyna,
          / BASE_MODALE = mode_meca,
        # Si: exists("BASE_MODALE")
            ◇ MATR_RIGI = matr_asse_depl_c / matr_asse_depl_r,
            ◇ MATR_MASS = matr_asse_depl_r,
        ◇ AMOR_REDUIT = float,
        ◆ GROUP_MA_INTERF = grma,
        ◇ & GROUP_MA_FLU_STR = grma,
          & GROUP_MA_FLU_SOL = grma,
        ◇ GROUP_MA_SOL_SOL = grma,
        ◇ UNITE_IMPR_ASTER = unit,
        ◆ | UNITE_RESU_RIGI = unit,
          | UNITE_RESU_AMOR = unit,
          | UNITE_RESU_MASS = unit,
        ◇ INST_FIN = float,
        ◇ PAS_INST = float,
        ◇ INST_ECRI_FIN = float,
        ◇ FACTEUR_INTERPOL = int (défaut: 1),
        ◇ PCENT_FREQ_CALCUL = float,
        ◇ PRECISION = float (défaut: 1e-06),
        ◇ COEF_SURECH = float (défaut: 1.35),
        ◇ COEF_MULT = float (défaut: 1.0),
        ◇ TYPE_FICHIER_TEMPS = / "BINAIRE",
                               / "ASCII" (par défaut),
        ◇ & MATR_GENE = _F(
               ◇ DECOMP_IMPE = / "PRODUIT" (par défaut),
                               / "SANS_PRODUIT",
               ◆ AMOR_HYST = / "DANS_IMPEDANCE",
                             / "DANS_MATR_AMOR",
               # Si: equal_to("AMOR_HYST", "DANS_MATR_AMOR")
                   ◇ MATR_MASS = matr_asse_gene_r / matr_asse_depl_r,
                   ◇ MATR_RIGI = matr_asse_gene_r / matr_asse_depl_r / matr_asse_gene_c,
                   ◆ MATR_AMOR = matr_asse_gene_r / matr_asse_depl_r / matr_asse_gene_c,
               # Si: equal_to("AMOR_HYST", "DANS_IMPEDANCE")
                   ◆ | MATR_MASS = matr_asse_gene_r / matr_asse_depl_r,
                     | MATR_RIGI = matr_asse_gene_r / matr_asse_depl_r / matr_asse_gene_c,
                     | MATR_AMOR = matr_asse_gene_r / matr_asse_depl_r / matr_asse_gene_c,
            ),
        ◇ EXCIT_SOL = _F(
             ◆ UNITE_RESU_FORC = unit,
             ◇ NOM_CHAM = / "ACCE",
                          / "VITE",
                          / "DEPL" (par défaut),
             ◆ | CHAM_X = fonction,
               | CHAM_Y = fonction,
               | CHAM_Z = fonction,
          ),
    # Si: not is_in("TYPE_RESU", ("FICHIER", "FICHIER_TEMPS", "TABLE_CONTROL", "CHARGE"))
        ◇ MACR_ELEM_DYNA = macr_elem_dyna,
        ◆ BASE_MODALE = mode_meca,
        ◆ MATR_RIGI = matr_asse_depl_c / matr_asse_depl_r,
        ◆ MATR_MASS = matr_asse_depl_r,
        ◆ / MATR_AMOR = matr_asse_depl_r,
          / AMOR_REDUIT = float,
        ◆ GROUP_MA_INTERF = grma,
        ◇ & GROUP_MA_FLU_STR = grma,
          & GROUP_MA_FLU_SOL = grma,
        ◇ GROUP_MA_SOL_SOL = grma,
        ◇ UNITE_IMPR_ASTER = unit,
        ◇ UNITE_RESU_IMPE = unit,
        ◇ UNITE_RESU_FORC = unit,
    # Si: not exists("EXCIT_GENE") and not is_in("TYPE_RESU", ("FICHIER", "FICHIER_TEMPS", "CHARGE"))
        ◆ TYPE_EXCIT = / "INST",
                       / "FREQ",
        # Si: equal_to("TYPE_EXCIT", 'INST')
          ◇ & INST_FIN = float,
            & PAS_INST = float,
    # Si: (is_in("TYPE_RESU", ("FICHIER", "FICHIER_TEMPS", "TABLE_CONTROL", "CHARGE"))) or
          (is_in("TYPE_RESU", ("HARM_GENE", "TRAN_GENE")) and not exists("UNITE_RESU_IMPE"))
        ◇ PARAMETRE = _F(
            ◆ & FREQ_MIN = float,
              & FREQ_MAX = float,
              & FREQ_PAS = float,
              / FREQ = float,
              / LIST_FREQ = listr8,
              / FREQ_IMAG = float,
            ◇ Z0 = float,
            ◇ TYPE = / "BINAIRE",
                     / "ASCII" (par défaut),
            ◇ ALLU = float,
            ◇ SURF = / "OUI",
                     / "NON" (par défaut),
            ◇ DREF = float,
            ◇ OFFSET_MAX = float,
              OFFSET_NB = int,
            ◇ AUTO = / "OUI",
                     / "NON" (par défaut),
            # Si: equal_to("AUTO", "OUI")
                ◇ OPTION_DREF = / "OUI",
                                / "NON" (par défaut),
                ◇ OPTION_RFIC = / "OUI",
                                / "NON" (par défaut),
                ◇ RFIC = float,
                ◇ SPEC_MAX = float,
                  SPEC_NB = int,
                ◇ COEF_OFFSET = int (défaut: 12),
            # Si: equal_to("AUTO", "NON")
                ◇ ALGO = / "DEPL",
                         / "REGU",
                ◇ RFIC = float,
                ◇ & SPEC_MAX = float,
                  & SPEC_NB = int,
          ),
    # Si: is_in("TYPE_RESU", ("HARM_GENE", "TRAN_GENE"))
        ◆ MODELE = modele,
        ◇ GROUP_NO = grno,
        Si: not exists("EXCIT_MONO") and not exists("EXCIT_FORC")
            ◇ / EXCIT_GENE = _F(
                  ◆ / VECT_ASSE = cham_no,
                    / CHARGE = char_meca,
                  ◆ / FONC_MULT_C = fonction_c / formule_c,
                    / FONC_MULT = formule / nappe / fonction,
                    / COEF_MULT = float,
                    / COEF_MULT_C = complex,
                  ◇ PHAS_DEG = float,
                  ◇ PUIS_PULS = int,
            ),
        Si: not exists("EXCIT_MONO") and not exists("EXCIT_GENE")
            ◇ / EXCIT_FORC = _F(
                Si: equal_to("TYPE_EXCIT", "INST")
                    ◆ | ACCE_X = fonction,
                      | ACCE_Y = fonction,
                      | ACCE_Z = fonction,
                      | DEPL_X = fonction,
                      | DEPL_Y = fonction,
                      | DEPL_Z = fonction,
                Si: equal_to("TYPE_EXCIT", "FREQ")
                    ◆ | ACCE_X = fonction_c,
                      | ACCE_Y = fonction_c,
                      | ACCE_Z = fonction_c,
                      | DEPL_X = fonction_c,
                      | DEPL_Y = fonction_c,
                      | DEPL_Z = fonction_c,
            )
        Si: not exists("EXCIT_FORC") and not exists("EXCIT_GENE")
            ◇ / EXCIT_MONO = _F(
                    ◆ DIRECTION = / "X",
                                  / "Y",
                                  / "Z",
                    Si: equal_to("TYPE_EXCIT", "INST")
                        ◆ | ACCE = fonction,
                    Si: equal_to("TYPE_EXCIT", "FREQ")
                        ◆ | ACCE = fonction_c,
            )
    # Si: is_in("TYPE_RESU", ("HARM_GENE", "TABLE"))
        ◆ LIST_FREQ_CALC=_F(
            ◆ AUTO = / 'OUI' (par défaut),
                     / 'NON',
            Si: equal_to("AUTO", "NON")
                ◆ & FREQ_MIN = float,
                  & FREQ_MAX = float,
                  & FREQ_PAS = float,
                  / FREQ = float,
                  / LIST_FREQ = listr8,
        )
    # Si: equal_to("TYPE_RESU", "TABLE")
        ◆ MODELE = modele,
        ◆ GROUP_NO = grno,
        ◆ NORME = float,
        ◆ AMOR_SPEC_OSCI = float,
        ◇ LIST_FREQ_SPEC_OSCI = listr8,
        ◆ EXCIT_FORC = _F(
            Si: equal_to("TYPE_EXCIT", "INST")
                ◆ |ACCE_X = fonction,
                  |ACCE_Y = fonction,
                  |ACCE_Z = fonction,
            Si: equal_to("TYPE_EXCIT", "FREQ")
                ◆ |ACCE_X = fonction_c,
                  |ACCE_Y = fonction_c,
                  |ACCE_Z = fonction_c,
        )
    # Si: equal_to("TYPE_RESU", "TABLE_CONTROL")
        ◇ GROUP_MA_CONTROL = grma,
        ◇ & NORME = float,
          & AMOR_SPEC_OSCI = float,
        ◇ LIST_FREQ_SPEC_OSCI = listr8,
        ◇ TOUT_CHAM = "OUI" (ou non renseigné),
        ◆ EXCIT_FORC = _F(
            Si: equal_to("TYPE_EXCIT", "INST")
                ◆ | ACCE_X = fonction,
                  |ACCE_Y = fonction,
                  |ACCE_Z = fonction,
            Si: equal_to("TYPE_EXCIT", "FREQ")
                ◆ |ACCE_X = fonction_c,
                  |ACCE_Y = fonction_c,
                  |ACCE_Z = fonction_c,
        )
    # Si: equal_to("TYPE_RESU", "CHARGE")
        ◆ MODELE = modele,
        ◆ FONC_SIGNAL = fonction,
        ◆ NOM_CMP = / "DX",
                    / "DY",
                    / "DZ",
        ◇ ISSF = / "OUI",
                 / "NON" (par défaut),
        ◇ GROUP_NO_AFFE = grno,
        ◆ UNITE_RESU_FORC = unit,
        ◇ FREQ_MAX = float,
        ◇ VARI = / "OUI",
                 / "NON" (par défaut),
        ◇ MATR_GENE = _F(
             ◆ BASE = mode_meca,
             ◆ NUME_DDL_GENE = nume_ddl_gene,
          ),
        ◇ PRECISION = float (défaut: 0.999),
        ◇ INTERF = _F(
             ◆ GROUP_NO_INTERF = grno,
             ◆ MODE_INTERF = / "CORP_RIGI",
                             / "TOUT",
                             / "QUELCONQUE",
          ),
        ◇ MATR_COHE = _F(
             ◆ TYPE = / "MITA_LUCO",
                      / "ABRAHAMSON",
             # Si: equal_to("TYPE", "MITA_LUCO")
                 ◇ VITE_ONDE = float (défaut: 600.0),
                 ◇ PARA_ALPHA = float (défaut: 0.5),
          ),
        ◇ UNITE_RESU_IMPE = unit,
        ◇ TYPE = / "BINAIRE",
                 / "ASCII" (par défaut),
    ◇ INFO = / 1 (par défaut),
             / 2,
)

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