penelope-pengeom的简易几何定义文件生成器

pengeomgen的Python项目详细描述


彭吉奥姆根

易于生成penelope pengeom几何定义文件的python库。

pengeom可以描述任何由二次曲面约束的均匀体组成的材料系统。它的几何定义文件是一个严格格式化的文本行,用于定义元素块[1]。手动编写几何描述文件可能是一项长期而艰巨的任务(例如,中等复杂的材料系统可能有数千行格式非常严格的行)。

PoeOM.JAR(Java GUI应用程序不是佩内洛普分布包的一部分)允许通过可视化接口定义几何及其可视化[2 ]。

pengeomgen提供一个简单、轻巧且非常可定制的面向对象的api,用于创建和导出严格格式化的几何体定义文件,以便使用penelope pengeom。单个类允许定义所有基本元素和其他预定义元素。

参考文献:

< Buff行情>

[1]F.萨尔瓦特。penelope,电子和光子输运蒙特卡罗模拟程序系统。研讨会论文集,西班牙巴塞罗那。国家能源局/MBDAV/R(2019)1.

< Buff行情>

[2]Almansa,J.,F.Salvat Pujol,G.D_…Az Londo_?o,A.Carnicer,A.M.Lallena和F.Salvat。pengeom,一个用于蒙特卡罗模拟复杂材料结构中辐射输运的通用几何包。计算机。Phys。共同体。199。(2016)

设置

$ pip3 install pengeomgen

用法示例

importpengeomgeng=pengeomgen.GeometryDefinition("The pythonic champagne glass")s1=g.surface(indices=(0,0,0,1,-1),zscale=9)s2=g.surface(indices=(0,0,0,1,-1),zscale=7)s4=g.surface_plane(zshift=-6)s5=g.surface_plane(zshift=-6.4)s6=g.surface_plane(zshift=-6.8)g.surface_paraboloid("S7")g.surface_paraboloid("S8",scale=(0.98,0.98,1),translation=(0,0,0.35))g.surface_cone("S9",scale=(0.012,0.012,1),translation=(0,0,-20))g.surface_cone("S10",scale=(3.7,3.7,1),translation=(0,0,-6))g.surface_cone("S11",scale=(5.1,5.1,1),translation=(0,0,-6.35))g.body("B1",2,surfaces=[(s1,-1),("S7",-1),("S8",1)],comment="cup body")g.body("B2",1,surfaces=[("S8",-1),(s2,-1)],comment="liquid")g.body("B3",2,surfaces=[(s5,1),("S9",-1),("S7",1)],comment="trunk")g.body("B4",0,surfaces=[(s5,-1),(s6,1),("S11",-1)],comment="foot hole")g.body("B5",2,surfaces=[(s4,-1),(s6,1),("S10",-1)],bodies=["B3","B4"],comment="foot body")print(g)# export the geometry definition fileg.export_definition("glass")

用法和API

pengeomgen包提供的主要名称是geometrydefinition。这是用于管理几何图形定义文件中的元素块的类名。通过它的接口(方法),我们可以使用简单的数字表示法和其他特性定义曲面、实体、模块(在一行代码中)。此外,我们还可以执行以下操作:克隆、包含外部几何体定义等。

importpengeomgeng=pengeomgen.GeometryDefinition(description="",unit="cm",angle="DEG")
  • 说明(字符串):信息性文本
  • 单位(字符串):长度的测量单位(平移)。此参数允许我们以示意图为单位定义材料系统,例如。导出几何体定义文件时,当前单位(见下表)将转换为厘米
  • 角度(字符串):角度(旋转)的度量单位。此参数可以是"rad"、"rad"(弧度)或"deg"、"deg"(度)
< Buff行情>

在下面描述的构造二次曲面、模块和克隆的方法中,可以覆盖单位和角度参数

<表><广告>参数(字符串)测量单位 < /广告><正文>毫米,毫米,毫米毫米厘米,厘米,厘米厘米(默认值)dm,分米,分米分米米,米,米仪表英寸,英寸,英寸英寸英尺,英尺,英尺英尺

-将几何体定义导出到文件中

要将构造的几何体定义导出到文件中,我们可以调用export_definition方法。此方法只有输出文件的绝对或相对路径作为参数。

g.export_definition("output_file_path")

显示空隙内部体积

可以使用材质值(小于或等于零的数值)对内部体积进行建模。建议材料值小于零而不是零,然后,使用显示内部体积的方法,我们可以在导出前将负值材料的符号更改为正值(固体材料)。

g.show_void_inner_volumes(show=True)

-用二次曲面描述材料系统

下面将详细介绍使用二次曲面、实体和模块描述材料系统以及进行其他操作的方法。

面S

方法surface允许根据下一个格式化的文本行分别创建二次曲面(默认情况下为简化形式)的简化形式和隐式形式。

简化形式:

0000000000000000000000000000000000000000000000000000000000000000
SURFACE (  A4) comment: reduced form
INDICES=(I2,I2,I2,I2,I2)
X-SCALE=(         E22.15       ,  I4) (DEFAULT=1.0)
Y-SCALE=(         E22.15       ,  I4) (DEFAULT=1.0)
Z-SCALE=(         E22.15       ,  I4) (DEFAULT=1.0)
  OMEGA=(         E22.15       ,  I4) DEG (DEFAULT=0.0)
  THETA=(         E22.15       ,  I4) DEG (DEFAULT=0.0)
    PHI=(         E22.15       ,  I4) DEG (DEFAULT=0.0)
X-SHIFT=(         E22.15       ,  I4) (DEFAULT=0.0)
Y-SHIFT=(         E22.15       ,  I4) (DEFAULT=0.0)
Z-SHIFT=(         E22.15       ,  I4) (DEFAULT=0.0)

隐式形式:

0000000000000000000000000000000000000000000000000000000000000000
SURFACE (  A4) comment: implicit form
INDICES=( 0, 0, 0, 0, 0)
    AXX=(         E22.15       ,  I4) (DEFAULT=0.0)
    AXY=(         E22.15       ,  I4) (DEFAULT=0.0)
    AXZ=(         E22.15       ,  I4) (DEFAULT=0.0)
    AYY=(         E22.15       ,  I4) (DEFAULT=0.0)
    AYZ=(         E22.15       ,  I4) (DEFAULT=0.0)
    AZZ=(         E22.15       ,  I4) (DEFAULT=0.0)
     AX=(         E22.15       ,  I4) (DEFAULT=0.0)
     AY=(         E22.15       ,  I4) (DEFAULT=0.0)
     AZ=(         E22.15       ,  I4) (DEFAULT=0.0)
     A0=(         E22.15       ,  I4) (DEFAULT=0.0)
1111111111111111111111111111111111111111111111111111111111111111
  OMEGA=(         E22.15       ,  I4) DEG (DEFAULT=0.0)
  THETA=(         E22.15       ,  I4) DEG (DEFAULT=0.0)
    PHI=(         E22.15       ,  I4) DEG (DEFAULT=0.0)
X-SHIFT=(         E22.15       ,  I4) (DEFAULT=0.0)
Y-SHIFT=(         E22.15       ,  I4) (DEFAULT=0.0)
Z-SHIFT=(         E22.15       ,  I4) (DEFAULT=0.0)

方法和参数:

surface(label=None,indices=(1,1,1,1,1),scale=(1,1,1),rotation=(0,0,0),translation=(0,0,0),starred=False,comment="",**kwargs)
  • label(string):元素的用户标签(最多4个字符)。此参数是可选的。如果用户没有设置它,则内部状态机会在xaaa到zzzz的范围内分配一个唯一的4字符值。没有显式标签的元素只能通过其实例引用
  • 索引(元组):曲面表示的简化形式的系数(i1、i2、i3、i4、i5)
  • 比例(元组):X、Y和Z轴的比例因子(X比例、Y比例、Z比例)
  • 旋转(元组):通过欧拉角定义的旋转值(ω、θ、phi)
  • 平移(元组):X、Y和Z轴的平移值(X-shift、Y-shift、Z-shift)
  • 星号(布尔):如果为真,则允许定义固定曲面,该曲面不受几何定义后续阶段中可能发生的平移或旋转的影响
  • 注释(字符串):短文本描述
  • 返回值:当前曲面对象的实例
< Buff行情>

此外,我们可以使用一个参数的赋值来指定元组中一个压缩项的值,即缩放、旋转和平移。单个参数为:x scale(x-scale)、yscale(y-scale)、zscale(z-scale)、omega(omega)、theta(theta)、phi(phi)、x shift(x-shift)、yshift(y-shift)和zshift(z-shift)。在这种情况下,当两个参数都存在时,单个参数的值将覆盖元组中相应项的值。

自定义曲面:

为了方便、灵活、快速地构造材料系统的几何定义,geometrydefinition类包含了几种映射自定义和预定义的简化二次曲面的方法。下表中定义了这些曲面,并分别使用其系数和方法名。所有方法都是泛型曲面方法的重新实现,它们只是根据表达式设置系数(索引)的值。

<表><广告>表面 系数 类的方法(api)< /广告><正文>平面(0,0,0,1,0)曲面球体(1,1,1,0,-1)球面气缸(1,1,0,0,-1)表面气缸双曲圆柱体(1,-1,0,0,-1)曲面双曲柱面圆锥体(1,1,-1,0,0)表面锥面单叶双曲面(1,1,-1,0,-1)曲面单叶双曲面双叶双曲面(1,1,-1,0,1)曲面二张双曲面抛物面(1,1,0,-1,0)曲面抛物面抛物线圆柱体(1,0,0,-1,0)曲面抛物面圆柱双曲抛物面(1,-1,0,-1,0)曲面双曲抛物面

隐式曲面:

我们可以使用方法surface以隐式形式创建曲面,将系数(索引)元组的所有项设置为零。但是,方法surface_implicit_form为我们这样做。有一组用于指定此曲面几何体的单个参数:axx、axy、axz、ayy、ayz、azz、ax、ay、az、a0(根据模型)。我们可以为我们的实现设置有用的值;其他的值取为默认值零。对于这个实现,在这个表示中的任何一个都忽略了scale的值。tion(元组或单个参数)。

车身

方法body允许根据下一个格式化文本行创建受二次曲面限制的均质体:

0000000000000000000000000000000000000000000000000000000000000000
BODY    (  A4) comment
MATERIAL(  A4)
SURFACE (  A4), SIDE POINTER=(I2)
BODY    (  A4)
MODULE  (  A4)

方法和参数:

$ pip3 install pengeomgen
0
  • label(string):元素的用户标签(最多4个字符)。此参数是可选的。如果用户没有设置它,则内部状态机会在xaaa到zzzz的范围内分配一个唯一的4字符值。没有显式标签的元素只能通过其实例引用
  • 材料(字符串或整数):材料标识号符合模拟中采用的惯例
  • 曲面(元组列表):当前实体的边界曲面。每个元组包含边界曲面的标签(字符串)或实例(曲面对象)及其曲面边指针(整数:1或-1)
  • 实体(字符串或实体对象列表):当前实体的边界实体
  • 模块(字符串或模块对象列表):当前主体的边界模块
  • 注释(字符串):短文本描述
  • 返回值:当前主体对象的实例

模块

方法模块允许根据下一个格式化文本行创建模块:

$ pip3 install pengeomgen
1

方法和参数:

$ pip3 install pengeomgen
2
  • label(string):元素的用户标签(最多4个字符)。此参数是可选的。如果用户没有设置它,则内部状态机会在xaaa到zzzz的范围内分配一个唯一的4字符值。没有显式标签的元素只能通过其实例引用
  • 材料(字符串或整数):材料标识号符合模拟中采用的惯例
  • 曲面(元组列表):当前模块的边界曲面。每个元组包含边界曲面的标签(字符串)或实例(曲面对象)及其曲面边指针(整数:1或-1)
  • 实体(字符串或实体对象列表):当前模块的边界实体
  • 模块(字符串或模块对象列表):当前模块的边界模块
  • 旋转(元组):通过欧拉角定义的旋转值(ω、θ、phi)
  • 平移(元组):X、Y和Z轴的平移值(X-shift、Y-shift、Z-shift)
  • 注释(字符串):短文本描述
  • 返回值:当前模块对象的实例
< Buff行情>

与曲面一样,我们可以使用单个参数的赋值来指定元组中一个压缩项的值,该元组指的是旋转和平移。单个参数是:Ω(Ω)、θ(θ)、phi(phi)、x shift(x-shift)、yshift(y-shift)和zshift(z-shift)。在这种情况下,当两个参数都存在时,单个参数的值将覆盖元组中各自组件的值。

克隆

克隆方法允许根据下一个格式化文本行克隆模块(不能克隆实体;要克隆仅受曲面限制的实体,请将其定义为模块):

$ pip3 install pengeomgen
3

方法和参数:

$ pip3 install pengeomgen
4
  • label(string):元素的用户标签(最多4个字符)。此参数是可选的。如果用户没有设置它,则内部状态机会在xaaa到zzzz的范围内分配一个唯一的4字符值。没有显式标签的元素只能通过其实例引用
  • 模块(字符串或模块对象):要克隆的模块的标签或实例
  • 旋转(元组):通过欧拉角定义的旋转值(ω、θ、phi)
  • 平移(元组):X、Y和Z轴的平移值(X-shift、Y-shift、Z-shift)
  • 注释(字符串):短文本描述
  • 返回值:的实例当前克隆对象
< Buff行情>

与曲面和等于模块一样,我们可以使用一个参数的赋值来指定元组中一个压缩项的值,即旋转和平移。单个参数是:Ω(Ω)、θ(θ)、phi(phi)、x shift(x-shift)、yshift(y-shift)和zshift(z-shift)。在这种情况下,当两个参数都存在时,单个参数的值将覆盖元组中各自组件的值。

包括

方法include允许根据下一个格式化文本行插入其他几何体定义文件:

$ pip3 install pengeomgen
5

方法和参数:

$ pip3 install pengeomgen
6
  • 文件名(字符串):要包含的几何定义文件的绝对或相对路径
  • 星号(布尔):如果为true,则允许将包含的文件视为主文件的一部分
  • 注释(字符串):短文本描述
  • 返回值:当前包含对象的实例

结束

方法结束取消读取penelope pengeom应用程序的几何数据(如果在某个材料系统的几何定义中间调用此方法,则此调用之后的所有元素都将被应用程序忽略)。默认情况下,此生成器在几何体定义的末尾包含此元素,因此其调用不是必需的。

$ pip3 install pengeomgen
7

方法和参数:

$ pip3 install pengeomgen
8
  • 返回值:当前结束对象的实例

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

推荐PyPI第三方库


热门话题
java如何修改打印板?   java Spring批处理JdbcCursorItemReader还是RepositoryItemReader?   java如何在JTable Swing中增加标题列的字体?   java在数组方面遇到问题,导致表达式非法启动   java如何为maven pom的某些部分关闭Eclipse代码格式化程序。xml   java Dropwizard登录代码   java Jersey 2.22:客户端的默认连接超时是多少?   java无法自动连接字段:javax。sql。数据来源   如何从java中的行列表中获取单词列表?   java JDBC批量更新和处理异常?   计算大根:bigdecimal/java   java如何在JavaCC语法中提到trycatch块   javasocket。getInetAddress()不返回任何内容   oracle SQL开发人员错误无法找到Java虚拟机   java我如何计算和显示未来5年每一年的投资价值   java如何关闭浏览器选项卡?   java如何在showMessageDialog中打印双2D数组?   java从站点抓取播放列表URL?   selenium中的java点击css按钮