tuu
C TUU SOURCE FANDEUR 22/01/03 21:15:54 11237 ************************************************************************ * NOM : TUU ************************************************************************ * DESCRIPTION : Realise le produit tU*U ou U est une matrice rectangle * dont les colonnes sont donnees par un objet LISTCHPO * * Les multiplicateurs de Lagrange sont ignores * *********************************************************** * * * +---+---+---+---+ * U[N;L] ---> | C | C | | C | * | H | H | . | H | * | P | P | . | P | * tU[L;N] | # | # | . | # | * | | 1 | 2 | | L | * | +---+---+---+---+ * V * +-----------+ +---------------+ * | CHPOINT#1 | | | * +-----------+ | | * | CHPOINT#2 | | TUU | * +-----------+ | | * | ... | | [L;L] | * +-----------+ | | * | CHPOINT#L | | | * +-----------+ +---------------+ * * * avec : L = nombre de champs * N = nombre d'inconnues * (triplet noeud/composante/harmonique) * ************************************************************************ * APPELE PAR : pod.eso ************************************************************************ * ENTREES :: LCH1 = POINTEUR VERS UN OBJET LISTCHPO * DFLO = COEFFICIENT MULTIPLICATEUR * SORTIES :: IRIG = POINTEUR VERS UN OBJET RIGIDITE ************************************************************************ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC SMCHPOI -INC SMLCHPO -INC SMELEME -INC SMRIGID * * IPOV(I,J) = POINTEUR VERS LE MPOVAL DU SOUPO DU J-EME CHPOINT QUI * CORRESPOND AU I-EME SOUPO DU PREMIER CHPOINT (IPOV=0 * SI LE SOUPO EST ASSOCIE AUX MULT. DE LAGRANGE) * IINC(I,J,K) = L'INCONNUE I DU SOUPO J DU PREMIER CHPOINT EST EN * POSITION IINC(I,J,K) DANS LE SOUPO CORRESPONDANT DU * K-EME CHPOINT SEGMENT TTRAV INTEGER IPOV(NS1,NCH) INTEGER IINC(NXMAX,NS1,NCH) ENDSEGMENT * CHARACTER*(LOCOMP) MOCOMP * * * * +---------------------------------------------------------------+ * | T R A V A I L P R E L I M I N A I R E | * +---------------------------------------------------------------+ * MLCHPO=LCH1 SEGACT,MLCHPO * * * *********************************** * NOMBRE DE CHPOINTS DANS LE LISTCHPO * *********************************** NCH=ICHPOI(/1) IF (NCH.EQ.0) THEN MOTERR(1:8)='LISTCHPO' INTERR(1)=LCH1 RETURN ENDIF * * * ************************************************************ * CORRESPONDANCE ENTRE LES SOUPO ET LES COMPOSANTES DU PREMIER * CHPOINT ET DES CHPOINTS SUIVANTS => REMPLISSAGE DE TTRAV * ************************************************************ MCHPO1=ICHPOI(1) SEGACT,MCHPO1 * NS1=MCHPO1.IPCHP(/1) IF (NS1.EQ.0) THEN MOTERR(1:8)='CHPOINT' RETURN ENDIF * NXMAX=3 SEGINI,TTRAV * * BOUCLE 1 SUR LES SOUPOS DU 1ER CHPOINT * ====================================== DO 10 IS1=1,NS1 MSOUP1=MCHPO1.IPCHP(IS1) SEGACT,MSOUP1 * * ON IGNORE LES MULTIPLICATEURS DE LAGRANGE NX1 =MSOUP1.NOCOMP(/2) MOCOMP=MSOUP1.NOCOMP(1) IF (MOCOMP.EQ.'LX'.OR.MOCOMP.EQ.'FLX') THEN SEGDES,MSOUP1 GOTO 10 ENDIF * * ON VERIFIE QUE LE MAILLAGE N'EST PAS VIDE IGEO1=MSOUP1.IGEOC IF (IGEO1.LE.0) THEN MOTERR(1:8)='CHPOINT' RETURN ENDIF * * POINTEUR DIRECT VERS LE SEGMENT MPOVAL IPOV(IS1,1)=MSOUP1.IPOVAL * * BOUCLE 2 SUR LES AUTRES CHPOINTS * ================================ DO 11 ICH=2,NCH MCHPO2=ICHPOI(ICH) SEGACT,MCHPO2 NS2=MCHPO2.IPCHP(/1) * * ON VA CHERCHER LE SOUPO CORRESPONDANT A MSOUP1 * => BOUCLE 3 SUR LES SOUPOS DE MCHPO2 * ============================================== DO 12 IS2=1,NS2 MSOUP2=MCHPO2.IPCHP(IS2) SEGACT,MSOUP1,MSOUP2 * * MEME MAILLAGE ? IGEO2=MSOUP2.IGEOC IF (IGEO1.NE.IGEO2) THEN SEGDES,MSOUP2 GOTO 12 ENDIF * * MEME NOMBRE DE COMPOSANTES ? NX2 =MSOUP2.NOCOMP(/2) MOCOMP=MSOUP1.NOCOMP(1) IF (MOCOMP.EQ.'LX'.OR.MOCOMP.EQ.'FLX'.OR.NX1.NE.NX2) THEN SEGDES,MSOUP2 GOTO 12 ENDIF IF (NX2.GT.NXMAX) THEN NXMAX=NX2 SEGADJ,TTRAV ENDIF * * MEMES LISTES DE COMPOSANTES ? * => ON FAIT LA CORRESPONDANCE ENTRE LES COMPOSANTES DES * 2 SOUPOS DO 13 IX1=1,NX1 MOCOMP=MSOUP1.NOCOMP(IX1) DO IX2=1,NX2 IF (MOCOMP.EQ.MSOUP2.NOCOMP(IX2)) THEN IINC(IX1,IS1,ICH)=IX2 GOTO 13 ENDIF ENDDO GOTO 19 13 CONTINUE * * POINTEUR DIRECT VERS LE SEGMENT MPOVAL IPOV(IS1,ICH)=MSOUP2.IPOVAL * * (CHPOINT SUIVANT) SEGDES,MSOUP2,MCHPO2 GOTO 11 * 12 CONTINUE * * MESSAGE D'ERREUR * **************** 19 CONTINUE WRITE(MOTERR(1:16),FMT='(2I8)') MCHPO1,MCHPO2 RETURN * 11 CONTINUE SEGDES,MSOUP1 * 10 CONTINUE SEGDES,MCHPO1 * * * * +---------------------------------------------------------------+ * | C R E A T I O N D U S U P E R - E L E M E N T | * +---------------------------------------------------------------+ * NBSOUS=0 NBELEM=1 NBNN=NCH NBREF=0 SEGINI,MELEME ITYPEL=28 segact mcoord*mod NBPT1=nbpts NBPTS=NBPT1+NBNN SEGADJ,MCOORD DO K=1,NBNN K1=(NBPT1+K-1)*(IDIM+1) XCOOR(K1+1)=K XCOOR(K1+2)=0 IF (IDIM.EQ.3) XCOOR(K1+3)=0 NUM(K,1)=NBPT1+K ENDDO SEGDES,MELEME * * * * +---------------------------------------------------------------+ * | D E S C R I P T E U R D E L A M A T R I C E | * +---------------------------------------------------------------+ * NLIGRP=NCH NLIGRD=NCH SEGINI,DESCR DO K=1,NCH LISINC(K)='ALFA' LISDUA(K)='FALF' NOELEP(K)=K NOELED(K)=K ENDDO SEGDES,DESCR * * * +---------------------------------------------------------------+ * | R E M P L I S S A G E D U C O N T E N U | * +---------------------------------------------------------------+ * NELRIG=1 SEGINI,XMATRI * DO ICH=1,NCH DO 20 ISOU=1,NS1 IPO1=IPOV(ISOU,ICH) IF (IPO1.EQ.0) GOTO 20 MPOVA1=IPO1 SEGACT,MPOVA1 NNO=MPOVA1.VPOCHA(/1) NIX=MPOVA1.VPOCHA(/2) * * REMPLISSAGE DE LA DIAGONALE * =========================== XVAL=0. DO IIX=1,NIX DO INO=1,NNO XX=MPOVA1.VPOCHA(INO,IIX) XVAL=XVAL+XX*XX ENDDO ENDDO RE(ICH,ICH,1)=RE(ICH,ICH,1)+XVAL * * REMPLISSAGE DU TRIANGLE SUPERIEUR * ================================= DO 21 JCH=ICH+1,NCH IPO2=IPOV(ISOU,JCH) IF (IPO2.EQ.0) GOTO 21 MPOVA2=IPO2 SEGACT,MPOVA1,MPOVA2 * XVAL=0. DO IIX=1,NIX JIX=IINC(IIX,ISOU,JCH) DO INO=1,NNO XVAL=XVAL+MPOVA1.VPOCHA(INO,IIX) & *MPOVA2.VPOCHA(INO,JIX) ENDDO ENDDO RE(ICH,JCH,1)=RE(ICH,JCH,1)+XVAL * SEGDES,MPOVA2 21 CONTINUE * SEGDES,MPOVA1 20 CONTINUE * * REMPLISSAGE DU TRIANGLE INFERIEUR * ================================= DO JCH=ICH+1,NCH RE(JCH,ICH,1)=RE(ICH,JCH,1) ENDDO * ENDDO * * SEGSUP,TTRAV SEGDES,MLCHPO,XMATRI * * * * +---------------------------------------------------------------+ * | C H A P E A U D U M R I G I D | * +---------------------------------------------------------------+ * NRIGEL=1 SEGINI,MRIGID IRIG=MRIGID MTYMAT='RIGIDITE' COERIG(1)=DFLO IRIGEL(1,1)=MELEME IRIGEL(2,1)=0 IRIGEL(3,1)=DESCR IRIGEL(4,1)=XMATRI IRIGEL(5,1)=0 IRIGEL(6,1)=0 IRIGEL(7,1)=0 ICHOLE=0 IMGEO1=0 IMGEO2=0 IFORIG=IFOUR ISUPEQ=0 JRCOND=0 JRDEPP=0 JRDEPD=0 JRELIM=0 JRGARD=0 JRTOT=0 IMLAG=0 IPROFO=0 IVECRI=0 SEGDES,MRIGID * * RETURN * END * *
© Cast3M 2003 - Tous droits réservés.
Mentions légales