q4crgr
C Q4CRGR SOURCE CHAT 06/03/29 21:30:47 5360 C > COORD,IDIMC,NBCOOR, > NBLIG,NBCOL,ICOIN, > ITVL,NITMAX, > IDE,ITRNOE,NBNMAX,NBE,NBP, > NBEMAX,NBPMAX,ITRACE,iarr) C ********************************************************************** C OBJET Q4CRGR : MAILLAGE EN GRILLE A PARTIR DE 4 COTES C OBJET (MEME CARDINAUX SUR LES COTES OPPOSES). C C EN ENTREE : C ------------- MAILLAGE LINEIQUE ------------ C IC1 : INDICES DES NOEUDS DU COTE 1 COMPLETE A NBCOL C ... C IC4 : INDICES DES NOEUDS DU COTE 4 COMPLETE A NBLIG C N : N(I) NOMBRE D'ELEMENTS SUR LE COTE I (INITIAL) C COORD : TABLEAU DES COORDONNEES DES POINTS C NBCOOR : NOMBRE DE POINTS C IDIMC : DIMENSION DE L'ESPACE C C ------------- INFORMATIONS SUR LA GRILLE ----------- C NBLIG, NBCOL, ICOIN : NOMBRE DE LIGNE ET NOMBRE DE COLONNES DE C LA GRILLE AVEC LES VALEURS DES COUPER-COLLER AUX COINS. C C ------------- TABLEAU DE TRAVAIL ----------- C ITVL : TABLEAU D'ENTIERS POUR LES CALCULS C (NBCOL*NBLIG) POUR LA GRILLE C NITMAX : TAILLE DE ITVL, NITMAX >= (NBCOL*NBLIG) C C ITRNOE : TABLEAU DES ELEMENTS (A REMPLIR) C NBEMAX : NOMBRE MAXIMUM D'ELEMENTS C NBEMAX >= (NBLIG-1)*(NBCOL-1) C COORD : TABLEAU DES COORDONNEES (A COMPLETER) C NBPMAX : NOMBRE MAXIMUM DE POINTS C NBPMAX >= (NBLIG*NBCOL) C C EN SORTIE : C ------------- LE MAILLAGE -------------------------- C IDE,ITRNOE,ITRTRI,NBE,NBP, : LE MAILLAGE EN QUADRANGLES C COORD : TABLEAU DES COORDONNEES DES POINTS (COMPLETE) C iarr : CODE D'ERREUR C -1 SI DONNEES INCORRECTES C -2 SI TABLEAUX INSUFFISANTS(COORD,ITRNOE OU ITVL) C ********************************************************************** IMPLICIT INTEGER(I-N) INTEGER IC1(*),IC2(*),IC3(*),IC4(*),N(*) REAL*8 COORD(*) INTEGER IDIMC,NBCOOR INTEGER NBLIG,NBCOL,ICOIN(*) INTEGER ITVL(*),NITMAX INTEGER IDE,ITRNOE(*),NBNMAX,NBE,NBP,NBEMAX,NBPMAX INTEGER ITRACE,iarr C INTEGER I,J,IGR,INDICE,INDXYZ,INUL C C ======================================== C --- 1. CREATION DE LA GRILLE 2D ET COLLAGE --- C ======================================== C IF(NITMAX.LT.(NBCOL*NBLIG))THEN iarr = -2 > (NBCOL*NBLIG),1) ENDIF C IGR = 1 INUL = 0 C CALL G2CRSP( NBLIG,NBCOL,INUL,INUL,ITVL(IGR) ) DO 710 JG=1,NBLIG*NBCOL 710 ITVL(JG)=0 C ----------------------------------------- C --- TRANSFERT DES COURBES DANS LA GRILLE 2D ---- C ----------------------------------------- C --- PREMIER LIGNE : J = 1 C DO 100 I=1,NBCOL ITVL(IGR+I-1) = IC1(I) 100 CONTINUE C C --- DERNIERE LIGNE : J = NBLIG DO 110 I=1,NBCOL ITVL((NBLIG-1)*NBCOL+IGR+I-1) = IC3(NBCOL-I+1) 110 CONTINUE C C --- PREMIERE COLONNE : I = 1 DO 120 J=1,NBLIG ITVL((J-1)*NBCOL+IGR) = IC4(NBLIG-J+1) 120 CONTINUE C C --- DERNIERE COLONNE : I = NBCOL DO 130 J=1,NBLIG ITVL((J-1)*NBCOL+IGR+NBCOL-1) = IC2(J) 130 CONTINUE C C PRINT *,'ITRACE =',ITRACE C PRINT *,'GRILLE 2D GR : ' C PRINT *,'--------------------' C PRINT *,'NBCOL,NBLIG = ',NBCOL,NBLIG C PRINT *,((ITVL((I-1)*NBCOL+J+IGR-1),J=1,NBCOL),'+',I=1,NBLIG) INDICE = NBCOOR + 1 DO 140 I=1,(NBCOL*NBLIG) IF( ITVL(I-1+IGR).EQ. 0 )THEN ITVL(I-1+IGR)= INDICE INDICE = INDICE + 1 ENDIF 140 CONTINUE C C PRINT *,'GRILLE 2D GR : ' C PRINT *,'--------------------' C PRINT *,'NBCOL,NBLIG = ',NBCOL,NBLIG C PRINT *,((ITVL((I-1)*NBCOL+J+IGR-1),J=1,NBCOL),'+',I=1,NBLIG) C C ------------------- C --- COLLAGE DES COINS ---- C ------------------- C --- ON PASSE SUR LA STRUCTURE MAILLAGE --- C C C PRINT *,'ITRACE =',ITRACE C PRINT *,'MAILLAGE 2D : ' C PRINT *,'--------------------' C PRINT *,'NBE,NBP = ',NBE,NBP C PRINT *,((ITRNOE((I-1)*NBNMAX+J),J=1,NBNMAX),'+',I=1,NBE) C DO 10 I=1,4 IF( iarr.NE. 0 )GOTO 999 10 CONTINUE C C C PRINT *,'ITRACE =',ITRACE C PRINT *,'MAILLAGE 2D : ' C PRINT *,'--------------------' C PRINT *,'NBE,NBP = ',NBE,NBP C PRINT *,((ITRNOE((I-1)*NBNMAX+J),J=1,NBNMAX),'+',I=1,NBE) C PRINT *,'GRILLE 2D GR : ' C PRINT *,'--------------------' C PRINT *,'NBCOL,NBLIG = ',NBCOL,NBLIG C PRINT *,((ITVL((I-1)*NBCOL+J+IGR-1),J=1,NBCOL),'+',I=1,NBLIG) C C C --- RENUMEROTATION DES NOEUDS DU MAILLAGE ---- DO 150 I=1,NBE*NBNMAX IF(ITRNOE(I).GT.0)ITRNOE(I) = ITVL(IGR+ITRNOE(I)-1) 150 CONTINUE C C PRINT *,'ITRACE =',ITRACE C PRINT *,'MAILLAGE 2D : ' C PRINT *,'--------------------' C PRINT *,'NBE,NBP = ',NBE,NBP C PRINT *,((ITRNOE((I-1)*NBNMAX+J),J=1,NBNMAX),'+',I=1,NBE) C C IF( iarr.NE.0 )THEN GOTO 999 ENDIF C C C ======================================== C --- 2. CALCUL DES COORDONNEES DE LA GRILLE --- C ======================================== C C PRINT *,'IC1 = ',(IC1(J),J=1,NBCOL) C PRINT *,'IC2 = ',(IC2(J),J=1,NBLIG) C PRINT *,'IC3 = ',(IC3(J),J=1,NBCOL) C PRINT *,'IC4 = ',(IC4(J),J=1,NBLIG) C PRINT *,'NBCOOR = ',NBCOOR C INDXYZ = NBCOOR + 1 NBP = NBCOOR > COORD,NBCOL,NBLIG,IDIMC, > COORD,NBP,iarr) NBCOOR = NBP C C C PRINT *,'GRILLE 2D GR : ' C PRINT *,'--------------------' C PRINT *,'NBCOL,NBLIG = ',NBCOL,NBLIG C PRINT *,((ITVL((I-1)*NBCOL+J+IGR-1),J=1,NBCOL),'+',I=1,NBLIG) C PRINT *,'NOMBRE DE NOEUD = ',NBP C PRINT *,((COORD((I-1)*IDIMC+J),J=1,IDIMC),'+',I=1,NBP) C PRINT *,'ITRACE =',ITRACE C IF( iarr.NE.0 )THEN GOTO 999 ENDIF C 999 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales