Ejemplo n.º 1
0
def q3e(mo2=[], kj=1.e3, add_m=0.0):

 if type(mo2)==list:
    mo2 = load_poppy(pflag=0) 
 
 M,K,Ks = matrix_assembly(mo2, add_m)  
 [w,p] = mv.feeig(K+kj*Ks,M); f=w/(2.*np.pi);
 [w1,p1] = mv.feeig(K*100+kj*Ks,M); f1=w1/(2.*np.pi);
 
 print('f  =',f[:4],'\nfr =',f1[:4],'\ndf =',(f1[:4]/f[:4]-1)*100.)    
Ejemplo n.º 2
0
def q3d(mo2=[], idmode=1, add_m=0.0):

 if type(mo2)==list:
    mo2 = load_poppy(pflag=0)   
  
 M,K,Ks = matrix_assembly(mo2, add_m)
 [w,p] = mv.feeig(K+100*Ks,M); X1=p[:,idmode-1:idmode]; #Shape of first mode
 [w1,p1] = mv.feeig(K+1000*Ks,M); f1=w1/(2.*np.pi)
 fr=np.sqrt(X1.T @ (K+1000*Ks) @ X1)/ (X1.T @ M @ X1) / (2.*np.pi)

 print(f1[0],fr[0,0],np.abs(f1[0]/fr[0,0]-1.)*100.)
Ejemplo n.º 3
0
def q1(mo2=[], kj=0., pflag=1):
  
 if type(mo2)==list:
    mo2 = load_poppy(pflag=0) 
  
 # compute modes
 M,K,Ks = matrix_assembly(mo2)
 [w,phi] = mv.feeig(K+kj*Ks, M); f = w/(2.*np.pi)
 #def1=res(DOF=DOF,Def=p,data=f.reshape((13,1)))
 mo2.TR['val'] = mo2.TR['Def'] @ phi
 if pflag:
  feplot.writePARAVIEW(mo2,mo2.TR,filename='results1.vtk')

 return f, phi
Ejemplo n.º 4
0
def q3(mo2=[], add_m=0., Nk=20, pflag=0):

 if type(mo2)==list:
    mo2 = load_poppy(pflag=0)    
    
 kj=np.logspace(2,6,Nk); M,K,Ks = matrix_assembly(mo2, add_m) 
 xyplot=dict([('X',np.log10(kj)), ('Xlabel','log(ks)'),('Ylabel','Frequency'),
             ('Y',np.zeros((kj.size,mo2.TR['Def'].shape[1]))) ])  
 
 for j1 in range(kj.size):
    [w,phi]=mv.feeig(K+kj[j1]*Ks,M); f = w/(2.*np.pi)
    mo2.TR['val'] = mo2.TR['Def'] @ phi; xyplot['Y'][j1,:]=f
    if pflag:
     feplot.writePARAVIEW(mo2,mo2.TR,filename='results_KS{:2d}.vtk'.format(int(kj[j1])))
        
 mv.plot2D(xyplot,yscale='log')    

 return xyplot
Ejemplo n.º 5
0
def q4(mo2=[], kj=1.e3, add_m=430.0e-6):
    
 if type(mo2)==list:
    mo2 = load_poppy(pflag=0)    
    
 xi=0.01;freq=np.linspace(0,300,5000);w=freq*2.*np.pi;
 M,K,Ks = matrix_assembly(mo2,add_m); in1=9;out1=[9,3,10];
 [wk,pk]=mv.feeig(K+kj*Ks,M);  
 
 xyplot=dict([('X',freq), ('Xlabel','Frequency'),
             ('Y',np.zeros((freq.size,2))),('Ylabel',['Amplitude','Moment']) ]) 
 
 for j1 in range(len(w)):
    d1 = 1./(wk**2-w[j1]**2 + 2.j*xi*wk*w[j1] );
    h1 = pk @ np.diag(d1) @ pk.T
    xyplot['Y'][j1,0]=np.abs(h1[3,3]);xyplot['Y'][j1,1]=np.abs(h1[3,10])

 mv.plot2D(xyplot,yscale='log') 
#manque calcul de moment
Ejemplo n.º 6
0
def q2(mo2=[], kj=0., add_m=0., Nt=20, pflag=0):
    
 if type(mo2)==list:
    mo2 = load_poppy(pflag=0)
    
 theta=np.linspace(0,1,Nt)*90.
 xyplot=dict([('X',theta), ('Xlabel','Angle'),  ('Ylabel','Frequency'), 
             ('Y',np.zeros((theta.size,mo2.TR['Def'].shape[1]))) ])

 for j1 in range(len(theta)):
    a=theta[j1]
    ROT = np.array([[1,0,0],[0,mv.cosd(a),mv.sind(a)],[0,-mv.sind(a),mv.cosd(a)]])
    MROT = block_diag(ROT,ROT,ROT,ROT)
    M,K,Ks = matrix_assembly(mo2, add_m, MROT)    
    #compute modes
    [w,phi] = mv.feeig(K+kj*Ks,M); f = w/(2.*np.pi)
    mo2.TR['val'] = mo2.TR['Def'] @ phi; xyplot['Y'][j1,:]=f
    if pflag:
     feplot.writePARAVIEW(mo2,mo2.TR,filename='results_TH{:2d}.vtk'.format(int(a)))
    
 mv.plot2D(xyplot,yscale='log',ylim=[3.0e0,1.0e3])
 
 return xyplot
Ejemplo n.º 7
0
def q7b(nout=0):

    #%% parameters 2 DOF system
    pb = dict([
        ('m', 1500.),
        ('a', 1.2),
        ('b', 1.4),  #2 DOF
        ('ka', []),
        ('kb', []),
        ('k0', 40e3),  #stiffness  
        ('u0', [1., 0.]),
        ('v0', [1., 0.]),  #initial conditions
        ('balanced', 1)
    ])

    #%% Compute matrices of 2 DOF system
    if pb['balanced'] == 1:
        pb['ka'] = (pb['a'] + pb['b']) / pb['a'] * pb['k0']
        pb['kb'] = (pb['a'] + pb['b']) / pb['b'] * pb['k0']

    M = np.array([[pb['m'], 0], [0., pb['m'] * (pb['a'] + pb['b'])**2 / 2.]])
    K = np.array(
        [[pb['ka'] + pb['kb'], -pb['a'] * pb['ka'] + pb['b'] * pb['kb']],
         [
             -pb['a'] * pb['ka'] + pb['b'] * pb['kb'],
             pb['ka'] * pb['a']**2 + pb['kb'] * pb['b']**2
         ]])
    if nout == 0:
        print("M= ", M)
        print(' ')
        print("K= ", K)

    #%% determine modes  (are these mass normalized ? see code in mevib.py)
    vals, vecs = feeig(K, M)
    if nout == 0: print("Eigenvalues (Hz): ", vals / 2 / np.pi)
    else: return pb, vals, vecs, M, K