1 : C G2POLC SOURCE CHAT 06/03/29 21:22:18 5360 2 : C 3 : SUBROUTINE G2POLC(IGR1,NBLIG1,NBCOL1, 4 : > NBAJ,NBCOAJ,INCOAJ,NBLGAJ,INLGAJ, 5 : > INDICE,INCREM,COORD,NBCOOR,IDIMC, 6 : > ITVL,NITMAX, 7 : > IGR,NBLIG,NBCOL,iarr) 8 : C ********************************************************************** 9 : C OBJET G2POLC : AJOUTE LIGNES ET COLONNES A UNE GRILLE GEOMETRIQUE 10 : C 11 : C EN ENTREE : 12 : C IGR1(NBCOL1,NBLIG1) : TABLEAU D'INDICES DES NOEUDS 13 : C IDIMC : DIMENSION DE L'ESPACE (=3) 14 : C COORD : TABLEAU DES COORDONNEES DES NOEUDS 15 : C NBCOOR: NOMBRE DE POINTS DANS LE TABLEAU COORD 16 : C 17 : C NBAJ(1) : NOMBRE D'AJOUTS DE COLONNES 18 : C INCOAJ() : TABLEAU DES POSITIONS D'AJOUT 19 : C NBCOAJ(I) : NOMBRE DE COLONNES A AJOUTER 20 : C AVANT INCOAJ(I) SI NEGATIF 21 : C APRES INCOAJ(I) SI POSITIF 22 : C NBAJ(2) : NOMBRE D'AJOUTS DE LIGNES 23 : C INLGAJ() : TABLEAU DES POSITIONS D'AJOUT 24 : C NBLGAJ(I) : NOMBRE DE LIGNES A AJOUTER 25 : C AVANT INLGAJ(I) SI NEGATIF 26 : C APRES INLGAJ(I) SI POSITIF 27 : C 28 : C INDICE : INDICE POUR REMPLIR LES NOUVELLES COLONNES 29 : C INCREM : INCREMENT DE L'INDICE 30 : C 31 : C ITVL : TABLEAU DE TRAVAIL (ENTIERS) 32 : C NITMAX: TAILLE DU TABLEAU ITVL 33 : C ON A BESOIN DU TABLEAU DE TRAVAIL SEULEMENT SI ON AJOUTE 34 : C SIMULTANEMENT DES LIGNES ET DES COLONNES. LA PLACE NECES- 35 : C SAIRE EST DE : (NBCOL1+NBCOAJ(i))*NBLIG1 36 : C 37 : C EN SORTIE : 38 : C IGR(NBCOL,NBLIG) : TABLEAU D'INDICES MODIFIES 39 : C COORD,NBCOOR : POINTS AJOUTES 40 : C 41 : C ********************************************************************** 42 : IMPLICIT INTEGER(I-N) 43 : INTEGER IGR1(*),NBLIG1,NBCOL1 44 : INTEGER NBCOAJ(*),INCOAJ(*),NBLGAJ(*),INLGAJ(*),NBAJ(*) 45 : REAL*8 COORD(*) 46 : INTEGER INDICE,INCREM,IDIMC,NBCOOR,ITVL(*),NITMAX 47 : INTEGER IGR(*),NBLIG,NBCOL,iarr 48 : C 49 : INTEGER INDXYZ,I,IGR11,NBCO11,NBLG11,IOP 50 : C 51 : INDXYZ = INDICE 52 : NBCOL = NBCOL1 53 : NBLIG = NBLIG1 54 : IGR11 = 1 55 : C 56 : C ============================== 57 : C --- ON AJOUTE DES COLONNES A GR1 --- 58 : C ============================== 59 : C 60 : DO 10 I=1,NBAJ(1) 61 : NBCOL = NBCOL + NBCOAJ(I) 62 : 10 CONTINUE 63 : DO 20 I=1,NBAJ(2) 64 : NBLIG = NBLIG + NBLGAJ(I) 65 : 20 CONTINUE 66 : C 67 : IF( NBCOL.GT.NBCOL1 )THEN 68 : IF( NBLIG.GT.NBLIG1 )THEN 69 : C ---- ON A BESOIN D'UN TABLEAU TAMPON ---- 70 : IF( NITMAX.LT. (IGR11-1+NBCOL*NBLIG1))THEN 71 : iarr = -2 71 : CALL DSERRE(1,iarr,'G2POLC',' POUR COMPLETER LA GRILLE ') 71 : CALL ESEINT(1,'PLACE NECESSAIRE ',NBCOL*NBLIG,1) 72 : GOTO 9999 73 : ENDIF 73 : CALL G2MOCO(IGR1,NBLIG1,NBCOL1, 74 : > NBAJ(1),INCOAJ,NBCOAJ,INDICE,INCREM, 75 : > ITVL(IGR11),NBLG11,NBCO11) 76 : ELSE 76 : CALL G2MOCO(IGR1,NBLIG1,NBCOL1, 77 : > NBAJ(1),INCOAJ,NBCOAJ,INDICE,INCREM, 78 : > IGR,NBLIG,NBCOL) 79 : ENDIF 80 : C 80 : CALL G2POCO(IGR1,NBLIG1,NBCOL1, 81 : > NBAJ(1),INCOAJ,NBCOAJ,INDXYZ,INCREM, 82 : > COORD,IDIMC) 83 : NBCOOR = INDXYZ - 1 84 : ENDIF 85 : C 86 : C ============================ 87 : C --- ON AJOUTE DES LIGNES A GR1 --- 88 : C ============================ 89 : C 90 : IF(NBLIG.EQ.NBLIG1)THEN 91 : IF(NBCOL.EQ.NBCOL1)THEN 92 : IOP = 1 92 : CALL G2COPY(IGR1,NBCOL1,NBLIG1,IOP, 93 : > IGR,NBCOL,NBLIG ) 94 : ENDIF 95 : GOTO 9999 96 : ENDIF 97 : C 98 : IF( NBCOL.EQ.NBCOL1 ) THEN 98 : CALL G2MOLG(IGR1,NBLIG1,NBCOL1, 99 : > NBAJ(2),INLGAJ,NBLGAJ,INDICE,INCREM, 100 : > IGR,NBLIG,NBCOL) 100 : CALL G2POLG(IGR1,NBLIG1,NBCOL1, 101 : > NBAJ(2),INLGAJ,NBLGAJ,INDXYZ,INCREM, 102 : > COORD,IDIMC) 103 : ELSE 103 : CALL G2MOLG(ITVL(IGR11),NBLG11,NBCO11, 104 : > NBAJ(2),INLGAJ,NBLGAJ,INDICE,INCREM, 105 : > IGR,NBLIG,NBCOL) 106 : C CORRECTION BUG : IGR11 REMPLACE PAR ITVL(IGR11) 106 : CALL G2POLG(ITVL(IGR11),NBLG11,NBCO11, 107 : > NBAJ(2),INLGAJ,NBLGAJ,INDXYZ,INCREM, 108 : > COORD,IDIMC) 109 : ENDIF 110 : NBCOOR = INDXYZ - 1 111 : C 112 : 9999 END 113 : 114 : 115 :
© Cast3M 2003 - All rights reserved.
Disclaimer