C DEVLM0    SOURCE    BP208322  15/07/22    21:15:25     8586
C DEVLM0
      SUBROUTINE DEVLM0(Q3,XM,XOP,FTOTA,FAMOR,NA1,NB1,IOP,NB1M,IND)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
*--------------------------------------------------------------------*
*                                                                    *
*     Operateur DYNE                                                 *
*     ________________________________________________               *
*                                                                    *
*     Calcul l'acceleration sur la base A                            *
*     q" = M^-1 * (FTOTA - FAMOR)                                    *
*     Distingue le cas matrice diagonal et pleine                    *
*                                                                    *
*     Parametres:                                                    *
*                                                                    *
* s   Q3(,)     Vitesse generalise                                   *
* e   XM        Matrice de masse generalisee                         *
* e   XOP       Matrice de masse generalisee inverse (si non diago)  *
* e   FTOTA     Forces totalisees                                    *
* e   FAMOR     Forces  d'amortissement generalisee                  *
* e   NA1,NB1M  Dimension de la matrice                              *
* e   IND       Indice du pas                                        *
*                                                                    *
*    -Auteur, date de creation:                                      *
*     Benoit PRABEL, 11/02/2015                                      *
*                                                                    *
*--------------------------------------------------------------------*
      REAL*8 Q3(NA1,*),XM(NA1,*),FTOTA(NA1,*),FAMOR(NA1,*)
      REAL*8 XOP(NB1,NB1,*)
*
*
      IF (NB1M.EQ.1) THEN
         DO 100 I=1,NA1
            Q3(I,IND) = (FTOTA(I,IND)-FAMOR(I,IND)) / XM(I,1)
 100     CONTINUE
c       ELSEIF(NB1M.NE.NA1) THEN
c         CALL ERREUR(832)
c on ne va pas tester a chaque fois que cette subroutine est appelee
      ELSE
         DO 200 I=1,NA1
            Q3(I,IND) = 0.D0
         DO 200 J=1,NB1M
            Q3(I,IND) = Q3(I,IND)
c      &                + XOP(I,J,3)*(FTOTA(J,IND)-FAMOR(J,IND))
     &                + XOP(I,J,IOP)*(FTOTA(J,IND)-FAMOR(J,IND))
 200     CONTINUE
      ENDIF

      END


