Category Archives: Dynamics

几个特征值求解函数的性能比较

正如在”scipy和numpy中与特征值问题相关的函数”谈到的,Python的常用数值计算库numpy和scipy中一共有好几个功能和限制稍有不同的特征值问题求解函数,今天我们用一个8×8的“特殊”矩阵(Rosser矩阵)来看看这些函数的计算速度和结果精度如何。 继续阅读

发表在 特征值问题, Dynamics, Python, 数值计算 | 留下评论

理解波动(附1):参考文献

这里我按照不同的主题列出一些重要的参考文献。这些文献集中了前人研究的精华,可谓博大精深。加起来不到30篇,却可以说是该领域的重要“内功心法”。按图索骥,以它们为线索可以直达整个研究领域的大部分角落。 继续阅读

发表在 波动 | 留下评论

理解波动(四):将无限”叠加”为有限——边界条件

在“理解波动”系列的前三篇中,我们主要还是站在熟悉的数值工具——有限元方法的基础上来理解波动现象。实际上,正如有限的均质梁、杆能方便的获得解析解,无界的杆、梁甚至板也可以获得解析解。只是其求解思路与有界结构有所不同。在本文中,我们将展示无界结构的解经过一定的处理也可以获得有界结构的解,正如有界的模型经过一定处理(例如之前介绍过的人工边界条件)可以用以分析无界结构那样。在本文中,将采用纯解析的方法获得无界域上的波动解,然后将其处理为有界域上的响应。其中,对边界条件的处理和理解起到了至关重要的作用。 继续阅读

发表在 ANSYS, 波动 | 留下评论

理解波动(三):从频域到时域

在理解波动(二):以有限计算无限——人工边界条件中,我们说到了如何把“无限远”处理为一种特殊的边界条件。通过这样的处理,一个无阻尼的无界结构等效为一个在边界上具有强阻尼的有限结构。这样,原先由近场流向远场的能量现在流向了等价的边界阻尼器中——已经似乎都很完美。尤其是对于标准波动方程,其ABC既可以用于频域又可以用于时域。但对于弯曲波,还有一个小问题待讨论,那就它的ABC的等价阻尼系数与频率有关,不能处理为阻尼力。边界处的力与位移实际上是“分数阶导数”的关系。这导致它只能直接用于计算频域响应(或只含一个频率成分的激励力),那么,如何计算无限梁对任意激励的时域响应呢? 继续阅读

发表在 ANSYS, 傅利叶变换, 有限元, 波动 | 留下评论

理解波动(二):以有限计算无限——人工边界条件

在理解波动(一):在有限结构上算出“波动”中,我们展示了如何简单地通过常用的有限元软件计算出结构的“波动现象”。可以发现,在由激振力的引起的扰动抵达边界前,清晰地呈现出“波传播”的特性。而在经历了边界的数次反射后,由于整个结构各处都有了变形,直观上更容易按照“自由振动”的特性来理解。在上一个算例中,我们初步探讨了“波动特性”是如何蕴含在有限结构中的。在本文中,我们将展示,“无限”是如何蕴含在“有限”中的。即如何通过修饰有限结构来计算无限结构的特性。由于没有边界,无限结构是研究波动的更理想模型。无限大结构虽然在实际中不严格存在,但是它仍有工程应用场合,如地震研究、隔声、无损探伤等。总的来说,在这些应用场合中:1)只关心到波未被边界反射之前的行为;2)由于阻尼或结构太大,波很难抵达边界。 继续阅读

发表在 ANSYS, Dynamics, 有限元, 波动 | 一条评论

理解波动(一):在有限结构上算出“波动”

(原文写于2014-2-13,发布于振动论坛,一般力学和振动理论分区)
(重编辑于2015-12-24,论述和讨论有所增删)

在网络论坛和甚至正式的学术会议中,关于结构动力学中的“波动方法”都是一个热点话题。尤其是其与工程上常用的以模态叠加法为基础的“振动方法”之间的区别和联系,更是值得深入玩味。其中有许多非常有意思的论点,有些来自于直观的工程经验,有些来自于对公式的粗略检视。比如,有的观点认为波动方法只能分析无界(无限大)结构的动力学行为,而振动方法只能分析有界(有限)结构的动力学行为。又有些观点认为有限结构在高频段就必须考虑“波动效应”,但什么是“波动效应”却语焉不详。实际上,“振动”方法和“波动”方法只是同一个问题的两种不同理解思路而已。换言之,他们都可以计算有界和无界结构在低频和高频动力学特性。为了说明这个观点,更好地辨析和理解“波动”和“振动”,最直接的办法是进行一些计算,看看所得的结果是否与预期相同。这也是本系列文章的目的。这里给出第一个算例。 继续阅读

发表在 ANSYS, Dynamics, 有限元, 波动 | 一条评论

scipy和numpy中与特征值问题相关的函数

(原文写于2013-1-4 ,发布于振动论坛,算法及编程语言分区)
(重编辑于2015-11-15,修正了一些错误,增补了一些讨论)

结构力学、固体力学和声学中的很多方面都对应于特征值问题的计算。比如自由振动、频散曲线、模型压缩、阻尼识别等。有些方面对应于标准特征值问题(复模态分析、频散曲线计算的传递矩阵形式等),有些对应于广义特征值问题(无阻尼模态,频散曲线计算的改进形式等)。在一些场合,还需要计算左特征值问题,例如不对称非比例阻尼在复模态分析中的处理。同时,有些问题中只涉及实数矩阵,另一些问题涉及复数矩阵。同时还涉及矩阵是否对称、是否正定,其求解结果是否需要所有特征值等等特定考虑。在Python的scipy以及numpy库中一搜,你会发现有许多可以计算特征值问题的函数,它们各自的功能、参数和返回值形式都各有异同。因此我做了一个表格,将这些函数整理起来,方便查询。 继续阅读

发表在 特征值问题, 数值计算 | 一条评论

有限元编程中关于边界条件的处理

(原文写于2015-4-27 ,发布于振动论坛,算法及编程语言分区)
(重编辑于2015-11-13)

在有限编程的一般流程中,在获得原始总刚度矩阵之后,就是引入边界条件了。力边界条件直接表示在激振力向量中,而对于位移边界条件的处理较为复杂。位移边界条件的处理方法有万能钥匙型的“罚函数法”和“拉格朗日乘子法”,以及处理特定情形的“置大数法”和“划0置1”法。而且对于静力学分析,模态分析,瞬态响应分析和谐响应分析,在一些细节上的处理稍有不同。在编程中,可能遇到的技术难点是:1)从理论上,应该选择哪种技术来处理边界条件按更合适?2)在技术细节上,边界条件的处理应该在前处理器中实现,还是在求解器中实现?在这里我打算根据个人的一些经验谈一谈这些问题,抛砖引玉。 继续阅读

发表在 Dynamics, 有限元 | 留下评论