C S0AJNO    SOURCE    PV        22/04/25    21:15:11     11344          
C     *****************************************************************
C     MODULE  : ST (STRUCTURE DES DONNEES)
C     FICHIER : ST_0DSTRUCT.F
C     OBJET   : AJOUT DE POINTS DANS UN MAILLAGE
C     FONCT.  :
C               S0AJNO  : AJOUTE UN POINT ISOLE OU LIBRE
C               S0DTNO  : SUPPRIME LE POINT ISOLE OU LIBRE
C
C     AUTEUR  : O. STAB
C     DATE    : 03.95
C     TESTS   : A FAIRE
C     MODIFICATIONS :
C      AUTEUR, DATE, OBJET :
C
C
C     *****************************************************************
C
C
      SUBROUTINE S0AJNO(XYZ,COORD,IDIMC,NBN,NBNMAX,
     >                     NOETRI,NOEMAX,NNEW,iarr)
C     *****************************************************************
C     OBJET : AJOUTE UN POINT ISOLE OU LIBRE
C     EN ENTREE :
C        XYZ   : TABLEAU DES COORDONNEES DU POINT
C        COORD : TABLEAU DES COORDONNEES DE TOUS LES POINTS
C        IDIMC : DIMENSION DE L'ESPACE
C        NBN   : NOMBRE DE NOEUDS DEJA EXISTANT
C        NBNMAX: NOMBRE MAXIMUM DE NOEUD DANS COORD
C        NOEMAX : SI = 0 NOETRI N'EST PAS MIS A JOUR
C                   SINON NOEMAX = TAILLE DE NOETRI
C     EN SORTIE :
C        COORD, NOETRI ET NBN MODIFIES
C        NNEW  : NUMERO DU NOEUD AJOUTE
C        iarr  : CODE D'ERREUR 0 SI OK, -2 SI COORD EST TROP PETIT
C     *****************************************************************
      IMPLICIT INTEGER(I-N)
      REAL*8 XYZ(*),COORD(*)
      INTEGER IDIMC,NBN,NBNMAX,iarr
      INTEGER NOETRI(*),NOEMAX,NNEW
C
      INTEGER J
C
      IF( NBN.GE.NBNMAX )THEN
        iarr = -2
        CALL DSERRE(1,iarr,'ST','DANS S0AJNO : TROP DE POINTS')
        GOTO 999
      ENDIF
      NBN = NBN + 1
      DO 10 J=1,IDIMC
        COORD((NBN-1)*IDIMC+J) = XYZ(J)
   10 CONTINUE
      NNEW = NBN
      IF( NOEMAX.GT. 0 )THEN
        IF( NOEMAX.LT.NNEW )THEN
          iarr =-2
          CALL DSERRE(1,iarr,'ST','DANS S0AJNO : NOETRI TROP PETIT')
          GOTO 999
        ENDIF
       NOETRI(NNEW) = 0
      ENDIF
      iarr = 0
  999 END



 
