pvect
C PVECT SOURCE PV 20/03/24 21:21:06 10554 C======================================================================= C C CALCULE LE PRODUIT VECTORIEL DE n-1 : - POINTS C - CHPOINTS C - CHAMELEMS c avec n : dimension (2D/3D) C C REM : pour les CHPOINT et CHAMELEM, il faut fournir le nom C des n composantes ! C C======================================================================= C SUBROUTINE PVECT IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCGEOME -INC SMCOORD C C erreur : Fonction indisponible en dimension %i1. IF (IDIM.NE.2.AND.IDIM.NE.3) THEN INTERR(1)=IDIM RETURN ENDIF C c Lecture d'1 point ? IF(IRETOU.EQ.0) GO TO 10 C C======================================================================= C CAS DE 1 POINT (en 2D) ou 2 POINTS (3D) C======================================================================= C SEGACT MCOORD*mod IREF1=(IDIM+1)*(IP1-1) X1=XCOOR(IREF1+1) Y1=XCOOR(IREF1+2) IF (IDIM.EQ.2) THEN c 2D : 1 POINT (implicitement on calcule le prod vect avec Z) NBPTS=nbpts+1 SEGADJ MCOORD XCOOR((NBPTS-1)*3+1)=-Y1 XCOOR((NBPTS-1)*3+2)=X1 XCOOR((NBPTS-1)*3+3)=DENSIT ELSE c 3D : 2 POINTS IF (IERR.NE.0) RETURN IREF2=(IDIM+1)*(IP2-1) Z1=XCOOR(IREF1+3) X2=XCOOR(IREF2+1) Y2=XCOOR(IREF2+2) Z2=XCOOR(IREF2+3) NBPTS=nbpts+1 SEGADJ MCOORD XCOOR((NBPTS-1)*4+1)=Y1*Z2-Z1*Y2 XCOOR((NBPTS-1)*4+2)=Z1*X2-X1*Z2 XCOOR((NBPTS-1)*4+3)=X1*Y2-Y1*X2 XCOOR((NBPTS-1)*4+4)=DENSIT ENDIF IR=NBPTS RETURN C C======================================================================= C CAS CHPOINT C======================================================================= C 10 CONTINUE IF(IRETOU.EQ.0) GOTO 20 IF (IERR.NE.0) RETURN IF (IERR.NE.0) RETURN IF (IDIM.EQ.3) THEN IF (IERR.NE.0) RETURN IF (IERR.NE.0) RETURN ELSE MCHPO2=0 MLMOT2=0 ENDIF IF (IERR.NE.0) RETURN IF (IERR.NE.0) RETURN RETURN 20 CONTINUE C C======================================================================= C CAS CHAMELEM C======================================================================= C IF(IRETOU.EQ.0) GOTO 99 IF (IERR.NE.0) RETURN c cas 2D IF (IDIM.EQ.2) THEN IF(IERR.NE.0) RETURN c write(*,*) 'appel a PROVC2',IPCHE1,MLMOT1,MLMOT3 c cas 3D ELSE IF(IERR.NE.0) RETURN IF(IERR.NE.0) RETURN IF(IERR.NE.0) RETURN c write(*,*) 'appel a PROVC3',IPCHE1,IPCHE2,MLMOT1,MLMOT2,MLMOT3 ENDIF c write(*,*) 'PVECT: on va ecrire',IPCHE3 RETURN C======================================================================= C PAS D OPERANDE CORRECTE TROUVE C======================================================================= C IF(IRETOU.NE.0) THEN ELSE ENDIF END
© Cast3M 2003 - Tous droits réservés.
Mentions légales