15 DOUBLE PRECISION D(3),V(3,3),A(3,3),E(3,3)
19 CALL jacobi(e,3,np,d,v,nrot)
27 SUBROUTINE jacobi(A,N,NP,D,V,NROT)
43 include
'PARAM_UMAT.INC' 45 INTEGER IP,IQ,N,NMAX,NP,NROT,I,J
48 DOUBLE PRECISION A(np,np),D(np),V(np,np),B(nmax),Z(nmax),
49 + sm,tresh,g,t,h,theta,s,c,tau
82 sm = sm + dabs(a(ip,iq))
90 IF (sm.EQ.0.d0)
RETURN 104 g = 100.d0*dabs(a(ip,iq))
109 IF ((i.GT.4).AND.(dabs(d(ip))+g.EQ.dabs(d(ip)))
110 + .AND.(dabs(d(iq))+g.EQ.dabs(d(iq))))
THEN 112 ELSE IF (dabs(a(ip,iq)).GT.tresh)
THEN 114 IF (dabs(h)+g.EQ.dabs(h))
THEN 120 theta = 0.5d0*h/a(ip,iq)
121 t =1.d0/(dabs(theta)+dsqrt(1.d0+theta**2.d0))
122 IF (theta.LT.0.d0) t = -t
124 c = 1.d0/dsqrt(1.d0 + t**2.d0)
139 a(j,ip) = g - s*(h + g*tau)
140 a(j,iq) = h + s*(g - h*tau)
148 a(ip,j) = g - s*(h + g*tau)
149 a(j,iq) = h + s*(g - h*tau)
157 a(ip,j) = g - s*(h + g*tau)
158 a(iq,j) = h + s*(g - h*tau)
163 v(j,ip) = g - s*(h + g*tau)
164 v(j,iq) = h + s*(g - h*tau)
174 b(ip) = b(ip) + z(ip)
184 WRITE (*,
'(/1X,A/)')
'50 ITERATIONS IN JACOBI SHOULD NEVER HAPPEN' 190 SUBROUTINE eigsrt(D,V,N,NP)
202 DOUBLE PRECISION D(np),V(np,np),P
subroutine jacobi(A, N, NP, D, V, NROT)
subroutine spectral(A, D, V)
subroutine eigsrt(D, V, N, NP)