基于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