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

Go to the source code of this file.

Functions/Subroutines

subroutine calcmac (neq, z, zz, nev, xmac, xmaccpx, istartnmd, iendnmd, nmd, cyclicsymmetry, neqact, bett, betm)
 

Function/Subroutine Documentation

◆ calcmac()

subroutine calcmac ( integer  neq,
real*8, dimension(neq,*)  z,
real*8, dimension(2*neqact,*)  zz,
integer  nev,
real*8, dimension(nev,*)  xmac,
complex*16, dimension(nev,*)  xmaccpx,
integer, dimension(*)  istartnmd,
integer, dimension(*)  iendnmd,
integer  nmd,
integer  cyclicsymmetry,
integer  neqact,
real*8, dimension(*)  bett,
real*8, dimension(*)  betm 
)
47 !
48 ! calculates the Modal Assurance Criterium MAC=<z,zz>/(||z||*||zz||)
49 !
50  implicit none
51 !
52  integer neq,nev,i,j,k,l,istartnmd(*),iendnmd(*),nmd,
53  & cyclicsymmetry,neqact
54 !
55  real*8 bett(*),betm(*),xmac(nev,*),z(neq,*),zz(2*neqact,*)
56 !
57  complex*16 xmaccpx(nev,*)
58 !
59  if(cyclicsymmetry.eq.0)then
60 ! size of vectors
61  do i=1,nev
62  do k=1,neq
63  bett(i)=bett(i)+z(k,i)**2
64  betm(i)=betm(i)+zz(k,i)**2+zz(k+neq,i)**2
65  enddo
66  enddo
67  do i=1,nev
68  bett(i)=dsqrt(bett(i))
69  betm(i)=dsqrt(betm(i))
70  enddo
71 ! Calculation of MAC
72  do i=1,nev
73  do j=1,nev
74  do k=1,neq
75  xmaccpx(i,j)=xmaccpx(i,j)+z(k,i)
76  & *(zz(k,j)+zz(k+neq,j)*(0.d0,1.d0))
77  enddo
78  xmac(i,j)=cdabs(xmaccpx(i,j))
79  xmac(i,j)=xmac(i,j)/bett(i)/betm(j)
80  enddo
81  enddo
82 !
83 ! Cyclic Symmetry
84 ! size of vectors
85 !
86  else
87  do i=1,nev
88  do k=1,neqact
89  bett(i)=bett(i)+z(k,i)**2+z(k+neqact,i)**2
90  betm(i)=betm(i)+zz(k,i)**2+zz(k+neqact,i)**2
91  enddo
92  bett(i)=dsqrt(bett(i))
93  betm(i)=dsqrt(betm(i))
94  enddo
95 ! Calculation of MAC
96  do l=1,nmd
97  do i=istartnmd(l),iendnmd(l)
98  do j=istartnmd(l),iendnmd(l)
99  xmac(i,j)=0
100  do k=1,neqact,2
101  xmaccpx(i,j)=xmaccpx(i,j)+
102  & (z(k,i)-z(k+neqact,i)*(0.d0,1.d0))*
103  & (zz(k,j)+zz(k+neqact,j)*(0.d0,1.d0))
104  enddo
105  xmac(i,j)=cdabs(xmaccpx(i,j))
106  xmac(i,j)=(xmac(i,j))/bett(i)/betm(j)
107  enddo
108  enddo
109  enddo
110  endif
111 !
112  return
Hosted by OpenAircraft.com, (Michigan UAV, LLC)