Download muchamevol.dgibi

Back to the list

* fichier : muchamevol.dgibi
*---------------------------------------------------------------------*
*                 Cas-test de l'operateur '*' et '/'                  *
*                                                                     *
*    Ce cas-test verifie la multiplication (la division) de MCHAMLs   *
* de composante de type EVOLUTIOn :                                   *
*                                                                     *
*    1. Multiplication et division par un FLOTTANT.                   * 
*                                                                     *
*    2. Multiplication d'un MCHAML de type CARACTERISTIQUES, dont la  *
*    composante est de type EVOLUTIOn, par un MCHAML de type SCALAIRE,*
*    dont la composante est de type FLOTTANT.                         *
*                                                                     *
*    3. Multiplication d'un MCHAML de type CARACTERISTIQUES, dont la  *
*    composante est de type EVOLUTIOn, par un autre MCHAML de type    *
*    CARACTERISTIQUES, dont la composante est :                       *
*       - soit de type FLOTTANT ;                                     *
*       - soit de type EVOLUTIOn.                                     *
*                                                                     *
*    4. Multiplication d'un MCHAML de type CARACTERISTIQUES possedant *
*    trois composantes : deux de type FLOTTANT et une de type EVOLU-  *
*    -TIOn, par un autre MCHAML de type CARACTERISTIQUES mais dont les*
*    trois composantes sont de type EVOLUTIOn.                        *
*                                                                     *
*    5. Idem 4 mais, de plus, on precise les noms des composantes     *
*    intervenant dans chaque produit ainsi que celui de la composante *
*    resultat a l'aide de trois LISMOTS :                             *
*       - CHAM3 = CHMA1 * CHMA2 LISMOTS1 LISMOTS2 LISMOTS3 ;          *
*                                                                     *
*    6. Idem 5 mais, de plus, on pondere le resultat de chaque produit*
*    par un coefficient fournit par un LISTREEL :                     *
*       - CHAM3 = CHMA1 * CHMA2 LISMOTS1 LISMOTS2 LISMOTS3 LISTREEL ; *
*                                                                     *
*    7. Multiplication d'un MCHAML de type CARACTERISTIQUES, possedant*
*    une composante de type EVOLUTIOn sur une 1e sous-zone du maillage*
*    et une composante de type FLOTTANT sur une 2e sous-zone, par un  *
*    MCHAML de type SCALAIRE.                                         *
*                                                                     *
*    8. Multiplication d'un MCHAML de type CARACTERISTIQUES, possedant*
*    une composante de type EVOLUTIOn sur une 1e sous-zone et une     *
*    composante de type FLOTTANT sur une 2e sous-zone, par un MCHAML  *
*    dont la composante est de type EVOLUTIOn sur tout le             *
*                                                                     *
*    9. Multiplication d'un MCHAML de type CARACTERISTIQUES, possedant*
*    une composante de type EVOLUTIOn sur la sous-zone 1 et une compo-*
*    -sante de type FLOTTANT sur une sous-zone 2, par un MCHAML dont  *
*    la composante est de type FLOTTANT sur une sous-zone 1 et        *
*    EVOLUTIOn sur la sous-zone 2.                                    *
*                                                                     *
*---------------------------------------------------------------------*
*                                                                     *
* Pour avoir les messages, mettre IMES1 a VRAI :                      *
IMES1    = FAUX ;
*
'OPTI' 'ECHO' 1 ;
'OPTI' 'DIME' 2 'ELEM' QUA4 ;
*                                                                     *
*---------- Maillage : support geometrique pour les MCHAMLs ----------*
*                                                                     *
* Je realise un maillage comportant 2 sous-zones :                    *
P1       = 0. 0. ;
P2       = 2. 0. ;
P3       = 1. 1. ;
P4       = 0. 1. ;
D1       = P1 'DROI' 2 P2 ;
Q1       = D1 'TRAN' 2 P4 ;
T1       = 'MANU' 'TRI3' P3 (0.5 1.5) P4 ;
S1       = Q1 'ET' T1 ;
'ELIM' S1 1.E-3 ;
*                                                                     *
*----------------------- 1. "CHAMEVOL * SCAL1" -----------------------*
*                                                                     *
LX1      = 'PROG' 0. 1. 2. ;
LY1      = 'PROG' 2. 3. 5. ;
EVK1     = 'EVOL' 'MANU' 'T' LX1 'K' LY1 ;
MOD1     = 'MODE' S1 'THERMIQUE' ;
MAT1     = 'MATE' MOD1 'K' EVK1 ;
*                                                                     *
CHAM2    = MAT1 * 7. ;
*                                                                     *
* Verification :
ERR1     = 0. ;
'SI' ('NEG' ('TYPE' CHAM2) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' CHAM2 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' CHAM2 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVK2     = 'EXTR' CHAM2 'K' 1 1 1 ;
LX2      = 'EXTR' EVK2 'ABSC' ;
LY2      = 'EXTR' EVK2 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX2)) + ('MAXI' ((7. * LY1) - LY2)) ;
*                                                                     *
* Je commute le produit :
CHAM2    = 7. * MAT1 ;
*                                                                     *
* Nouvelle verification :
'SI' ('NEG' ('TYPE' CHAM2) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' CHAM2 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' CHAM2 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVK2     = 'EXTR' CHAM2 'K' 1 1 1 ;
LX2      = 'EXTR' EVK2 'ABSC' ;
LY2      = 'EXTR' EVK2 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX2)) + ('MAXI' ((7. * LY1) - LY2)) ;
*                                                                     *
* Je fais la division :                                               *
CHAM2    = MAT1 / 7. ;
*                                                                     *
* Nouvelle verification :
'SI' ('NEG' ('TYPE' CHAM2) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' CHAM2 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' CHAM2 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVK2     = 'EXTR' CHAM2 'K' 1 1 1 ;
LX2      = 'EXTR' EVK2 'ABSC' ;
LY2      = 'EXTR' EVK2 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX2)) + ('MAXI' ((LY1 / 7.) - LY2)) ;
*                                                                     *
* Message de sortie :                                                 *
IERR1    = 'NEG' ERR1 0. ;
VECH1    = 'VALE' 'ECHO' ;
'OPTI' 'ECHO' 0 ;
'SI' IMES1 ;
  'SI' IERR1 ;
    'SAUT' 1 'LIGN' ;
    'MESS'
'*** Erreur dans la multiplication/division d"un MCHAML d"EVOLUTIOn' ;
    'MESS'
'    par un FLOTTANT.' ;
  'FINS' ;
'FINS' ;
'OPTI' 'ECHO' VECH1 ;
*                                                                     *
* Gestion de l'erreur :                                               *
'SI' IERR1 ;
  'SAUT' 1 'LIGN' ;
  'ERRE' 5 ;
'FINS' ;
*                                                                     *
*---------------------- 2. "CHAMEVOL * CHAMSCAL" ---------------------*
*                                                                     *
* Definition des MCHAMLS necessaires au test :                        *
LX1      = 'PROG' 0. 1. 2. ;
LY1      = 'PROG' 2. 3. 5. ;
EVK1     = 'EVOL' 'MANU' 'T' LX1 'K' LY1 ;
MOD1     = 'MODE' S1 'THERMIQUE' ;
MAT1     = 'MATE' MOD1 'K' EVK1 ;
CHAM1    = 'MANU' 'CHML' MOD1 'SCAL' 7. 'RIGIDITE' ;
*                                                                     *
CHAM2    = MAT1 * CHAM1 ;
*                                                                     *
* Verification :                                                      *
'SI' ('NEG' ('TYPE' CHAM2) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' CHAM2 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' CHAM2 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVK2     = 'EXTR' CHAM2 'K' 1 1 1 ;
LX2      = 'EXTR' EVK2 'ABSC' ;
LY2      = 'EXTR' EVK2 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX2)) + ('MAXI' ((7. * LY1) - LY2)) ;
*                                                                     *
* Je commute le produit :                                             *
CHAM2    = CHAM1 * MAT1 ;
*                                                                     *
* Nouvelle verification :                                             *
'SI' ('NEG' ('TYPE' CHAM2) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' CHAM2 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' CHAM2 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVK2     = 'EXTR' CHAM2 'K' 1 1 1 ;
LX2      = 'EXTR' EVK2 'ABSC' ;
LY2      = 'EXTR' EVK2 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX2)) + ('MAXI' ((7. * LY1) - LY2)) ;
*                                                                     *
* Message de sortie :                                                 *
IERR1    = 'NEG' ERR1 0. ;
VECH1    = 'VALE' 'ECHO' ;
'OPTI' 'ECHO' 0 ;
'SI' IMES1 ;
  'SI' IERR1 ;
    'SAUT' 1 'LIGN' ;
    'MESS'
'*** Erreur dans la multiplication d"un MCHAML d"EVOLUTIOn par' ;
    'MESS'
'    un MCHAML de FLOTTANT.' ;
  'FINS' ;
'FINS' ;
'OPTI' 'ECHO' VECH1 ;
*                                                                     *
* Gestion de l'erreur :                                               *
'SI' IERR1 ;
  'SAUT' 1 'LIGN' ;
  'ERRE' 5 ;
'FINS' ;
*                                                                     *
*--------------------- 3. "CHAMFLOT1 * CHAMEVOL1" --------------------*
*                                                                     *
* Definition des MCHAMLS necessaires au test :                        *
LX1      = 'PROG' 0. 1. 2. ;
LY1      = 'PROG' 2. 3. 5. ;
LY2      = 'PROG' 4. 2. 7. ;
EVK1     = 'EVOL' 'MANU' 'T' LX1 'K' LY1 ;
EVK2     = 'EVOL' 'MANU' 'T' LX1 'K' LY2 ;
MOD1     = 'MODE' S1 'THERMIQUE' ;
MAT1     = 'MATE' MOD1 'K' EVK1 ;
MAT2     = 'MATE' MOD1 'K' 7. ;
*                                                                     *
MAT3     = MAT2 * MAT1 ;
*                                                                     *
* Verification :                                                      *
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVK3     = 'EXTR' MAT3 'K' 1 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LY3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((LY1 * 7.) - LY3)) ;
*                                                                     *
* Je commute le produit :                                             *
MAT3     = MAT1 * MAT2 ;
*                                                                     *
* Nouvelle verification :                                             *
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVK3     = 'EXTR' MAT3 'K' 1 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LY3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((LY1 * 7.) - LY3)) ;
*                                                                     *
MAT3     = MAT1 * MAT1 ;
*                                                                     *
* Verification :                                                      *
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVK3     = 'EXTR' MAT3 'K' 1 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LY3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((LY1 * LY1) - LY3)) ;
*                                                                     *
* Je me donne un 2e "CHAMEVOL" :                                      *
MAT2     = 'MATE' MOD1 'K' EVK2 ;
*                                                                     *
MAT3     = MAT1 * MAT2 ;
*                                                                     *
* Nouvelle verification :                                             *
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVK3     = 'EXTR' MAT3 'K' 1 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LY3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((LY1 * LY2) - LY3)) ;
*                                                                     *
* Message de sortie :                                                 *
IERR1    = 'NEG' ERR1 0. ;
VECH1    = 'VALE' 'ECHO' ;
'OPTI' 'ECHO' 0 ;
'SI' IMES1 ;
  'SI' IERR1 ;
    'SAUT' 1 'LIGN' ;
    'MESS'
'*** Erreur dans la multiplication d"un MCHAML d"EVOLUTIOn de type' ;
    'MESS'
'    CARACTERISTIQUES par un autre MCHAML de type CARACTERISTIQUES' ;
    'MESS'
'    et de composante FLOTTANT ou EVOLUTIOn.' ;
  'FINS' ;
'FINS' ;
'OPTI' 'ECHO' VECH1 ;
*                                                                     *
* Gestion de l'erreur :                                               *
'SI' IERR1 ;
  'SAUT' 1 'LIGN' ;
  'ERRE' 5 ;
'FINS' ;
*                                                                     *
*--------------------- 4. "CHAMMIXT1 * CHAMEVOL1" --------------------*
*                                                                     *
* Definition des MCHAMLS necessaires au test :                        *
LX1      = 'PROG' 0. 1. 2. ;
LR2      = 'PROG' 1. 3. 3. ;
LC2      = 'PROG' 1. 2. 1. ;
LK1      = 'PROG' 2. 3. 5. ;
LK2      = 'PROG' 7. 7. 7. ;
EVR2     = 'EVOL' 'MANU' 'T' LX1 'RHO' LR2 ;
EVC2     = 'EVOL' 'MANU' 'T' LX1 'C' LC2 ;
EVK1     = 'EVOL' 'MANU' 'T' LX1 'K' LK1 ;
EVK2     = 'EVOL' 'MANU' 'T' LX1 'K' LK2 ;
MOD1     = 'MODE' S1 'THERMIQUE' ;
MAT1     = 'MATE' MOD1 'RHO' 2.0 'C' 0.5 'K' EVK1 ;
MAT2     = 'MATE' MOD1 'RHO' EVR2 'C' EVC2 'K' EVK2 ;
*                                                                     *
MAT3     = MAT1 * MAT2 ;
*                                                                     *
* Verification :
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 3) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'RHO') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 2) 'C') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 3) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVR3     = 'EXTR' MAT3 'RHO' 1 1 1 ;
LX3      = 'EXTR' EVR3 'ABSC' ;
LR3      = 'EXTR' EVR3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((2. * LR2) - LR3)) ;
EVC3     = 'EXTR' MAT3 'C' 1 1 1 ;
LX3      = 'EXTR' EVC3 'ABSC' ;
LC3      = 'EXTR' EVC3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((0.5 * LC2) - LC3)) ;
EVK3     = 'EXTR' MAT3 'K' 1 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LK3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((LK1 * LK2) - LK3)) ;
*                                                                     *
* Je commute le produit :                                             *
MAT3     = MAT2 * MAT1 ;
*                                                                     *
* Nouvelle verification :                                             *
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 3) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'RHO') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 2) 'C') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 3) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVR3     = 'EXTR' MAT3 'RHO' 1 1 1 ;
LX3      = 'EXTR' EVR3 'ABSC' ;
LR3      = 'EXTR' EVR3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((2. * LR2) - LR3)) ;
EVC3     = 'EXTR' MAT3 'C' 1 1 1 ;
LX3      = 'EXTR' EVC3 'ABSC' ;
LC3      = 'EXTR' EVC3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((0.5 * LC2) - LC3)) ;
EVK3     = 'EXTR' MAT3 'K' 1 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LK3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((LK1 * LK2) - LK3)) ;
*                                                                     *
* Message de sortie :                                                 *
IERR1    = 'NEG' ERR1 0. ;
VECH1    = 'VALE' 'ECHO' ;
'OPTI' 'ECHO' 0 ;
'SI' IMES1 ;
  'SI' IERR1 ;
    'SAUT' 1 'LIGN' ;
    'MESS'
'*** Erreur dans la multiplication d"un MCHAML de CARACTERISTIQUES' ;
    'MESS'
'    ayant deux composantes FLOTTANT et une composante EVOLUTIOn' ;
    'MESS'
'    par un autre MCHAML de CARACTERISTIQUES dont les composantes' ;
    'MESS'
'    sont des objets EVOLUTIOn.' ;
  'FINS' ;
'FINS' ;
'OPTI' 'ECHO' VECH1 ;
*                                                                     *
* Gestion de l'erreur :                                               *
'SI' IERR1 ;
  'SAUT' 1 'LIGN' ;
  'ERRE' 5 ;
'FINS' ;
*                                                                     *
*--------------------- 5. "CHAMMIXT1 * CHAMEVOL1" --------------------*
*                                                                     *
* Definition des MCHAMLS necessaires au test :                        *
LX1      = 'PROG' 0. 1. 2. ;
LR2      = 'PROG' 1. 3. 3. ;
LC2      = 'PROG' 1. 2. 1. ;
LK1      = 'PROG' 2. 3. 5. ;
LK2      = 'PROG' 7. 7. 7. ;
EVR2     = 'EVOL' 'MANU' 'T' LX1 'RHO2' LR2 ;
EVC2     = 'EVOL' 'MANU' 'T' LX1 'C2' LC2 ;
EVK1     = 'EVOL' 'MANU' 'T' LX1 'K1' LK1 ;
EVK2     = 'EVOL' 'MANU' 'T' LX1 'K2' LK2 ;
MOD1     = 'MODE' S1 'THERMIQUE' ;
MAT1     = 'MANU' 'CHML' MOD1 'RHO1' 2.0 'C1' 0.5 'K1' EVK1 ;
MAT2     = 'MANU' 'CHML' MOD1 'RHO2' EVR2 'C2' EVC2 'K2' EVK2 ;
LM1      = 'MOTS' 'RHO1' 'C1' 'K1' ;
LM2      = 'MOTS' 'K2' 'RHO2' 'C2' ;
LM3      = 'MOTS' 'C3' 'K3' 'RHO3' ;
*                                                                     *
MAT3     = MAT1 * MAT2 LM1 LM2 LM3 ;
*                                                                     *
* Verification :
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 3) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'C3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 2) 'K3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 3) 'RHO3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVR3     = 'EXTR' MAT3 'RHO3' 1 1 1 ;
LX3      = 'EXTR' EVR3 'ABSC' ;
LR3      = 'EXTR' EVR3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((LK1 * LC2) - LR3)) ;
EVC3     = 'EXTR' MAT3 'C3' 1 1 1 ;
LX3      = 'EXTR' EVC3 'ABSC' ;
LC3      = 'EXTR' EVC3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((2. * LK2) - LC3)) ;
EVK3     = 'EXTR' MAT3 'K3' 1 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LK3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((0.5 * LR2) - LK3)) ;
*                                                                     *
* Je commute le produit :                                             *
MAT3     = MAT2 * MAT1 LM2 LM1 LM3 ;
*                                                                     *
* Nouvelle verification :                                             *
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 3) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'C3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 2) 'K3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 3) 'RHO3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVR3     = 'EXTR' MAT3 'RHO3' 1 1 1 ;
LX3      = 'EXTR' EVR3 'ABSC' ;
LR3      = 'EXTR' EVR3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((LK1 * LC2) - LR3)) ;
EVC3     = 'EXTR' MAT3 'C3' 1 1 1 ;
LX3      = 'EXTR' EVC3 'ABSC' ;
LC3      = 'EXTR' EVC3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((2. * LK2) - LC3)) ;
EVK3     = 'EXTR' MAT3 'K3' 1 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LK3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((0.5 * LR2) - LK3)) ;
*                                                                     *
* Message de sortie :                                                 *
IERR1    = 'NEG' ERR1 0. ;
VECH1    = 'VALE' 'ECHO' ;
'OPTI' 'ECHO' 0 ;
'SI' IMES1 ;
  'SI' IERR1 ;
    'SAUT' 1 'LIGN' ;
    'MESS'
'*** Erreur dans le produit de 2 MCHAML dont certaines composantes' ;
    'MESS'
'    sont de type EVOLUTIOn en fournissant trois LISTMOTS pour' ;
    'MESS'
'    preciser les noms des composantes intervenant dans chaque' ;
    'MESS'
'    produit et celui des composantes resultats.' ;
  'FINS' ;
'FINS' ;
'OPTI' 'ECHO' VECH1 ;
*                                                                     *
* Gestion de l'erreur :                                               *
'SI' IERR1 ;
  'SAUT' 1 'LIGN' ;
  'ERRE' 5 ;
'FINS' ;
*                                                                     *
*--------------------- 6. "CHAMMIXT1 * CHAMEVOL1" --------------------*
*                                                                     *
* Definition des MCHAMLS necessaires au test :                        *
LX1      = 'PROG' 0. 1. 2. ;
LR2      = 'PROG' 1. 3. 3. ;
LC2      = 'PROG' 1. 2. 1. ;
LK1      = 'PROG' 2. 3. 5. ;
LK2      = 'PROG' 7. 7. 7. ;
EVR2     = 'EVOL' 'MANU' 'T' LX1 'RHO2' LR2 ;
EVC2     = 'EVOL' 'MANU' 'T' LX1 'C2' LC2 ;
EVK1     = 'EVOL' 'MANU' 'T' LX1 'K1' LK1 ;
EVK2     = 'EVOL' 'MANU' 'T' LX1 'K2' LK2 ;
MOD1     = 'MODE' S1 'THERMIQUE' ;
MAT1     = 'MANU' 'CHML' MOD1 'RHO1' 2.0 'C1' 0.5 'K1' EVK1 ;
MAT2     = 'MANU' 'CHML' MOD1 'RHO2' EVR2 'C2' EVC2 'K2' EVK2 ;
LM1      = 'MOTS' 'RHO1' 'C1' 'K1' ;
LM2      = 'MOTS' 'K2' 'RHO2' 'C2' ;
LM3      = 'MOTS' 'C3' 'K3' 'RHO3' ;
LR1      = 'PROG' 1. 0.5 2. ;
*                                                                     *
MAT3     = MAT1 * MAT2 LM1 LM2 LM3 LR1 ;
*                                                                     *
* Verification :
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 3) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'C3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 2) 'K3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 3) 'RHO3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVR3     = 'EXTR' MAT3 'RHO3' 1 1 1 ;
LX3      = 'EXTR' EVR3 'ABSC' ;
LR3      = 'EXTR' EVR3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3))
  + ('MAXI' ((2. * LK1 * LC2) - LR3)) ;
EVC3     = 'EXTR' MAT3 'C3' 1 1 1 ;
LX3      = 'EXTR' EVC3 'ABSC' ;
LC3      = 'EXTR' EVC3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((2. * LK2) - LC3)) ;
EVK3     = 'EXTR' MAT3 'K3' 1 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LK3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3))
  + ('MAXI' ((0.5 * 0.5 * LR2) - LK3)) ;
*                                                                     *
* Je commute le produit :                                             *
MAT3     = MAT2 * MAT1 LM2 LM1 LM3 LR1 ;
*                                                                     *
* Nouvelle verification :                                             *
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 3) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'C3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 2) 'K3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 3) 'RHO3') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVR3     = 'EXTR' MAT3 'RHO3' 1 1 1 ;
LX3      = 'EXTR' EVR3 'ABSC' ;
LR3      = 'EXTR' EVR3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3))
  + ('MAXI' ((2. * LK1 * LC2) - LR3)) ;
EVC3     = 'EXTR' MAT3 'C3' 1 1 1 ;
LX3      = 'EXTR' EVC3 'ABSC' ;
LC3      = 'EXTR' EVC3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((2. * LK2) - LC3)) ;
EVK3     = 'EXTR' MAT3 'K3' 1 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LK3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3))
  + ('MAXI' ((0.5 * 0.5 * LR2) - LK3)) ;
*                                                                     *
* Message de sortie :                                                 *
IERR1    = 'NEG' ERR1 0. ;
VECH1    = 'VALE' 'ECHO' ;
'OPTI' 'ECHO' 0 ;
'SI' IMES1 ;
  'SI' IERR1 ;
    'SAUT' 1 'LIGN' ;
    'MESS'
'*** Erreur dans le produit de 2 MCHAML dont certaines composantes' ;
    'MESS'
'    sont de type EVOLUTIOn en fournissant trois LISTMOTS pour' ;
    'MESS'
'    preciser les noms des composantes intervenant dans chaque' ;
    'MESS'
'    produit et celui des composantes resultats et en fournissant' ;
    'MESS'
'    egalement un LISTREEL dont les valeurs ponderent les resultats.' ;
  'FINS' ;
'FINS' ;
'OPTI' 'ECHO' VECH1 ;
*                                                                     *
* Gestion de l'erreur :                                               *
'SI' IERR1 ;
  'SAUT' 1 'LIGN' ;
  'ERRE' 5 ;
'FINS' ;
*                                                                     *
*--------------------- 7. "CHAMMIXT1 * CHAMFLOT1" --------------------*
*                                                                     *
* Definition des MCHAMLS necessaires au test :                        *
LX1      = 'PROG' 0. 1. 2. ;
LY1      = 'PROG' 2. 3. 5. ;
EVK1     = 'EVOL' 'MANU' 'T' LX1 'K' LY1 ;
MOD1     = 'MODE' T1 'THERMIQUE' ;
MOD2     = 'MODE' Q1 'THERMIQUE' ;
MOD0     = MOD1 'ET' MOD2 ;
MAT1     = 'MATE' MOD1 'K' EVK1 ;
MAT2     = 'MATE' MOD2 'K' 13. ;
MAT0     = MAT1 'ET' MAT2 ;
CHAM1    = 'MANU' 'CHML' MOD0 'SCAL' 7. 'RIGIDITE' ;
*                                                                     *
CHAM2    = MAT0 * CHAM1 ;
*                                                                     *
* Verification :
*                                                                     *
'SI' ('NEG' ('TYPE' CHAM2) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' CHAM2 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' CHAM2 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
CHAM2_1  = 'REDU' CHAM2 MOD1 ;
CHAM2_2  = 'REDU' CHAM2 MOD2 ;
EVK2     = 'EXTR' CHAM2_1 'K' 1 1 1 ;
LX2      = 'EXTR' EVK2 'ABSC' ;
LY2      = 'EXTR' EVK2 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX2)) + ('MAXI' ((7. * LY1) - LY2)) ;
KS2      = 'EXTR' CHAM2_2 'K' 1 1 1 ;
ERR1     = ERR1 + (KS2 - (7. * 13.)) ;
*                                                                     *
* Message de sortie :                                                 *
IERR1    = 'NEG' ERR1 0. ;
VECH1    = 'VALE' 'ECHO' ;
'OPTI' 'ECHO' 0 ;
'SI' IMES1 ;
  'SI' IERR1 ;
    'SAUT' 1 'LIGN' ;
    'MESS'
'*** Erreur dans la multiplication d"un MCHAML de CARACTERISTIQUES' ;
    'MESS'
'    ayant deux sous-zone : la 1e de type FLOTTANT, la 2nd de type' ;
    'MESS'
'    EVOLUTIOn, par un CHAML de type SCALAIRE.' ;
  'FINS' ;
'FINS' ;
'OPTI' 'ECHO' VECH1 ;
*                                                                     *
* Gestion de l'erreur :                                               *
'SI' IERR1 ;
  'SAUT' 1 'LIGN' ;
  'ERRE' 5 ;
'FINS' ;
*                                                                     *
*--------------------- 8. "CHAMMIXT2 * CHAMEVOL1" --------------------*
*                                                                     *
* Definition des MCHAMLS necessaires au test :                        *
LX1      = 'PROG' 0. 1. 2. ;
LY1      = 'PROG' 2. 3. 5. ;
EVK1     = 'EVOL' 'MANU' 'T' LX1 'K' LY1 ;
EV1      = 'EVOL' 'MANU' 'T' LX1 ('PROG' 1. 1. 1.) ;
MOD1     = 'MODE' T1 'THERMIQUE' ;
MOD2     = 'MODE' Q1 'THERMIQUE' ;
MOD0     = MOD1 'ET' MOD2 ;
MAT1_1   = 'MATE' MOD1 'K' EVK1 ;
MAT2_1   = 'MATE' MOD2 'K' (13. * EV1) ;
MAT1_2   = 'MATE' MOD1 'K' 7. ;
MAT2_2   = 'MATE' MOD2 'K' (2. * EVK1) ;
MAT0_1   = MAT1_1 'ET' MAT2_1 ;
MAT0_2   = MAT1_2 'ET' MAT2_2 ;
*                                                                     *
MAT3     = MAT0_1 * MAT0_2 ;
*                                                                     *
* Verification :                                                      *
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVK2     = 'EXTR' MAT3 'K' 1 1 1 ;
LX2      = 'EXTR' EVK2 'ABSC' ;
LY2      = 'EXTR' EVK2 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX2)) + ('MAXI' ((7. * LY1) - LY2)) ;
EVK3     = 'EXTR' MAT3 'K' 2 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LY3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((26. * LY1) - LY3)) ;
*                                                                     *
* Message de sortie :                                                 *
IERR1    = 'NEG' ERR1 0. ;
VECH1    = 'VALE' 'ECHO' ;
'OPTI' 'ECHO' 0 ;
'SI' IMES1 ;
  'SI' IERR1 ;
    'SAUT' 1 'LIGN' ;
    'MESS'
'*** Erreur dans la multiplication d"un MCHAML de CARACTERISTIQUES' ;
    'MESS'
'    ayant deux sous-zone : la 1e de type FLOTTANT, la 2nd de type' ;
    'MESS'
'    EVOLUTIOn, par un autre MCHAML de type CARACTERISTIQUES dont' ;
    'MESS'
'    toutes les sous-zones sont de type EVOLUTIOn.' ;
  'FINS' ;
'FINS' ;
'OPTI' 'ECHO' VECH1 ;
*                                                                     *
* Gestion de l'erreur :                                               *
'SI' IERR1 ;
  'SAUT' 1 'LIGN' ;
  'ERRE' 5 ;
'FINS' ;
*                                                                     *
*--------------------- 9. "CHAMMIXT1 * CHAMMIXT2" --------------------*
*                                                                     *
* Definition des MCHAMLS necessaires au test :                        *
LX1      = 'PROG' 0. 1. 2. ;
LY1      = 'PROG' 2. 3. 5. ;
EVK1     = 'EVOL' 'MANU' 'T' LX1 'K' LY1 ;
EV1      = 'EVOL' 'MANU' 'T' LX1 ('PROG' 1. 1. 1.) ;
MOD1     = 'MODE' T1 'THERMIQUE' ;
MOD2     = 'MODE' Q1 'THERMIQUE' ;
MOD0     = MOD1 'ET' MOD2 ;
MAT1_1   = 'MATE' MOD1 'K' EVK1 ;
MAT2_1   = 'MATE' MOD2 'K' 13. ;
MAT1_2   = 'MATE' MOD1 'K' 7. ;
MAT2_2   = 'MATE' MOD2 'K' (2. * EVK1) ;
MAT0_1   = MAT1_1 'ET' MAT2_1 ;
MAT0_2   = MAT1_2 'ET' MAT2_2 ;
*                                                                     *
MAT3     = MAT0_1 * MAT0_2 ;
*                                                                     *
* Verification :                                                      *
'SI' ('NEG' ('TYPE' MAT3) 'MCHAML') ;
  ERR1     = 1. ;
'FINS' ;
'SI' ('NEG' ('DIME' ('EXTR' MAT3 'COMP')) 1) ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
'SI' ('NEG' ('EXTR' ('EXTR' MAT3 'COMP') 1) 'K') ;
  ERR1     = ERR1 + 1. ;
'FINS' ;
EVK2     = 'EXTR' MAT3 'K' 1 1 1 ;
LX2      = 'EXTR' EVK2 'ABSC' ;
LY2      = 'EXTR' EVK2 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX2)) + ('MAXI' ((7. * LY1) - LY2)) ;
EVK3     = 'EXTR' MAT3 'K' 2 1 1 ;
LX3      = 'EXTR' EVK3 'ABSC' ;
LY3      = 'EXTR' EVK3 'ORDO' ;
ERR1     = ERR1 + ('MAXI' (LX1 - LX3)) + ('MAXI' ((26. * LY1) - LY3)) ;
*                                                                     *
* Message de sortie :                                                 *
IERR1    = 'NEG' ERR1 0. ;
VECH1    = 'VALE' 'ECHO' ;
'OPTI' 'ECHO' 0 ;
'SI' IMES1 ;
  'SI' IERR1 ;
    'SAUT' 1 'LIGN' ;
    'MESS'
'*** Erreur dans la multiplication d"un MCHAML de CARACTERISTIQUES' ;
    'MESS'
'    ayant deux sous-zone : la 1e de type FLOTTANT, la 2nd de type' ;
    'MESS'
'    EVOLUTIOn, par un autre MCHAML de type CARACTERISTIQUES ayant' ;
    'MESS'
'    egalement deux sous-zone mais dont la 1e est de type EVOLUTIOn' ;
    'MESS'
'    et la 2e de type FLOTTANT.' ;
  'FINS' ;
'FINS' ;
'OPTI' 'ECHO' VECH1 ;
*                                                                     *
* Gestion de l'erreur :                                               *
'SI' IERR1 ;
  'SAUT' 1 'LIGN' ;
  'ERRE' 5 ;
'FINS' ;
*                                                                     *
*---------------------------------------------------------------------*
*                                                                     *
* Message de sortie si test reussi :                                  *
VECH1    = 'VALE' 'ECHO' ;
'OPTI' 'ECHO' 0 ;
'SI' IMES1 ;
  'SAUT' 1 'LIGN' ;
  'MESS'
'***                         TEST REUSSI                           ***'
  ;
'FINS' ;
'OPTI' 'ECHO' VECH1 ;
*                                                                     *
'FIN' ;
'OPTI' 'ECHO' 1 ;
 

© Cast3M 2003 - All rights reserved.
Disclaimer