matp2
C MATP2 SOURCE CB215821 19/08/20 21:19:38 10287 C----------------------------------------------------------------------- C Calcul des matrices élémentaires en trace de charge pour une zone C élémentaire d'un maillage dans le cadre de la résolution des équations C de Darcy par une méthode d'éléments finis mixtes hybrides. C----------------------------------------------------------------------- C C--------------------------- C Parametres Entree/Sortie : C--------------------------- C -1 C E/ IMATR1 : DARCY de la zone en cours (contient RE ). C E/ THETA : Parametre de discretisation temporelle (theta-methode) C E/ DELTAT : Pas de temps C E/ MELVAL : Pointeur vers Ck|K| pour les éléments de la zone en cours C /S IMATRI : Pointeur vers matrices elem. finales de la zone en cours C C THETA, DELTAT et MELVAL sont utilisés en transitoire UNIQUEMENT C C C---------------------- C Tableaux de travail : C---------------------- C C NBDDL : Nombre de noeuds support des ddl dans l'element C (dimension des matrices masses elementaires) C NBELEM : Nombre d'element dans le maillage elementaire C (nombre de matrices masses elementaires) C C----------------------------------------------------------------------- C C Langage : ESOPE + FORTRAN77 C C Auteurs : 08/93 F.DABBENE - Cas permanent C 09/94 X.NOUVELLON - Extension au cas transitoire C C----------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) * -INC SMCHAML -INC SMRIGID * SEGMENT MTRAV REAL*8 RLIGNE(NBDDL),RCOLON(NBDDL) ENDSEGMENT * * Recuperation des caracteristiques de RIGIDITE de sous type DARCY * SEGACT xMATR1 NBELEM = xMATR1.re(/3) * XMATRI = IMATR1.IMATTT(1) SEGACT XMATRI NBDDL = RE(/1) SEGDES XMATRI * * Création du segment de travail et initialisations pour XMATRI * NLIGRP = NBDDL NLIGRD = NBDDL SEGINI MTRAV * *------------------------------------------------- * BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE *------------------------------------------------- * SEGACT xMATRI*MOD IF (MELVAL.NE.0) SEGACT MELVAL DO 90 IEL=1,NBELEM * *- Recuperation de la matrice elementaire * * XMATR1 = IMATR1.IMATTT(IEL) ** SEGACT XMATR1 * SEGINI , XMATRI=XMATR1 * * SEGDES XMATR1 * *- Calcul de la somme des coefs pour une ligne ; une colonne *- -1 t t -1 *- LIGNE = RE * DIV ; COLON = DIV * RE *- -1 t *- Calcul de CONSD = DIV * RE * DIV * CONSD = 0.D0 DO 20 I=1,NBDDL RCOLON(I) = 0.D0 RLIGNE(I) = 0.D0 DO 10 J=1,NBDDL RCOLON(I) = RCOLON(I) + RE(J,I,iel) RLIGNE(I) = RLIGNE(I) + RE(I,J,iel) 10 CONTINUE CONSD = CONSD + RLIGNE(I) 20 CONTINUE * * Calcul de la matrice élémentaite en permanent ou en transitoire * IF (MELVAL.EQ.0) THEN DO 40 I=1,NBDDL DO 30 J=1,NBDDL RE(I,J,iel) = RCOLON(J)*RLIGNE(I)/CONSD-RE(I,J,iel) 30 CONTINUE 40 CONTINUE ELSE DO 60 I=1,NBDDL DO 50 J=1,NBDDL RE(I,J,iel)=RCOLON(J)*RLIGNE(I)*COEF/CONSD-RE(I,J,iel) 50 CONTINUE 60 CONTINUE ENDIF * * Remplissage de IMATRI * * IMATTT(IEL) = XMATRI * SEGDES XMATRI 90 CONTINUE * * Desactivation des segments * SEGDES xMATRI,xMATR1 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales