首页/文章/ 详情

面向对象有限元编程|完整实例

7月前浏览6163

本篇代码需要numpy支持。不过目前发现个问题:numpy-1.19.4-cp38和numpy-1.19.4-cp39兼容性有问题。果然是不讲"武德"。还是用numpy-1.19.2-cp38

对于如图所示的桁架,建立材料对象、节点对象、单元对象以及结构对象: 

mat1 = Material( 29.5e4 ) # 材料对象

# 节点对象
nd1 = TrussNode2D( 10,    0,   0,  0,  0,       0 )
nd2 = TrussNode2D( 2400,   0,   1,  0,  20000,   0 )
nd3 = TrussNode2D( 3400,  300,   1,  1,  0,       -25000 )
nd4 = TrussNode2D( 30,   300,   0,  0,  0,       0 )

listNode = [nd1, nd2, nd3, nd4]

# 单元对象
el1 = TrussElement2D( 1100, mat1, nd1, nd2 )
el2 = TrussElement2D( 2100, mat1, nd3, nd2 )
el3 = TrussElement2D( 3100, mat1, nd1, nd3 )
el4 = TrussElement2D( 4100, mat1, nd4, nd3 )

listElem = [el1, el2, el3, el4]

# 结构对象
fm = FEModel(listNode, listElem)

完整python代码:

来源:数值分析与有限元编程
pythonUM材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-02
最近编辑:7月前
太白金星
本科 慢慢来
获赞 5粉丝 10文章 324课程 0
点赞
收藏
作者推荐

面向对象有限元编程|模块化

当程序变长时,可以方便地将其拆分为多个文件以便更容易地执行维护。此外,还可以将实现一个功能的程序段单独放在一个文件中,而不将它们的定义复 制到每个程序中。可以通过将计划经常使用的函数的定义放入文件,Python将其称为模块。然后可以导入模块中的定义进入其他模块、脚本或与通常导入的交互模式命令。模块是一个包含Python定义和语句的文件。文件名是模块名,在模块中,模块的名称(字符串形式)可用作全局变量的值__name__模块的__name__属性:在作为程序运行的时候,__name__属性的值是’main’;而作为模块导入的时候,这个值就是该模块的名字了。在阅读代码时,你会发现很多代码中都有 if name==’main’ 这么一行代码语句,也就不难理解这句代码的意思了。将节点类,单元类,结构类,材料类等等单独放到一个文件里作为模块,解决具体问题时,再导入。这里TrussModule文件就是节点类,单元类,结构类,材料类。test文件是一个具体的问题求解。调用模块的功能时,需要在前面加上模块名字。比如import mathmath.cos(1.0) 自定义模块也是如此:import TrussModule # 导入模块mat1 = TrussModule.Material( 29.5e4 ) # 材料对象# 节点对象nd1 = TrussModule.TrussNode2D( 1, 0, 0, 0, 0, 0, 0 )nd2 = TrussModule.TrussNode2D( 2, 400, 0, 1, 0, 20000, 0 )nd3 = TrussModule.TrussNode2D( 3, 400, 300, 1, 1, 0, -25000 )nd4 = TrussModule.TrussNode2D( 3, 0, 300, 0, 0, 0, 0 )来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈