C DEVLM1    SOURCE    BP208322  15/07/22    21:15:25     8586
C DEVLM1
      SUBROUTINE DEVLM1(Q,XM,XOP,F,NA1,NB1,IOP,NB1M)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
*--------------------------------------------------------------------*
*                                                                    *
*     Operateur DYNE                                                 *
*     ________________________________________________               *
*                                                                    *
*     Calcul l'acceleration sur la base A                            *
*     q" = M^-1 * (F)                                                *
*     Distingue le cas matrice diagonal et pleine                    *
*                                                                    *
*     Parametres:                                                    *
*                                                                    *
* s   Q(,)     Vitesse generalise                                    *
* e   XM       Matrice de masse generalisee                          *
* e   XOP      Matrice de masse generalisee inverse (si non diago)   *
* e   F        Forces                                                *
* e   NA1,NB1M Dimension de la matrice                               *
*              (si NB1C=1, alors matrice diagonale)                  *
*                                                                    *
*    -Auteur, date de creation:                                      *
*     Benoit PRABEL, 11/02/2015                                      *
*                                                                    *
*--------------------------------------------------------------------*
      REAL*8 Q(NA1),XM(NA1,*),F(NA1)
      REAL*8 XOP(NB1,NB1,*)
*
*
      IF (NB1M.EQ.1) THEN
         DO 100 I=1,NA1
            Q(I) = F(I) / 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
            Q(I) = 0.D0
         DO 200 J=1,NB1M
            Q(I) = Q(I) + XOP(I,J,IOP)*F(J)
 200     CONTINUE
      ENDIF

      END


