有限元分析的实现
femethods的Python项目详细描述
女性方法
简介
femethods是一个python模块,它使用有限元方法来确定 反作用力,并沿梁的长度绘制剪力、力矩和挠度。
使用有限元比使用精确解有优势,因为它 可以用作一般分析,也可以分析静态梁 不确定。这种数值方法的缺点是它将更少 比精确的方法更精确。
官方文档位于阅读文档
安装
femethods托管在pypi上,因此安装很简单。
pip安装femethods
总平面图
femethods
由几个子类组成,便于定义加载
以及反应类型。
femethods.loads
目前只实现了两种不同的加载类型。
点载荷
,一种作用在单个点上的恒定大小的法向力力矩载荷
,一种作用于一个点的恒定大小的转动力矩
所有荷载都由沿着构件的位置和
大小定义。
位置
必须为正,并且必须位于光束的长度上,
否则将引发valueerror
未来的目标是添加一个标准分布式负载库 (常数、斜坡等)以及允许分布式 加载函数作为输入。
femethods.loads.pointload
point load
类描述标准的点加载。作用于
具有恒定值的单点。它被定义为一个位置和一个
大小。
>>>PointLoad(-10,5)PointLoad(magnitude=-10,location=5)
位置必须为正值,并且小于或等于长度
否则它将引发
valueerror
femethods.loads.momentload
类描述标准力矩载荷。在一个 具有恒定值的单点。它由位置和值定义。
>>>MomentLoad(2,5)MomentLoad(magnitude=2,location=5)
位置必须为正值,并且小于或等于长度
否则的话它会引发
valueerror
女性方法。反应
有两种不同的反应可用于支撑元件。
fixedreaction
不允许垂直或旋转位移旋转反射
不允许垂直位移,但允许旋转位移
所有的反应都有两个性质,一个是力,一个是力矩。它们代表
作用在元件上的阻力或力矩的数值
以支撑负载。当反应发生时,这些属性设置为none
是实例化的(即,它们是未知的)。它们的计算和设置时间
分析元素。请注意,a
pinnedreaction的
矩
属性
总是无
因为它一刻也不抗拒。
值
属性是力
和力矩
的只读组合
属性,格式为value=(力,力矩)
所有反应都有一个无效的
方法,该方法将设置力
和
时刻
返回到无
。这在更改参数和
计算的反应不再有效。
femethods.反应.固定反应
fixedreaction
是一个反作用类,它防止垂直和角度
(旋转位移)。其边界条件为bc=(0,0)
>>>FixedReaction(3)FixedReaction(location=3)>>>print(FixedReaction(3))FixedReactionLocation:3Force:NoneMoment:None
位置必须为正值,并且小于或等于长度
否则它将引发
valueerror
femethods.反应.羽状反应
pinnedreaction是一个防止垂直位移的反作用类,
但允许角(旋转)位移。其边界条件为bc=(0,无)
>>>PinnedReaction(7)PinnedReaction(location=7)>>>print(PinnedReaction(7))PinnedReactionLocation:7Force:NoneMoment:None
位置必须为正值,并且小于或等于长度
否则它将引发
valueerror
femethods.elements.beam
将梁定义为有限元。这个类将处理 分析,填充属性(如网格划分和反应值)。
要创建beam
对象,请编写以下命令:
b=Beam(length,loads,reactions,E=1,Ixx=1)
其中载荷和反作用力分别是载荷
和反作用力
的列表。
注意 载荷和反作用力必须是一个列表,即使只有一个。
e
和ixx
参数是杨氏模量和
关于弯曲轴的惯性。它们都默认为1
示例
本节包含如何使用梁的几个不同示例 元素及其结果。
对于所有示例,都导入了以下内容:
fromfemethods.elementsimportBeamfromfemethods.reactionsimportFixedReaction,PinnedReactionfromfemethods.loadsimportPointLoad,MomentLoad
示例1:具有固定支撑和端部荷载的悬臂梁
beam_len=10# Note that both the reaction and load are both lists. They must always be# given to Beam as a list,r=[FixedReaction(0)]# define reactions as listp=[PointLoad(magnitude=-2,location=beam_len)]# define loads as listb=Beam(beam_len,loads=p,reactions=r,E=29e6,Ixx=125)# an explicit solve is required to calculate the reaction valuesb.solve()print(b)
程序的输出是
PARAMETERS
Length (length): 10
Young's Modulus (E): 29000000.0
Area moment of inertia (Ixx): 125
LOADING
Type: point load
Location: 10
Magnitude: -2
REACTIONS
Type: fixed
Location: 0
Force: 2.0
Moment: 20.0
示例2:带有3个固定支架和端部荷载的悬臂梁
beam_len=10# Note that both the reaction and load are both lists. They must always be# given to Beam as a list,r=[PinnedReaction(0),PinnedReaction(2),PinnedReaction(6)]# define reactionsp=[PointLoad(magnitude=-2,location=beam_len)]# define loadsb=Beam(beam_len,loads=p,reactions=r,E=29e6,Ixx=125)# an explicit solve is required to calculate the reaction valuesb.solve()print(b)
程序的输出是
>>>PointLoad(-10,5)PointLoad(magnitude=-10,location=5)0
待办事项
- 为每个部分的所有功能、限制和FE基础知识添加更详尽的文档
- 添加其他元素类型,如bar元素
致谢
由Nasser M.Abbasi为梁推导刚度矩阵 使用sphinx的python文档的白痴指南,并通过sam nichols阅读 关于如何设置Sphinx的非常有用的指南