基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量

一、問題描述

作為圖所示結構的模態分析示例,我們對結構的自由振動響應感興趣。在材料密度為的附加規范下,我們解決了特征值問題,以確定結構自由振動的固有圓頻率和模態振幅向量。

基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖1

二、理論分析

二維桿單元有x方向位移u和y方向位移v,其動能為

基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖2

位移可以表示成如下形式:

基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖3

寫成矩陣形式:

基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖4

基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖5
基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖6

二維桿單元質量矩陣為

基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖7

三、桁架單元和節點的編號以及結點坐標的定義

基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖8

具體每根桿單元的節點編號以及材料屬性,在input文件中詳細介紹。

五、數據結果

基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖9

一階模態


基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖10

二階模態


基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖11

三階模態


基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖12

四階模態


基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖13

五階模態


基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖14


六階模態


基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖15


七階模態


基于python進行有限元分析—定結構自由振動的固有圓頻率和模態振幅向量的圖16


八階模態

六、固有頻率和模態陣型

(1) Natural circular frequencies

w1=767.06897

w2=2082.31226

w3=2958.71069

w4=4504.79346

w5=6790.69092

w6=7976.02197

w7=8664.74707

w8=8977.36816

(2)Modal amplitude vectors

[-0.26045, -2.19420, -1.21309, -3.59420, -1.44514, -1.80214, 4.77206,4.36751]

[-2.20699, 3.28239, -3.12539, -2.14116, 5.82557, -0.93447, 1.05816,-0.72687]

[ 0.77543, -0.71694, -2.88826, 2.36973, -0.14241, -3.82935, -2.17366,0.46372]

[-2.12749, 2.68640, -1.95703, -0.43223, -4.27362, 0.56904, -0.34133,-0.48283]

[-0.51559, -3.85516, -1.70559, -3.93409, -0.05494, 1.98050, -2.78105,-3.95626]

[-4.11827, -2.55593, 1.45942, 1.13320, 0.90777, 1.62906, -3.31909,4.40733]

七、總結


通過使用有限元法解決結構動力學問題,我們可以了解有限元法的原理,掌握python的編程方法和操作環境以及將問題模塊化處理的思路。將問題的已知條件轉化python語言,并列出邊界條件和協調性條件,計算出所求未知物理量。有限元法的基本思路是首先將系統離散化處理,對于該問題的桁架結構,是將其分解為桿單元和節點,這一步決定了有限元方法的精確度。利用公式單元剛度矩陣,并根據幾何關系利用直接剛度法,將每個單元裝配在系統剛度矩陣中。

題中求了8階的固有頻率和模態振幅,從結果中可以看出,隨著階數的增加固有頻率的值逐漸增加,模態幅值也逐漸變大。并且從上課中學習到如果想讓8階固有頻率和模態計算更加準確,應在計算時設計的階數更大(大于8階),提高計算精度。

四、程序與注解


import matplotlib.pyplot as plt

import torch

import math

import csv

import numpy as nup

import pandas as pd

#%%


#初始化各參數

E=10e6

A=1.5

density=2.6e-4

ne=8#桿單元數

np=6#節點數

data_1=pd.read_excel('./input3.xlsx',sheet_name='Sheet1',header=0)#sheet1前兩列是節點坐標,之后是x方向約束,y方向約束(有為1,無為0)

data_2=pd.read_excel('./input3.xlsx',sheet_name='Sheet2',header=0)#sheet2按列依次為:左節點編號,右節點編號,楊氏模量、截面積。

node=data_1.values

element=data_2.values

node,element

#%%


K=torch.zeros((2*np,2*np),dtype=torch.float64)

element_stiffness=torch.zeros((ne,4,4))#存儲每個單元剛度矩陣

for lop in range(ne):

以下內容為付費內容,請購買后觀看

付費部分包括實現整個過程的python代碼!有任何問題直接私信我就好!

App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1
1