2 DOF System
2 DOF System
G. Boffi
1 2 DOF system All the helper functions are defined at the end of this file.
A k
x, u
C
pD(t)
D m
L
L
y, v
k B
L
E m
L
L
L
Using the function material_point(xy, body) the relevant points in our mechanism can be specified as follows
A = material_point(xy=( , ), body= ) B = material_point(xy=( , ), body= ) C = material_point(xy=( , ), body= ) D = material_point(xy=( , ), body= ) E = material_point(xy=( , ), body= )
The relevant individual points (that is, the ones associated with a force) are then collected in an array and the corresponding spring stiffnesses (in the orthogonal directions), masses and applied external forces are collected in parallel in three other arrays.
points = array([A,
D,
B,
E])
masses = array((mass( ), mass( ), mass( ), mass( )))
stiffs = array((stif( , ), stif( , ), stif( , ), stif( , )))
forces = array((forc( , ), forc( , ), forc( , ), forc( , )))
Our system has 2 DOF, for each DOF we have to determine the centre of instant rotation and the amplitude of the rotation for each of the (two) rigid bodies, so that one DOF is equal to 1 and all the other DOFs (here the other one) are (is) equal to 0.
This part of the procedure was performed on squared paper, with a pencil and a ruler -- these are the results
#---------------body -------------body -----O_r_s = [[O_dr(( , . ), + ), O_dr(( , ), - )], # x_ = , x_ =
[O_dr(( , . ), - ), O_dr(( , ), + )]] # x_ = , x_ = #..............CIR.amp..............CIR...amp
For every DOF xj we unfold from O_r_s the list of the CIRs and the rotation amplitudes (for oas in O_r_s below) for every body in the system, next for every relevant point we compute the displacement for xj =1, xi=j =0 using the utility function disp() defined below.
uv = array([[disp(P, oas) for P in points] for oas in O_r_s]) for dd, label in zip(uv, ('x = ,x = ', 'x = ,x = ')):
print(label, end='-> ') print('; '.join('%s:u=%+ . f,v=%+ . f'%(p,*v)for p, v in zip('ADBE',dd)))
1
+1
u/x1
-1
-1
-1
0
+1
v/x1
0
+2
-1
0
2 +2
+6 0
0
+1 +1
u/x2
+1
v/x2
0
-1
-3
+1
0
-1
-1
0
-1
+1
-1
-1
x = ,x = -> A:u=+ . ,v=+ . ; D:u=- . ,v=+ . ; B:u=+ . ,v=+ . ; E:u=+ . ,v=+ . x = ,x = -> A:u=+ . ,v=- . ; D:u=+ . ,v=- . ; B:u=+ . ,v=+ . ; E:u=- . ,v=- .
Eventually we use the PVD to compute the coefficients of the mass and the stiffness matrices, taking into account the individual masses and stiffnesses of the individual points.
M = np.array([[(masses*acc*vd).sum() for acc in uv] for vd in uv]) K = np.array([[(stiffs*disp*vd).sum() for disp in uv] for vd in uv]) p = np.array([(forces*vd).sum() for vd in uv])
The equations of motion:
M=m
42.00000 -22.00000
-22.00000 12.00000
K=k
1.00000 0.00000
0.00000 1.00000
p = k
6.00000 -3.00000
sin2t/T
+42mx?1-22x?2+kx1 =+6p(t) -22mx?1+12x?2+kx2 =-3p(t) We solve the problem of free vibrations using the eigh() library function
evals, evecs = eigh(K, M) evecs[:, ] *= - . pstar = evecs.T@p
2
Eigenvalues:
Eigenvectors:
=
0.01865 0.00000
0.00000 2.68135
=
0.12073 -0.06381
0.76513 1.44773
The modal equations of motion:
t
mq? 1+0.018647kq1 =0.915807ksin2 T
t mq? 2+2.681353kq2 =0.247584ksin2 T Dividing each modal equation by m we have
q? i +2i 20q+i = pi 20sin? 0t with i =Cisin? 0t, substituting and removing the sine we have
hence
(2i -? 2)Ci20 = pi 20
Ci
=
pi 2i -? 2
and, taking into account that the response starts from rest conditions,
qi
=
pi 2i -? 2
sin? 0
t-
? i
sini 0 t
.
Which is the value of ? ? We have 2t/T =? 0t or
? = 2 = 2 0T 14
because in the text of the problem we have (0T)2 =14.
blambda= *pi/sqrt( . ) den = /(evals-blambda** ) C = pstar*den beta = blambda/sqrt(evals)
q_ = - . q_ = - .
d (sin( . d (sin( .
omega_ ?t)- . omega_ ?t)- .
sin( . sin( .
omega_ ?t)) omega_ ?t))
#plt.plot(t,- . #plt.plot(t,- .
t
t
q1 =-0.326929
sin2 T
-12.297245sin0.0813192 T
q2 =-1.787164
t sin2
T
t -1.025508sin0.9751272
T
*(sin( *pi*t)- . *(sin( *pi*t)- .
*sin( *pi*t/beta[ ]))) *sin( *pi*t/beta[ ])))
t = linspace( , ,
)[:,None]
q = array(C*(sin( *pi*t)-beta*sin( *pi*t/beta)))
x = q@evecs.T
vd = x@array(( ,- ))
show(t, q, title='Modal responses', legends=['q_ /delta', 'q_ /delta'])
show(t, x, title='DOF responses', legends=['x_ /delta', 'x_ /delta'])
show(t, vd, title='Vertical displacement of D',
legends=['v_D/delta'])
3
4
1.1 Initialization Cells 1.1.1 Numpy and Scipy
import numpy as np from numpy import array, cos, linspace, pi, sin, sqrt from scipy.linalg import eigh
1.1.2 Matplotlib
5
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related searches
- lymphatic system and immune system similarities
- 3 2 the international system of units
- 3 2 the international system of units key
- 3 2 the international system of units answers
- system admin vs system engineer
- system verilog system functions
- nyc dof payment
- 2 variable system calculator
- ca dof bcp
- ca dof population
- dof bcp s
- system of 2 equation solver