poirig
C POIRIG SOURCE PV 20/03/30 21:22:15 10567 C C EXTRACTION DE MAILLAGE D'UNE RIGIDITE C C---------------------------------------------------------------------- C IMUL = 1 ON VEUT TOUS LES NOEUDS SAUF CEUX DES MULTIPLICATEURS C IMUL = 2 ON NE VEUT QUE LES NOEUDS DES MULTIPLICATEURS C IMUL = 3 ON NE VEUT QUE LES MULTILICATEURS ASSOCIES AUX JEUX C OU LES ELEMENTS GEOMETRQIUES DES CONTACTS UNILATERAUX C---------------------------------------------------------------------- IMPLICIT INTEGER(I-N) -INC SMRIGID -INC PPARAM -INC CCOPTIO -INC SMELEME -INC SMCOORD logical ltelq SEGMENT ICPR(nbpts) SEGMENT MULTRI INTEGER ICTC(nbpts,3) ENDSEGMENT CHARACTER NOMU(1)*4 DATA NOMU /'TRI3'/ MRIGID=IPIRG if (mrigid.le.0) then return endif SEGACT MRIGID NR=IRIGEL(/2) IPP1=0 IF(IMUL.NE.3) GO TO 1000 C C cas de l'extraction des multiplicateurs associes a des conditions C unilaterales option 'UNIL' C C IF (IRET.EQ.1) THEN C cas ou l'on sort des tri3 ITRI3 = 0 C itri3 ets le nombre de tri3 generes SEGINI MULTRI DO 500 I=1,NR IF(IRIGEL(6,I).EQ.0) GO TO 500 MELEME = IRIGEL( 1,I) IF (MELEME .EQ. 0) GO TO 500 SEGACT MELEME IF ( ITYPEL.NE.22) THEN RETURN ENDIF IF ( NUM(/1) .EQ. 5 ) THEN C les élements contiennent 3 points geometriques DO 510 J=1,NUM(/2) ITRI3 = ITRI3 + 1 ICTC(ITRI3,1)=NUM(3,J) ICTC(ITRI3,2)=NUM(4,J) ICTC(ITRI3,3)=NUM(5,J) 510 CONTINUE ENDIF 500 CONTINUE C construction de l'objet meleme NBSOUS = 0 NBREF = 0 NBNN = 3 NBELEM = ITRI3 SEGINI MELEME ITYPEL = 4 DO 520 I=1,ITRI3 C ici on peut tester si les elements sont bien orientes C avec l'inversion 2,1 ca devrait marcher NUM(1,I)=ICTC(I,2) NUM(2,I)=ICTC(I,1) NUM(3,I)=ICTC(I,3) 520 CONTINUE SEGSUP MULTRI RETURN ENDIF C C cas ou l'on ne sort que les points supports des C multiplicateurs de conditions unilaterales C octobre 2010 on met en queue les frottements C SEGINI ICPR DO 1100 I=1,NR IF(IRIGEL(6,I).EQ.0) GO TO 1100 ityp=irigel(6,i) MELEME = IRIGEL( 1,I) IF (MELEME .EQ. 0) GO TO 1100 SEGACT MELEME IF ( ITYPEL.NE.22) THEN GO TO 1100 ENDIF DO 1101 J=1,NUM(/2) ICPR(NUM(1,J))=ityp 1101 CONTINUE 1100 CONTINUE NBELEM=0 DO 1102 I=1,ICPR(/1) if (icpr(i).ne.0) NBELEM=NBELEM + 1 1102 CONTINUE NBNN = 1 NBSOUS=0 NBREF=0 SEGINI MELEME IA=1 ITYPEL=1 DO 1103 I=1,ICPR(/1) IF( ICPR(I).ne.-1) GO TO 1103 NUM(1,IA)=I IA = IA + 1 1103 CONTINUE DO 1104 I=1,ICPR(/1) IF( ICPR(I).ne. 1) GO TO 1104 NUM(1,IA)=I IA = IA + 1 1104 CONTINUE DO 1105 I=1,ICPR(/1) IF( ICPR(I).ne. 2) GO TO 1105 NUM(1,IA)=I IA = IA + 1 1105 CONTINUE SEGSUP ICPR RETURN C C CAS IMUL = 1 OU 2 C C BOUCLE SUR LES RIGIDITES ELEMENTAIRES C 1000 CONTINUE SEGINI INDIC DO 191 I=1,NR IGEO=IRIGEL(1,I) MELEME=IGEO SEGACT MELEME C C TEST SUR LE TYPE D ELEMENT ( EGAL A MULT ? ) C IF(ITYPEL.NE.22) THEN IF(IMUL.EQ.2) GO TO 191 IF(IPP1.EQ.0) THEN IPP1=IGEO GO TO 191 ELSE IPP2=IGEO ltelq=.false. IPP1=IRET GO TO 191 ENDIF ELSE C C TRAITEMENT D'UN ELEMENT DE TYPE BLOCAGE,RELATION,.... C IF(IMUL.EQ.1) THEN NBDEB=2 NBFIN=NUM(/1) ELSE IF(IMUL.EQ.2) THEN NBDEB=1 NBFIN=1 ENDIF ENDIF C NBPOIN=NUM(/2) DO 199 J=1,NBPOIN DO 198 IJ=NBDEB,NBFIN C C BOUCLE SUR LES POINTS EXISTANTS C DO 302 IK=1,NINDIC,2 302 CONTINUE 303 CONTINUE 198 CONTINUE 199 CONTINUE 191 CONTINUE SEGDES MRIGID C C REMPLISSAGE DU RESULTAT C IF (NBELEM.EQ.0) THEN IF(IMUL.EQ.1) GO TO 211 ** creation d'un maillage vide ** CALL ERREUR(18) ** RETURN ENDIF NBNN=1 NBSOUS=0 NBREF=0 SEGINI IPT1 IPT1.ITYPEL=1 DO 1001 IP=1,NBELEM IP2=2*IP IP1=IP2-1 1001 CONTINUE IF(IPP1.EQ.0) THEN IPP1=IPT1 ELSE ltelq=.false. IPP1=IRET ENDIF END
© Cast3M 2003 - Tous droits réservés.
Mentions légales