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