prsurf
C PRSURF SOURCE OF166741 26/03/02 21:15:02 12482 C CE SOUS PROGRAMME SERT D'INTERFACE POUR LE SOUS PROGRAMME TRANSF C IL PREPARE SES DONNEES ET PROJETTE LES POINTS SUR UN PLAN C SUBROUTINE PRSURF IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCGEOME -INC SMELEME -INC SMCOORD SEGMENT XPROJ(3,1) SEGMENT /FER/(NFI(ITT),MAI(IPP),ITOUR) PARAMETER (LCAS = 6) CHARACTER*4 MCLE(LCAS) DATA MCLE/'PLAN','SPHE','CYLI','CONI','TORI','POLY'/ DIMENSION ITEST(0:30) real*8 tcval(13) isens=0 msurfp=0 DO I=0,NBCOUL-1 ITEST(I)=0 ENDDO IOBL=IDIM-2 NBCAS=6 IF (IDIM.EQ.2) NBCAS=1 ICOND=1 IF (IDIM.EQ.2) ICOND=0 IF (IERR.GT.1) RETURN IF (IDIM.EQ.2) ICAS=1 IF (ICAS .EQ. 6) THEN ELSE END IF IF (IERR.NE.0) RETURN IPCON=IPT1 SEGACT IPT1 C Quelques verifications sur le maillage : ITY1 = ipt1.ITYPEL IF (ipt1.LISOUS(/1).GT.0) THEN RETURN ENDIF IF (ITY1.LT.1) THEN RETURN ENDIF IF (KSURF(ITY1).NE.0) THEN RETURN ENDIF IPT5=1 IF (IERR.GT.1) RETURN DO I=1,IPT1.NUM(/2) ITEST(IPT1.ICOLOR(I))=1 ENDDO ICHCOL=-1 DO 14 I=0,NBCOUL-1 IF (ITEST(I).EQ.1) THEN IF (ICHCOL.EQ.-1) THEN ICHCOL=I ELSE ICHCOL=ITABM(ICHCOL,I) ENDIF ENDIF 14 CONTINUE SEGINI SAUV DO I=1,NSA(/1) NSA(I)=NFI(I) ENDDO * Lecture chpoin de densite ichp=0 if (iretou.eq.1) then endif $ tcval,isens) $ tcval,isens) $ isens) IF (IERR.GT.1) RETURN * cas du maillage polygonal ==> dualisation IF (IERR.GT.1) RETURN IF (ICAS .EQ. 6) THEN ID1=nbpts NDEB = NUMNP + 1 END IF * * Cas du maillage polygonal ==> dualisation * IF (ILCOUR.eq.32) THEN ELSE IPT2.ITYPEL=4 IF (KSURF(ILCOUR).GE.8) IPT2.ITYPEL=8 ITY=IPT2.ITYPEL IF (KSURF(ILCOUR).EQ.6.OR.KSURF(ILCOUR).EQ.10) ITY=ITY+2 ENDIF ID1=nbpts $ tcval,isens) $ tcval,isens) $ isens) IF (KSURF(ILCOUR).GE.8) GOTO 100 NBNN=IPT2.NUM(/1) NBREF=1 NBSOUS=0 NBELEM=NUMELG SEGINI IPT1 IDEC=ID1-NDEB+1 DO 50 J=1,NBELEM IPT1.ICOLOR(J)=ICHCOL DO 51 I=1,NBNN IANC=IPT2.NUM(I,J) IF (IANC.GE.NDEB) THEN IPT1.NUM(I,J)=IANC+IDEC ELSE IPT1.NUM(I,J)=NSA(IANC) ENDIF 51 CONTINUE 50 CONTINUE SEGSUP SAUV IPT1.ITYPEL=IPT2.ITYPEL SEGSUP IPT2 200 CONTINUE IPT1.LISREF(1)=IPCON RETURN 100 CONTINUE * * Polygone * IF (ILCOUR .EQ. 32) THEN IPT1 = IPT2 NBSOUS=IPT1.LISOUS(/1) IDEC=ID1-NDEB+1 NBELEM=0 NBNN=0 NBREF=1 SEGADJ IPT1 IPT1.LISREF(1)= IPCON DO NTEL = 1, IPT1.LISOUS(/1) IPT3 = IPT1.LISOUS(NTEL) NBELEM = IPT3.NUM(/2) DO NUN = 1, IPT3.NUM(/1) IF (IANC .GE.NDEB) THEN ELSE ENDIF ENDDO ENDDO ENDDO RETURN ENDIF C ON A DES CARRES ET DES TRIANGLES NBRE=IPT2.NUM(/1) IDEC=ID1-NDEB+1 NBSOUS=0 NBREF=0 NBTRI=0 DO I=1,NUMELG IF (IPT2.NUM(NBRE,I).EQ.0) NBTRI=NBTRI+1 ENDDO NBELEM=NBTRI IF (NBTRI.EQ.NUMELG) NBREF=1 NBNN=3 IF (NBTRI.EQ.0) GOTO 104 IF (NBRE.EQ.8) NBNN=6 NBNNT=NBNN SEGINI IPT3 C A CAUSE DE L'OPTIMISEUR IBM (POUR AVOIR IPT4<>0) IPT4=IPT3 IPT3.ITYPEL=4 IF (NBRE.EQ.8) IPT3.ITYPEL=6 104 CONTINUE NBNN=NBRE NBNNQ=NBNN NBELEM=NUMELG-NBTRI IF (NBELEM.EQ.0) GOTO 105 IF (NBELEM.EQ.NUMELG) NBREF=1 SEGINI IPT4 C TOUJOURS L'OPTIMISEUR IF (NBTRI.EQ.0) IPT3=IPT4 IPT4.ITYPEL=8 IF (NBRE.EQ.8) IPT4.ITYPEL=10 105 CONTINUE J=0 K=0 DO 102 I=1,NUMELG IF (IPT2.NUM(NBRE,I).NE.0) GOTO 103 J=J+1 IPT3.ICOLOR(J)=ICHCOL DO 110 L=1,NBNNT IANC=IPT2.NUM(L,I) IF (IANC.GE.NDEB) GOTO 111 IPT3.NUM(L,J)=NSA(IANC) GOTO 110 111 IPT3.NUM(L,J)=IANC+IDEC 110 CONTINUE GOTO 102 103 K=K+1 IPT4.ICOLOR(K)=ICHCOL DO 120 L=1,NBNNQ IANC=IPT2.NUM(L,I) IF (IANC.GE.NDEB) GOTO 121 IPT4.NUM(L,K)=NSA(IANC) GOTO 120 121 IPT4.NUM(L,K)=IANC+IDEC 120 CONTINUE 102 CONTINUE SEGSUP IPT2,SAUV NBNN=0 NBQUA=NBELEM NBELEM=0 NBSOUS=0 IF (NBTRI.NE.0) NBSOUS=NBSOUS+1 IF (NBQUA.NE.0) NBSOUS=NBSOUS+1 IF (NBSOUS.EQ.1) GOTO 180 NBREF=1 SEGINI IPT1 ISOUS=0 IF (NBTRI.EQ.0) GOTO 171 ISOUS=ISOUS+1 IPT1.LISOUS(ISOUS)=IPT3 171 CONTINUE IF (NBQUA.EQ.0) GOTO 172 ISOUS=ISOUS+1 IPT1.LISOUS(ISOUS)=IPT4 172 CONTINUE GOTO 200 180 CONTINUE IF (NBTRI.NE.0) IPT1=IPT3 IF (NBQUA.NE.0) IPT1=IPT4 SEGACT IPT1*MOD IPT1.LISREF(1)=IPCON GOTO 200 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales