有限元分析的实现

femethods的Python项目详细描述


女性方法

pypi version生成状态许可证:mit覆盖状态documentation status

简介

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 是实例化的(即,它们是未知的)。它们的计算和设置时间 分析元素。请注意,apinnedreaction的属性 总是因为它一刻也不抗拒。

属性是力矩的只读组合 属性,格式为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)

其中载荷和反作用力分别是载荷反作用力的列表。

注意 载荷和反作用力必须是一个列表,即使只有一个。

eixx参数是杨氏模量和 关于弯曲轴的惯性。它们都默认为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的非常有用的指南

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
反射Java反射:高负载下的NoSuchMethodException   java RxJava:one request>list of Integer>sequence of requests for each int>result to list   java为什么循环之前索引会增加   JavaSpring远程处理和RESTfulURL   java Hibernate搜索仅对我的实体的一部分进行索引   使用DPAD快速滚动时,java RecyclerView onCreateViewHolder调用过多   java将JSON解析到一个表中   java导航抽屉标题textview nullpointerexception   基于接口的Java链接队列   java Guice运行时依赖项参数重新注入   java展平/压缩ZSH中的深度嵌套目录   JavaSpring:Http406此请求标识的资源只能   java如何制作Android启动器图标   Java代码在windows上显示不正确(包含希腊语句子)   使用yourkit进行内存分析所用的java时间   java为什么可以序列化属性而不能序列化对象本身?