Operator *
                                             DATE     99/22/01

   Opérateur *                                 See also :+ 
   -----------                                           - 
                                                         ** 
   RESU1 = ( MODL1) OBJET1 * OBJET2 ;                    / 

   Description :
   _____________

  The * operator calculates the product of the objects OBJET1 and
 OBJET2.
 

   Possible operations :
   ______________________

---------------------------------------------------------------------
|     OBJET1        |      OBJET2           |       RESU1           |
---------------------------------------------------------------------
|     ENTIER        |      ENTIER           |      ENTIER           |
|    FLOTTANT       |      ENTIER           |     FLOTTANT          |
|    FLOTTANT       |     FLOTTANT          |     FLOTTANT          |
|     POINT         |     FLOTTANT          |      POINT            |
|    LISTREEL       |      ENTIER           |     LISTREEL          |
|    LISTREEL       |     FLOTTANT          |     LISTREEL          |
|    LISTREEL       |     LISTREEL          |     LISTREEL          |
|    LISTENTI       |     LISTENTI          |     LISTENTI          |
|    MCHAML         |      ENTIER           |     MCHAML            |
|    MCHAML         |     FLOTTANT          |     MCHAML            |
|    CHPOINT        |      ENTIER           |     CHPOINT           |
|    CHPOINT        |     FLOTTANT          |     CHPOINT           |
|    RIGIDITE       |     CHPOINT           |     CHPOINT           |
|    RIGIDITE       |      ENTIER           |     RIGIDITE          |
|    RIGIDITE       |     FLOTTANT          |     RIGIDITE          |
| CHPOINT (LISTMOT1)|  CHPOINT  (LISTMOT2)  |  CHPOINT  (LISTMOT3)  |   
| (MODL1) MCHAML    |     MCHAML            |     MCHAML            |
| MCHAML (LISTMOT1) |MCHAML (LISTMOT2)(LREE1)|   MCHAML (LISTMOT3)  |
|    EVOLUTION      |      ENTIER           |     EVOLUTION         |
|    EVOLUTION      |     FLOTTANT          |     EVOLUTION         |
|    EVOLUTION      |     EVOLUTION         |     EVOLUTION         |
|    CHPOINT        |     EVOLUTION         |     CHPOINT           |
|    MCHAML         |     EVOLUTION         |     MCHAML            |
|  TABLE 'VECTEUR'  |        ENTIER         |   TABLE 'VECTEUR'     |
|  TABLE 'VECTEUR'  |       FLOTTANT        |   TABLE 'VECTEUR'     |
---------------------------------------------------------------------


    Remark 1 :
    __________

    When the * operator calculates the product of two CHPOINT, the
 following multiplication rule is used : any point with a single
 component named "SCAL" in one of the CHPOINT will have all the
 values of the components of the other CHPOINT multiplied by the
 scalar value. The CHPOINT RESU1 only applies to such points.

 An alternate way is to provide 3 LISTMOT type objects. The rule for 
combining the components is given by the 3 LISTMOT type objects whose
lengths are identical:
The I.th component name of the resulting CHPOINT is the I.th
word of the third LISTMOT and equal the product of the component of
the 1st CHPOINT whose name is the I.th word of the 1st LISTMOT by
the component of the second CHPOINT whose name is the I.th word of the 
2nd LISTMOT. 
For instance:
      chp3          chp1           chp2  
   component      component      component
    résult        argument 1      argument 2
      'FX'          'KX'           'UX'
      'FY'          'KYX'          'UX'

      lmot1 = 'MOTS' 'KX'  'KYX' ;
      lmot2 = 'MOTS' 'UX'  'UX' ;
      lmot3 = 'MOTS' 'FX'  'FY' ;
      chp3  =  chp1  '*'  chp2   lmot1 lmot2 lmot3 ; 
It is possible to specify the NATURE of the result. To this extent
use the key words
                  'NATU'  |'INDETERMINE' | 
                          |  'DIFFUS'    |
                          |  'DISCRET'   | 

    Remark 2 :
    __________

    The * operator calculates the product of a TABLE type object
 of 'VECTEUR' subtype and a number (FLOTTANT or ENTIER) VAL1.
 The result is of TABLE type and 'VECTEUR' subtype.

    Remark 3 :
    __________

    When the * operator calculates the product of two EVOLUTION
 type objects, both the given objects must be of same type, i.e. 
 they must be real or complex :

    a) Real EVOLUTION objects :

    The product of the two curves with an index common to both
 objects is performed term by term; the progressions of the
 abscissae of these curves must be identical; they become the
 abscissae of the curves of the EVOLUTION object newly created
 by the operator.
   
    b) Complex EVOLUTION objects :

    The abscissae must be identical; they become the abscissae of
 the EVOLUTION object newly created by the operator.
 Each of the two objects can be either "PREE PIMA", or "MODU PHAS".

 The EVOL3 object is of same type as EVOL1. A color COUL1 may be
 allocated to it.

                    EVOL3 = EVOL1 * EVOL2  ( COUL1 ) ;

    Remark 4 :
    __________

    When the * operator calculates the product of two objects, the 
 one of MCHAML (or CHPOINT ) type, and the other of EVOLUTION type, 
 it transforms all the values of the OBJET1 MCHAML (or CHPOINT) by 
 means of the function represented by the OBJET2 EVOLUTION object.

    Remark 5 :
    __________

    When the * operator calculates the product of two MCHAML type
 objects, the latter must have the same elementary subspaces.
  There are five types of multiplications :

    - Any MCHAML multiplied by a scalar MCHAML with identical
      subspaces

    - One MCHAML by another MCHAML if moreover, the name 
      of their components and their subspaces are identical.
      The multiplication is performed component by component.
      The components type may be FLOTTANT or LISTREEL. 

   -  One MCHAML by another MCHAML if their subspaces are identical.
      The user must specify three LISTMOTS of equal length, and the
      rule is the same than in the case of CHPOINT objects (see below).
      It is moreover possible to specify a LISTREEL object of the
      same length than the LISTMOTS : its coefficients multiply
      the components of the final MCHAML.
      The components type may be FLOTTANT or LISTREEL. 

    - A MCHAML of Hooke's matrices by a MCHAML of stresses or strains
      For this case, also provide the MODL1 model object (MMODEL type)

    - A MCHAML of gradiant by another MCHAML of gradiant or a flexural
      MCHAML of gradiant. For this case, also provide the MODL1
      model object (MMODEL type)