homoth
C HOMOTH SOURCE SP204843 24/03/15 21:15:05 11871 C Ce sous-programme realise une homothetie sur un objet C 10/2003 : modifications pour prendre en compte cas IDIM=1. SUBROUTINE HOMOTH IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC SMELEME SEGMENT INOSUP(0) SEGMENT INOEUD(NNODE) COMMON / CTOURN / XPT1,YPT1,ZPT1,XV1,YV1,ZV1,XV2,YV2,ZV2, . XVEC,YVEC,ZVEC,ANGLE,ICLE,XP1,YP1,ZP1 ICLE=3 C Lecture du rapport non nul de l'homothetie ANGLE=XXX IF (IERR.NE.0) RETURN C Lecture d'un maillage, sinon lecture d'un point IF (IROT.EQ.0) THEN ENDIF C Lecture du centre de l'affinite IF (IERR.NE.0) RETURN C Lecture éventuelle d'autres points IF (IROT.EQ.0) THEN SEGINI INOSUP 11 CONTINUE IF (IRET.EQ.1) THEN INOSUP(**)=IP3 GOTO 11 ENDIF NNODE=INOSUP(/1)+1 SEGINI INOEUD INOEUD(1)=IP2 IF (INOSUP(/1).GT.0) THEN INOEUD(2)=IPT1 DO INODE=1,INOSUP(/1)-1 INOEUD(2+INODE)=INOSUP(INODE) ENDDO IPT1=INOSUP(INOSUP(/1)) ENDIF SEGSUP INOSUP ENDIF * SEGACT MCOORD*mod IREF=IPT1*(IDIM+1)-IDIM XPT1=XCOOR(IREF) YPT1=0.D0 ZPT1=0.D0 IF (IDIM.GE.2) THEN YPT1=XCOOR(IREF+1) IF (IDIM.GE.3) ZPT1=XCOOR(IREF+2) ENDIF IF (IROT.EQ.1) THEN ELSE idimp1=IDIM+1 NBPTS=nbpts+NNODE SEGADJ MCOORD DO INODE=1,NNODE IP2=INOEUD(INODE) IP3=NBPTS-(NNODE-INODE) IREF=(IP2-1)*idimp1 IPTH=(IP3-1)*idimp1 XCOOR(IPTH+1)=XPT1+ANGLE*(XCOOR(IREF+1)-XPT1) XCOOR(IPTH+idimp1)=ANGLE*XCOOR(IREF+idimp1) IF (IDIM.GE.2) THEN XCOOR(IPTH+2)=YPT1+ANGLE*(XCOOR(IREF+2)-YPT1) IF (IDIM.GE.3) XCOOR(IPTH+3)=ZPT1+ANGLE*(XCOOR(IREF+3) $ -ZPT1) ENDIF ENDDO SEGSUP INOEUD * Il faut renvoyer les noeuds dans le bon ordre DO INODE=1,NNODE IP3=NBPTS-(INODE-1) ENDDO ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales