37 lines
913 B
Fortran
37 lines
913 B
Fortran
SUBROUTINE MINV3(A)
|
|
C ===================
|
|
C
|
|
C Special routine for an invresion of a 3 x 3 matrix
|
|
C
|
|
INCLUDE 'IMPLIC.FOR'
|
|
PARAMETER (UN=1.D0)
|
|
DIMENSION A(3,3)
|
|
C
|
|
A(2,1)=A(2,1)/A(1,1)
|
|
A(2,2)=A(2,2)-A(2,1)*A(1,2)
|
|
A(2,3)=A(2,3)-A(2,1)*A(1,3)
|
|
A(3,1)=A(3,1)/A(1,1)
|
|
A(3,2)=(A(3,2)-A(3,1)*A(1,2))/A(2,2)
|
|
A(3,3)=A(3,3)-A(3,1)*A(1,3)-A(3,2)*A(2,3)
|
|
C
|
|
A(3,2)=-A(3,2)
|
|
A(3,1)=-A(3,1)-A(3,2)*A(2,1)
|
|
A(2,1)=-A(2,1)
|
|
C
|
|
A(3,3)=UN/A(3,3)
|
|
A(2,3)=-A(2,3)*A(3,3)/A(2,2)
|
|
A(2,2)=UN/A(2,2)
|
|
A(1,3)=-(A(1,2)*A(2,3)+A(1,3)*A(3,3))/A(1,1)
|
|
A(1,2)=-A(1,2)*A(2,2)/A(1,1)
|
|
A(1,1)=UN/A(1,1)
|
|
C
|
|
A(1,1)=A(1,1)+A(1,2)*A(2,1)+A(1,3)*A(3,1)
|
|
A(1,2)=A(1,2)+A(1,3)*A(3,2)
|
|
A(2,1)=A(2,2)*A(2,1)+A(2,3)*A(3,1)
|
|
A(2,2)=A(2,2)+A(2,3)*A(3,2)
|
|
A(3,1)=A(3,3)*A(3,1)
|
|
A(3,2)=A(3,3)*A(3,2)
|
|
C
|
|
RETURN
|
|
END
|