1. Syntax#

list_inst = DEFI_LIST_INST (
    ◇ MODELE = model,
    ◇ METHODE =/"AUTO ",
                /"MANUEL" (by default),
    # If: equal_to (" METHODE ", 'MANUEL')
        ◆ DEFI_LIST = _F (
             ◆/VALE = float,
               /LIST_INST = listr8,
               /RESULTAT = result,
             ◇ & SUBD_PAS = int,
          ),
    # If: (equal_to (" METHODE ", 'AUTO'))
        ◆ DEFI_LIST = _F (
             ◆/VALE = float,
               /LIST_INST = listr8,
             ◇ PAS_MINI = float,
             ◇ PAS_MAXI = float,
             ◇ NB_PAS_MAXI = int (default: 1000000),
          ),
    ECHEC = _F (
         ◇ EVENEMENT =/"COLLISION ",
                       /"DELTA_GRANDEUR ",
                       /"DIVE_RESI ",
                       /"ERREUR" (by default),
                       /"INSTABILITE ",
                       /"INTERPENETRATION ",
                       /"RESI_MAXI ",
         # If: equal_to (" EVENEMENT ", 'ERREUR')
             # If: equal_to (" ACTION ", 'DECOUPE') or equal_to (" ACTION ", 'AUTRE_PILOTAGE')
                 # If: equal_to (" SUBD_METHODE ", 'AUTO')
                     ◇ SUBD_PAS_MINI = float (default: 0.0),
                 # If: equal_to (" SUBD_METHODE ", 'MANUEL')
                     ◇ SUBD_PAS = int (default: 4),
                     ◇ SUBD_NIVEAU = int (default: 3),
                     ◇ SUBD_PAS_MINI = float (default: 0.0),
                 ◇ SUBD_METHODE =/"AUTO ",
                                  /"MANUEL" (by default),
             # If: equal_to (" ACTION ", 'ITER_SUPPL')
                 # If: equal_to (" SUBD_METHODE ", 'AUTO')
                     ◇ SUBD_PAS_MINI = float (default: 0.0),
                 # If: equal_to (" SUBD_METHODE ", 'MANUEL')
                     ◇ SUBD_PAS = int (default: 4),
                     ◇ SUBD_NIVEAU = int (default: 3),
                     ◇ SUBD_PAS_MINI = float (default: 0.0),
                 ◇ PCENT_ITER_PLUS = int (default: 50),
                 ◇ SUBD_METHODE =/"AUTO ",
                                  /"MANUEL" (by default),
             ◇ ACTION =/"ARRET ",
                        /"AUTRE_PILOTAGE ",
                        /"DECOUPE" (by default),
                        /"ITER_SUPPL ",
         # If: equal_to (" EVENEMENT ", 'DELTA_GRANDEUR')
             # If: equal_to (" ACTION ", 'DECOUPE') or equal_to (" ACTION ", 'AUTRE_PILOTAGE')
                 # If: equal_to (" SUBD_METHODE ", 'AUTO')
                     ◇ SUBD_PAS_MINI = float (default: 0.0),
                 # If: equal_to (" SUBD_METHODE ", 'MANUEL')
                     ◇ SUBD_PAS = int (default: 4),
                     ◇ SUBD_NIVEAU = int (default: 3),
                     ◇ SUBD_PAS_MINI = float (default: 0.0),
                 ◇ SUBD_METHODE =/"AUTO ",
                                  /"MANUEL" (by default),
             ◇/GROUP_MA = grma,
               /GROUP_NO = big,
             ◆ VALE_REF = float,
             ◆ NOM_CHAM =/"DEPL ",
                          /"SIEF_ELGA ",
                          /"VARI_ELGA ",
             ◆ NOM_CMP = text,
             ◇ ACTION =/"ARRET ",
                        /"DECOUPE" (by default),
         # If: equal_to (" EVENEMENT ", 'COLLISION')
             # If: equal_to (" ACTION ", 'DECOUPE')
                 # If: equal_to (" SUBD_METHODE ", 'MANUEL')
                     ◇ SUBD_PAS = int (default: 4),
                     ◇ SUBD_NIVEAU = int (default: 3),
                     ◇ SUBD_PAS_MINI = float (default: 0.0),
                 # If: equal_to (" SUBD_METHODE ", 'AUTO')
                     ◆ SUBD_INST = float,
                     ◆ SUBD_DUREE = float,
                 ◇ SUBD_METHODE =/"AUTO" (by default),
                                  /"MANUEL ",
             ◇ ACTION =/"ARRET ",
                        /"DECOUPE" (by default),
         # If: equal_to (" EVENEMENT ", 'INTERPENETRATION')
             # If: equal_to (" ACTION ", 'ADAPT_COEF_PENA')
                 ◇ COEF_MAXI = float (default: 1000000000000.0),
             ◆ PENE_MAXI = float,
             ◇ ACTION =/"ADAPT_COEF_PENA" (by default),
                        /"ARRET ",
         # If: equal_to (" EVENEMENT ", 'DIVE_RESI')
             # If: equal_to (" ACTION ", 'DECOUPE') or equal_to (" ACTION ", 'AUTRE_PILOTAGE')
                 # If: equal_to (" SUBD_METHODE ", 'AUTO')
                     ◇ SUBD_PAS_MINI = float (default: 0.0),
                 # If: equal_to (" SUBD_METHODE ", 'MANUEL')
                     ◇ SUBD_PAS = int (default: 4),
                     ◇ SUBD_NIVEAU = int (default: 3),
                     ◇ SUBD_PAS_MINI = float (default: 0.0),
                 ◇ SUBD_METHODE =/"AUTO ",
                                  /"MANUEL" (by default),
             ◇ ACTION = "DECOUPE ",
         # If: equal_to (" EVENEMENT ", 'RESI_MAXI')
             # If: equal_to (" ACTION ", 'DECOUPE') or equal_to (" ACTION ", 'AUTRE_PILOTAGE')
                 # If: equal_to (" SUBD_METHODE ", 'AUTO')
                     ◇ SUBD_PAS_MINI = float (default: 0.0),
                 # If: equal_to (" SUBD_METHODE ", 'MANUEL')
                     ◇ SUBD_PAS = int (default: 4),
                     ◇ SUBD_NIVEAU = int (default: 3),
                     ◇ SUBD_PAS_MINI = float (default: 0.0),
                 ◇ SUBD_METHODE =/"AUTO ",
                                  /"MANUEL" (by default),
             ◆ RESI_GLOB_MAXI = float,
             ◇ ACTION = "DECOUPE ",
         # If: equal_to (" EVENEMENT ", 'INSTABILITE')
             ◇ ACTION =/"ARRET ",
                        /"CONTINUE" (by default),
      ),
    # If: equal_to (" METHODE ", 'AUTO')
        ADAPTATION = _F (
             ◇ EVENEMENT =/"AUCUN ",
                           /"SEUIL" (by default),
                           /"TOUT_INST ",
             # If: equal_to (" EVENEMENT ", 'SEUIL')
                 ◇ NB_INCR_SEUIL = int (default: 2),
                 ◇ NOM_PARA = "NB_ITER_NEWTON ",
                 ◇ CRIT_COMP =/"GE",
                               /"GT",
                               /"THE" (by default),
                               /"LT",
                 # If: equal_to (" NOM_PARA ", 'NB_ITER_NEWTON')
                     ◇ VALE_I = int,
             ◇ MODE_CALCUL_TPLUS =/"DELTA_GRANDEUR ",
                                   /"FIXE" (by default),
                                   /"IMPLEX ",
                                   /"ITER_NEWTON ",
             # If: equal_to (" MODE_CALCUL_TPLUS ", 'FIXE')
                 ◇ PCENT_AUGM = float (default: 100.0),
             # If: equal_to (" MODE_CALCUL_TPLUS ", 'DELTA_GRANDEUR')
                 ◇/GROUP_MA = grma,
                   /GROUP_NO = big,
                 ◆ VALE_REF = float,
                 ◆ NOM_CHAM =/"DEPL ",
                              /"SIEF_ELGA ",
                              /"VARI_ELGA ",
                 ◆ NOM_CMP = text,
             # If: equal_to (" MODE_CALCUL_TPLUS ", 'ITER_NEWTON')
                 ◆ NB_ITER_NEWTON_REF = int,
          ),
    ◇ INFO =/1 (by default),
             /2,
)

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