1 : C SURFP9 SOURCE PV 07/11/23 21:19:44 5978 2 : SUBROUTINE SURFP9 (NUMPT,U,V,DUV,msurfp) 3 : ************************************************************************ 4 : * 5 : * S U R F P 9 6 : * ----------- 7 : * 8 : * FONCTION: 9 : * --------- 10 : * 11 : * REMPLIR LE TABLEAU DES COORDONNEES POUR UN POINT D'UNE SURFACE 12 : * PARAMETREE. 13 : * 14 : * MODULES UTILISES: 15 : * ----------------- 16 : * 17 : IMPLICIT INTEGER(I-N) 18 : IMPLICIT real*8 (a-h,o-z) 19 : -INC CCOPTIO 20 : -INC CCGEOME 21 : -INC SMCOORD 22 : -INC TMSURFP 23 : * 24 : * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) 25 : * ----------- 26 : * 27 : * NUMPT (E) NUMERO DU POINT. 28 : * U,V (E) COORDONNEES PARAMETRIQUES DU POINT. 29 : * DUV (E) SI < 0, EGAL A L'OPPOSEE DE LA DENSITE DU POINT EN 30 : * UNITES PARAMETRIQUES. 31 : * SI = 0, ON PRENDRA LA DENSITE COURANTE. 32 : * SI > 0, EGAL A LA DENSITE EN UNITES REELLES. 33 : * +MSURFP (E) POINTEUR DE SURFACE PARAMETREE. 34 : * CE SEGMENT EST SUPPOSE ACTIF. 35 : * LE SEGMENT "MCOFSU" DONT "MSURFP" POSSEDE LE POINTEUR 36 : * EST EGALEMENT SUPPOSE ACTIF. 37 : * +DENSIT (E) VOIR LE COMMUN "CGEOME". 38 : * +IDIM (E) VOIR LE COMMUN "COPTIO". 39 : * +MCOORD (E) CE SEGMENT EST SUPPOSE ACTIF ET DE LONGUEUR 40 : * SUFFISANTE. 41 : * (S) COMPLETION DU TABLEAU "XCOOR". 42 : * 43 : INTEGER NUMPT 44 : REAL*8 U,V,DUV 45 : 46 : * 47 : * VARIABLES: 48 : * ---------- 49 : * 50 : REAL*8 D1,D2,D3,D4 51 : REAL*8 U1,V1,X,Y,Z,X1,Y1,Z1 52 : * 53 : * AUTEUR, DATE DE CREATION: 54 : * ------------------------- 55 : * 56 : * PASCAL MANIGOT 3 MARS 1987 57 : * 58 : * LANGAGE: 59 : * -------- 60 : * 61 : * ESOPE77 FORTRAN77 + EXTENSION: DECLARATION "REAL*8". 62 : * 63 : ************************************************************************ 64 : * 65 : NUMPT1 = NUMPT - 1 66 : IDIMP1 = IDIM + 1 67 : * 68 : * COORDONNEES: 69 : * 69 : CALL SURFP0 (U,V, X,Y,Z,msurfp) 70 : XCOOR(NUMPT1*IDIMP1+1) = X 71 : XCOOR(NUMPT1*IDIMP1+2) = Y 72 : IF (IDIM .EQ. 3) XCOOR(NUMPT1*IDIMP1+3) = Z 73 : * 74 : * DENSITE: 75 : * 76 : IF (DUV .EQ. 0.D0) THEN 77 : XCOOR(NUMPT*IDIMP1) = DENSIT 78 : ELSE IF (DUV .GT. 0.D0) THEN 79 : XCOOR(NUMPT*IDIMP1) = DUV 80 : ELSE 81 : * LA DENSITE EST DETERMINEE EN CALCULANT LES DISTANCES REELLES DU 82 : * POINT CONSIDERE AVEC LES POINTS (U+-DUV,V) ET (U,V+-DUV). 83 : * C'EST LOURD MAIS C'EST SUR. 84 : U1 = U - DUV 85 : V1 = V 85 : CALL SURFP0 (U1,V1, X1,Y1,Z1,msurfp) 86 : D1 = (X1-X)**2 + (Y1-Y)**2 + (Z1-Z)**2 87 : D1 = SQRT(D1) 88 : U1 = U + DUV 89 : V1 = V 89 : CALL SURFP0 (U1,V1, X1,Y1,Z1,msurfp) 90 : D2 = (X1-X)**2 + (Y1-Y)**2 + (Z1-Z)**2 91 : D2 = SQRT(D2) 92 : U1 = U 93 : V1 = V - DUV 93 : CALL SURFP0 (U1,V1, X1,Y1,Z1,msurfp) 94 : D3 = (X1-X)**2 + (Y1-Y)**2 + (Z1-Z)**2 95 : D3 = SQRT(D3) 96 : U1 = U 97 : V1 = V + DUV 97 : CALL SURFP0 (U1,V1, X1,Y1,Z1,msurfp) 98 : D4 = (X1-X)**2 + (Y1-Y)**2 + (Z1-Z)**2 99 : D4 = SQRT(D4) 100 : XCOOR(NUMPT*IDIMP1) = (D1 + D2 + D3 + D4) / 4. 101 : END IF 102 : * 103 : END 104 : 105 : 106 : 107 : 108 : 109 : 110 : 111 : 112 :
© Cast3M 2003 - All rights reserved.
Disclaimer