rigsur
C RIGSUR SOURCE CB215821 24/04/12 21:17:11 11897 C---------------------------------------------------------------------* C subroutine construisant les sousmatrices de rigidité pour les C sous-modeles de type SURE classiques : C itypel=48, nformod=259, mfr=1 C---------------------------------------------------------------------* C---------------------------------------------------------------------* C * C ENTREES : * C ________ * C * C IMODEL pointeur sur le sous modele de sure * C ENTREES/SORTIE : * C ________ * C * C IPOI6 pointeur sur la rigidite construite * C ISOU compteur des sous matrices de rigidite construite * C---------------------------------------------------------------------* c IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C -INC PPARAM -INC CCOPTIO -INC SMRIGID C-INC SMINTE -INC SMMODEL -INC SMELEME -INC CCHAMP -INC CCGEOME -INC SMCOORD C C C Petit tableau des "couleurs" des relations de conformite DIMENSION LCOLOR(6) DATA LCOLOR / 1, 3, 6, 10, 16, 24 / C MELEME=imamod SEGACT, MELEME IDEBUT = LCOLOR(ICOLOR(1)) - 3 c récupérations du nom des composantes obligatoire du modele de sure nomid=IMODEL.lnomid(1) SEGACT, nomid C********************************************************************** C Boucle sur les composantes primales obligatoires du sure C********************************************************************** ICOMP=0 DO 2 ICOMP=1,nomid.lesobl(/2) C==================== c creation d'un maillage avec un premier noeud par lélément c correspondant à un multiplicateur de lagrange C==================== NBNN=NUM(/1)+1 NBELEM=NUM(/2) NBSOUS=0 NBREF=0 SEGINI, IPT4 IPT4.ITYPEL=22 DO 1 J=1,NUM(/2) ipt4.icolor(j)=icolor(j) DO 11 I=1,NUM(/1) IPT4.NUM(I+1,J)=NUM(I,J) 11 CONTINUE 1 CONTINUE C creation n'un nouveau noeud pour supporter chaque multiplicateur de lagrange segact mcoord*mod NBPT1= nbpts NBPTS=NBPT1+(IPT4.NUM(/2)) SEGADJ MCOORD DO 12 J=1,NUM(/2) NGLOB=(NBPT1+J-1)*(IDIM+1) C remplissage des coordonees des nouveux points DO 13 ID= 1,IDIM XCOOR(NGLOB+ID)=XCOOR((IPT4.NUM(2,J)-1)*(IDIM+1)+ID) 13 CONTINUE IPT4.NUM(1,J) = NBPT1 + J 12 CONTINUE C==================== C *** SEGMENT XMATRI C==================== NLIGRD=IPT4.NUM(/1) NLIGRP=NLIGRD NELRIG=IPT4.NUM(/2) SEGINI, XMATRI DO 3 I=1,NELRIG RE(1,2,i)=-1. RE(2,1,i)=-1. DO 4 ICAZ=3,NLIGRD RE(1,ICAZ,i)=XCOEFF(IDEBUT+ICAZ) RE(ICAZ,1,i)=RE(1,ICAZ,i) 4 CONTINUE 3 CONTINUE C write(*,*) 'COMPOSANTE OBLIGATOIRE DU SURE :' C write(*,*) (nomid.lesobl(ICOMP)) C write(*,*) 'MATRICE elementaire :' C DO 5 I=1,NLIGRD C write(*,*) (RE(i,iou,1), iou=1,NLIGRD) C 5 CONTINUE C==================== C *** SEGMENT DESCR C==================== NEXIST=0 DO 6 I=1,LNOMDD IF (NOMDD(I).EQ.nomid.lesobl(ICOMP)) NEXIST = I 6 CONTINUE IF (NEXIST.EQ.0) THEN ENDIF SEGINI, DESCR LISINC(1)='LX ' LISDUA(1)='FLX ' NOELEP(1)=1 NOELED(1)=1 DO 7 I=2,NLIGRD LISINC(I)=NOMDD(NEXIST) LISDUA(I)=NOMDU(NEXIST) NOELEP(i)=i NOELED(i)=i 7 CONTINUE C==================== C *** SEGMENT MRIGID C==================== MRIGID=IPOI6 SEGACT, MRIGID*mod C Ajustement du segment rigidite si plus d'une composante IF (ICOMP.GT.1) THEN nrigel=IRIGEL(/2)+1 SEGADJ, MRIGID isou = isou+1 ENDIF COERIG(isou)=1. IRIGEL(1,isou)=IPT4 IRIGEL(2,isou)=0 IRIGEL(3,isou)=DESCR IRIGEL(4,isou)=XMATRI IRIGEL(5,isou)=0 IRIGEL(6,isou)=0 IRIGEL(7,isou)=0 IRIGEL(8,isou)=0 c SEGDES, MRIGID SEGDES, DESCR SEGDES, XMATRI C********************************************************************** C FIN Boucle sur les composantes primales obligatoires du sure C********************************************************************** 2 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales