C NORMOD    SOURCE    CB215821  20/11/25    13:35:08     10792          
      SUBROUTINE NORMOD(ITBAS,LCHAIN)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)

*--------------------------------------------------------------------*
*                                                                    *
*     Normalise le mode                                              *
*                                                                    *
*     Param}tres:                                                    *
*                                                                    *
* e   ITBAS   table de sous-type BASE_DE_MODES contenant les modes   *
*             de la structure                                        *
*                                                                    *
*     Auteur, date de cr{ation:                                      *
*                                                                    *
*     Lionel VIVAN, le 15 juin 1990.                                 *
*                                                                    *
*--------------------------------------------------------------------*
*                                                                    *

-INC PPARAM
-INC CCOPTIO
-INC SMCHPOI
-INC SMCHAML
-INC SMTABLE
*
      INTEGER LCHAIN(*)
      CHARACTER*(LOCOMP) COMP
*
      MTABLE = ITBAS
      SEGACT MTABLE
      LONG = MLOTAB
      IM = 1
      DO 10 I = 1,LONG
         IF (MTABTI(I).EQ.'ENTIER  ' .AND. MTABII(I).EQ.IM .AND.
     &                   MTABTV(I).EQ.'TABLE   ') THEN
            ITMOD = MTABIV(I)
            IM = IM + 1
            MTAB1 = ITMOD
            SEGACT MTAB1
            LON1 = MTAB1.MLOTAB
            XGRA = 0.D0
            DO 20 I1 = 1,LON1
               IF (MTAB1.MTABTI(I1).EQ.'MOT     ' .AND.
     &                MTAB1.MTABII(I1).EQ.LCHAIN(3) .AND.
     &                MTAB1.MTABTV(I1).EQ.'CHPOINT ') THEN
                  ICHDEP = MTAB1.MTABIV(I1)
                  MCHPOI = ICHDEP
                  SEGACT MCHPOI
                  NSOU = IPCHP(/1)
                  DO 22 INS = 1,NSOU
                     MSOUPO = IPCHP(INS)
                     SEGACT MSOUPO
                     MPOVAL = IPOVAL
                     SEGACT MPOVAL
                     NBP = VPOCHA(/1)
                     NBC = VPOCHA(/2)
                     DO 24 IC = 1,NBC
                       COMP = NOCOMP(IC)
                       IF (COMP(1:1).EQ.'U' .OR. COMP(1:1).EQ.'R') THEN
                          DO 26 IP = 1,NBP
                             XVAL = VPOCHA(IP,IC)
                             XAVA = ABS(XVAL)
                             IF (XAVA.GT.XGRA) XGRA = XAVA
 26                          CONTINUE
*                         end do
                       ENDIF
 24                    CONTINUE
*                    end do
                     SEGDES MPOVAL
                     SEGDES MSOUPO
 22                  CONTINUE
*                 end do
                  DO 32 INS = 1,NSOU
                     MSOUPO = IPCHP(INS)
                     SEGACT MSOUPO
                     MPOVAL = IPOVAL
                     SEGACT MPOVAL
                     NBP = VPOCHA(/1)
                     NBC = VPOCHA(/2)
                     DO 34 IC = 1,NBC
                       COMP = NOCOMP(IC)
                       IF (COMP(1:1).EQ.'U' .OR. COMP(1:1).EQ.'R') THEN
                          DO 36 IP = 1,NBP
                             XDEP = VPOCHA(IP,IC)
                             VPOCHA(IP,IC) = XDEP / XGRA
 36                          CONTINUE
*                         end do
                       ENDIF
 34                    CONTINUE
*                    end do
                     SEGDES MPOVAL
                     SEGDES MSOUPO
 32                  CONTINUE
*                 end do
                  SEGDES MCHPOI
                  MTAB1.MTABIV(I1) = ICHDEP
               ENDIF
 20            CONTINUE
*           end do
            DO 40 I1 = 1,LON1
               IF (MTAB1.MTABTI(I1).EQ.'MOT     ') THEN
                  IF (MTAB1.MTABII(I1).EQ.LCHAIN(2) .AND.
     &                MTAB1.MTABTV(I1).EQ.'TABLE   ') THEN
                     ITDEP = MTAB1.MTABIV(I1)
                     MTAB2 = ITDEP
                     SEGACT MTAB2
                     LON2 = MTAB2.MLOTAB
                     IDP = 1
                     DO 42 I2 = 1,LON2
                        IF (MTAB2.MTABTI(I2).EQ.'ENTIER  ' .AND.
     &                      MTAB2.MTABII(I2).EQ.IDP        .AND.
     &                      MTAB2.MTABTV(I2).EQ.'FLOTTANT') THEN
                           IDP = IDP + 1
                           XDEPG = MTAB2.RMTABV(I2)
                           MTAB2.RMTABV(I2) = XDEPG / XGRA
                        ENDIF
 42                     CONTINUE
*                    end do
                     SEGDES MTAB2
                     MTAB1.MTABIV(I1) = ITDEP
                  ELSE IF (MTAB1.MTABII(I1).EQ.LCHAIN(19) .AND.
     &                     MTAB1.MTABTV(I1).EQ.'FLOTTANT') THEN
                     XMGEN = MTAB1.RMTABV(I1)
                     MTAB1.RMTABV(I1) = XMGEN / (XGRA * XGRA)
                  ELSE IF (MTAB1.MTABII(I1).EQ.LCHAIN(5) .AND.
     &                MTAB1.MTABTV(I1).EQ.'CHPOINT ') THEN
                     ICHREA = MTAB1.MTABIV(I1)
                     MCHPOI = ICHREA
                     SEGACT MCHPOI
                     NSOU = IPCHP(/1)
                     DO 50 INS = 1,NSOU
                        MSOUPO = IPCHP(INS)
                        SEGACT MSOUPO
                        MPOVAL = IPOVAL
                        SEGACT MPOVAL
                        NBP = VPOCHA(/1)
                        NBC = VPOCHA(/2)
                        DO 52 IC = 1,NBC
                           DO 54 IP = 1,NBP
                              XREA = VPOCHA(IP,IC)
                              VPOCHA(IP,IC) = XREA / XGRA
 54                           CONTINUE
*                          end do
 52                       CONTINUE
*                       end do
                        SEGDES MPOVAL
                        SEGDES MSOUPO
 50                     CONTINUE
*                    end do
                     SEGDES MCHPOI
                     MTAB1.MTABIV(I1) = ICHREA
                  ELSE IF (MTAB1.MTABII(I1).EQ.LCHAIN(4) .AND.
     &                MTAB1.MTABTV(I1).EQ.'MCHAML  ') THEN
                     ICHCON = MTAB1.MTABIV(I1)
                     MCHELM = ICHCON
                     SEGACT MCHELM
                      N1 = IMACHE(/1)
                      DO 60 IN = 1,N1
                       MCHAML = ICHAML(IN)
                       SEGACT MCHAML
                       NCO = IELVAL(/1)
                       DO 62 ICO = 1,NCO
                         MELVAL = IELVAL(ICO)
                         SEGACT MELVAL
                         N1P = VELCHE(/1)
                         N1E = VELCHE(/2)
                         DO 64 IP = 1,N1P
                          DO 66 IE = 1,N1E
                           XCON = VELCHE(IP,IE)
                           VELCHE(IP,IE) = XCON/XGRA
  66                      CONTINUE
  64                     CONTINUE
                         SEGDES MELVAL
  62                   CONTINUE
                       SEGDES MCHAML
  60                  CONTINUE
                     SEGDES MCHELM
                     MTAB1.MTABIV(I1) = ICHCON
                  ENDIF
               ENDIF
 40            CONTINUE
*           end do
            SEGDES MTAB1
         ENDIF
 10      CONTINUE
*     end do
      SEGDES MTABLE
*
      END



 
 
