g2po4c
C G2PO4C SOURCE CHAT 06/03/29 21:22:14 5360 C C > NB1,NB2,IDIMC,COORD,NBN,iarr) C ********************************************************************** C OBJET G2PO4C : CREATION DES POINTS D'UNE GRILLE A PARTIR DES 4 COTES C OBJET DU DOMAINE (INTERPOL. BILINEAIRE OU TRANSFINITE MAPPING) C C EN ENTREE : C IC1,IC2,IC3,IC4 : LES POINTS DES COURBES FRONTIERES C XYZ : COORDONNEES DES POINTS DES COURBES FRONTIERES C NB1 : NOMBRE DE NOEUDS DE IC1 ET IC3 C NB2 : NOMBRE DE NOEUDS DE IC2 ET IC4 C C IC1(1) EST LE NUMERO DU PREMIER POINT DONT LES COORDONNEES SONT C XYZ(1)..XYZ(IDIMC). LE CONTOUR EST FERME => IC1(1) = IC4(NB2) C C EN SORTIE : C COORD : COORDONNEES DES POINTS CALCULES C NBN : NOMBRE DE POINTS (= NB1*NB2) C iarr : 0 SI OK, -1 SI LES DONNEES SONT ERRONEES C NOMBRE DE LIGNES OU DE COLONNES NEGATIF OU NUL C NOMBRE DE NOEUDS DIFFERENTS SUR LES COTES OPPOSES C C REMARQUE : C L'ORDRE DES POINTS EST LE SUIVANT C IC1(1) ------------------- IC1(NB1) C IC4(NB2-1) ------------------- IC2(2) C IC4(NB2-2) ------------------- IC2(3) C ... C IC4(2) ------------------- IC2(NB2-1) C IC2(NB2) ------------------- IC2(1) C C C.A.D. A COORD(1) = L'ABCISSE DE IC1(1), C A COORD((NB1*NB2-1)*IDIMC+1) L'ABCISSE DE IC2(1) C ********************************************************************** IMPLICIT INTEGER(I-N) INTEGER IC1(*),IC2(*),IC3(*),IC4(*),NB1,NB2,IDIMC REAL*8 XYZ(*),COORD(*) INTEGER NBN,iarr C INTEGER I,J,K REAL*8 IU,IV,DU,DV C iarr = -1 IF((NB1.LE.1).OR.(NB2.LE.1))GOTO 999 IF(IC1(1).NE.IC4(NB2))GOTO 999 IF(IC2(1).NE.IC1(NB1))GOTO 999 IF(IC3(1).NE.IC2(NB2))GOTO 999 IF(IC4(1).NE.IC3(NB1))GOTO 999 iarr = 0 DU = 1. / (NB1-1) DV = 1. / (NB2-1) DO 10 J = 2,NB2-1 IV = (J-1) * DV DO 20 I = 2,NB1-1 IU = (I-1) * DU NBN = NBN+1 DO 30 K=1,IDIMC COORD((NBN-1)*IDIMC+K) = > ((1-IV) * XYZ((IC1(I)-1)*IDIMC+K)) + > ( IV * XYZ((IC3(NB1-I+1)-1)*IDIMC+K)) + > ((1-IU) * XYZ((IC4(NB2-J+1)-1)*IDIMC+K)) + > ( IU * XYZ((IC2(J)-1)*IDIMC+K)) - > ((1-IU) * (1-IV)* XYZ((IC4(NB2)-1)*IDIMC+K)) - > ((1-IU) * IV * XYZ((IC3(NB1)-1)*IDIMC+K)) - > ((1-IV) * IU * XYZ((IC1(NB1)-1)*IDIMC+K)) - > ( IU * IV * XYZ((IC2(NB2)-1)*IDIMC+K)) 30 CONTINUE 20 CONTINUE 10 CONTINUE C 999 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales