Download mat_carrees_exce.dgibi

Back to the list

* fichier :  mat_carrees_exce.dgibi
***********************************************************************
***********************************************************************
**                                                                   **
**                                                                   **
**                 TONUS   -   multicompartiments                    **
**                                                                   **
**                                                                   **
**                 Version 0.0   -   décembre 95                     **
**                                                                   **
**                                                                   **
**                                                                   **
***********************************************************************
**                                                                   **
**               MATRICES ELEMENTAIRES CARREES                       **
**            (avec pénalisation de la diagonale)                    **
**                                                                   **
***********************************************************************
*                                                                     *
*                                                                     *
*                          CAS-TEST 1                                 *
*                         ------------                                *
*                                                                     *
*                 3 compartiments - 2 jonctions                       *
*                                                                     *
*                                                                     *
*                                                                     *
*                                 3                                   *
*                                     O                               *
*                                   /                                 *
*                                 X  (2,3)                            *
*                       2       /                                     *
*                             O                                       *
*                           /                                         *
*                         X  (1,2)                                    *
*                       /                                             *
*                1    0                                               *
*                                                                     *
*                                                                     *
*                                                                     *
*                     Conditions aux limites :                        *
*                                                                     *
*              Injection d'un gaz léger dans le compartiment 1.       *
*              Sortie libre dans le compartiment 3.                   *
*              Pression atmosphérique dans le compartiment 3.         *
*                                                                     *
*    traitement de la condition à la limite en pression par           *
*    pénalisation                                                     *
*                                                                     *
***********************************************************************
*
OPTI DIME 2 ELEM SEG2 ;
*
***********************************************************************
*               Description géométrique
***********************************************************************
*
*  Les points centres de gravité des compartiments
*
P1 =  0.  0. ;
P2 =  1.  1. ;
P3 =  2.  2. ;
*
*  Les jonctions entre les compartiments
*
L12 = P1 D 1 P2 ;
L23 = P2 D 1 P3 ;
*
THEGEO = L12 ET L23 ;
*
TABDOM = DOMA THEGEO ;
*
***********************************************************************
*
*  coefficient de pénalisation de la diagonale :
*
PENDIA1  = 1.E-13 ;
*
*  coefficient de pénalisation pour le traitement de la C.L.
*
XBOUND = 1./PENDIA1 ;
*
***********************************************************************
*
SUPTOT = MANU 'SUPE' ((TABDOM.SOMMET) ET (TABDOM.CENTRE)) ;
*
***********************************************************************
*
*  Construction de la matrice globale par assemblage de 4 matrices
*  élémentaires :
*
***********************************************************************
*
MATRI1 = MANU 'RIGIDITE' 'TYPE' 'RIGIDITE' SUPTOT 
         (MOTS 'Q') 'DUAL' (MOTS 'P') 'QUEL' 
         (PROG 0. 0. 0. -1.  0.) 
         (PROG 0. 0. 0.  1. -1.) 
         (PROG 0. 0. 0.  0.  1.) 
         (PROG 0. 0. 0.  0.  0.) 
         (PROG 0. 0. 0.  0.  0.) ; 
*
MATRI2 = MANU 'RIGIDITE' 'TYPE' 'RIGIDITE' SUPTOT 
         (MOTS 'P') 'DUAL' (MOTS 'Q') 'QUEL' 
         (PROG  0.  0.  0.  0.  0.) 
         (PROG  0.  0.  0.  0.  0.) 
         (PROG  0.  0.  0.  0.  0.) 
         (PROG -1.  1.  0.  0.  0.) 
         (PROG  0. -1.  1.  0.  0.) ; 
*
*  Pénalisation de la diagonale de la matrice globale
*
MATRI3 = MANU 'RIGIDITE' 'TYPE' 'RIGIDITE' SUPTOT 
         (MOTS 'P') 'DUAL' (MOTS 'P')  
         (PROG PENDIA1 0.    0.     0.    0.) 
         (PROG 0.   PENDIA1  0.     0.    0.) 
         (PROG 0.      0.  (XBOUND) 0.    0.) 
         (PROG 0.      0.    0.  PENDIA1  0.) 
         (PROG 0.      0.    0.     0.   PENDIA1) ; 
*
MATRI4 = MANU 'RIGIDITE' 'TYPE' 'RIGIDITE' SUPTOT 
         (MOTS 'Q') 'DUAL' (MOTS 'Q')  
         (PROG PENDIA1   0.     0.     0.  0.) 
         (PROG  0.  PENDIA1     0.     0.  0.) 
         (PROG  0.       0.   PENDIA1  0.  0.) 
         (PROG  0.       0.     0.     1.  0.) 
         (PROG  0.       0.     0.     0.  1.) ; 
*
MATRIX = MATRI4 ET MATRI2 ET MATRI1 ET MATRI3 ;
*
*
RHS1 = MANU 'CHPO' ((TABDOM . 'SOMMET') ET (TABDOM.CENTRE))  
        2 'P' (PROG -1.2 0. 0. 0. 0.)
          'Q' (PROG  0.  0. 0. 0. 0.) 
       'NATURE' 'DISCRET' ;
*
list matrix ;
list rhs1 ;
*
leres1 = RESO MATRIX RHS1 ;
*
list leres1 ;
*
***********************************************************************
*
*       Construction de la matrice globale directement :
*
***********************************************************************
*
LISTOT1 = PROG PENDIA1  0.  0.  0.   0.  0.  0. -1.  0.  0. 
               0.  PENDIA1  0.  0.   0.  0.  0.  0.  0.  0. 
               0.  0.   PENDIA1  0.  0.  0.  0.  1.  0. -1. 
               0.  0.   0.  PENDIA1  0.  0.  0.  0.  0.  0. 
               0.  0.  0.  0. (XBOUND) 0. 0. 0.  0.  1. ;
*
LISTOT1 = LISTOT1 ET 
         (PROG 0.  0.  0.  0.  0.  PENDIA1    0. 0.  0.  0. 
               0.  0.  0.  0.  0.  0.   PENDIA1  0.  0.  0. 
              -1.  0.  1.  0.  0.  0.   0.  1.       0.  0. 
               0.  0.  0.  0.  0.  0.   0.  0.  PENDIA1  0.  
               0.  0. -1.  0.  1.  0.   0.  0.  0.   1.   ) ;
*
MATOT1 = MANU 'RIGIDITE' 'TYPE' 'RIGIDITE' SUPTOT 
         (MOTS 'P' 'Q') 'DUAL' (MOTS 'P' 'Q') 'QUEL' 
         LISTOT1 ;
*
list matot1 ;
*
leres2 = RESO MATOT1 RHS1 ;
*
list leres2 ;
*
*** Test sur les valeurs obtenues ...
*
p4 = (tabdom . CENTRE) poin proc (0.5 0.5) ;
p5 = (tabdom . CENTRE) poin proc (1.5 1.5) ;

resu11 = extr leres1 p p1 ;
resu12 = extr leres1 p p2 ;
resu13 = extr leres1 p p3 ;
resu14 = extr leres1 q p4 ;
resu15 = extr leres1 q p5 ;

resu21 = extr leres2 p p1 ;
resu22 = extr leres2 p p2 ;
resu23 = extr leres2 p p3 ;
resu24 = extr leres2 q p4 ;
resu25 = extr leres2 q p5 ;

valref1 =  2.4 ;
valref2 =  1.2 ;
valref3 = -1.2E-13 ;
valref4 =  1.2 ;
valref5 =  1.2 ;

ok = vrai ;

si(abs(resu11-valref1) > 1.E-10) ;
   ok = faux ;
finsi ;
si(abs(resu21-valref1) > 1.E-10) ;
   ok = faux ;
finsi ;

si(abs(resu12-valref2) > 1.E-10) ;
   ok = faux ;
finsi ;
si(abs(resu22-valref2) > 1.E-10) ;
   ok = faux ;
finsi ;

si(abs(resu13-valref3) > 1.E-25) ;
   ok = faux ;
finsi ;
si(abs(resu23-valref3) > 1.E-25) ;
   ok = faux ;
finsi ;

si(abs(resu14-valref4) > 1.E-10) ;
   ok = faux ;
finsi ;
si(abs(resu24-valref4) > 1.E-10) ;
   ok = faux ;
finsi ;

si(abs(resu15-valref5) > 1.E-10) ;
   ok = faux ;
finsi ;
si(abs(resu25-valref5) > 1.E-10) ;
   ok = faux ;
finsi ;

si(non ok) ;
   erreur 5 ;
finsi ;

fin ;

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer