Download matp2.eso

Back to the list

   1 : C MATP2     SOURCE    CHAT      09/10/09    21:21:01     6519           
   2 :       SUBROUTINE MATP2(xMATR1,THETA,DELTAT,MELVAL,xMATRI)
   3 : C-----------------------------------------------------------------------
   4 : C Calcul des matrices élémentaires en trace de charge pour une zone
   5 : C élémentaire d'un maillage dans le cadre de la résolution des équations
   6 : C de Darcy par une méthode d'éléments finis mixtes hybrides.
   7 : C-----------------------------------------------------------------------
   8 : C
   9 : C---------------------------
  10 : C Parametres Entree/Sortie :
  11 : C---------------------------
  12 : C                                                       -1
  13 : C E/  IMATR1 : DARCY de la zone en cours (contient RE  ).
  14 : C E/  THETA  : Parametre de discretisation temporelle (theta-methode)
  15 : C E/  DELTAT : Pas de temps
  16 : C E/  MELVAL : Pointeur vers Ck|K| pour les éléments de la zone en cours
  17 : C  /S IMATRI : Pointeur vers matrices elem. finales de la zone en cours
  18 : C
  19 : C THETA, DELTAT et MELVAL sont utilisés en transitoire UNIQUEMENT
  20 : C
  21 : C
  22 : C----------------------
  23 : C Tableaux de travail :
  24 : C----------------------
  25 : C
  26 : C     NBDDL   : Nombre de noeuds support des ddl dans l'element
  27 : C               (dimension des matrices masses elementaires)
  28 : C     NBELEM  : Nombre d'element dans le maillage elementaire
  29 : C               (nombre de matrices masses elementaires)
  30 : C
  31 : C-----------------------------------------------------------------------
  32 : C
  33 : C Langage : ESOPE + FORTRAN77
  34 : C
  35 : C Auteurs : 08/93 F.DABBENE - Cas permanent
  36 : C           09/94 X.NOUVELLON - Extension au cas transitoire
  37 : C
  38 : C-----------------------------------------------------------------------
  39 :       IMPLICIT INTEGER(I-N)
  40 :       IMPLICIT REAL*8 (A-H,O-Z)
  41 : *
  42 : -INC SMCHAML
  43 : -INC SMRIGID                                                   
  44 : *  
  45 :       SEGMENT MTRAV
  46 :          REAL*8  RLIGNE(NBDDL),RCOLON(NBDDL)
  47 :       ENDSEGMENT 
  48 : *       
  49 : * Recuperation des caracteristiques de RIGIDITE de sous type DARCY
  50 : *      
  51 :       SEGACT xMATR1
  52 :       NBELEM = xMATR1.re(/3)
  53 : *      XMATRI = IMATR1.IMATTT(1)
  54 :       SEGACT XMATRI
  55 :       NBDDL  = RE(/1)
  56 :       SEGDES XMATRI
  57 : *                                                                 
  58 : * Création du segment de travail et initialisations pour XMATRI
  59 : *                                                                 
  60 :       NLIGRP = NBDDL
  61 :       NLIGRD = NBDDL
  62 :       SEGINI MTRAV
  63 : *                                                                    
  64 : *-------------------------------------------------
  65 : * BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE
  66 : *-------------------------------------------------
  67 : *    
  68 :       SEGACT xMATRI*MOD
  69 :       IF (MELVAL.NE.0) SEGACT MELVAL
  70 :       DO 90 IEL=1,NBELEM
  71 : *
  72 : *- Recuperation de la matrice elementaire
  73 : *
  74 : *         XMATR1 = IMATR1.IMATTT(IEL)
  75 : **         SEGACT XMATR1
  76 : *        SEGINI , XMATRI=XMATR1
  77 : *
  78 : *        SEGDES XMATR1
  79 : *
  80 : *- Calcul de la somme des coefs pour une ligne ; une colonne
  81 : *-               -1 t             t        -1
  82 : *-     LIGNE = RE  * DIV ; COLON = DIV * RE
  83 : *-                           -1  t
  84 : *- Calcul de CONSD = DIV * RE  *  DIV
  85 : *
  86 :          CONSD = 0.D0
  87 :          DO 20 I=1,NBDDL
  88 :             RCOLON(I) = 0.D0
  89 :             RLIGNE(I) = 0.D0
  90 :             DO 10 J=1,NBDDL
  91 :                RCOLON(I)   = RCOLON(I) + RE(J,I,iel)
  92 :                RLIGNE(I)   = RLIGNE(I) + RE(I,J,iel)
  93 :   10        CONTINUE
  94 :             CONSD = CONSD + RLIGNE(I)
  95 :   20     CONTINUE
  96 : *                     
  97 : * Calcul de la matrice élémentaite en permanent ou en transitoire
  98 : *
  99 :          IF (MELVAL.EQ.0) THEN
 100 :             DO 40 I=1,NBDDL
 101 :                DO 30 J=1,NBDDL
 102 :                   RE(I,J,iel) = RCOLON(J)*RLIGNE(I)/CONSD-RE(I,J,iel)
 103 :   30           CONTINUE
 104 :   40        CONTINUE
 105 :          ELSE
 106 :             COEF=THETA*CONSD*DELTAT/(VELCHE(1,IEL)+THETA*CONSD*DELTAT)
 107 :             DO 60 I=1,NBDDL
 108 :                DO 50 J=1,NBDDL
 109 :                   RE(I,J,iel)=RCOLON(J)*RLIGNE(I)*COEF/CONSD-RE(I,J,iel)
 110 :   50           CONTINUE
 111 :   60        CONTINUE
 112 :          ENDIF
 113 : *                                                       
 114 : * Remplissage de IMATRI
 115 : *                                                          
 116 : *         IMATTT(IEL) = XMATRI
 117 : *         SEGDES XMATRI
 118 :   90  CONTINUE
 119 : *                                                
 120 : * Desactivation des segments
 121 : *                                                               
 122 :       IF (MELVAL.NE.0) SEGDES MELVAL
 123 :       SEGDES xMATRI
 124 :       SEGSUP MTRAV
 125 :       SEGDES xMATR1
 126 :       RETURN                                                      
 127 :       END                                                       
 128 :  
 129 :  
 130 :  
 131 :  
 132 :  
 133 :  
 134 :  
 135 :  
 136 :  
 137 :  

© Cast3M 2003 - All rights reserved.
Disclaimer