xref: /phasta/phSolver/compressible/e3eig1.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine e3eig1 (rho,    T,      cp,     gamb,   c,
2*59599516SKenneth E. Jansen     &                     u1,     u2,     u3,     a1,     a2,
3*59599516SKenneth E. Jansen     &                     a3,     eb1,
4*59599516SKenneth E. Jansen     &                     dxidx,  u,      Q)
5*59599516SKenneth E. Jansenc
6*59599516SKenneth E. Jansenc----------------------------------------------------------------------
7*59599516SKenneth E. Jansenc
8*59599516SKenneth E. Jansenc This routine performs the first step of the eigenvalue decomposition
9*59599516SKenneth E. Jansenc of the Tau matrix.
10*59599516SKenneth E. Jansenc
11*59599516SKenneth E. Jansenc input:
12*59599516SKenneth E. Jansenc  rho    (npro)           : density
13*59599516SKenneth E. Jansenc  T      (npro)           : temperature
14*59599516SKenneth E. Jansenc  cp     (npro)           : specific heat at constant pressure
15*59599516SKenneth E. Jansenc  gamb   (npro)           : gamma_bar (defined in paper by Chalot et al.)
16*59599516SKenneth E. Jansenc  c      (npro)           : speed of sound
17*59599516SKenneth E. Jansenc  u1     (npro)           : x1-velocity component
18*59599516SKenneth E. Jansenc  u2     (npro)           : x2-velocity component
19*59599516SKenneth E. Jansenc  u3     (npro)           : x3-velocity component
20*59599516SKenneth E. Jansenc  a1     (npro)           : x1-acceleration component
21*59599516SKenneth E. Jansenc  a2     (npro)           : x2-acceleration component
22*59599516SKenneth E. Jansenc  a3     (npro)           : x3-acceleration component
23*59599516SKenneth E. Jansenc  eb1    (npro)           : e1_bar (defined in paper by Chalot et al.)
24*59599516SKenneth E. Jansenc  dxidx  (npro,nsd,nsd)   : inverse of deformation gradient
25*59599516SKenneth E. Jansenc
26*59599516SKenneth E. Jansenc output:
27*59599516SKenneth E. Jansenc  u      (npro)           : fluid velocity
28*59599516SKenneth E. Jansenc  a1     (npro)           : aspect ratio factor in streamline direction
29*59599516SKenneth E. Jansenc  a2     (npro)           : aspect ratio factor in normal_1 direction
30*59599516SKenneth E. Jansenc  a3     (npro)           : aspect ratio factor in normal_2 direction
31*59599516SKenneth E. Jansenc  Q      (npro,nflow,nflow) : 1st level eigenvectors of Tau matrix
32*59599516SKenneth E. Jansenc
33*59599516SKenneth E. Jansenc
34*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990.  (Modified from e2tau.f)
35*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
36*59599516SKenneth E. Jansenc----------------------------------------------------------------------
37*59599516SKenneth E. Jansenc
38*59599516SKenneth E. Jansen        include "common.h"
39*59599516SKenneth E. Jansenc
40*59599516SKenneth E. Jansen        dimension rho(npro),                 T(npro),
41*59599516SKenneth E. Jansen     &            cp(npro),                  gamb(npro),
42*59599516SKenneth E. Jansen     &            c(npro),                   u1(npro),
43*59599516SKenneth E. Jansen     &            u2(npro),                  u3(npro),
44*59599516SKenneth E. Jansen     &            a1(npro),                  a2(npro),
45*59599516SKenneth E. Jansen     &            a3(npro),
46*59599516SKenneth E. Jansen     &            eb1(npro),                 dxidx(npro,nsd,nsd),
47*59599516SKenneth E. Jansen     &            u(npro),                   Q(npro,nflow,nflow)
48*59599516SKenneth E. Jansenc
49*59599516SKenneth E. Jansen        dimension Rcs(npro,nsd,nsd),         fact(npro),
50*59599516SKenneth E. Jansen     &            temp(npro)
51*59599516SKenneth E. Jansenc
52*59599516SKenneth E. Jansenc.... compute the directional cosines (streamline direction)
53*59599516SKenneth E. Jansenc
54*59599516SKenneth E. Jansenc
55*59599516SKenneth E. Jansen
56*59599516SKenneth E. Jansen        where (u .ne. zero)
57*59599516SKenneth E. Jansen           fact       = one / u
58*59599516SKenneth E. Jansen           Rcs(:,1,1) = u1 * fact
59*59599516SKenneth E. Jansen           Rcs(:,1,2) = u2 * fact
60*59599516SKenneth E. Jansen           Rcs(:,1,3) = u3 * fact
61*59599516SKenneth E. Jansen        elsewhere
62*59599516SKenneth E. Jansen           Rcs(:,1,1) = one
63*59599516SKenneth E. Jansen           Rcs(:,1,2) = zero
64*59599516SKenneth E. Jansen           Rcs(:,1,3) = zero
65*59599516SKenneth E. Jansen        endwhere
66*59599516SKenneth E. Jansenc
67*59599516SKenneth E. Jansenc.... compute the directional cosines (normal acceleration direction)
68*59599516SKenneth E. Jansenc
69*59599516SKenneth E. Jansen
70*59599516SKenneth E. Jansen
71*59599516SKenneth E. Jansen        fact = a1 * Rcs(:,1,1) + a2 * Rcs(:,1,2) + a3 * Rcs(:,1,3)
72*59599516SKenneth E. Jansen        a1   = a1 - fact * Rcs(:,1,1)
73*59599516SKenneth E. Jansen        a2   = a2 - fact * Rcs(:,1,2)
74*59599516SKenneth E. Jansen        a3   = a3 - fact * Rcs(:,1,3)
75*59599516SKenneth E. Jansen        fact = a1**2 + a2**2 + a3**2
76*59599516SKenneth E. Jansenc
77*59599516SKenneth E. Jansen        where (fact .gt. epsM)
78*59599516SKenneth E. Jansenc
79*59599516SKenneth E. Jansen          Rcs(:,2,1) = a1
80*59599516SKenneth E. Jansen          Rcs(:,2,2) = a2
81*59599516SKenneth E. Jansen          Rcs(:,2,3) = a3
82*59599516SKenneth E. Jansenc
83*59599516SKenneth E. Jansen        elsewhere
84*59599516SKenneth E. Jansenc
85*59599516SKenneth E. Jansen          Rcs(:,2,1) =   Rcs(:,1,2)
86*59599516SKenneth E. Jansen     &                 + sign(one, Rcs(:,1,2)*Rcs(:,1,3)) * Rcs(:,1,3)
87*59599516SKenneth E. Jansen          Rcs(:,2,2) = - Rcs(:,1,1)
88*59599516SKenneth E. Jansen     &                 - sign(one, Rcs(:,1,2)*Rcs(:,1,3)) * Rcs(:,1,3)
89*59599516SKenneth E. Jansen          Rcs(:,2,3) =   sign(one, Rcs(:,1,2)*Rcs(:,1,3)) *
90*59599516SKenneth E. Jansen     &                 ( Rcs(:,1,2) - Rcs(:,1,1) )
91*59599516SKenneth E. Jansenc
92*59599516SKenneth E. Jansen          fact = Rcs(:,2,1)**2 + Rcs(:,2,2)**2 + Rcs(:,2,3)**2
93*59599516SKenneth E. Jansenc
94*59599516SKenneth E. Jansen        endwhere
95*59599516SKenneth E. Jansenc
96*59599516SKenneth E. Jansen	fact = one / sqrt(fact)
97*59599516SKenneth E. Jansenc
98*59599516SKenneth E. Jansen        Rcs(:,2,1) = Rcs(:,2,1) * fact
99*59599516SKenneth E. Jansen        Rcs(:,2,2) = Rcs(:,2,2) * fact
100*59599516SKenneth E. Jansen        Rcs(:,2,3) = Rcs(:,2,3) * fact
101*59599516SKenneth E. Jansenc
102*59599516SKenneth E. Jansenc.... compute the directional cosines (last direction)
103*59599516SKenneth E. Jansenc
104*59599516SKenneth E. Jansen        Rcs(:,3,1) = Rcs(:,1,2) * Rcs(:,2,3) - Rcs(:,1,3) * Rcs(:,2,2)
105*59599516SKenneth E. Jansen        Rcs(:,3,2) = Rcs(:,1,3) * Rcs(:,2,1) - Rcs(:,1,1) * Rcs(:,2,3)
106*59599516SKenneth E. Jansen        Rcs(:,3,3) = Rcs(:,1,1) * Rcs(:,2,2) - Rcs(:,1,2) * Rcs(:,2,1)
107*59599516SKenneth E. Jansen
108*59599516SKenneth E. Jansenc
109*59599516SKenneth E. Jansenc.... calculate the element aspect ratio factors
110*59599516SKenneth E. Jansenc
111*59599516SKenneth E. Jansen        a1 = Rcs(:,1,1) * dxidx(:,1,1) + Rcs(:,1,2) * dxidx(:,1,2) +
112*59599516SKenneth E. Jansen     &       Rcs(:,1,3) * dxidx(:,1,3)
113*59599516SKenneth E. Jansen        a2 = Rcs(:,2,1) * dxidx(:,1,1) + Rcs(:,2,2) * dxidx(:,1,2) +
114*59599516SKenneth E. Jansen     &       Rcs(:,2,3) * dxidx(:,1,3)
115*59599516SKenneth E. Jansen        a3 = Rcs(:,3,1) * dxidx(:,1,1) + Rcs(:,3,2) * dxidx(:,1,2) +
116*59599516SKenneth E. Jansen     &       Rcs(:,3,3) * dxidx(:,1,3)
117*59599516SKenneth E. Jansen        dxidx(:,1,1) = a1
118*59599516SKenneth E. Jansen        dxidx(:,1,2) = a2
119*59599516SKenneth E. Jansen        dxidx(:,1,3) = a3
120*59599516SKenneth E. Jansenc
121*59599516SKenneth E. Jansen        a1 = Rcs(:,1,1) * dxidx(:,2,1) + Rcs(:,1,2) * dxidx(:,2,2) +
122*59599516SKenneth E. Jansen     &       Rcs(:,1,3) * dxidx(:,2,3)
123*59599516SKenneth E. Jansen        a2 = Rcs(:,2,1) * dxidx(:,2,1) + Rcs(:,2,2) * dxidx(:,2,2) +
124*59599516SKenneth E. Jansen     &       Rcs(:,2,3) * dxidx(:,2,3)
125*59599516SKenneth E. Jansen        a3 = Rcs(:,3,1) * dxidx(:,2,1) + Rcs(:,3,2) * dxidx(:,2,2) +
126*59599516SKenneth E. Jansen     &       Rcs(:,3,3) * dxidx(:,2,3)
127*59599516SKenneth E. Jansen        dxidx(:,2,1) = a1
128*59599516SKenneth E. Jansen        dxidx(:,2,2) = a2
129*59599516SKenneth E. Jansen        dxidx(:,2,3) = a3
130*59599516SKenneth E. Jansenc
131*59599516SKenneth E. Jansen        a1 = Rcs(:,1,1) * dxidx(:,3,1) + Rcs(:,1,2) * dxidx(:,3,2) +
132*59599516SKenneth E. Jansen     &       Rcs(:,1,3) * dxidx(:,3,3)
133*59599516SKenneth E. Jansen        a2 = Rcs(:,2,1) * dxidx(:,3,1) + Rcs(:,2,2) * dxidx(:,3,2) +
134*59599516SKenneth E. Jansen     &       Rcs(:,2,3) * dxidx(:,3,3)
135*59599516SKenneth E. Jansen        a3 = Rcs(:,3,1) * dxidx(:,3,1) + Rcs(:,3,2) * dxidx(:,3,2) +
136*59599516SKenneth E. Jansen     &       Rcs(:,3,3) * dxidx(:,3,3)
137*59599516SKenneth E. Jansen        dxidx(:,3,1) = a1
138*59599516SKenneth E. Jansen        dxidx(:,3,2) = a2
139*59599516SKenneth E. Jansen        dxidx(:,3,3) = a3
140*59599516SKenneth E. Jansen
141*59599516SKenneth E. Jansenc
142*59599516SKenneth E. Jansenc... original
143*59599516SKenneth E. Jansenc
144*59599516SKenneth E. Jansen
145*59599516SKenneth E. Jansen        a1 = dxidx(:,1,1)**2 + dxidx(:,2,1)**2 + dxidx(:,3,1)**2
146*59599516SKenneth E. Jansen        a2 = dxidx(:,1,2)**2 + dxidx(:,2,2)**2 + dxidx(:,3,2)**2
147*59599516SKenneth E. Jansen        a3 = dxidx(:,1,3)**2 + dxidx(:,2,3)**2 + dxidx(:,3,3)**2
148*59599516SKenneth E. Jansen
149*59599516SKenneth E. Jansenc
150*59599516SKenneth E. Jansenc... change from original (analyt., could be error)
151*59599516SKenneth E. Jansenc
152*59599516SKenneth E. Jansen
153*59599516SKenneth E. Jansencc        a1 = dxidx(:,1,1)**2 + dxidx(:,1,2)**2 + dxidx(:,1,3)**2
154*59599516SKenneth E. Jansencc        a2 = dxidx(:,2,1)**2 + dxidx(:,2,2)**2 + dxidx(:,2,3)**2
155*59599516SKenneth E. Jansencc        a3 = dxidx(:,3,1)**2 + dxidx(:,3,2)**2 + dxidx(:,3,3)**2
156*59599516SKenneth E. Jansen
157*59599516SKenneth E. Jansenc
158*59599516SKenneth E. Jansenc.... correct for tetrahedra
159*59599516SKenneth E. Jansenc
160*59599516SKenneth E. Jansen        if (lcsyst .eq. 1) then
161*59599516SKenneth E. Jansen          a1 = ( a1 + (dxidx(:,1,1) + dxidx(:,2,1) +
162*59599516SKenneth E. Jansen     &                 dxidx(:,3,1))**2 ) * pt39
163*59599516SKenneth E. Jansen          a2 = ( a2 + (dxidx(:,1,2) + dxidx(:,2,2) +
164*59599516SKenneth E. Jansen     &                 dxidx(:,3,2))**2 ) * pt39
165*59599516SKenneth E. Jansen          a3 = ( a3 + (dxidx(:,1,3) + dxidx(:,2,3) +
166*59599516SKenneth E. Jansen     &                 dxidx(:,3,3))**2 ) * pt39
167*59599516SKenneth E. Jansenc
168*59599516SKenneth E. Jansen          flops = flops + 15*npro
169*59599516SKenneth E. Jansen        endif
170*59599516SKenneth E. Jansenc
171*59599516SKenneth E. Jansenc.... set up the 1st level Eigenvectors =  R_t*Tau^*
172*59599516SKenneth E. Jansenc
173*59599516SKenneth E. Jansen        fact     =  (one / sqrt( two * rho * T )) / c
174*59599516SKenneth E. Jansenc
175*59599516SKenneth E. Jansen        Q(:,1,5) =  fact * ((c + u) * c - eb1 * gamb)
176*59599516SKenneth E. Jansen        Q(:,2,5) = -fact * (c + u * gamb) * Rcs(:,1,1)
177*59599516SKenneth E. Jansen        Q(:,3,5) = -fact * (c + u * gamb) * Rcs(:,1,2)
178*59599516SKenneth E. Jansen        Q(:,4,5) = -fact * (c + u * gamb) * Rcs(:,1,3)
179*59599516SKenneth E. Jansen        Q(:,5,5) =  fact * gamb
180*59599516SKenneth E. Jansenc
181*59599516SKenneth E. Jansen        Q(:,1,1) =  fact * ((c - u) * c - eb1 * gamb)
182*59599516SKenneth E. Jansen        Q(:,2,1) =  fact * (c - u * gamb) * Rcs(:,1,1)
183*59599516SKenneth E. Jansen        Q(:,3,1) =  fact * (c - u * gamb) * Rcs(:,1,2)
184*59599516SKenneth E. Jansen        Q(:,4,1) =  fact * (c - u * gamb) * Rcs(:,1,3)
185*59599516SKenneth E. Jansen        Q(:,5,1) =  fact * gamb
186*59599516SKenneth E. Jansenc
187*59599516SKenneth E. Jansen        Q(:,1,3) =  zero
188*59599516SKenneth E. Jansen        Q(:,2,3) = -fact * c * sqt2 * Rcs(:,2,1) ! + in original Jo/Sh code
189*59599516SKenneth E. Jansen        Q(:,3,3) = -fact * c * sqt2 * Rcs(:,2,2) ! could be error here,
190*59599516SKenneth E. Jansen        Q(:,4,3) = -fact * c * sqt2 * Rcs(:,2,3) ! but unlikely
191*59599516SKenneth E. Jansen        Q(:,5,3) =  zero
192*59599516SKenneth E. Jansenc
193*59599516SKenneth E. Jansen        Q(:,1,2) =  zero
194*59599516SKenneth E. Jansen        Q(:,2,2) =  fact * c * sqt2 * Rcs(:,3,1)
195*59599516SKenneth E. Jansen        Q(:,3,2) =  fact * c * sqt2 * Rcs(:,3,2)
196*59599516SKenneth E. Jansen        Q(:,4,2) =  fact * c * sqt2 * Rcs(:,3,3)
197*59599516SKenneth E. Jansen        Q(:,5,2) =  zero
198*59599516SKenneth E. Jansenc
199*59599516SKenneth E. Jansen        fact     =  (one / sqrt( cp * rho )) / T
200*59599516SKenneth E. Jansenc
201*59599516SKenneth E. Jansen        Q(:,1,4) =  fact * eb1
202*59599516SKenneth E. Jansen        Q(:,2,4) =  fact * u * Rcs(:,1,1)
203*59599516SKenneth E. Jansen        Q(:,3,4) =  fact * u * Rcs(:,1,2)
204*59599516SKenneth E. Jansen        Q(:,4,4) =  fact * u * Rcs(:,1,3)
205*59599516SKenneth E. Jansen        Q(:,5,4) = -fact
206*59599516SKenneth E. Jansenc
207*59599516SKenneth E. Jansenc.... flop count
208*59599516SKenneth E. Jansenc
209*59599516SKenneth E. Jansen
210*59599516SKenneth E. Jansenc        do i = 1, nflow
211*59599516SKenneth E. Jansenc           do j = 1, nflow
212*59599516SKenneth E. Jansenc              Q(:,i,j) = abs(Q(:,i,j)) !make sure eigenv. are positive
213*59599516SKenneth E. Jansenc           enddo
214*59599516SKenneth E. Jansenc        enddo
215*59599516SKenneth E. Jansen
216*59599516SKenneth E. Jansen        flops = flops + 203*npro
217*59599516SKenneth E. Jansenc
218*59599516SKenneth E. Jansenc.... return
219*59599516SKenneth E. Jansenc
220*59599516SKenneth E. Jansen        return
221*59599516SKenneth E. Jansen        end
222*59599516SKenneth E. Jansen
223*59599516SKenneth E. Jansen
224*59599516SKenneth E. Jansen        subroutine e3eig2 (u,      c,      AR1,    AR2,    AR3,
225*59599516SKenneth E. Jansen     &                     rlam,   Q,    eigmax)
226*59599516SKenneth E. Jansenc
227*59599516SKenneth E. Jansenc----------------------------------------------------------------------
228*59599516SKenneth E. Jansenc
229*59599516SKenneth E. Jansenc  This routine diagonalizes a partially reduced matrix using the
230*59599516SKenneth E. Jansenc Jacobi transformation.  This routine assumes that the original
231*59599516SKenneth E. Jansenc 5x5 matrix is already reduced to 2x2.
232*59599516SKenneth E. Jansenc
233*59599516SKenneth E. Jansenc input:
234*59599516SKenneth E. Jansenc  u      (npro)           : fluid velocity
235*59599516SKenneth E. Jansenc  c      (npro)           : speed of sound
236*59599516SKenneth E. Jansenc  AR1    (npro)           : aspect ratio factor in streamline direction
237*59599516SKenneth E. Jansenc  AR2    (npro)           : aspect ratio factor in normal_1 direction
238*59599516SKenneth E. Jansenc  AR3    (npro)           : aspect ratio factor in normal_2 direction
239*59599516SKenneth E. Jansenc  Q      (npro,nflow,nflow) : 1st level eigenvectors of Tau matrix
240*59599516SKenneth E. Jansenc
241*59599516SKenneth E. Jansenc output:
242*59599516SKenneth E. Jansenc  rlam   (npro,nflow)      : eigenvalues
243*59599516SKenneth E. Jansenc  Q      (npro,nflow,nflow) : eigenvectors
244*59599516SKenneth E. Jansenc
245*59599516SKenneth E. Jansenc
246*59599516SKenneth E. Jansenc                                  T
247*59599516SKenneth E. Jansenc  This routine finds S that      S  Atau S = Lam  (Lam is Symm.)
248*59599516SKenneth E. Jansenc
249*59599516SKenneth E. Jansenc  Then returns       rlam <- Lam     and      Q <- Q S
250*59599516SKenneth E. Jansenc
251*59599516SKenneth E. Jansenc
252*59599516SKenneth E. Jansenc Note: Jacobi transformation is extracted (and modified) from
253*59599516SKenneth E. Jansenc       "Numerical Recipes: The Art of Scientific Computing" by
254*59599516SKenneth E. Jansenc       Press, Flannery, Teukolsky and Vetterling, pp. 342-349.
255*59599516SKenneth E. Jansenc
256*59599516SKenneth E. Jansenc
257*59599516SKenneth E. Jansenc Farzin Shakib, Spring 1989.
258*59599516SKenneth E. Jansenc Zdenek Johan,  Winter 1991.  (Fortran 90)
259*59599516SKenneth E. Jansenc----------------------------------------------------------------------
260*59599516SKenneth E. Jansenc
261*59599516SKenneth E. Jansen        include "common.h"
262*59599516SKenneth E. Jansenc
263*59599516SKenneth E. Jansen        dimension u(npro),                   c(npro),
264*59599516SKenneth E. Jansen     &            AR1(npro),                 AR2(npro),
265*59599516SKenneth E. Jansen     &            AR3(npro),                 rlam(npro,nflow),
266*59599516SKenneth E. Jansen     &            Q(npro,nflow,nflow),         eigmax(npro,nflow)
267*59599516SKenneth E. Jansenc
268*59599516SKenneth E. Jansen        dimension offd(npro),                t(npro),
269*59599516SKenneth E. Jansen     &            Rcs(npro),                 Rsn(npro)
270*59599516SKenneth E. Jansenc
271*59599516SKenneth E. Jansenc.... set the reduced eigensystem
272*59599516SKenneth E. Jansenc
273*59599516SKenneth E. Jansen        offd      = (AR2 + AR3) * pt5 * c**2
274*59599516SKenneth E. Jansenc
275*59599516SKenneth E. Jansen        rlam(:,1) = AR1 * (u + c)**2 + offd
276*59599516SKenneth E. Jansen        rlam(:,2) = AR1 * u**2       + AR3 * c**2
277*59599516SKenneth E. Jansen        rlam(:,3) = AR1 * u**2       + AR2 * c**2
278*59599516SKenneth E. Jansen        rlam(:,4) = AR1 * u**2
279*59599516SKenneth E. Jansen        rlam(:,5) = AR1 * (u - c)**2 + offd
280*59599516SKenneth E. Jansenc
281*59599516SKenneth E. Jansenc.... modify for time dependent problems
282*59599516SKenneth E. Jansenc
283*59599516SKenneth E. Jansen        ! consider time term if iremoveStabTimeTerm is set to zero
284*59599516SKenneth E. Jansen        if(iremoveStabTimeTerm.eq.0) then
285*59599516SKenneth E. Jansen           tmp  = dtsfct * four * (Dtgl * Dtgl)
286*59599516SKenneth E. Jansen           rlam(:,:) = rlam(:,:) + tmp
287*59599516SKenneth E. Jansen        endif
288*59599516SKenneth E. Jansenc
289*59599516SKenneth E. Jansenc.... compute the rotation tangent ( IEEE arithmetic if offd=0 )
290*59599516SKenneth E. Jansenc
291*59599516SKenneth E. Jansen        t = pt5 * (rlam(:,1) - rlam(:,5)) / offd
292*59599516SKenneth E. Jansen        t = sign(one, t) / ( abs(t) + sqrt(one + t**2) )
293*59599516SKenneth E. Jansenc
294*59599516SKenneth E. Jansenc.... compute cosine and sin, and rotate the eigenvalues
295*59599516SKenneth E. Jansenc
296*59599516SKenneth E. Jansen        Rcs = one / sqrt( one + t**2 )
297*59599516SKenneth E. Jansen        Rsn = t * Rcs
298*59599516SKenneth E. Jansenc
299*59599516SKenneth E. Jansen        rlam(:,1) = rlam(:,1) - t * offd
300*59599516SKenneth E. Jansen        rlam(:,5) = rlam(:,5) + t * offd
301*59599516SKenneth E. Jansenc
302*59599516SKenneth E. Jansenc.... transform the Eigenvectors (all 5 components)
303*59599516SKenneth E. Jansenc
304*59599516SKenneth E. Jansen        t        = Rcs * Q(:,1,1) - Rsn * Q(:,1,5)
305*59599516SKenneth E. Jansen        Q(:,1,5) = Rsn * Q(:,1,1) + Rcs * Q(:,1,5)
306*59599516SKenneth E. Jansen        Q(:,1,1) = t
307*59599516SKenneth E. Jansenc
308*59599516SKenneth E. Jansen        t        = Rcs * Q(:,2,1) - Rsn * Q(:,2,5)
309*59599516SKenneth E. Jansen        Q(:,2,5) = Rsn * Q(:,2,1) + Rcs * Q(:,2,5)
310*59599516SKenneth E. Jansen        Q(:,2,1) = t
311*59599516SKenneth E. Jansenc
312*59599516SKenneth E. Jansen        t        = Rcs * Q(:,3,1) - Rsn * Q(:,3,5)
313*59599516SKenneth E. Jansen        Q(:,3,5) = Rsn * Q(:,3,1) + Rcs * Q(:,3,5)
314*59599516SKenneth E. Jansen        Q(:,3,1) = t
315*59599516SKenneth E. Jansenc
316*59599516SKenneth E. Jansen        t        = Rcs * Q(:,4,1) - Rsn * Q(:,4,5)
317*59599516SKenneth E. Jansen        Q(:,4,5) = Rsn * Q(:,4,1) + Rcs * Q(:,4,5)
318*59599516SKenneth E. Jansen        Q(:,4,1) = t
319*59599516SKenneth E. Jansenc
320*59599516SKenneth E. Jansen        t        = Rcs * Q(:,5,1) - Rsn * Q(:,5,5)
321*59599516SKenneth E. Jansen        Q(:,5,5) = Rsn * Q(:,5,1) + Rcs * Q(:,5,5)
322*59599516SKenneth E. Jansen        Q(:,5,1) = t
323*59599516SKenneth E. Jansen
324*59599516SKenneth E. Jansenc
325*59599516SKenneth E. Jansenc.... extract maximum eigenvalues
326*59599516SKenneth E. Jansenc
327*59599516SKenneth E. Jansen        eigmax(:,1) = max(rlam(:,1), rlam(:,2), rlam(:,3),
328*59599516SKenneth E. Jansen     &                    rlam(:,4), rlam(:,5))
329*59599516SKenneth E. Jansen        eigmax(:,2) = eigmax(:,1)
330*59599516SKenneth E. Jansen        eigmax(:,3) = eigmax(:,1)
331*59599516SKenneth E. Jansen        eigmax(:,4) = eigmax(:,1)
332*59599516SKenneth E. Jansen        eigmax(:,5) = eigmax(:,1)
333*59599516SKenneth E. Jansen
334*59599516SKenneth E. Jansenc
335*59599516SKenneth E. Jansenc.... flop count
336*59599516SKenneth E. Jansenc
337*59599516SKenneth E. Jansen        flops = flops + 85*npro
338*59599516SKenneth E. Jansenc
339*59599516SKenneth E. Jansenc.... return
340*59599516SKenneth E. Jansenc
341*59599516SKenneth E. Jansen        return
342*59599516SKenneth E. Jansen        end
343