inclu3
C INCLU3 SOURCE PV 20/03/24 21:18:09 10554 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMELEME -INC SMCOORD SEGMENT ICPR(NNNOE) SEGMENT IELOP(IN) CHARACTER*4 LEMOT(3),LEMO2(1) DATA LEMOT / 'STRI','LARG','BARY' / DATA LEMO2 / 'NOID' / C* IF (IDIM.NE.3) THEN C* INTERR(1)=IDIM C* CALL ERREUR(709) C* RETURN C* ENDIF IDIMP1=IDIM+1 IF (IMSLU.EQ.0) IMSLU=1 IVERI=0 IF (IRE2.EQ.1) IVERI=1 C CRITERE D'INCLUSION : IF (IRET.EQ.0) XCRITT=1.E-2 SEGACT,IPT1,IPT2 IPT1IN=IPT1 IPT2IN=IPT2 * Conversion de IPT1 en maillage de type POI1 * --------------------------------------------- segact mcoord*mod NBPTSI=nbpts IF (IPT1.ITYPEL .EQ. 1) THEN IF (IMSLU.EQ.3) IPT5=IPT1 ELSE C* Traitement de l'option 'BARY' : C* IPT1 contiendra les centres de gravite de IPT1 (dans le meme ordre) IF (IMSLU.EQ.3) THEN NBPTS=NBPTSI NBNN=1 NBELEM=0 NBREF=0 NBSOUS=0 SEGINI,IPT5 IPT5.ITYPEL=1 IGRAV=NBPTSI IPT6=IPT1 NSOU1=IPT6.LISOUS(/1) DO i=1,MAX(1,NSOU1) IF (NSOU1.NE.0) THEN IPT6=IPT1.LISOUS(i) SEGACT,IPT6 ENDIF NBELE5=NBELEM NBELE1=IPT6.NUM(/2) NBELEM=NBELEM+NBELE1 SEGADJ,IPT5 NBPTS=NBPTS+NBELE1 SEGADJ,MCOORD NBN1=IPT6.NUM(/1) DO j=1,NBELE1 IGRAV=IGRAV+1 IPT5.NUM(1,NBELE5+j)=IGRAV XP=0.D0 YP=0.D0 ZP=0.D0 DO k=1,NBN1 IREF=IPT6.NUM(k,j)*IDIMP1-IDIM XP=XCOOR(IREF) +XP YP=XCOOR(IREF+1)+YP ZP=XCOOR(IREF+2)+ZP ENDDO IREF=IGRAV*IDIMP1-IDIM XCOOR(IREF )=XP/FLOAT(NBN1) XCOOR(IREF+1)=YP/FLOAT(NBN1) XCOOR(IREF+2)=ZP/FLOAT(NBN1) ENDDO IF (NSOU1.NE.0) SEGDES,IPT6 ENDDO SEGDES,IPT1 IPT1=IPT5 C* Traitement des options 'STRI' et 'LARG' ELSE ENDIF ENDIF NNNOE=IPT1.NUM(/2) * * Conversion de ipt2 en elements de type TET4 * IF (IPT2.LISOUS(/1).NE.0) THEN IN=IPT2.LISOUS(/1) SEGINI IELOP NBELEM=0 DO 36 I=1,IPT2.LISOUS(/1) MELEME=IPT2.LISOUS(I) SEGACT MELEME IF (MELEME.ITYPEL.NE.23) THEN * write(6,*) ' inclu3 conv faite' ENDIF NBELEM=NBELEM+NUM(/2) IELOP(I)=MELEME 36 CONTINUE NBNN=4 NBREF=0 NBSOUS=0 SEGINI IPT3 IA=0 DO 37 I=1,IPT2.LISOUS(/1) MELEME=IELOP(I) DO 38 J=1,NUM(/2) DO 38 K=1,NUM(/1) IPT3.NUM(K,J+IA) = NUM(K,J) 38 CONTINUE IA=IA+NUM(/2) SEGDES MELEME 37 CONTINUE IPT3.ITYPEL=23 IPT2=IPT3 ELSE IF (IPT2.ITYPEL.NE.23) THEN * write(6,*) ' inclu3 conv faite' ENDIF ENDIF * write(6,FMT='(10i6)') (ICPR(IU),IU=1,ICPR(/1)) IF (IERR.NE.0) GOTO 999 C TEST ET CREATION DU SEGMENT RESULTAT NBREF=0 MELEME=IPT1IN SEGACT MELEME IPT2=MELEME NBSOU=LISOUS(/1) IF (NBSOU.NE.0) THEN NBNN=0 NBELEM=0 NBSOUS=NBSOU SEGINI IPT8 ISO=0 ENDIF IF (IMSLU.EQ.3) THEN NBELE5=0 SEGACT,IPT5 ENDIF DO 270 ISOUS=1,MAX(1,NBSOU) IF (NBSOU.NE.0) THEN IPT2=LISOUS(ISOUS) SEGACT IPT2 ENDIF NBNN=IPT2.NUM(/1) NBELEM=IPT2.NUM(/2) ICOUNT=0 DO 250 IEL=1,NBELEM IF (IMSLU.EQ.1) THEN DO 251 INOEU=1,NBNN IF (ICPR(IPT2.NUM(INOEU,IEL)).EQ.0) GOTO 250 251 CONTINUE ICOUNT=ICOUNT+1 ELSE IF (IMSLU.EQ.2) THEN DO 252 INOEU=1,NBNN IF (ICPR(IPT2.NUM(INOEU,IEL)).NE.0) GOTO 253 252 CONTINUE GOTO 250 253 CONTINUE ICOUNT=ICOUNT+1 C* ELSE IF (IMSLU.EQ.3) THEN ELSE IF (ICPR(IPT5.NUM(1,NBELE5+IEL)).NE.0) ICOUNT=ICOUNT+1 ENDIF 250 CONTINUE NBSOUS=0 NBREF=0 NBEL=NBELEM NBELEM=ICOUNT ICOUNT=1 IF (NBELEM.EQ.0) GOTO 260 SEGINI IPT3 IPT3.ITYPEL=IPT2.ITYPEL IF (IMSLU.EQ.1) THEN DO 256 INOEU=1,NBNN IF (ICPR(IPT2.NUM(INOEU,IEL)).EQ.0) GOTO 255 IPT3.NUM(INOEU,ICOUNT)=IPT2.NUM(INOEU,IEL) 256 CONTINUE IPT3.ICOLOR(ICOUNT)=IPT2.ICOLOR(IEL) ICOUNT=ICOUNT+1 IF (ICOUNT.GT.NBELEM) GOTO 260 ELSE IF (IMSLU.EQ.2) THEN IOOK=0 DO 257 INOEU=1,NBNN IF (ICPR(IPT2.NUM(INOEU,IEL)).NE.0) IOOK=1 IPT3.NUM(INOEU,ICOUNT)=IPT2.NUM(INOEU,IEL) 257 CONTINUE IF (IOOK.EQ.0) GOTO 255 IPT3.ICOLOR(ICOUNT)=IPT2.ICOLOR(IEL) ICOUNT=ICOUNT+1 IF (ICOUNT.GT.NBELEM) GOTO 260 C* ELSE IF (IMSLU.EQ.3) THEN ELSE IF (ICPR(IPT5.NUM(1,NBELE5+IEL)).NE.0) THEN DO INOEU=1,NBNN IPT3.NUM(INOEU,ICOUNT)=IPT2.NUM(INOEU,IEL) ENDDO IPT3.ICOLOR(ICOUNT)=IPT2.ICOLOR(IEL) ICOUNT=ICOUNT+1 IF (ICOUNT.GT.NBELEM) GOTO 260 ENDIF ENDIF 255 CONTINUE * Bilan et sauvegarde 260 CONTINUE IF (NBSOU.EQ.0) THEN IF (NBELEM.EQ.0) THEN IF (IVERI.EQ.1) THEN * Ecriture d'un maillage vide NBSOUS=0 NBREF=0 NBNN=0 NBELEM=0 SEGINI IPT4 GOTO 999 ELSE * Tache impossible. Probablement données erronées RETURN ENDIF ENDIF GOTO 280 ENDIF IF (NBELEM.NE.0) THEN IPT8.LISOUS(ISOUS)=IPT3 ISO=ISO+1 SEGDES IPT3 ENDIF 270 CONTINUE IF (ISO.EQ.1) THEN SEGSUP IPT8 GOTO 280 ENDIF IF (ISO.EQ.0) THEN SEGSUP IPT8 IF (IVERI.EQ.1) THEN * Ecriture d'un maillage vide NBSOUS=0 NBREF=0 NBNN=0 NBELEM=0 SEGINI IPT4 GOTO 999 ELSE * Tache impossible. Probablement données erronées RETURN ENDIF ENDIF IPT3=IPT8 IF (ISO.EQ.NBSOU) GOTO 280 NBSOUS=ISO NBREF=0 NBNN=0 NBELEM=0 SEGINI IPT4 ISO=0 DO 275 IS=1,NBSOU IF (IPT3.LISOUS(IS).EQ.0) GOTO 275 ISO=ISO+1 IPT4.LISOUS(ISO)=IPT3.LISOUS(IS) 275 CONTINUE IF (ISO.EQ.0) THEN NBSOUS=0 NBREF=0 NBNN=0 NBELEM=0 SEGINI IPT4 GOTO 999 ENDIF SEGSUP IPT3 IPT3=IPT4 280 CONTINUE SEGDES IPT3 999 CONTINUE *** IF (IPT1IN.NE.IPT1) SEGSUP,IPT1 SEGSUP,ICPR IPT1=IPT1IN IPT2=IPT2IN SEGDES,IPT1,IPT2 IF (IMSLU.EQ.3) THEN NBPTS=NBPTSI SEGADJ,MCOORD ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales