二次开发自我总结_第1页
二次开发自我总结_第2页
二次开发自我总结_第3页
二次开发自我总结_第4页
二次开发自我总结_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、odb结构如图上所示(来自于doc),可以很明显地分成两部分:model data、result data。 所以要获取节点信息,材料信息,part信息以及截面信息得用到odb.assembly, odb.material, odb.parts, odb.sections;而要提取应力,应变等结果就得用到odb.steps。我们先一步步 看看如何查看odb中的信息,最后汇总一下就知道如何写一个有特定功能的脚本了。首先我们需要用到读取odb文件的python包,得用到import。from odbaccess import * 打开你要读的文件,这里就是 viewer_tutorial.odb

2、: odb=openodb(r c:sujingheviewer_tutorial.odb )查看这个 odb 文件的具体信息:print odb输出如下:(analysistitle:dynamicloadingofanelastomeric,viscoelastic, closed: false, customdata: python object wrapper, description: ddb object, diagnosticdata: odbdiagnosticdata object, isreadonly: false, jobdata:jobdataobject,mater

3、ials: parts:repository repositoryobject, object,name: path:c:/sujinghe/viewer_tutorial.odb,c:/sujinghe/viewer_tutorial.odb, profiles: repository object, readinternalsets:false, rootassembly: odbassembly object, sectioncategories: repository object,sections: repository object, sectordefinition: none,

4、 steps: repository object, userdata: userdata object)可以显示各种数据的储存格式,其中可以看到 odbassembly object 存放当前 odb 的 assembly 相关信息,而其他的 repository object 表 示当前对象存储在类似字典类型的数据结构中。整体用()括起来表示这应该是一个对象, 而后面里面的都是这个对象的成员(members),他们可以用odb.xxx来获得引用,下面逐一 查看。察看 analysistitle : print odb.analysistitle 察看 rootassembly : asse

5、mbly=odb.rootassembly print assembly 输出口下:connectororientations: repositoryobject,connectororientationarray elementsets:repositoryobject, object,datumcsyses:elements:odbmeshelementarray object, instances: repository object, name: assembly-1, nodesets:repositoryobject,nodes:odbmeshnodearrayobject,obj

6、ect,pretensionsections: odbpretensionsectionarray rigidbodies:odbrigidbodyarray object, sectionassignments: sectionassignmentarray object, surfaces: repository object)继续:print ,即可得到 assembly 的名字 assembly-1 我们详细查看几个数据:nodes, instances, nodesets node=assembly.nodes print len(node)看到输出为0,o

7、db中node信息应该单独存在每个instance中的。 isnt=assembly.instances print inst输出:partTT: odbinstance object inst=instpartTT print inst 输出: (analyticsurface: none, beamorientations: beamorientationarray object, elementsets: repository object, elements: odbmeshelementarray object, embeddedspace:axisymmetric,material

8、orientations:materialorientationarray object, name: part-1-1, nodesets: repository object, nodes: odbmeshnodearray object, rebarorientations: rebarorientationarray object, rigidbodies:odbrigidbodyarray object,surfaces:object,sectionassignments:object,type:sectionassignmentarray deformable_body)repos

9、itory可以看到上面列出了这个instance的各种信息2.2.1 instance 上面定义的 elementset print inst.elementsets输出:cent: odbset object, etop: odbset object, foam: odbset object, pmass: odbset object, upper: odbset object只有,这个表示这个对象是一个字典类型的数据,得用xxx yyy 来获得引用,比 如 print inst.elementsetscent输出: (elements: odbmeshelementarray object

10、, faces: none, instances: none, isinternal: false, name: cent, nodes: none) print inst.elementsetscent.elements输出:odbmeshelement object, odbmeshelement object, odbmeshelement object, odbmeshelement object, odbmeshelement object, odbmeshelement object, odbmeshelement object,。继续深入:ele= inst.elementset

11、scent.elements0 print ele输出: (connectivity: (3, 43, 41, 1), instancename: part-1-1, instancenames: (part-1-1,part-1-1,part-1-1,part-1-1), label: 1, sectioncategory:sectioncategory object, type: cax4)可以看到单元集合中每个单元的详细数据,编号, 节点,单元类型等,注意这个也是一个对象(用()括起来的),必须用xxx.xxx来引用, 如 ele.connectivity。2.2.2 instance

12、上面定义的 nodeset nodeset=inst.nodesets print nodeset输出:alln: odbset object, bot: odbset object, center: odbset object, n1: odbset object, n19: odbset object, n481: odbset object, n499: odbset object, punch: odbset object, top: odbset object我们也可以用类似上面读elementsets的方法读取nodeset 中的每一个具体 set 的信息 2.2.3 instan

13、ce 的 node 信息 node=inst.nodes node1= node0 print node1输出:(coordinates: array(0.0, 300.0, 0.0, d), instancename: part-1-1, label: 1)这是这个instance的第一个节点的信息,节点编号、初始坐标、所属instance,它是用 ()括起来的所以的用xxx.xxx来获得引用,比如coord=node1. coordinates coordx=coord0 print coord,coordx通过上面的方法就可以得到model中的node信息,用类似的方法也可以看到mode

14、l中的 element 信息。2.3 assembly 上面定义的 nodeset nodeset=assembly.nodesetsprint nodeset输出: all nodes: odbset object,看来他也没有特别定义什么节点集合。 nodeset=nodeset all nodes print nodeset 输出很多:(elements: none, faces: none, instances: (analyticsurface: none, beamorientations: beamorientationarray object, elementsets: rep

15、ository object, elements:odbmeshelementarray object, embeddedspace: object, name:three_d, part-1-1, object, materialorientations: nodesets: materialorientationarray object, nodes:repository odbmeshnodearray object, rebarorientations: rebarorientationarray rigidbodies: odbrigidbodyarray object, secti

16、onassignments: sectionassignmentarray object, surfaces: repository object, type: deformable_body),), isinternal: false, name: all nodes, nodes: (odbmeshnode object, odbmeshnode object, odbmeshnode object,。重点看nodes,注意它的形式:(口,:)其实是元组套列表的形式 nodeset=nodeset.nodes0 print nodeset输出:odbmeshnode object, odb

17、meshnode object, odbmeshnode object, odbmeshnode object, odbmeshnode object, odbmeshnode object,odbmeshnode object,。 深入一层:node1=nodeset0 print nodel输出:(coordinates: array(0.0, 300.0, 0.0, d), instancename: part-1-1, label: 1)这个时候我们就可以看到这个nodeset中的第一个节点信息了。下面的语句可以提取具体 信息:print node1.coordinates得到节点坐标

18、0.300.0.print node1.label得到节点编号1查看 material信息mat=odb.materialsprint mat输出:foam: material object可以看见这个模型中唯一的材料类型foam,用xxx xxx 继续查看:mat=matfoamprint mat输出: (density: density object, description: , hyperfoam: hyperfoam object, materialidentifier: , name: foam, viscoelastic: viscoelastic object)可以看到这个模型

19、中定义了 density, viscoelastic, hyperfoam等属性继续深入,()用xxx.xxx:dens=mat. densityprint dens输出:(dependencies:。,table: (1e-11,),), temperaturedependency: off) 继续: values= dens.table00print values得到密度值:1e-11用同样的方法可以得到其他想要的材料定义值4查看step信息,这其中储藏了 odb单元应力应变以及节点位移等等值。首先得说明的是 应力应变时基于积分点的,只能在单元上查询;而位移以及反力都是基于节点的,必须在节

20、 点上查询。step=odb.stepsprint step输出:step-1: odbstep object, step-2: odbstep object, step-3: odbstep object 可以看到一共有三个step,这里我们示范看一下step-3的计算数据step3=stepstep-3print step3输出:(acousticmass: 0.0, acousticmasscenter: (), description: remove load., domain: time, eliminatednodaldofs: nodaldofsarray object, fra

21、mes: odbframearray object, historyregions: repository object, inertiaaboutcenter:(),inertiaaboutorigin: (), loadcases: repository object, mass: 0.0, masscenter:(), name: step-3, nlgeom: true, number: 3, previousstepname: step-2, procedure: *dynamic, retainedeigenmodes: (), retainednodaldofs: nodaldo

22、fsarray object, timeperiod: 10.0, totaltime: 6.0)可以看到这一步的具体信息,可以把它打印出来print step3.timeperiod指的是当前步的time,而totaltime指的是该步以前的所有步所经历的总时间。4.2 frames中储藏的才是我们的计算结果frame=step3.framesprint len(frame)输出27可以看出,这一步总共有26个增量步(另外一个是初始时刻)我们现在看第24步时候的 计算结果:frame24=frame24print frame24输出:(cyclicmodenumber: none, desc

23、ription: increment240: step time =4.906, domain: time, fieldoutputs: repository object, frameid: 240, framevalue:4.90593481063843, frequency: none, incrementnumber: 240, isimaginary: false, loadcase: none, mode: none)其中记录了该增量步的具体信息:incrementnumber,framevalue (指的是该分析步的时 间),可以通过xxx.xxx来获得引用,比如print fr

24、ame24. framevalue就输出:4.90593481063843查看计算结果数据:output=frame24. fieldoutputsprint output输出:a: fieldoutput object, ar3: fieldoutput object, copentarget/impactor: fieldoutput object, cpresstarget/impactor: fieldoutput object, cshear1target/impactor: fieldoutput object, cslip1target/impactor: fieldoutput

25、 object, le: fieldoutput object, : fieldoutput object, rm3: fieldoutput object, s: fieldoutput object, u: fieldoutput object, ur3: fieldoutput object, v: fieldoutput object, vr3: fieldoutput object可以看到这里面a, ar3, cpress, cshear1, rf, s, v, u等等数据我们查看一下u和s两个最常用的uu=outputuss=outputsprint uuprint ssoutof

26、plane_principal, min_inplane_principal, max_principal, mid_principal, min_principal, tresca, press, inv3), values: fieldvaluearray object)具体的值都储存在values里面u=uu.valuesprint u0输出:(baseelementtype: , conjugatedata: none, conjugatedatadouble: unknown, data: array(3.8507681799646e-42, -76.8765869140625, d

27、), datadouble: unknown, elementlabel: none, face: none, instance: odbinstance object, integrationpoint: none, inv3: none, localcoordsystem: none, localcoordsystemdouble:maxinplaneprincipal: none, unknown, magnitude: none, 76.8765869140625, midprincipal: none, maxprincipal:mininplaneprincipal: none,

28、minprincipal: none, mises: none, nodelabel: 1, outofplaneprincipal: none, position: nodal, precision: single_precision, press: none, sectionpoint: none, tresca: none, type: vector)这是1号节点(注意position: nodal表明该数据位于节点上)上的位移值,用xxx.xxx 可以读取具体数据:print u0.data 得到3.85076818e-42-7.68765869e+01print u0. magnitude得到 76.8765869141s=ss.valuesprint s0输出:(baseelementtype: cax4, conjugatedata: none, conjugatedatadouble: unknown, dat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论