1 : C S0AJNO SOURCE CHAT 06/03/29 21:32:42 5360 2 : C ***************************************************************** 3 : C MODULE : ST (STRUCTURE DES DONNEES) 4 : C FICHIER : ST_0DSTRUCT.F 5 : C OBJET : AJOUT DE POINTS DANS UN MAILLAGE 6 : C FONCT. : 7 : C S0AJNO : AJOUTE UN POINT ISOLE OU LIBRE 8 : C S0DTNO : SUPPRIME LE POINT ISOLE OU LIBRE 9 : C 10 : C AUTEUR : O. STAB 11 : C DATE : 03.95 12 : C TESTS : A FAIRE 13 : C MODIFICATIONS : 14 : C AUTEUR, DATE, OBJET : 15 : C 16 : C 17 : C ***************************************************************** 18 : C 19 : C 20 : SUBROUTINE S0AJNO(XYZ,COORD,IDIMC,NBN,NBNMAX, 21 : > NOETRI,NOEMAX,NNEW,iarr) 22 : C ***************************************************************** 23 : C OBJET : AJOUTE UN POINT ISOLE OU LIBRE 24 : C EN ENTREE : 25 : C XYZ : TABLEAU DES COORDONNEES DU POINT 26 : C COORD : TABLEAU DES COORDONNEES DE TOUS LES POINTS 27 : C IDIMC : DIMENSION DE L'ESPACE 28 : C NBN : NOMBRE DE NOEUDS DEJA EXISTANT 29 : C NBNMAX: NOMBRE MAXIMUM DE NOEUD DANS COORD 30 : C NOEMAX : SI = 0 NOETRI N'EST PAS MIS A JOUR 31 : C SINON NOEMAX = TAILLE DE NOETRI 32 : C EN SORTIE : 33 : C COORD, NOETRI ET NBN MODIFIES 34 : C NNEW : NUMERO DU NOEUD AJOUTE 35 : C iarr : CODE D'ERREUR 0 SI OK, -2 SI COORD EST TROP PETIT 36 : C ***************************************************************** 37 : IMPLICIT INTEGER(I-N) 38 : REAL*8 XYZ(*),COORD(*) 39 : INTEGER IDIMC,NBN,NBNMAX,iarr 40 : INTEGER NOETRI(*),NOEMAX,NNEW 41 : C 42 : INTEGER J 43 : C 44 : IF( NBN.GE.NBNMAX )THEN 45 : iarr = -2 45 : CALL DSERRE(1,iarr,'ST','DANS S0AJNO : TROP DE POINTS') 46 : GOTO 999 47 : ENDIF 48 : NBN = NBN + 1 49 : DO 10 J=1,IDIMC 50 : COORD((NBN-1)*IDIMC+J) = XYZ(J) 51 : 10 CONTINUE 52 : NNEW = NBN 53 : IF( NOEMAX.GT. 0 )THEN 54 : IF( NOEMAX.LT.NNEW )THEN 55 : iarr =-2 55 : CALL DSERRE(1,iarr,'ST','DANS S0AJNO : NOETRI TROP PETIT') 56 : GOTO 999 57 : ENDIF 58 : NOETRI(NNEW) = 0 59 : ENDIF 60 : iarr = 0 61 : 999 END 62 : 63 : 64 :
© Cast3M 2003 - All rights reserved.
Disclaimer