mocr
C MOCR SOURCE PV 20/03/25 08:13:59 10554 C MODI CREATION D'ELEMENT C IMPLICIT INTEGER(I-N) COMMON/CMODI/LIGMAX,XDEC,YDEC -INC SMELEME -INC PPARAM -INC CCOPTIO -INC CCGEOME -INC SMCOORD DIMENSION XTR(10),YTR(10),ZTR(10) SEGMENT XPROJ(3,ITE) SEGMENT IVU(ITE) SEGMENT IDCP(ITE) SEGMENT ICPR(0) SEGMENT IMILL(ITE) SEGMENT IBOUJ(0) CHARACTER*8 ZONE do i=1,10 ztr(i)=0 enddo XPR=XDEC**2 TTEMP=TMIN 10 CONTINUE CALL TRMESS('Choisissez le type d''element') CALL TRAFF(ICLE) IF (ICLE.NE.2.AND.ICLE.NE.3.AND.ICLE.NE.4.AND.ICLE.NE.6 # .AND.ICLE.NE.8.AND.ICLE.NE.10.AND.ICLE.NE.1) THEN GOTO 10 ENDIF IF (KDEGRE(ICLE).EQ.3) THEN * IL FAUT INDIQUER OU SONT LES POINTS MILIEUX call insegt(3,iresu) CALL CHCOUL(IDNOIR) IPT1=MELEME DO 30 IO=1,MAX(1,LISOUS(/1)) IF (LISOUS(/1).NE.0) IPT1=LISOUS(IO) IF (KDEGRE(IPT1.ITYPEL).NE.3) GOTO 40 DO 50 I=1,IPT1.NUM(/1) DO 50 J=1,IPT1.NUM(/2) IP=ICPR(IPT1.NUM(I,J)) IF (IMILL(IP).NE.0) GOTO 50 XTR(1)=XPROJ(1,IP) YTR(1)=XPROJ(2,IP) XTR(2)=XPROJ(1,IP) YTR(2)=XPROJ(2,IP) CALL POLRL(2,XTR,YTR,ZTR) IMILL(IP)=1 50 CONTINUE 40 CONTINUE 30 CONTINUE ENDIF NBELEM=0 NBSOUS=0 NBREF=0 NBNN=NBNNE(ICLE) SEGINI IPT8 IPT8.ITYPEL=ICLE 100 CONTINUE CALL TRMESS('Pointez les points de l''element') NBELEM=NBELEM+1 SEGADJ IPT8 CALL CHCOUL(5) DO 110 I=1,NBNN CALL TRDIG(X,Y,INCLE) IF (INCLE.EQ.3) GOTO 141 DO 120 IP=1,ITE IF (IVU(IP).NE.1) GOTO 120 IF((X-XPROJ(1,IP))**2+(Y-XPROJ(2,IP))**2.LT.XPR) GOTO 130 120 CONTINUE ITE=ITE+1 SEGADJ XPROJ XPROJ(1,ITE)=X XPROJ(2,ITE)=Y XPROJ(3,ITE)=TTEMP XCOOR(**)=X XCOOR(**)=Y IF (IDIM.EQ.3) XCOOR(**)=TTEMP XCOOR(**)=DENSIT nbpts=nbpts+1 IP=ITE ICPR(**)=ITE III=ICPR(/1) IDCP(**)=III IVU(**)=1 IMILL(**)=0 130 CONTINUE call insegt(3,iresu) TTEMP=XPROJ(3,IP) XTR(I)=XPROJ(1,IP) YTR(I)=XPROJ(2,IP) IF (I.NE.1) CALL POLRL(2,XTR(I-1),YTR(I-1),ZTR) IF (I.EQ.NBNN.AND.IPT8.ITYPEL.GT.3) THEN XTR(2)=XTR(I) YTR(2)=YTR(I) CALL POLRL(2,XTR,YTR,ZTR) ENDIF IPT8.NUM(I,NBELEM)=IDCP(IP) 110 CONTINUE IPT8.ICOLOR(NBELEM)=IDCOUL CALL CHCOUL(IDNOIR) DO 140 I=1,NBNN IPR=ICPR(IPT8.NUM(I,NBELEM)) XTR(1)=XPROJ(1,IPR) YTR(1)=XPROJ(2,IPR) XTR(2)=XPROJ(1,IPR) YTR(2)=XPROJ(2,IPR) CALL POLRL(2,XTR,YTR,ZTR) IMILL(IPR)=1 140 CONTINUE 141 CONTINUE CALL TRMESS('Fin pour arreter la definition d''elements') CALL TRAFF(IREP) IF (IREP.NE.1) GOTO 100 CALL TRGET * ('Donnez si necessaire un nom aux elements crees :',ZONE) IF (ZONE(1:1).NE.' ') THEN ENDIF CALL TRMESS('Ajou pour ajouter le maillage au maillage courant') CALL TRAFF(IREP) IF (IREP.NE.1) THEN SEGDES IPT8 RETURN ENDIF IF (LISOUS(/1).EQ.0) THEN IF (ITYPEL.EQ.IPT8.ITYPEL) THEN NBELE0=NUM(/2) NBELE8=IPT8.NUM(/2) NBELEM=NBELE0+NBELE8 NBNN=NUM(/1) NBREF=0 NBSOUS=0 SEGADJ MELEME DO 800 I=NBELE0+1,NBELEM ICOLOR(I)=IPT8.ICOLOR(I-NBELE0) DO 800 J=1,NBNN NUM(J,I)=IPT8.NUM(J,I-NBELE0) 800 CONTINUE SEGDES IPT8 RETURN ENDIF SEGINI,IPT2=MELEME NBSOUS=2 NBREF=0 NBNN=0 NBELEM=0 SEGADJ MELEME ITYPEL=0 LISOUS(1)=IPT2 LISOUS(2)=IPT8 RETURN ENDIF DO 810 IO=1,LISOUS(/1) IPT1=LISOUS(IO) IF (IPT1.ITYPEL.NE.IPT8.ITYPEL) GOTO 810 NBELE1=IPT1.NUM(/2) NBELE8=IPT8.NUM(/2) NBELEM=NBELE1+NBELE8 NBNN=IPT1.NUM(/1) NBREF=0 NBSOUS=0 SEGADJ IPT1 DO 820 I=NBELE1+1,NBELEM IPT1.ICOLOR(I)=IPT8.ICOLOR(I-NBELE1) DO 820 J=1,NBNN IPT1.NUM(J,I)=IPT8.NUM(J,I-NBELE1) 820 CONTINUE SEGDES IPT8 RETURN 810 CONTINUE NBELEM=0 NBREF=0 NBSOUS=LISOUS(/1)+1 NBNN=0 SEGADJ MELEME LISOUS(NBSOUS)=IPT8 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales