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