xref: /phasta/phSolver/compressible/e3eig1.f (revision 712d3df0b59ebebaaeaea358162c8d2c043c6e08)
159599516SKenneth E. Jansen        subroutine e3eig1 (rho,    T,      cp,     gamb,   c,
259599516SKenneth E. Jansen     &                     u1,     u2,     u3,     a1,     a2,
359599516SKenneth E. Jansen     &                     a3,     eb1,
459599516SKenneth E. Jansen     &                     dxidx,  u,      Q)
559599516SKenneth E. Jansenc
659599516SKenneth E. Jansenc----------------------------------------------------------------------
759599516SKenneth E. Jansenc
859599516SKenneth E. Jansenc This routine performs the first step of the eigenvalue decomposition
959599516SKenneth E. Jansenc of the Tau matrix.
1059599516SKenneth E. Jansenc
1159599516SKenneth E. Jansenc input:
1259599516SKenneth E. Jansenc  rho    (npro)           : density
1359599516SKenneth E. Jansenc  T      (npro)           : temperature
1459599516SKenneth E. Jansenc  cp     (npro)           : specific heat at constant pressure
1559599516SKenneth E. Jansenc  gamb   (npro)           : gamma_bar (defined in paper by Chalot et al.)
1659599516SKenneth E. Jansenc  c      (npro)           : speed of sound
1759599516SKenneth E. Jansenc  u1     (npro)           : x1-velocity component
1859599516SKenneth E. Jansenc  u2     (npro)           : x2-velocity component
1959599516SKenneth E. Jansenc  u3     (npro)           : x3-velocity component
2059599516SKenneth E. Jansenc  a1     (npro)           : x1-acceleration component
2159599516SKenneth E. Jansenc  a2     (npro)           : x2-acceleration component
2259599516SKenneth E. Jansenc  a3     (npro)           : x3-acceleration component
2359599516SKenneth E. Jansenc  eb1    (npro)           : e1_bar (defined in paper by Chalot et al.)
2459599516SKenneth E. Jansenc  dxidx  (npro,nsd,nsd)   : inverse of deformation gradient
2559599516SKenneth E. Jansenc
2659599516SKenneth E. Jansenc output:
2759599516SKenneth E. Jansenc  u      (npro)           : fluid velocity
2859599516SKenneth E. Jansenc  a1     (npro)           : aspect ratio factor in streamline direction
2959599516SKenneth E. Jansenc  a2     (npro)           : aspect ratio factor in normal_1 direction
3059599516SKenneth E. Jansenc  a3     (npro)           : aspect ratio factor in normal_2 direction
3159599516SKenneth E. Jansenc  Q      (npro,nflow,nflow) : 1st level eigenvectors of Tau matrix
3259599516SKenneth E. Jansenc
3359599516SKenneth E. Jansenc
3459599516SKenneth E. Jansenc Zdenek Johan, Summer 1990.  (Modified from e2tau.f)
3559599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
3659599516SKenneth E. Jansenc----------------------------------------------------------------------
3759599516SKenneth E. Jansenc
3859599516SKenneth E. Jansen        include "common.h"
3959599516SKenneth E. Jansenc
4059599516SKenneth E. Jansen        dimension rho(npro),                 T(npro),
4159599516SKenneth E. Jansen     &            cp(npro),                  gamb(npro),
4259599516SKenneth E. Jansen     &            c(npro),                   u1(npro),
4359599516SKenneth E. Jansen     &            u2(npro),                  u3(npro),
4459599516SKenneth E. Jansen     &            a1(npro),                  a2(npro),
4559599516SKenneth E. Jansen     &            a3(npro),
4659599516SKenneth E. Jansen     &            eb1(npro),                 dxidx(npro,nsd,nsd),
4759599516SKenneth E. Jansen     &            u(npro),                   Q(npro,nflow,nflow)
4859599516SKenneth E. Jansenc
4959599516SKenneth E. Jansen        dimension Rcs(npro,nsd,nsd),         fact(npro),
5059599516SKenneth E. Jansen     &            temp(npro)
5159599516SKenneth E. Jansenc
5259599516SKenneth E. Jansenc.... compute the directional cosines (streamline direction)
5359599516SKenneth E. Jansenc
5459599516SKenneth E. Jansenc
5559599516SKenneth E. Jansen
5659599516SKenneth E. Jansen        where (u .ne. zero)
5759599516SKenneth E. Jansen           fact       = one / u
5859599516SKenneth E. Jansen           Rcs(:,1,1) = u1 * fact
5959599516SKenneth E. Jansen           Rcs(:,1,2) = u2 * fact
6059599516SKenneth E. Jansen           Rcs(:,1,3) = u3 * fact
6159599516SKenneth E. Jansen        elsewhere
6259599516SKenneth E. Jansen           Rcs(:,1,1) = one
6359599516SKenneth E. Jansen           Rcs(:,1,2) = zero
6459599516SKenneth E. Jansen           Rcs(:,1,3) = zero
6559599516SKenneth E. Jansen        endwhere
6659599516SKenneth E. Jansenc
6759599516SKenneth E. Jansenc.... compute the directional cosines (normal acceleration direction)
6859599516SKenneth E. Jansenc
6959599516SKenneth E. Jansen
7059599516SKenneth E. Jansen
7159599516SKenneth E. Jansen        fact = a1 * Rcs(:,1,1) + a2 * Rcs(:,1,2) + a3 * Rcs(:,1,3)
7259599516SKenneth E. Jansen        a1   = a1 - fact * Rcs(:,1,1)
7359599516SKenneth E. Jansen        a2   = a2 - fact * Rcs(:,1,2)
7459599516SKenneth E. Jansen        a3   = a3 - fact * Rcs(:,1,3)
7559599516SKenneth E. Jansen        fact = a1**2 + a2**2 + a3**2
7659599516SKenneth E. Jansenc
7759599516SKenneth E. Jansen        where (fact .gt. epsM)
7859599516SKenneth E. Jansenc
7959599516SKenneth E. Jansen          Rcs(:,2,1) = a1
8059599516SKenneth E. Jansen          Rcs(:,2,2) = a2
8159599516SKenneth E. Jansen          Rcs(:,2,3) = a3
8259599516SKenneth E. Jansenc
8359599516SKenneth E. Jansen        elsewhere
8459599516SKenneth E. Jansenc
8559599516SKenneth E. Jansen          Rcs(:,2,1) =   Rcs(:,1,2)
8659599516SKenneth E. Jansen     &                 + sign(one, Rcs(:,1,2)*Rcs(:,1,3)) * Rcs(:,1,3)
8759599516SKenneth E. Jansen          Rcs(:,2,2) = - Rcs(:,1,1)
8859599516SKenneth E. Jansen     &                 - sign(one, Rcs(:,1,2)*Rcs(:,1,3)) * Rcs(:,1,3)
8959599516SKenneth E. Jansen          Rcs(:,2,3) =   sign(one, Rcs(:,1,2)*Rcs(:,1,3)) *
9059599516SKenneth E. Jansen     &                 ( Rcs(:,1,2) - Rcs(:,1,1) )
9159599516SKenneth E. Jansenc
9259599516SKenneth E. Jansen          fact = Rcs(:,2,1)**2 + Rcs(:,2,2)**2 + Rcs(:,2,3)**2
9359599516SKenneth E. Jansenc
9459599516SKenneth E. Jansen        endwhere
9559599516SKenneth E. Jansenc
9659599516SKenneth E. Jansen	fact = one / sqrt(fact)
9759599516SKenneth E. Jansenc
9859599516SKenneth E. Jansen        Rcs(:,2,1) = Rcs(:,2,1) * fact
9959599516SKenneth E. Jansen        Rcs(:,2,2) = Rcs(:,2,2) * fact
10059599516SKenneth E. Jansen        Rcs(:,2,3) = Rcs(:,2,3) * fact
10159599516SKenneth E. Jansenc
10259599516SKenneth E. Jansenc.... compute the directional cosines (last direction)
10359599516SKenneth E. Jansenc
10459599516SKenneth E. Jansen        Rcs(:,3,1) = Rcs(:,1,2) * Rcs(:,2,3) - Rcs(:,1,3) * Rcs(:,2,2)
10559599516SKenneth E. Jansen        Rcs(:,3,2) = Rcs(:,1,3) * Rcs(:,2,1) - Rcs(:,1,1) * Rcs(:,2,3)
10659599516SKenneth E. Jansen        Rcs(:,3,3) = Rcs(:,1,1) * Rcs(:,2,2) - Rcs(:,1,2) * Rcs(:,2,1)
10759599516SKenneth E. Jansen
10859599516SKenneth E. Jansenc
10959599516SKenneth E. Jansenc.... calculate the element aspect ratio factors
11059599516SKenneth E. Jansenc
11159599516SKenneth E. Jansen        a1 = Rcs(:,1,1) * dxidx(:,1,1) + Rcs(:,1,2) * dxidx(:,1,2) +
11259599516SKenneth E. Jansen     &       Rcs(:,1,3) * dxidx(:,1,3)
11359599516SKenneth E. Jansen        a2 = Rcs(:,2,1) * dxidx(:,1,1) + Rcs(:,2,2) * dxidx(:,1,2) +
11459599516SKenneth E. Jansen     &       Rcs(:,2,3) * dxidx(:,1,3)
11559599516SKenneth E. Jansen        a3 = Rcs(:,3,1) * dxidx(:,1,1) + Rcs(:,3,2) * dxidx(:,1,2) +
11659599516SKenneth E. Jansen     &       Rcs(:,3,3) * dxidx(:,1,3)
11759599516SKenneth E. Jansen        dxidx(:,1,1) = a1
11859599516SKenneth E. Jansen        dxidx(:,1,2) = a2
11959599516SKenneth E. Jansen        dxidx(:,1,3) = a3
12059599516SKenneth E. Jansenc
12159599516SKenneth E. Jansen        a1 = Rcs(:,1,1) * dxidx(:,2,1) + Rcs(:,1,2) * dxidx(:,2,2) +
12259599516SKenneth E. Jansen     &       Rcs(:,1,3) * dxidx(:,2,3)
12359599516SKenneth E. Jansen        a2 = Rcs(:,2,1) * dxidx(:,2,1) + Rcs(:,2,2) * dxidx(:,2,2) +
12459599516SKenneth E. Jansen     &       Rcs(:,2,3) * dxidx(:,2,3)
12559599516SKenneth E. Jansen        a3 = Rcs(:,3,1) * dxidx(:,2,1) + Rcs(:,3,2) * dxidx(:,2,2) +
12659599516SKenneth E. Jansen     &       Rcs(:,3,3) * dxidx(:,2,3)
12759599516SKenneth E. Jansen        dxidx(:,2,1) = a1
12859599516SKenneth E. Jansen        dxidx(:,2,2) = a2
12959599516SKenneth E. Jansen        dxidx(:,2,3) = a3
13059599516SKenneth E. Jansenc
13159599516SKenneth E. Jansen        a1 = Rcs(:,1,1) * dxidx(:,3,1) + Rcs(:,1,2) * dxidx(:,3,2) +
13259599516SKenneth E. Jansen     &       Rcs(:,1,3) * dxidx(:,3,3)
13359599516SKenneth E. Jansen        a2 = Rcs(:,2,1) * dxidx(:,3,1) + Rcs(:,2,2) * dxidx(:,3,2) +
13459599516SKenneth E. Jansen     &       Rcs(:,2,3) * dxidx(:,3,3)
13559599516SKenneth E. Jansen        a3 = Rcs(:,3,1) * dxidx(:,3,1) + Rcs(:,3,2) * dxidx(:,3,2) +
13659599516SKenneth E. Jansen     &       Rcs(:,3,3) * dxidx(:,3,3)
13759599516SKenneth E. Jansen        dxidx(:,3,1) = a1
13859599516SKenneth E. Jansen        dxidx(:,3,2) = a2
13959599516SKenneth E. Jansen        dxidx(:,3,3) = a3
14059599516SKenneth E. Jansen
14159599516SKenneth E. Jansenc
14259599516SKenneth E. Jansenc... original
14359599516SKenneth E. Jansenc
14459599516SKenneth E. Jansen
14559599516SKenneth E. Jansen        a1 = dxidx(:,1,1)**2 + dxidx(:,2,1)**2 + dxidx(:,3,1)**2
14659599516SKenneth E. Jansen        a2 = dxidx(:,1,2)**2 + dxidx(:,2,2)**2 + dxidx(:,3,2)**2
14759599516SKenneth E. Jansen        a3 = dxidx(:,1,3)**2 + dxidx(:,2,3)**2 + dxidx(:,3,3)**2
14859599516SKenneth E. Jansen
14959599516SKenneth E. Jansenc
15059599516SKenneth E. Jansenc... change from original (analyt., could be error)
15159599516SKenneth E. Jansenc
15259599516SKenneth E. Jansen
15359599516SKenneth E. Jansencc        a1 = dxidx(:,1,1)**2 + dxidx(:,1,2)**2 + dxidx(:,1,3)**2
15459599516SKenneth E. Jansencc        a2 = dxidx(:,2,1)**2 + dxidx(:,2,2)**2 + dxidx(:,2,3)**2
15559599516SKenneth E. Jansencc        a3 = dxidx(:,3,1)**2 + dxidx(:,3,2)**2 + dxidx(:,3,3)**2
15659599516SKenneth E. Jansen
15759599516SKenneth E. Jansenc
15859599516SKenneth E. Jansenc.... correct for tetrahedra
15959599516SKenneth E. Jansenc
16059599516SKenneth E. Jansen        if (lcsyst .eq. 1) then
16159599516SKenneth E. Jansen          a1 = ( a1 + (dxidx(:,1,1) + dxidx(:,2,1) +
16259599516SKenneth E. Jansen     &                 dxidx(:,3,1))**2 ) * pt39
16359599516SKenneth E. Jansen          a2 = ( a2 + (dxidx(:,1,2) + dxidx(:,2,2) +
16459599516SKenneth E. Jansen     &                 dxidx(:,3,2))**2 ) * pt39
16559599516SKenneth E. Jansen          a3 = ( a3 + (dxidx(:,1,3) + dxidx(:,2,3) +
16659599516SKenneth E. Jansen     &                 dxidx(:,3,3))**2 ) * pt39
16759599516SKenneth E. Jansenc
168*f4d0b58bSKenneth E. Jansen!      flops = flops + 15*npro
16959599516SKenneth E. Jansen        endif
17059599516SKenneth E. Jansenc
17159599516SKenneth E. Jansenc.... set up the 1st level Eigenvectors =  R_t*Tau^*
17259599516SKenneth E. Jansenc
17359599516SKenneth E. Jansen        fact     =  (one / sqrt( two * rho * T )) / c
17459599516SKenneth E. Jansenc
17559599516SKenneth E. Jansen        Q(:,1,5) =  fact * ((c + u) * c - eb1 * gamb)
17659599516SKenneth E. Jansen        Q(:,2,5) = -fact * (c + u * gamb) * Rcs(:,1,1)
17759599516SKenneth E. Jansen        Q(:,3,5) = -fact * (c + u * gamb) * Rcs(:,1,2)
17859599516SKenneth E. Jansen        Q(:,4,5) = -fact * (c + u * gamb) * Rcs(:,1,3)
17959599516SKenneth E. Jansen        Q(:,5,5) =  fact * gamb
18059599516SKenneth E. Jansenc
18159599516SKenneth E. Jansen        Q(:,1,1) =  fact * ((c - u) * c - eb1 * gamb)
18259599516SKenneth E. Jansen        Q(:,2,1) =  fact * (c - u * gamb) * Rcs(:,1,1)
18359599516SKenneth E. Jansen        Q(:,3,1) =  fact * (c - u * gamb) * Rcs(:,1,2)
18459599516SKenneth E. Jansen        Q(:,4,1) =  fact * (c - u * gamb) * Rcs(:,1,3)
18559599516SKenneth E. Jansen        Q(:,5,1) =  fact * gamb
18659599516SKenneth E. Jansenc
18759599516SKenneth E. Jansen        Q(:,1,3) =  zero
18859599516SKenneth E. Jansen        Q(:,2,3) = -fact * c * sqt2 * Rcs(:,2,1) ! + in original Jo/Sh code
18959599516SKenneth E. Jansen        Q(:,3,3) = -fact * c * sqt2 * Rcs(:,2,2) ! could be error here,
19059599516SKenneth E. Jansen        Q(:,4,3) = -fact * c * sqt2 * Rcs(:,2,3) ! but unlikely
19159599516SKenneth E. Jansen        Q(:,5,3) =  zero
19259599516SKenneth E. Jansenc
19359599516SKenneth E. Jansen        Q(:,1,2) =  zero
19459599516SKenneth E. Jansen        Q(:,2,2) =  fact * c * sqt2 * Rcs(:,3,1)
19559599516SKenneth E. Jansen        Q(:,3,2) =  fact * c * sqt2 * Rcs(:,3,2)
19659599516SKenneth E. Jansen        Q(:,4,2) =  fact * c * sqt2 * Rcs(:,3,3)
19759599516SKenneth E. Jansen        Q(:,5,2) =  zero
19859599516SKenneth E. Jansenc
19959599516SKenneth E. Jansen        fact     =  (one / sqrt( cp * rho )) / T
20059599516SKenneth E. Jansenc
20159599516SKenneth E. Jansen        Q(:,1,4) =  fact * eb1
20259599516SKenneth E. Jansen        Q(:,2,4) =  fact * u * Rcs(:,1,1)
20359599516SKenneth E. Jansen        Q(:,3,4) =  fact * u * Rcs(:,1,2)
20459599516SKenneth E. Jansen        Q(:,4,4) =  fact * u * Rcs(:,1,3)
20559599516SKenneth E. Jansen        Q(:,5,4) = -fact
20659599516SKenneth E. Jansenc
20759599516SKenneth E. Jansenc.... flop count
20859599516SKenneth E. Jansenc
20959599516SKenneth E. Jansen
21059599516SKenneth E. Jansenc        do i = 1, nflow
21159599516SKenneth E. Jansenc           do j = 1, nflow
21259599516SKenneth E. Jansenc              Q(:,i,j) = abs(Q(:,i,j)) !make sure eigenv. are positive
21359599516SKenneth E. Jansenc           enddo
21459599516SKenneth E. Jansenc        enddo
21559599516SKenneth E. Jansen
216*f4d0b58bSKenneth E. Jansen   !      flops = flops + 203*npro
21759599516SKenneth E. Jansenc
21859599516SKenneth E. Jansenc.... return
21959599516SKenneth E. Jansenc
22059599516SKenneth E. Jansen        return
22159599516SKenneth E. Jansen        end
22259599516SKenneth E. Jansen
22359599516SKenneth E. Jansen
22459599516SKenneth E. Jansen        subroutine e3eig2 (u,      c,      AR1,    AR2,    AR3,
22559599516SKenneth E. Jansen     &                     rlam,   Q,    eigmax)
22659599516SKenneth E. Jansenc
22759599516SKenneth E. Jansenc----------------------------------------------------------------------
22859599516SKenneth E. Jansenc
22959599516SKenneth E. Jansenc  This routine diagonalizes a partially reduced matrix using the
23059599516SKenneth E. Jansenc Jacobi transformation.  This routine assumes that the original
23159599516SKenneth E. Jansenc 5x5 matrix is already reduced to 2x2.
23259599516SKenneth E. Jansenc
23359599516SKenneth E. Jansenc input:
23459599516SKenneth E. Jansenc  u      (npro)           : fluid velocity
23559599516SKenneth E. Jansenc  c      (npro)           : speed of sound
23659599516SKenneth E. Jansenc  AR1    (npro)           : aspect ratio factor in streamline direction
23759599516SKenneth E. Jansenc  AR2    (npro)           : aspect ratio factor in normal_1 direction
23859599516SKenneth E. Jansenc  AR3    (npro)           : aspect ratio factor in normal_2 direction
23959599516SKenneth E. Jansenc  Q      (npro,nflow,nflow) : 1st level eigenvectors of Tau matrix
24059599516SKenneth E. Jansenc
24159599516SKenneth E. Jansenc output:
24259599516SKenneth E. Jansenc  rlam   (npro,nflow)      : eigenvalues
24359599516SKenneth E. Jansenc  Q      (npro,nflow,nflow) : eigenvectors
24459599516SKenneth E. Jansenc
24559599516SKenneth E. Jansenc
24659599516SKenneth E. Jansenc                                  T
24759599516SKenneth E. Jansenc  This routine finds S that      S  Atau S = Lam  (Lam is Symm.)
24859599516SKenneth E. Jansenc
24959599516SKenneth E. Jansenc  Then returns       rlam <- Lam     and      Q <- Q S
25059599516SKenneth E. Jansenc
25159599516SKenneth E. Jansenc
25259599516SKenneth E. Jansenc Note: Jacobi transformation is extracted (and modified) from
25359599516SKenneth E. Jansenc       "Numerical Recipes: The Art of Scientific Computing" by
25459599516SKenneth E. Jansenc       Press, Flannery, Teukolsky and Vetterling, pp. 342-349.
25559599516SKenneth E. Jansenc
25659599516SKenneth E. Jansenc
25759599516SKenneth E. Jansenc Farzin Shakib, Spring 1989.
25859599516SKenneth E. Jansenc Zdenek Johan,  Winter 1991.  (Fortran 90)
25959599516SKenneth E. Jansenc----------------------------------------------------------------------
26059599516SKenneth E. Jansenc
26159599516SKenneth E. Jansen        include "common.h"
26259599516SKenneth E. Jansenc
26359599516SKenneth E. Jansen        dimension u(npro),                   c(npro),
26459599516SKenneth E. Jansen     &            AR1(npro),                 AR2(npro),
26559599516SKenneth E. Jansen     &            AR3(npro),                 rlam(npro,nflow),
26659599516SKenneth E. Jansen     &            Q(npro,nflow,nflow),         eigmax(npro,nflow)
26759599516SKenneth E. Jansenc
26859599516SKenneth E. Jansen        dimension offd(npro),                t(npro),
26959599516SKenneth E. Jansen     &            Rcs(npro),                 Rsn(npro)
27059599516SKenneth E. Jansenc
27159599516SKenneth E. Jansenc.... set the reduced eigensystem
27259599516SKenneth E. Jansenc
27359599516SKenneth E. Jansen        offd      = (AR2 + AR3) * pt5 * c**2
27459599516SKenneth E. Jansenc
27559599516SKenneth E. Jansen        rlam(:,1) = AR1 * (u + c)**2 + offd
27659599516SKenneth E. Jansen        rlam(:,2) = AR1 * u**2       + AR3 * c**2
27759599516SKenneth E. Jansen        rlam(:,3) = AR1 * u**2       + AR2 * c**2
27859599516SKenneth E. Jansen        rlam(:,4) = AR1 * u**2
27959599516SKenneth E. Jansen        rlam(:,5) = AR1 * (u - c)**2 + offd
28059599516SKenneth E. Jansenc
28159599516SKenneth E. Jansenc.... modify for time dependent problems
28259599516SKenneth E. Jansenc
28359599516SKenneth E. Jansen! consider time term if iremoveStabTimeTerm is set to zero
28459599516SKenneth E. Jansen        if(iremoveStabTimeTerm.eq.0) then
28559599516SKenneth E. Jansen           tmp  = dtsfct * four * (Dtgl * Dtgl)
28659599516SKenneth E. Jansen           rlam(:,:) = rlam(:,:) + tmp
28759599516SKenneth E. Jansen        endif
28859599516SKenneth E. Jansenc
28959599516SKenneth E. Jansenc.... compute the rotation tangent ( IEEE arithmetic if offd=0 )
29059599516SKenneth E. Jansenc
29159599516SKenneth E. Jansen        t = pt5 * (rlam(:,1) - rlam(:,5)) / offd
29259599516SKenneth E. Jansen        t = sign(one, t) / ( abs(t) + sqrt(one + t**2) )
29359599516SKenneth E. Jansenc
29459599516SKenneth E. Jansenc.... compute cosine and sin, and rotate the eigenvalues
29559599516SKenneth E. Jansenc
29659599516SKenneth E. Jansen        Rcs = one / sqrt( one + t**2 )
29759599516SKenneth E. Jansen        Rsn = t * Rcs
29859599516SKenneth E. Jansenc
29959599516SKenneth E. Jansen        rlam(:,1) = rlam(:,1) - t * offd
30059599516SKenneth E. Jansen        rlam(:,5) = rlam(:,5) + t * offd
30159599516SKenneth E. Jansenc
30259599516SKenneth E. Jansenc.... transform the Eigenvectors (all 5 components)
30359599516SKenneth E. Jansenc
30459599516SKenneth E. Jansen        t        = Rcs * Q(:,1,1) - Rsn * Q(:,1,5)
30559599516SKenneth E. Jansen        Q(:,1,5) = Rsn * Q(:,1,1) + Rcs * Q(:,1,5)
30659599516SKenneth E. Jansen        Q(:,1,1) = t
30759599516SKenneth E. Jansenc
30859599516SKenneth E. Jansen        t        = Rcs * Q(:,2,1) - Rsn * Q(:,2,5)
30959599516SKenneth E. Jansen        Q(:,2,5) = Rsn * Q(:,2,1) + Rcs * Q(:,2,5)
31059599516SKenneth E. Jansen        Q(:,2,1) = t
31159599516SKenneth E. Jansenc
31259599516SKenneth E. Jansen        t        = Rcs * Q(:,3,1) - Rsn * Q(:,3,5)
31359599516SKenneth E. Jansen        Q(:,3,5) = Rsn * Q(:,3,1) + Rcs * Q(:,3,5)
31459599516SKenneth E. Jansen        Q(:,3,1) = t
31559599516SKenneth E. Jansenc
31659599516SKenneth E. Jansen        t        = Rcs * Q(:,4,1) - Rsn * Q(:,4,5)
31759599516SKenneth E. Jansen        Q(:,4,5) = Rsn * Q(:,4,1) + Rcs * Q(:,4,5)
31859599516SKenneth E. Jansen        Q(:,4,1) = t
31959599516SKenneth E. Jansenc
32059599516SKenneth E. Jansen        t        = Rcs * Q(:,5,1) - Rsn * Q(:,5,5)
32159599516SKenneth E. Jansen        Q(:,5,5) = Rsn * Q(:,5,1) + Rcs * Q(:,5,5)
32259599516SKenneth E. Jansen        Q(:,5,1) = t
32359599516SKenneth E. Jansen
32459599516SKenneth E. Jansenc
32559599516SKenneth E. Jansenc.... extract maximum eigenvalues
32659599516SKenneth E. Jansenc
32759599516SKenneth E. Jansen        eigmax(:,1) = max(rlam(:,1), rlam(:,2), rlam(:,3),
32859599516SKenneth E. Jansen     &                    rlam(:,4), rlam(:,5))
32959599516SKenneth E. Jansen        eigmax(:,2) = eigmax(:,1)
33059599516SKenneth E. Jansen        eigmax(:,3) = eigmax(:,1)
33159599516SKenneth E. Jansen        eigmax(:,4) = eigmax(:,1)
33259599516SKenneth E. Jansen        eigmax(:,5) = eigmax(:,1)
33359599516SKenneth E. Jansen
33459599516SKenneth E. Jansenc
33559599516SKenneth E. Jansenc.... flop count
33659599516SKenneth E. Jansenc
337*f4d0b58bSKenneth E. Jansen   !      flops = flops + 85*npro
33859599516SKenneth E. Jansenc
33959599516SKenneth E. Jansenc.... return
34059599516SKenneth E. Jansenc
34159599516SKenneth E. Jansen        return
34259599516SKenneth E. Jansen        end
343