Wilson-θ法计算步骤
- 格式:pdf
- 大小:174.12 KB
- 文档页数:1
结构动力学大作业(威尔逊- 法)姓名:学号:班级:专业:威尔逊—θ法原理及应用【摘要】在求解单自由度体系振动方程时我们用了常加速度法及线加速度法等数值分析方法。
在多自由度体系中,也有类似求解方法,即中心差分法及威尔逊—θ法。
实际上后两种方法也能求解单自由度体系振动方程。
对于数值方法,有三个重要要求:收敛性、稳定性及精度。
本文推导了威尔逊-θ法的公式,并利用MATLAB 编程来研究单自由度体系的动力特性。
【关键词】威尔逊—θ法 冲击荷载 阻尼比【正文】威尔逊-θ法可以很方便的求解任意荷载作用下单自由度体系振动问题。
实际上,当 1.37θ>时,威尔逊—θ法是无条件收敛的. 一、威尔逊—θ法的原理威尔逊-θ法是线性加速度法的一种拓展(当1θ=时,两者相同),其基本思路和实现方法是求出在时间段[],t t t θ+∆时刻的运动,其中1θ≥,然后通过内插得到i t t +∆时刻的运动(见图 1。
1)。
图 1。
11、公式推导推导由t 时刻的状态求t t θ+∆时刻的状态的递推公式:{}{}{}{})(t t t t t yy t y y -∆+=∆++θτθτ对τ积分{}{}{}{}{})(22t t t t t t yy t y y y-∆++=∆++θτθττ{}{}{}{}{}{})(6232t t t t t t t yy t y y y y -∆+++=∆++θτθτττt ∆=θτ{}{}{}{}{})(21t t t t t t t yy t y t y y -∆+∆+=∆+∆+θθθθ{}{}{}{}{})2(6)(2t t t t t tt yy t y t y y +∆+∆+=∆+∆+θθθθ {}{}{}{}{}t t t t t t t y y t y y t y26)()(62-∆--∆=∆+∆+θθθθ{}{}{}{}{}t t t t t t t yty y y t y22)(3∆---∆=∆+∆+θθθθ[]{}[]{}[]{}{}P y k y C ym =++ []{}[]{}[]{}{}t t t t t t t t P y k y C y m ∆+∆+∆+∆+=++θθθθ[]{}{}t t tt R y k ∆+∆+=θθ[][][][]c tm t k k ∆+∆+=θθ3)(62[]{}{}{}[]{}{}{}[]{}{}{})223()26)(6()(2t tt t t t t tt ty ty y t c y y t y t m P P P R ∆++∆++∆+∆+-+=∆+θθθθθ2、MA TLAB 源程序: clc;clear;K=input (’请输入结构刚度k (N/m )'); M=input ('请输入质量(kg )');C=input (’请输入阻尼(N *s/m )'); t=sym (’t ’);%产生符号对象t Pt=input(’请输入荷载);Tp=input (’请输入荷载加载时长(s)'); Tu=input ('请输入需要计算的时间长度(s ) ’); dt=input ('请输入积分步长(s)'); Sita=input('请输入θ’);uds=0:dt:Tu;%确定各积分步时刻pds=0:dt:Tp;Lu=length(uds);Lp=length(pds);if isa(Pt,'sym')%荷载为函数P=subs(Pt,t,uds); %将荷载在各时间步离散if Lu〉LpP(Lp+1:Lu)=0;endelseif isnumeric(Pt)%荷载为散点if Lu〈=LpP=Pt(1:Lu);elseP(1:Lp)=Pt;P(Lp+1:Lu)=0;endendy=zeros(1,Lu);%给位移矩阵分配空间y1=zeros(1,Lu);%给速度矩阵分配空间y2=zeros(1,Lu);%给加速度矩阵分配空间pp=zeros(1,Lu-1);%给广义力矩阵分配空间yy=zeros(1,Lu-1);%给y(t+theta*t)矩阵分配FF=zeros(1,Lu);%给内力矩阵分配空间y(1)=input('请输入初位移(m)’);y1(1)=input(’请输入初速度(m/s)');%——-—-——-———--———--初始计算-—-—------———————--——--——y2(1)=(P(1)—C*y1(1)-K*y(1))/M;%初始加速度FF(1)=P(1)-M*y2(1);l=6/(Sita*dt)^2;q=3/(Sita*dt);r=6/(Sita*dt);s=Sita*dt/2;for z=1:Lu—1kk=K+l*M+q*C;pp(z)=P(z)+Sita*(P(z+1)—P(z))+(l*y(z)+r*y1(z)+2*y2(z))*M+(q*y(z)+2*y1(z)+s*y2(z))*C;yy(z)=pp(z)/kk;y2(z+1)=l/Sita*(yy(z)—y(z))-l*dt*y1(z)+(1-3/Sita)*y2(z);y1(z+1)=y1(z)+dt/2*(y2(z+1)+y2(zp));y(z+1)=y(z)+y1(z)*dt+dt*dt/6*(y2(z+1)+2*y2(z));FF(z+1)=P(z+1)—M*y2(z+1);endplot (uds ,y ,’r ’),xlabel('时间 t ’),ylabel('位移 y ’),title ('位移图形’) 二、利用威尔逊-θ法求冲击荷载下的结构反应1、矩形脉冲研究不同时长脉冲作用下,体系振动位移。
第三章离散化结构动力方程的解法(2013.4.24)§3.1 绪言对于一个实际结构,由有限元法离散化处理后,应用瞬时最小势能原理可导出动力方程[]{}[]{}[]{}{}++=(3.1)M u C u K u F(t)这里,{}u、{}u、{}u及{}F t分别表示加速度、速度、位移及所()作用的外力矢量,他们都是与时间有关的。
从数学的角度来看,式(3.1)是一个常系数的二阶线性常微分方程组,对于它的求解原则上并无困难。
但是,由于[]M、[]C 和[]K的阶数非常高,使得式(3.1)的求解必须花费很大的代价,便促使人们去寻求一些效率高的近似计算方法。
目前,用于求解式(3.1)的方法,大致可分为两大类。
一是坐标变换法,它是对结构动力方程式(3.1),在求解之前,进行模态坐标变换,实际上就是一种Ritz变换,即把原物理空间的动力方程变换到模态空间中去求解。
现在,普遍使用的方法是模态(振型)迭加法,即用结构的前q阶实际主模态集(主振型阵)构成坐标变换阵进行变换。
通过这一变换,实现降阶,求较好的近似解,而且,还用解除耦合的办法,简化方程的计算。
还有一种所谓假设模态法,即是用一组假设模态,构成模态坐标变换阵进行变换,获得一组降阶的而不解耦的模态基坐标方程。
显然,这种方法的计算精度,取决于所假设的模态。
用Ritz矢量法求解的近似模态作为假设模态,可得到满足要求的精度。
二是直接积分法,它是对式(3.1)在求解之前,不进行坐标变换,直接进行数值积分计算。
这种方法的特点是对时域进行离散,将式(3.1)分为各离散时刻的方程,然后,将该时刻的加速度和速度用相邻时刻的各位移线性组合而成,于是,式(3.1)就化为一个由位移组成的该离散时刻上的响应值,通常又称为逐步积分法。
线性代数方程组的解法与静力时刻的位移来线性组合,就导致了各种不同的方法。
主要有中央差分法,Houbolt 方法,Wilson -θ法和Newmark 方法等。
第三章离散化结构动力方程的解法(2013.4.24)§3.1 绪言对于一个实际结构,由有限元法离散化处理后,应用瞬时最小势能原理可导出动力方程[]{}[]{}[]{}{}(3.1)++=M u C u K u F(t)这里,{}u 、{}u 、{}u及{}F t分别表示加速度、速度、位移及所()作用的外力矢量,他们都是与时间有关的。
从数学的角度来看,式(3.1)是一个常系数的二阶线性常微分方程组,对于它的求解原则上并无困难。
但是,由于[]M、[]C 和[]K的阶数非常高,使得式(3.1)的求解必须花费很大的代价,便促使人们去寻求一些效率高的近似计算方法。
目前,用于求解式(3.1)的方法,大致可分为两大类。
一是坐标变换法,它是对结构动力方程式(3.1),在求解之前,进行模态坐标变换,实际上就是一种Ritz变换,即把原物理空间的动力方程变换到模态空间中去求解。
现在,普遍使用的方法是模态(振型)迭加法,即用结构的前q阶实际主模态集(主振型阵)构成坐标变换阵进行变换。
通过这一变换,实现降阶,求较好的近似解,而且,还用解除耦合的办法,简化方程的计算。
还有一种所谓假设模态法,即是用一组假设模态,构成模态坐标变换阵进行变换,获得一组降阶的而不解耦的模态基坐标方程。
显然,这种方法的计算精度,取决于所假设的模态。
用Ritz矢量法求解的近似模态作为假设模态,可得到满足要求的精度。
二是直接积分法,它是对式(3.1)在求解之前,不进行坐标变换,直接进行数值积分计算。
这种方法的特点是对时域进行离散,将式(3.1)分为各离散时刻的方程,然后,将该时刻的加速度和速度用相邻时刻的各位移线性组合而成,于是,式(3.1)就化为一个由位移组成的该离散时刻上的响应值,通常又称为逐步积分法。
线性代数方程组的解法与静力时刻的位移来线性组合,就导致了各种不同的方法。
主要有中央差分法,Houbolt 方法,Wilson -θ法和Newmark 方法等。
多自由度体系wilson-θ法程序编写多自由度体系Wilson-θ法是一种广泛应用于多体动力学和结构动力学领域的数值计算方法。
本文将介绍如何使用Python编程语言编写多自由度体系Wilson-θ法的程序。
一、引言多自由度体系Wilson-θ法是一种基于有限元法的数值计算方法,适用于求解多体动力学和结构动力学中的问题。
该方法通过将体系分解为一系列有限元子系统,并采用θ矩阵方法进行求解,能够有效地处理大规模的多自由度体系。
二、程序编写1. 导入必要的库和模块在编写程序之前,需要导入必要的库和模块,包括numpy、scipy 和matplotlib等。
这些库提供了必要的数学运算、数值分析和图形绘制等功能。
2. 定义体系结构和有限元节点首先需要定义多自由度体系的结构和有限元节点的位置。
可以使用网格划分工具将体系划分为有限元网格,并定义每个节点的位置和编号。
3. 构建有限元矩阵和求解器使用Wilson-θ法进行数值计算,需要构建有限元矩阵和求解器。
该矩阵可以采用三角矩阵的形式进行表示,并使用θ矩阵方法进行求解。
在程序中,需要实现矩阵的构建、求解器的初始化等操作。
4. 迭代求解体系响应使用构建好的矩阵和求解器,可以进行迭代求解多自由度体系的响应。
在每次迭代中,需要输入当前时刻的体系响应作为初值,并输出下一时刻的响应结果。
5. 结果可视化最后,可以使用matplotlib等库将求解得到的响应结果进行可视化。
可以将时间历程、振型、频率响应等结果进行绘制,以便更好地分析体系的动态特性。
三、示例代码以下是一个简单的示例代码,用于演示如何使用Python编程语言编写多自由度体系Wilson-θ法的程序。
代码中假设体系由3个自由度的弹簧-质量系统组成,采用三角形矩阵进行求解。
```pythonimport numpy as npfrom scipy.sparse import csc_matrix, dia_matriximport matplotlib.pyplot as plt# 定义体系结构和有限元节点nodes = np.array([[0], [0.5], [1]]) # 节点位置数组degrees_of_freedom = 3 # 自由度数量system_size = len(nodes) # 体系大小node_indices = np.arange(system_size) # 节点编号数组# 构建有限元矩阵和求解器theta_matrix = csc_matrix(dia_matrix(system_size - degrees_of_freedom, 0)) # θ矩阵mass_matrix = csc_matrix(np.diag([0.5, 0.5, 1])) # 质量矩阵solution = np.zeros((system_size, degrees_of_freedom)) # 初始响应数组forces = np.zeros((system_size, degrees_of_freedom)) # 输出力数组forces[:degrees_of_freedom] = np.zeros((system_size, degrees_of_freedom)) # 初始输出力数组为零向量solver = theta_matrix.dot(solution) +theta_matrix.dot(forces) + mass_matrix # 初始化求解器theta_vector = np.zeros(system_size) # θ向量用于控制有限元矩阵的构造和更新# 进行迭代求解体系响应for iteration in range(100): # 迭代次数限制为100次response = solver.dot(theta_vector) # 输入当前时刻的响应作为初值进行迭代求解下一时刻的响应结果输出为力向量output_forces在每个节点上作用在体系的上结果可与theta向量用于控制有限元矩阵的构造和更新为了演示程序的基本结构和流程以上给出了一个简单的示例代码其中包含的主要内容有定义体系结构和有限元节点构建有限元矩阵和求解器以及进行迭代求解体系响应结果可视化等当然在实际应用中可能还需要考虑更多的因素例如如何处理边界条件如何处理体系的非线性特性等等因此在实际应用中需要根据具体问题对程序进行适当的修改和优化以下是一些可能需要的注意事项和技巧:1. 选择合适的有限元网格划分工具和算法,以确保计算的精度和效率。