CalculiX  2.13
A Free Software Three-Dimensional Structural Finite Element Program
sortev.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine sortev (nev, nmd, eigxx, cyclicsymmetry, x, eigxr, ipev, istartnmd, iendnmd, a, b)
 

Function/Subroutine Documentation

◆ sortev()

subroutine sortev ( integer  nev,
integer  nmd,
complex*16, dimension(*)  eigxx,
integer  cyclicsymmetry,
complex*16, dimension(nev,*)  x,
real*8, dimension(*)  eigxr,
integer, dimension(*)  ipev,
integer, dimension(*)  istartnmd,
integer, dimension(*)  iendnmd,
complex*16, dimension(nev)  a,
complex*16, dimension(nev,*)  b 
)
27 !
28 ! sorts the eigenvalues and eigenvectors of complex frequency
29 !
30  implicit none
31 !
32  integer nev,i,j,k,l,m,istartnmd(*),iendnmd(*),nmd,
33  & cyclicsymmetry,ipev(*)
34 !
35  real*8 eigxr(*)
36 !
37  complex*16 eigxx(*),a(nev),b(nev,*),x(nev,*)
38 !
39  if (cyclicsymmetry.eq.0)then
40 !
41 ! sorting the eigenvalues according to their size
42 !
43  do i=1,nev
44  ipev(i)=i
45  eigxr(i)=cdabs(eigxx(i))
46  enddo
47  call dsort(eigxr,ipev,nev,2)
48 !
49 ! sorting the eigenvectors
50 !
51  do i=1,nev
52  a(i)=eigxx(ipev(i))
53  do j=1,nev
54  b(j,i)=x(j,ipev(i))
55  enddo
56  enddo
57 !
58 ! copying in the original fields
59 !
60  do i=1,nev
61  eigxx(i)=a(i)
62  do j=1,nev
63  x(i,j)=b(i,j)
64  enddo
65  enddo
66  else
67 !
68 ! Cyclic Symmetry
69 !
70  do l=1,nmd
71 !
72 ! sorting the eigenvalues according to their size
73 !
74 !
75  do i=istartnmd(l),iendnmd(l)
76  if (l.eq.1) then
77  ipev(i)=i
78  eigxr(i)=cdabs(eigxx(i))
79  k=i
80  else
81  k=i-istartnmd(l)+1
82  ipev(k)=i
83  eigxr(i)=cdabs(eigxx(i))
84  endif
85  enddo
86  call dsort (eigxr,ipev,k,2)
87 !
88 ! sorting the eigenvectors
89 !
90  do i=istartnmd(l),iendnmd(l)
91  if (l.eq.1) then
92  m=ipev(i)
93  a(i)=eigxx(m)
94  do j=istartnmd(l),iendnmd(l)
95  b(j,i)=x(j,m)
96  enddo
97  else
98  k=i-istartnmd(l)+1
99  a(i)=eigxx(ipev(k))
100  do j=istartnmd(l),iendnmd(l)
101  b(j,i)=x(j,m)
102  enddo
103  endif
104  enddo
105  enddo
106 !
107 ! copying in the original fields
108 !
109  do l=1,nmd
110  if((a(istartnmd(l)).ne.0).and.
111  & (b(istartnmd(l),istartnmd(l)).ne.0))then
112  do i=istartnmd(l),iendnmd(l)
113  eigxx(i)=a(i)
114  do j=istartnmd(l),iendnmd(l)
115  x(i,j)=b(i,j)
116  enddo
117  enddo
118  endif
119  enddo
120  endif
121 !
122  return
subroutine dsort(dx, iy, n, kflag)
Definition: dsort.f:6
Hosted by OpenAircraft.com, (Michigan UAV, LLC)