surfp8
C SURFP8 SOURCE PV 07/11/23 21:19:42 5978 & V2SUR,NOMB1,NOMB2,NOMB3,NOMB4) ************************************************************************ * * S U R F P 8 * ----------- * * FONCTION: * --------- * * - ETAPE 1 : MODIFICATION DES COORDONNEES PARAMETRIQUES EN FONCTION * DU NOMBRE D'ELEMENTS SUR LES LIGNES DU CONTOUR * - ETAPE 2 : OPERATION INVERSE * * * MODULES UTILISES: * ----------------- * IMPLICIT INTEGER(I-N) IMPLICIT real*8 (a-h,o-z) -INC PPARAM -INC CCOPTIO * * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * ETAPE (E) = .TRUE. POUR L'ETAPE 1 * = .FALSE. POUR L'ETAPE 2 * USUR() (E) 1ERE COORDONNEE PARAMETRIQUE DE POINTS DE LA SURFACE * VSUR() (E) 2EME COORDONNEE PARAMETRIQUE DE POINTS DE LA SURFACE * DSUR() (E) DENSITE DES POINTS DE LA SURFACE,CALCULEE DANS SURFP5 * (SEULEMENT POUR L'ETAPE 2) * LONG (E) LONGUEUR DES TABLEAUX USUR ET VSUR * U1SUR (E) BORNE INFERIEURE DU PARAMETRE 'U' * (VALEUR SAUVEE POUR L'ETAPE 2) * U2SUR (E) BORNE SUPERIEURE DU PARAMETRE 'U' * (VALEUR SAUVEE POUR L'ETAPE 2) * V1SUR (E) BORNE INFERIEURE DU PARAMETRE 'V' * (VALEUR SAUVEE POUR L'ETAPE 2) * V2SUR (E) BORNE SUPERIEURE DU PARAMATRE 'V' * (VALEUR SAUVEE POUR L'ETAPE 2) * NOMB.. (E) NOMBRE D'ELEMENTS SUR LA LIGNE * (VALEUR SAUVEE POUR L'ETAPE 2) * USUR() (S) NOUVELLE 1ERE COORDONNEE PARAMETRIQUE * VSUR() (S) NOUVELLE 2EME COORDONNEE PARAMETRIQUE * INTEGER LONG,NOMB1,NOMB2,NOMB3,NOMB4 LOGICAL ETAPE * * CONSTANTES: * ----------- * INTEGER KMAX REAL*8 DEMI,CENT PARAMETER (DEMI=0.5D0,CENT=100.D0,KMAX=30) * * VARIABLES: * ---------- * INTEGER N1,N2,N3,N4 *>>>>> P.M. 26/09/90 *+* REAL U1,U2,V1,V2,U12,U21,V12,V21,UV21,U0,V0,A,UMAX,UMIN,EPSU, REAL*8 U1,U2,V1,V2,U12,U21,V12,V21,UV21,U0,V0,A,UMAX,UMIN,EPSU, *<<<<< & USURB,USURC,USURD,VSURB,VSURC,VSURD,VMAX,VMIN,EPSV LOGICAL CONVRG SAVE U0,V0,A,N1,N2,N3,N4,U1,U2,V1,V2,U12,V12 * * REMARQUES * --------- * * PREMIERE DEFORMATION : CHANGEMENT D'ECHELLE SUIVANT U ET V , * ALLONGEMENT DE LA SURFACE, (FACTEUR CONSTANT). * * DEUXIEME DEFORMATION : LES COMPARAISONS ENTRE COTES OPPOSES * VONT ENTRAINER DES CHANGEMENTS D'ECHELLE, (FACTEUR LINEAIRE). * * AUTEUR, DATE DE CREATION: * ------------------------- * * LIONEL VIVAN 3 DECEMBRE 1987 * * LANGAGE: * -------- * * FORTRAN77 * ************************************************************************ * IF (ETAPE) THEN * * ETAPE A : PREMIERE DEFORMATION * U1=U1SUR U2=U2SUR V1=V1SUR V2=V2SUR N1=NOMB1 N2=NOMB2 N3=NOMB3 N4=NOMB4 U21=(U2-U1)*DEMI V21=(V2-V1)*DEMI UV21=ABS(U21/V21) * IF ((N1+N3).NE.0 .AND. (N2+N4).NE.0) THEN A=SQRT(UV21*(N2+N4)/(N1+N3)) USUR(I)=USUR(I)/A 110 CONTINUE * END DO U1=U1/A U2=U2/A V1=V1*A V2=V2*A * * ETAPE B : DEUXIEME DEFORMATION * U12=(U1+U2)*DEMI V12=(V1+V2)*DEMI IF (N2.NE.N4 .AND. N1.NE.N3 .AND. N1.NE.0 .AND. & N2.NE.0 .AND. N3.NE.0 .AND. N4.NE.0) THEN U0=(N4*U2-N2*U1)/(N4-N2) V0=(N3*V1-N1*V2)/(N3-N1) USURB=USUR(I) USUR(I)=U12+(VSURB-V0)*(USURB-U12)/(V12-V0) 120 CONTINUE * END DO ELSE IF ((N2.NE.N4 .AND. N1.EQ.N3) .OR. N2.EQ.0 .OR. & N4.EQ.0) THEN U0=(N4*U2-N2*U1)/(N4-N2) 130 CONTINUE * END DO ELSE IF ((N1.NE.N3 .AND. N2.EQ.N4) .OR. N1.EQ.0 .OR. & N3.EQ.0) THEN V0=(N3*V1-N1*V2)/(N3-N1) 140 CONTINUE * END DO END IF * ELSE IF ((N2+N4).EQ.0) THEN * DEGENERESCENCE 2 ET 4 U12=(U1+U2)*DEMI V12=(V1+V2)*DEMI 150 CONTINUE * END DO ELSE * DEGENERESCENCE 1 ET 3 U12=(U1+U2)*DEMI V12=(V1+V2)*DEMI USUR(I)=U12+USURD/((V12-V1)*(V12-V2)) 160 CONTINUE * END DO END IF * ELSE * *------------------------- ETAPE = .FALSE. -------------------------- * IF ((N1+N3).NE.0 .AND. (N2+N4).NE.0) THEN * * INVERSION ETAPE B * UMAX=MAX(U1,U2) UMIN=MIN(U1,U2) VMAX=MAX(V1,V2) VMIN=MIN(V1,V2) EPSU=(UMAX-UMIN)/30. EPSV=(VMAX-VMIN)/30. IF (IIMPI.EQ.1805) THEN WRITE(IOIMP,*)'UMAX,UMIN,VMAX,VMIN' WRITE(IOIMP,*)UMAX,UMIN,VMAX,VMIN END IF * IF (N1.NE.N3 .AND. N2.NE.N4 .AND. N1.NE.0 .AND. & N2.NE.0 .AND. N3.NE.0 .AND. N4.NE.0) THEN USURB=USUR(I) END IF IF (USUR(I).GE.UMAX) THEN USUR(I)=UMAX-EPSU ELSE IF (USUR(I).LE.UMIN) THEN USUR(I)=UMIN+EPSU END IF END IF * USURC=USUR(I) DO 212 K=1,KMAX IF (USUR(I).GE.UMAX) THEN USUR(I)=UMAX-EPSU ELSE IF (USUR(I).LE.UMIN) THEN USUR(I)=UMIN+EPSU END IF END IF & DSUR(I),CONVRG) IF (CONVRG) THEN IF (IIMPI.EQ.1805) THEN WRITE(IOIMP,'(I5)')K END IF * EXIT GOTO 214 END IF 212 CONTINUE * END DO 214 CONTINUE 210 CONTINUE * END DO ELSE IF ((N2.NE.N4 .AND. N1.EQ.N3) .OR. N2.EQ.0 .OR. & N4.EQ.0) THEN 220 CONTINUE * END DO ELSE IF ((N1.NE.N3 .AND. N2.EQ.N4) .OR. N1.EQ.0 .OR. & N3.EQ.0) THEN 230 CONTINUE * END DO END IF * * INVERSION ETAPE A * USUR(I)=USUR(I)*A 240 CONTINUE * END DO * ELSE IF ((N2+N4).EQ.0) THEN * DEGENERESCENCE 2 ET 4 250 CONTINUE * END DO * ELSE * DEGENERESCENCE 1 ET 3 USURD=(USUR(I)-U12)*(V12-V1)*(V12-V2) 260 CONTINUE * END DO END IF END IF * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales