C HBMINI    SOURCE    OF166741  26/05/11    21:15:12     12538          

C=======================================================================
C=                            HBMINI                                   =
C=                           --------                                  =
C=                                                                     =
C=  Fonction :                                                         =
C=  ----------                                                         =
C=  A partir d'une approximation initiale, converge vers une solution  =
C=  des equations d'equilibre pour une frequence donnee.               =
C=   -->iterations hybrides NR - gradient conjuge                      =
C=                                                                     =
C=======================================================================

      SUBROUTINE HBMINI(KTKAM,KTQ,KTFEX,KTPAS,KTLIAA,KTEMP,KTLIAB,KTPHI,
     &                  KCPR,KOCLFA,KOCLB1,KPARNUM,NHBM,NFFT,CHECK,ITER)

      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)

-INC PPARAM
-INC CCOPTIO

-INC TMDYNC

      LOGICAL CHECK
      CHARACTER*8 FLAG

*-----------------------------------------------------------------------
*       Le contenu des segments est donne en entree a NEWT:
*
*       Matrices XK,XASM,XM,GAM,IGAM
      MTKAM=KTKAM
*
*       Variables generalisees: coefficients de Fourier et frequence
      MTQ=KTQ
*
*       Forces externes
      MTFEX=KTFEX
*
*       Variables sur un pas de temps
      MTPAS=KTPAS
*
*       Liaisons sur base A
      MTLIAA = KTLIAA
*       Liaisons sur base B
      MTLIAB = KTLIAB
*
*       Truc local base A
      LOCLFA = KOCLFA
*       Truc local base B
      LOCLB1 = KOCLB1
*
*       Deformees modales
      MTPHI = KTPHI
*
*       Parametres numeriques
      PARNUM = KPARNUM
*
      MTEMP=KTEMP
*       Nombre de modes
      NDDL = XM(/1)
      NDDL2 = XM(/2)
*       Nombre d'inconnues
      NT = Q1(/1)

*----- Iterations de Newton Raphson  -----------------------------------

*      -systeme NON-Autonome (= force)
      IF (TYPS.EQ.'FORC') THEN
        CALL HBMNEWT(NT,NHBM,NDDL,NFFT,MTQ,MTKAM,MTPHI,MTEMP,PARNUM,
     &       MTLIAA,MTLIAB,MTFEX,MTPAS,LOCLFA,LOCLB1,CHECK,'IF',ITER)

*      -systeme AUTOnome (sans forces exterieures)
      ELSEIF (TYPS.EQ.'AUTO') THEN
        CALL HBMNEWT(NT,NHBM,NDDL,NFFT,MTQ,MTKAM,MTPHI,MTEMP,PARNUM,
     &       MTLIAA,MTLIAB,MTFEX,MTPAS,LOCLFA,LOCLB1,CHECK,'IA',ITER)

*      -systeme Hamiltonien (modes non lineaires)
      ELSEIF (TYPS.EQ.'NNM') THEN
        CALL HBMNEWT(NT,NHBM,NDDL,NFFT,MTQ,MTKAM,MTPHI,MTEMP,PARNUM,
     &       MTLIAA,MTLIAB,MTFEX,MTPAS,LOCLFA,LOCLB1,CHECK,'IN',ITER)
      ELSE
        WRITE(IOIMP,*) 'DYNC : Type TYPS de probleme inconnu !'
        CALL ERREUR(5)
        RETURN

      ENDIF

*     Sortie
      KTQ = MTQ
      KTEMP=MTEMP

      RETURN
      END

 
