首页/文章/ 详情

Python提取梁单元属性(it.structure.Beam)

2年前浏览499

1 引言

一些现代工程计算软件带有生成计算书的功能,例如Rocscience的系列软件【岩土工程软件的引领者Rocscience收购NovoTech软件公司】,Itasca系列软件没有这样的功能,但可以使用log文件记录下所有的计算过程。



program log onprogram log-file 'beam.log'

不过,这样的记录不能自动提取出对象的属性值。提取对象的属性值有两个目的:一个目的是用于程序自身的计算,一个典型的场景是数值解与解析解的比较;另一个目的是导出数据,产生计算书或者把数据传递到其它应用程序。


为了达成上述目的,可以使用FISH提取对象的属性值,也可以使用Python提取对象的属性值。下面以【梁结构元简要回顾(struct beam)】中的例子为基础,分别使用FISH和Python提取梁单元的属性值。由于支护元的脚本结构一样,因而梁单元的实现方法也能应用于其它类型的结构元。


2 Beam FISH

为了提取梁单元的属性,首先需要获得结构元的指针,[beam_pointer = struct.find(1)]。在获得结构元的指针后,便可以提取单元的属性值。

struct.beam.young()

struct.beam.moi()

struct.beam.length()

struct.beam.moment()

除了与本题相关的这些属性外,还可以提取出其它属性:
struct.beam.area()

struct.beam.moment.plastic()

struct.beam.moment.plastic.y()

struct.beam.moment.plastic.z()

struct.beam.poisson()

struct.beam.volume()

struct.beam.ydir()

struct.beam.load()

struct.beam.force()


3 Beam Python

尽管FISH能够实现梁单元属性的提取,但Python的灵活性更强。下面是上述解析解的代码:













import itasca as itimport mathbeam = it.structure.Beamelement = it.structure.find(1)young = beam.young(element)moi = beam.moi(element)[2]EI = young*moimoment_vec = beam.moment(element)Moment = moment_vec[1][2]beam_count = it.structure.count()element_length = beam.length(element)v_tip = (EI/Moment)*(1-math.cos((Moment*beam_count*element_length)/EI))

这个Python代码得出的解析解是5.48190,下面直接输入数值的FISH代码得出的解析解是5.47742,而数值解是5.49793。


[global analytical = (2e11*200e-6/5e6)*(1-math.cos((5e6*10)/(2e11*200e-6)))]

上述代码中,moi和Moment的初始提取值都是矢量,按索引值进行了提取,由于Itasca手册没有这方面的例子,因此目前不确定这样编码是不是最佳的表示方式。


来源:计算岩土力学
岩土
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-11-26
最近编辑:2年前
计算岩土力学
传播岩土工程教育理念、工程分析...
获赞 153粉丝 1129文章 1783课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈