C NORMA5    SOURCE    CB215821  20/11/25    13:35:05     10792          
      SUBROUTINE NORMA5(ITBAS,IPLMOT,MOTCLE,IFLUI,COEFP,COEFPI)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
************************************************************************
*
*                             N O R M A 5
*                             -----------
*
* FONCTION:
* ---------
*
*     NORMER UNE 'TABLE' EN RAMENANT SA PLUS GRANDE VALEUR A 1
*     ON NE CREE PAS UNE NOUVELL TABLE. LA NORMALISATION EST FAITE
*     SUR LES CHAMPS DE DEPLACEMENT UNIQUEMENT.
*
* MODE D'APPEL:
* -------------
*
*     CALL NORMA5 (ITBAS,IPLMOT,MOTCLE,IFLUI,COEFP,COEFPI)
*
* ARGUMENTS:   (E)=ENTREE   (S)=SORTIE
* ----------
*
*     ITBAS   ENTIER    (E)  POINTEUR SUR L'OBJET 'TABLE' A NORMER.
*     IPLMOT  ENTIER    (E)  VOIR LE S.P. "MAXIM1".
*     MOTCLE CHARACTER  (E)  VOIR LE S.P. "MAXIM1".
*     IFLUI   ENTIER    (E)  IL Y A DES COEF POUR P ET PI (0 SINON)
*     COEFP   REEL      (E)  COEFFICIENT A APPLIQUER A LA COMPOSANTE P
*     COEFPI  REEL      (E)  COEFFICIENT A APPLIQUER A LA COMPOSANTE PI
*
* SOUS-PROGRAMMES APPELES:
* ------------------------
*
*     NORMA3
*
* AUTEUR, DATE DE CREATION:
* -------------------------
*
*     LIONEL VIVAN           2 AOUT 90
*
* LANGAGE:
* --------
*
*     ESOPE + FORTRAN77
*
************************************************************************
*

-INC PPARAM
-INC CCOPTIO
-INC SMTABLE
*
      CHARACTER*(*) MOTCLE
      CHARACTER*8 TYPRET,CHARRE
      LOGICAL     L0,L1
*
      IM = 0
 10   CONTINUE
      IM = IM + 1
      TYPRET = ' '
      CALL ACCTAB(ITBAS,'ENTIER',IM,X0,' ',L0,IP0,
     &                    TYPRET,I1,X1,CHARRE,L1,ITMOD)

      IF (ITMOD.NE.0 .AND. TYPRET.EQ.'TABLE   ') THEN

         CALL ACCTAB(ITMOD,'MOT',I0,X0,'DEFORMEE_MODALE',L0,IP0,
     &                 'CHPOINT',I1,X1,' ',L1,ICHPOI)
         CALL NORMA3(ICHPOI,IPLMOT,MOTCLE,IFLUI,COEFP,COEFPI,PGRAND)
         IF (IERR.NE.0) RETURN

         CALL ECCTAB(ITMOD,'MOT',I0,X0,'DEFORMEE_MODALE',L0,IP0,
     &                 'CHPOINT',I1,X1,' ',L1,ICHPOI)
*
         CALL ACCTAB(ITMOD,'MOT',I0,X0,'MASSE_GENERALISEE',L0,IP0,
     &                'FLOTTANT',I1,XMGEN,' ',L1,IP1)
         XMGEN = XMGEN / ( PGRAND * PGRAND )
         CALL ECCTAB(ITMOD,'MOT',I0,X0,'MASSE_GENERALISEE',L0,IP0,
     &                'FLOTTANT',I1,XMGEN,' ',L1,IP1)
*
         CALL ACCTAB(ITMOD,'MOT',I0,X0,'DEPLACEMENTS_GENERALISES',L0,
     &               IP0,'TABLE',I1,X1,' ',L1,ITDG)
         DO 12 IN = 1,3
            CALL ACCTAB(ITDG,'ENTIER',IN,X0,' ',L0,IP0,
     &                     'FLOTTANT',I1,XQ,' ',L1,IP1)
             XQ = XQ / PGRAND
            CALL ECCTAB(ITDG,'ENTIER',IN,X0,' ',L0,IP0,
     &                     'FLOTTANT',I1,XQ,' ',L1,IP1)
 12      CONTINUE

         TYPRET = ' '
           CALL ACCTAB(ITMOD,'MOT',I0,X0,'CONTRAINTE_MODALE',L0,IP0,
     &                     TYPRET,I1,X1,CHARRE,L1,ICHML)
             IF (ICHML.NE.0 .AND. TYPRET.EQ.'MCHAML  ') THEN
C              Division du MCHAML par le FLOTTANT PGRAND
               IOPERA=5
               IARGU =2
               I1    =0
               CALL OPCHE1(ICHML,IOPERA,IARGU,I1,PGRAND,ICHML2,IRET)
               IF (IRET.EQ.0) CALL ERREUR(5)

               CALL ECCTAB(ITMOD,'MOT',I0,X0,'CONTRAINTE_MODALE',L0,IP0,
     &                    'MCHAML',I1,X1,' ',L1,ICHML2)
             ENDIF
         GOTO 10
      ENDIF
*
      RETURN
      END

 
 
