g2poco
C G2POCO SOURCE CHAT 05/01/13 00:15:06 5004 C C > NBAJ,INCOAJ,NBCOAJ,INDICE,INCREM, > COORD,IDIMC) C ********************************************************************** C OBJET G2POCO : AJOUTE DES POINTS SUR DES COLONNES D'UN TABLEAU C C EN ENTREE : C IGR1(NBLIG1,NBCOL1) : LE TABLEAU DES INDICES NOEUDS (DANS COORD) C C NBAJ : NOMBRE D'AJOUTS C INCOAJ() : TABLEAU DES POSITIONS D'AJOUT C NBCOAJ(I) : NOMBRE DE COLONNES A AJOUTER C AVANT INCOAJ(I) SI NEGATIF C APRES INCOAJ(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 ICOAJ,I,J,K,KK,NUM1,NUM2,NBCC REAL*8 XN,XO,XE,V12 C ICOAJ = 1 DO 50 J=1,NBCOL1 C C --- ON AJOUTE DES COLONNES AVANT --- C IF( J.EQ. -INCOAJ(ICOAJ) )THEN IF((ICOAJ.GT.1).AND. > ((J-1).EQ.INCOAJ(ICOAJ-1)) )THEN NBCC = NBCOAJ(ICOAJ) + NBCOAJ(ICOAJ-1) ELSE NBCC = NBCOAJ(ICOAJ) ENDIF XN = 1.0 / (NBCC + 1.0) DO 25 K=1,NBCOAJ(ICOAJ) DO 20 I = 1,NBLIG1 C --- INTERPOLATION ENTRE LA COLONNE J-1 ET J --- NUM1 = IGR1((I-1)*NBCOL1+J-1) 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 - > (NBCOAJ(ICOAJ) -K + 1)*V12*XN 15 CONTINUE 20 CONTINUE 25 CONTINUE ICOAJ = ICOAJ+1 ENDIF C C --- ON AJOUTE DES COLONNES APRES --- C IF((NBAJ.GE.ICOAJ).AND.( J.EQ. INCOAJ(ICOAJ)))THEN IF((NBAJ.GT.ICOAJ).AND. > ((J+1).EQ.-INCOAJ(ICOAJ+1)))THEN NBCC = NBCOAJ(ICOAJ) + NBCOAJ(ICOAJ+1) ELSE NBCC = NBCOAJ(ICOAJ) ENDIF XN = 1.0 / (NBCC + 1.0) DO 45 K=1,NBCOAJ(ICOAJ) DO 40 I = 1,NBLIG1 C --- INTERPOLATION ENTRE LA COLONNE J ET J+1 --- NUM1 = IGR1((I-1)*NBCOL1+J) NUM2 = IGR1((I-1)*NBCOL1+J+1) 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 ICOAJ = ICOAJ+1 ENDIF 50 CONTINUE C 9999 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales