g2polg
C G2POLG SOURCE CHAT 05/01/13 00:15:12 5004 > NBAJ,INLGAJ,NBLGAJ,INDICE,INCREM, > COORD,IDIMC) C ********************************************************************** C OBJET G2POLG : AJOUTE DES POINTS SUR DES LIGNES D'UN TABLEAU C C C EN ENTREE : C IGR1(NBLIG1,NBCOL1) : LE TABLEAU DES INDICES DES NOEUDS (DANS COORD) C C NBAJ : NOMBRE D'AJOUTS C INLGAJ() : TABLEAU DES POSITIONS D'AJOUT C NBLGAJ(I) : NOMBRE DE LIGNES A AJOUTER C AVANT INLGAJ(I) SI NEGATIF C APRES INLGAJ(I) SI POSITIF C C COORD : COORDONNEES DES NOEUDS (A COMPLETER) C IDIMC : DIMENSION DE L'ESPACE C INDICE : INDICE POUR REMPLIR COORD C (LES COORDONNEES NOUVEAUX POINTS) C INCREM : INCREMENT DE L'INDICE C C EN SORTIE : C COORD : LE TABLEAU AVEC LES POINTS SUPPLEMENTAIRES C INDICE : L'INDICE INCREMENTE C C ********************************************************************** IMPLICIT INTEGER(I-N) INTEGER IGR1(*),NBLIG1,NBCOL1 REAL*8 COORD(*) INTEGER IDIMC C INTEGER ILGAJ,I,J,K,KK,NUM1,NUM2,NBCC REAL*8 XN,XO,XE,V12 C ILGAJ = 1 DO 50 I=1,NBLIG1 C C --- ON AJOUTE DES LIGNES AVANT --- C IF( I.EQ. -INLGAJ(ILGAJ) )THEN IF((ILGAJ.GT.1).AND. > ((I-1).EQ.INLGAJ(ILGAJ-1)))THEN NBCC = NBLGAJ(ILGAJ) + NBLGAJ(ILGAJ-1) ELSE NBCC = NBLGAJ(ILGAJ) ENDIF XN = 1.0 / (NBCC + 1.0) DO 25 K=1,NBLGAJ(ILGAJ) DO 20 J = 1,NBCOL1 C --- INTERPOLATION ENTRE LA LIGNE I-1 ET I --- NUM1 = IGR1((I-2)*NBCOL1+J) NUM2 = IGR1((I-1)*NBCOL1+J) DO 15 KK=1,IDIMC XO = COORD((NUM1-1)*IDIMC+KK) XE = COORD((NUM2-1)*IDIMC+KK) V12 = COORD((NUM2-1)*IDIMC+KK) - XO COORD((INDICE-1)*IDIMC+KK) = XE - > (NBLGAJ(ILGAJ) -K + 1)*V12*XN C COORD((INDICE-1)*IDIMC+KK) = V12*XN*K + XO 15 CONTINUE 20 CONTINUE 25 CONTINUE ILGAJ = ILGAJ+1 ENDIF C C --- ON AJOUTE DES LIGNES APRES --- C IF((NBAJ.GE.ILGAJ).AND.( I.EQ. INLGAJ(ILGAJ)))THEN IF((NBAJ.GT.ILGAJ).AND. > ((I+1).EQ.-INLGAJ(ILGAJ+1)))THEN NBCC = NBLGAJ(ILGAJ) + NBLGAJ(ILGAJ+1) ELSE NBCC = NBLGAJ(ILGAJ) ENDIF XN = 1.0 / (NBCC + 1.0) DO 45 K=1,NBLGAJ(ILGAJ) DO 40 J = 1,NBCOL1 C --- INTERPOLATION ENTRE LA LIGNE I ET I+1 --- NUM1 = IGR1((I-1)*NBCOL1+J) NUM2 = IGR1((I )*NBCOL1+J) DO 35 KK=1,IDIMC XO = COORD((NUM1-1)*IDIMC+KK) V12 = COORD((NUM2-1)*IDIMC+KK) - XO COORD((INDICE-1)*IDIMC+KK) = V12*XN*K + XO 35 CONTINUE 40 CONTINUE 45 CONTINUE ILGAJ = ILGAJ+1 ENDIF 50 CONTINUE C 9999 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales