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

Go to the source code of this file.

Functions/Subroutines

subroutine effectivemodalmass (neq, nactdof, mi, adb, aub, jq, irow, nev, z, co, nk)
 

Function/Subroutine Documentation

◆ effectivemodalmass()

subroutine effectivemodalmass ( integer, dimension(*)  neq,
integer, dimension(0:mi(2),*)  nactdof,
integer, dimension(*)  mi,
real*8, dimension(*)  adb,
real*8, dimension(*)  aub,
integer, dimension(*)  jq,
integer, dimension(*)  irow,
integer  nev,
real*8, dimension(*)  z,
real*8, dimension(3,*)  co,
integer  nk 
)
21 !
22 ! calculates the effective modal mass for frequency
23 ! calculations
24 !
25  implicit none
26 !
27  integer i,j,k,nk,mi(*),nactdof(0:mi(2),*),neq(*),jq(*),irow(*),
28  & nev
29 !
30  real*8 x(neq(2)),y(neq(2)),adb(*),aub(*),z(*),part(nev,6),
31  & toteffmass(6),effmodmass(nev,6),toteffmodmass(6),co(3,*)
32 !
33 ! translations in x, y and z
34 !
35  do j=1,3
36  do i=1,neq(2)
37  x(i)=0.d0
38  enddo
39  do i=1,nk
40  if(nactdof(j,i).gt.0) x(nactdof(j,i))=1.d0
41  enddo
42 !
43 ! {y}=[M].{x}
44 !
45  call op(neq(2),x,y,adb,aub,jq,irow)
46 !
47 ! participation factors {phi_k}^T.{y}
48 !
49  do k=1,nev
50  call multvec(neq(2),z((k-1)*neq(2)+1),y,part(k,j))
51  enddo
52 !
53 ! total effective mass {x}^T.{y}
54 !
55  call multvec(neq(2),x,y,toteffmass(j))
56 !
57 ! effective modal mass and its total
58 !
59  toteffmodmass(j)=0.d0
60  do k=1,nev
61  effmodmass(k,j)=(part(k,j)**2)
62  toteffmodmass(j)=toteffmodmass(j)+effmodmass(k,j)
63  enddo
64  enddo
65 !
66 ! rotations about x, y and z
67 !
68  do j=4,6
69  do i=1,neq(2)
70  x(i)=0.d0
71  enddo
72  do i=1,nk
73  if(j.eq.4) then
74  if(nactdof(2,i).gt.0) then
75  x(nactdof(2,i))=-co(3,i)
76  endif
77  if(nactdof(3,i).gt.0) then
78  x(nactdof(3,i))=co(2,i)
79  endif
80  elseif(j.eq.5) then
81  if(nactdof(3,i).gt.0) then
82  x(nactdof(3,i))=-co(1,i)
83  endif
84  if(nactdof(1,i).gt.0) then
85  x(nactdof(1,i))=co(3,i)
86  endif
87  elseif(j.eq.6) then
88  if(nactdof(1,i).gt.0) then
89  x(nactdof(1,i))=-co(2,i)
90  endif
91  if(nactdof(2,i).gt.0) then
92  x(nactdof(2,i))=co(1,i)
93  endif
94  endif
95  enddo
96 !
97 ! {y}=[M].{x}
98 !
99  call op(neq(2),x,y,adb,aub,jq,irow)
100 !
101 ! participation factors {phi_k}^T.{y}
102 !
103  do k=1,nev
104  call multvec(neq(2),z((k-1)*neq(2)+1),y,part(k,j))
105  enddo
106 !
107 ! total effective mass {x}^T.{y}
108 !
109  call multvec(neq(2),x,y,toteffmass(j))
110 !
111 ! effective modal mass and its total
112 !
113  toteffmodmass(j)=0.d0
114  do k=1,nev
115  effmodmass(k,j)=(part(k,j)**2)
116  toteffmodmass(j)=toteffmodmass(j)+effmodmass(k,j)
117  enddo
118  enddo
119 !
120 ! writing the participation factors into the .dat-file
121 !
122  write(5,*)
123  write(5,*) ' P A R T I C I P A T I O N F A C T O R S'
124  write(5,*)
125  write(5,100)
126  100 format( 'MODE NO. X-COMPONENT Y-COMPONENT Z-COMPONENT
127  & X-ROTATION Y-ROTATION Z-ROTATION')
128  write(5,*)
129  do k=1,nev
130  write(5,'(i7,6(2x,e14.7))') k,(part(k,j),j=1,6)
131  enddo
132 !
133 ! writing the effective mass into the .dat-file
134 !
135  write(5,*)
136  write(5,*) ' E F F E C T I V E M O D A L M A S S'
137  write(5,*)
138  write(5,100)
139  write(5,*)
140  do k=1,nev
141  write(5,'(i7,6(2x,e14.7))') k,(effmodmass(k,j),j=1,6)
142  enddo
143  write(5,'(a7,6(2x,e14.7))') 'TOTAL ',(toteffmodmass(j),j=1,6)
144 !
145 ! writing the total effective mass into the .dat-file
146 !
147  write(5,*)
148  write(5,*) ' T O T A L E F F E C T I V E M A S S'
149  write(5,*)
150  write(5,100)
151  write(5,*)
152  write(5,'(a7,6(2x,e14.7))') ' ',(toteffmass(j),j=1,6)
153  write(5,*)
154 !
155  return
subroutine multvec(n, x, y, dot)
Definition: multvec.f:20
subroutine op(n, x, y, ad, au, jq, irow)
Definition: op.f:26
Hosted by OpenAircraft.com, (Michigan UAV, LLC)