tdiag2
C TDIAG2 SOURCE FANDEUR 22/01/03 21:15:51 11237 C C********************************************************************** C C Subroutine appelée par TDIAG. C Création d'une matrice de couplage dans le cas où les C supports des inconnues primales et duales sont identiques. C C ENTREES : C -------- C C ITY1 : Cas MAILLAGE SEG2 couple (Primal,Dual) C = 1 si support inc P&D correspond au maillage de connectivite C = 2 si support inc P&D dans l'ordre different du maillage de C connectivite C NOMDU1 : Nom de l'inconnue duale. C NOMPR1 : Nom de l'inconnue primale. C IPTMAIL : Pointeur du maillage de connectivite C IPCH1 : Pointeur sur le champ multiplicateur. C C SORTIE : C ------- C C IPRIGI : Pointeur sur la matrice de couplage élémentaire. C C C AUTEUR, DATE DE CREATION: C ------------------------- C C Laurent DADA décembre 1996 C C AUTEUR, DATE DE MODIFICATION: C ----------------------------- C C Alexandre BLEYER Novembre 2002 C Modifications : - creation des matrices elementaires simplifiee C - utilisation d'un maillage de connectivite C entre l'inc. duale et l'inc. primale C C LANGAGE: C -------- C C ESOPE + FORTRAN77 C C********************************************************************** C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C -INC PPARAM -INC CCOPTIO -INC CCGEOME -INC SMCOORD -INC SMCHPOI -INC SMELEME POINTEUR IPTMAIL.MELEME,IPTC1.MELEME -INC SMRIGID C SEGMENT REDI INTEGER IPOS1(NNGOT) ENDSEGMENT C CHARACTER*8 TYPE,NOMDU1,NOMPR1 LOGICAL LPRIMA,LDUA C C Récupération du pointeur des valeurs C du champ multiplicateur. C Remplissage du tableau de redirection C NNGOT = nbpts SEGINI REDI C MCHPOI = IPCH1 SEGACT MCHPOI MSOUPO = IPCHP(1) SEGDES MCHPOI SEGACT MSOUPO IPTC1 = IGEOC MPOVAL = IPOVAL SEGACT MPOVAL SEGDES MSOUPO SEGACT IPTC1 NBELC1 = IPTC1.NUM(/2) DO 100 I100=1,NBELC1 IPOS1(IPTC1.NUM(1,I100)) = I100 100 CONTINUE C C activation du SPG de l'inconnue duale C SEGACT IPTMAIL IF (IPTMAIL.ITYPEL.NE.2) THEN RETURN ENDIF NBEL1 = IPTMAIL.NUM(/2) C C Voir si le support du champ multiplicateur est le support C de l'inconne duale ou le support de l'inconnue primale C I11 = 0 I12 = 0 DO 10 I10=1,NBELC1 IF (IPTC1.NUM(1,I10).EQ.IPTMAIL.NUM(1,1)) I11 = 1 IF (IPTC1.NUM(1,I10).EQ.IPTMAIL.NUM(2,1)) I12 = 1 10 CONTINUE LPRIMA =.FALSE. LDUA =.FALSE. IF ((I11.EQ.1).AND.(I12.EQ.0)) THEN LPRIMA=.TRUE. ELSEIF ((I11.EQ.0).AND.(I12.EQ.1)) THEN LDUA=.TRUE. ELSE MOTERR(1:8) = 'CHPO ' RETURN ENDIF C SEGDES IPTC1 C C Création de la RIGIDITE C NRIGE = 8 NRIGEL = 1 SEGINI MRIGID IPRIGI = MRIGID C MTYMAT = 'RIGIDITE' IFORIG = IFOUR ICHOLE = 0 IMGEO1 = 0 IMGEO2 = 0 ISUPEQ = 0 COERIG(1) = 1.D0 IRIGEL(1,1) = IPTMAIL IRIGEL(2,1) = 0 IRIGEL(5,1) = NIFOUR IRIGEL(6,1) = 0 IRIGEL(7,1) = 2 IRIGEL(8,1) = 0 C C Remplissage du descripteur de l'objet RIGIDITE C NLIGRP = 1 NLIGRD = 1 SEGINI DESCR IRIGEL(3,1) = DESCR C IF (ITY1.EQ.1) THEN NOELEP(1) = 1 NOELED(1) = 2 ELSEIF (ITY1.EQ.2) THEN NOELEP(1) = 2 NOELED(1) = 1 ENDIF LISINC(1) = NOMPR1 LISDUA(1) = NOMDU1 C SEGDES DESCR C C Remplissage des matrices elementaires C NELRIG = NBEL1 SEGINI xMATRI DO 30 I30=1,NBEL1 * SEGINI XMATRI * IMATTT(I30) = XMATRI IF (LPRIMA) NUMPT1 = IPTMAIL.NUM(1,I30) IF (LDUA) NUMPT1 = IPTMAIL.NUM(2,I30) IF (IPOS1(NUMPT1).NE.0) THEN XVALM1 = VPOCHA(IPOS1(NUMPT1),1) ELSE MOTERR(1:8) = 'CHPO ' RETURN ENDIF RE(1,1,i30) = XVALM1 * SEGDES XMATRI 30 CONTINUE IRIGEL(4,1) = xMATRI xmatri.symre=2 SEGDES xMATRI C SEGDES IPTMAIL SEGDES MPOVAL SEGDES MRIGID SEGSUP REDI C END
© Cast3M 2003 - Tous droits réservés.
Mentions légales