Download invrs.eso

Back to the list

   1 : C INVRS     SOURCE    PV        05/09/22    21:19:15     5181           
   2 :       SUBROUTINE INVRS(D,IDIM,DINV,DJAC)
   3 : C-----------------------------------------------------------------------
   4 : C Inversion d'une matrice au plus 3*3.
   5 : C-----------------------------------------------------------------------
   6 : C
   7 : C---------------------------
   8 : C Parametres Entree/Sortie :
   9 : C---------------------------
  10 : C
  11 : C E/  D       : Matrice a inverser.
  12 : C E/  IDIM    : Dimension des matrices.
  13 : C  /S DINV    : Matrice inverse.
  14 : C  /S DJAC    : Determinant de D.
  15 : C
  16 : C XZERO : Contient 0.d0 (cf CCREEL.INC)
  17 : C
  18 : C-----------------------------------------------------------------------
  19 : C
  20 : C Langage : FORTRAN77
  21 : C
  22 : C Auteurs : F.DABBENE 08/93
  23 : C
  24 : C-----------------------------------------------------------------------
  25 :       IMPLICIT INTEGER(I-N)
  26 :       IMPLICIT REAL*8 (A-H,O-Z)                                                 
  27 : C
  28 : -INC CCREEL
  29 : C
  30 :       DIMENSION D(IDIM,*),DINV(IDIM,*)
  31 :       DATA UN /1.D0/
  32 : C
  33 :       IF (IDIM.EQ.1) THEN
  34 : C--------
  35 : C CAS 1D
  36 : C--------
  37 :          DJAC = D(1,1)
  38 :          XXXX = DJAC
  39 :          IF (DJAC.NE.XZERO) XXXX=UN/DJAC
  40 :          DINV(1,1) = XXXX
  41 :       ELSEIF (IDIM.EQ.2) THEN
  42 : C--------
  43 : C CAS 2D
  44 : C--------
  45 :          DJAC = D(1,1)*D(2,2) - D(2,1)*D(1,2)
  46 :          XXXX = DJAC                                                               
  47 :          IF (DJAC.NE.XZERO) XXXX=UN/DJAC
  48 :          DINV(1,1) = D(2,2)*XXXX
  49 :          DINV(1,2) =-D(1,2)*XXXX
  50 :          DINV(2,1) =-D(2,1)*XXXX
  51 :          DINV(2,2) = D(1,1)*XXXX
  52 :       ELSEIF (IDIM.EQ.3) THEN
  53 : C--------
  54 : C CAS 3D
  55 : C--------
  56 :          DINV(1,1) = D(2,2)*D(3,3) - D(2,3)*D(3,2)
  57 :          DINV(2,2) = D(1,1)*D(3,3) - D(1,3)*D(3,1)
  58 :          DINV(3,3) = D(1,1)*D(2,2) - D(1,2)*D(2,1)
  59 :          DINV(1,2) =-D(1,2)*D(3,3) + D(3,2)*D(1,3)
  60 :          DINV(2,1) =-D(2,1)*D(3,3) + D(2,3)*D(3,1)
  61 :          DINV(1,3) = D(1,2)*D(2,3) - D(2,2)*D(1,3)
  62 :          DINV(3,1) = D(2,1)*D(3,2) - D(2,2)*D(3,1)
  63 :          DINV(2,3) =-D(1,1)*D(2,3) + D(2,1)*D(1,3)
  64 :          DINV(3,2) =-D(1,1)*D(3,2) + D(1,2)*D(3,1)
  65 :          DJAC = D(1,1)*DINV(1,1) + D(2,1)*DINV(1,2) + D(3,1)*DINV(1,3)
  66 :          XXXX = DJAC                                                               
  67 :          IF (DJAC.NE.XZERO) XXXX=UN/DJAC
  68 :          DO 10 IA=1,3
  69 :             DO 10 IB=1,3
  70 :                DINV(IA,IB) = DINV(IA,IB)*XXXX
  71 :   10     CONTINUE
  72 :       ELSE
  73 : C--------
  74 : C AUTRES
  75 : C--------
  75 :          CALL ERREUR(219)
  76 :       ENDIF
  77 : C
  78 :       RETURN                                                                    
  79 :       END                                                                       
  80 :  
  81 :  
  82 :  
  83 :  

© Cast3M 2003 - All rights reserved.
Disclaimer