5 对象构造命令

        对象构造命令在输入文件是按照命令行的顺序进行处理的,在进行对象构建的时候,可以把模型中的空间当成一个画布,其中引入了物体,并且可以将一个物体覆盖在另一个物体上,从而覆盖其属性,以产生所需的几何形状,对象构造命令可创建复杂的形状和配置。

        各向异性

        在构建对象是有可能指定具有对角线各向异性的物体,比如木材和纤维增强复合材料等材料。

        标准各向同性对象指定一个材料标识符,该标识符在x、y和z方向上定义相同的属性。

        但是,每个体积物体构建命令也可以使用三个材料标识符来指定,这允许分别定义x, y和z方向的属性。用于定义曲面的#plate命令可以指定最多两个材料标识符,而用于定义直线的#edge命令仍然使用一个材料标识符。

        例如,要创建一个在x, y和z方向上具有不同材料属性的盒子,则指令为:

        #material: 41 10 1 0 matX

        #material: 35 10 1 0 matY

        #material: 33 10 1 0 matZ

        #box: 0 0 0 0.1 0.1 0.1 matX matY matZ

        例如,要创建一个半径为10mm的圆柱体,在x和y方向上具有相同的属性,但在z方向上具有不同的属性,则指令为:

        #material: 41 10 1 0 matXY

        #material: 33 1 1 0 matZ

        #cylinder: 0.1 0.1 0.1 0.5 0.1 0.1 0.01 matXY matXY matZ

        电介质平滑

        在模型中不同材料之间的边界存在使用哪种材料属性的问题。是否应该在该位置定义的最后

一个对象来决定属性?是否应该使用共享该位置的物体材料的平均属性?通过共享该位置的物体材料的平均属性,即质平滑,这种方法在模拟中更加精确。

        为了解决这个问题,gprMax包含了一个选项来打开或关闭体积物体构建命令的介电平滑。默

认行为(如果没有指定选项)是开启介电平滑。该选项可以在每个对象命令中的材料标识符之后指定

单个字符y (on)或n (off)。

        例如指定一个球体的材料沙子与电介质平滑关闭,则指令为:

        #sphere: 0.5 0.5 0.5 0.1 sand n

        注:如果材料具有色散特性,则该材料的介电平滑会自动关闭。如果一个对象是各向异性

的,那么介电平滑将自动关闭该对象。非体积对象构建命令,#edge,#plate和#triangle(适用于三

角形路径而不是三角形棱镜)不能有介电平滑。

5.1 edge命令

        功能:在模型中引入具有特定属性的线。导线是 Yee cell 的边缘,它可以用来模拟电阻或细

导线。

        命令格式为:#edge: f1 f2 f3 f4 f5 f6 str1

f1 f2 f3:为边缘的起始(x,y,z)坐标。

f4 f5 f6:为边缘的结束(x,y,z)坐标。坐标应该定义一条直线。

str1:为一个材料标识符,必须与输入文件中已经定义的材料相对应,或者是内置材料pec或

free_space中的一个。

        例如,指定一个x向导线是一个完美的电导体,则指令为:

        #edge: 0.5 0.5 0.5 0.7 0.5 0.5 pec。

        注:y和z坐标是相同的

5.2 plate命令

        功能:在模型中引入具有特定属性的板。板是Yee cell的表面,它可以用来模拟比Yee cell更

薄的物体。

        命令格式为:#plate: f1 f2 f3 f4 f5 f6 str1

f1、f2、f3为板的左下(x,y,z)坐标。

f4 、f5 、f6为板的右上(x,y,z)坐标。某一个坐标是相同的2d的对象,而不是像#box命令那样定义一

个3D对象。

str1是一个材料标识符,必须与输入文件中已经定义的材料相对应,或者是内置材料pec或

free_space中的一个。

        例如,指定一个xy取向板是一个完美的电导体,则指令为:

        使用:# plate:0.5 0.5 0.5 0.7 0.8 0.5 pec。

        注:z坐标是相同的。

5.3 triangle命令

        功能:在模型中引入具有特定属性的三角形补丁或三角形棱镜。斑块只是一个三角形表面,

由楼梯状的Yee cell组成,三角形棱镜在垂直于平面的方向上延伸三角形斑块。

        命令格式为:#triangle: f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 str1 [c1]

f1、f2、f3:为三角形第一个顶点的坐标(x,y,z)

f4 、f5 、f6:为第二个顶点的坐标(x,y,z)

f7、f8 、f9:为第三个顶点的坐标(x,y,z)

f10:为三角棱镜的厚度。如果厚度为零,则创建一个三角形补丁。

str1:为一个材料标识符,必须与输入文件中已经定义的材料相对应,或者是内置材料pec或

free_space中的一个。

c1:为一个可选参数,可以是y或n,用于打开和关闭介质平滑。仅用于创建三角形棱镜,而不是三

形贴片。

        例如,指定一个xy取向的三角形贴片的完美电导体,则指令为:

        #triangle: 0.5 0.5 0.5 0.6 0.4 0.5 0.7 0.9 0.5 0.0 pec。

        注:z坐标是相同的,厚度为零。

5.4 box命令

        功能:在模型中引入具有特定属性的正交平行六面体。

        命令格式为:#box: f1 f2 f3 f4 f5 f6 str1 [c1]

f1、f2 、f3:为平行六面体的左下(x,y,z)坐标,

f4、f5、f6:为平行六面体的右上(x,y,z)坐标。

str1:为一个材料标识符,必须与输入文件中已经定义的材料相对应,或者是内置材料pec或

free_space中的一个。

c1:为一个可选参数,可以是y或n,用于打开和关闭介质平滑。

5.5 sphere命令

        功能:在模型中引入具有特定参数的球形对象。

        命令格式为:#sphere: f1 f2 f3 f4 str1 [c1]

f1、f2、f3:为球体中心的坐标(x、y、z)。

f4:为球体的半径。

str1:为一个材料标识符,必须与输入文件中已经定义的材料相对应,或者是内置材料pec或

free_space中的一个。

c1:为一个可选参数,可以是y或n,用于打开和关闭介质平滑。

        例如,要指定一个圆心为(0.5,0.5,0.5),半径为100mm,材料为my_sand的球体。则指令为:

        #sphere: 0.5 0.5 0.5 0.1 my_sand

        注:可以让球体对象与模型域一起向外扩展,扩展后只创建域内对象的一部分。

5.6 cylinder命令

        功能:在模型中引入一个圆柱,圆柱体轴的方向可以是任意的。

       命令格式为:#cylinder: f1 f2 f3 f4 f5 f6 f7 str1 [c1]

f1、f2、f3:为圆柱体一面圆心的坐标(x,y,z)。

f4、f5、f6:为另一面圆心的坐标(x,y,z)。

f7:为圆柱体的半径。

str1:为一个材料标识符,必须与输入文件中已经定义的材料相对应,或者是内置材料pec或

free_space中的一个。

c1:为一个可选参数,可以是y或n,用于打开和关闭介质平滑。

        例如,指定一个其轴在y方向,长度为0.7 m,半径为100mm,并且是一个完美的电导体的圆柱体。则指令为:

        # cylinder:0.5 0.1 0.5 0.5 0.8 0.5 0.1 pec

        注:可以让圆柱体对象与模型域一起向外扩展,扩展后只创建域内对象的一部分。

5.7 cylindrical_sector命令

        功能:在模型中引入一个圆柱扇形(形状像一块馅饼)。

        命令格式为:#cylindrical_sector: c1 f1 f2 f3 f4 f5 f6 f7 str1 [c1]

c1:为扇形的圆柱体轴的方向,可以是x、y或z。

f1、f2:为圆柱扇形中心的坐标。

f3 、f4:为定义扇区的圆柱体轴的上下坐标(实际上是指定扇区的厚度)。

f5:为圆柱扇形的半径。

f6:为圆柱扇形的起始角(以度为单位)(在圆柱扇形平面的第一个正轴上定义0度)。

f7:为圆柱扇形扫过的角度(以度为单位)(扇形的结束角始终与起始角逆时针)。

str1:为一个材料标识符,必须与输入文件中已经定义的材料相对应,或者是内置材料pec或

free_space中的一个。

c1:为一个可选参数,可以是y或n,用于打开和关闭介质平滑。

        例如,指定一个轴在z方向,半径为0.25米,厚度为2毫米,起始角为330°,扇形角为60°,是

理想电导体的圆柱扇形。则指令为:

        # cylindrical_sector:z 0.34 0.24 0.500 0.502 0.25 330 60 pec。

        注:可以让圆柱体对象与模型域一起向外扩展,扩展后只创建域内对象的一部分。

5.8 fractal_box命令

        功能:引入一个具有分形分布属性的正交平行六面体,属性与混合模型或普通材料相

关。

        命令格式为:#fractal_box: f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 i1 str1 str2 [i2] [c1]

f1、f2、f3:为平行六面体的左下(x,y,z)坐标。

f4、f5、f6:为平行六面体的右上(x,y,z)坐标。

f7:为分形维数,对于正交平行六面体,它的值应该在0到3之间。

f8:用于在x方向上对分形进行加权。

f9:用于y方向分形的权重。

f10:用于在z方向上对分形进行加权。

i1:用于分形分布的材料数量(根据相关的混合模型定义)。如果使用普通材质而不是混合模型,这

个值应该设置为1。

str1:为相关混合模型或材料的标识符。

str2:为分形框本身的标识符。

i2:为一个可选参数,用于控制用于创建分形的随机数生成器的播种。默认情况下(如果您没有指定

此参数),随机数生成器将通过尝试从/dev/urandom(或Windows模拟)读取数据(如果可用)或从时钟

读取数据来播种。

c1:为一个可选参数,可以是y或n,用于打开和关闭介质平滑。如果指定了c1,那么i2的值也必须

存在。

        例如,要使用土壤的Peplinski混合模型创建具有分形分布属性的正交平行六面体,其中50种

不同的材料在0.001 - 0.25的水体积分数范围内。则指令为:

        定义混合模型

        #soil_peplinski: 0.5 0.5 2.0 2.66 0.001 0.25 my_soil

        指定分形盒

        #fractal_box: 00 0 0.1 0.1 0.1 1.5 1 1 1 50 my_soil my_fractal_box

5.9 add_surface_roughness命令

        功能:在模型#fractal_box中添加粗糙的表面。粗糙表面的轮廓采用分形分布。

        命令格式为:#add_surface_roughness: f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 str1 [i1]

f1、f2、f3:为#fractal_box上表面的左下角(x,y,z)坐标。

f4、f5、f6:为#fractal_box上表面的右上角(x,y,z)坐标。坐标必须位于#fractal_box的六个表面之

一,但不必扩展到整个表面。

f7:为分形维数,对于正交平行六面体,它的值应该在0到3之间。

f8:用于曲面第一个方向的分形权重。

f9:用于曲面第二方向分形的权重。

f10、f11:定义粗糙度变化范围的下限和上限。这些限制应该相对于使用粗糙表面的#fractal_box

的尺寸来指定。

str1:为#fractal_box的标识符,粗糙表面应该应用于该标识符。

i1:为一个可选参数,用于控制用于创建分形的随机数生成器的播种。默认情况下,随机数生成器

将通过尝试从/dev/urandom(或Windows模拟)读取数据(如果可用)或从时钟读取数据来播种。

        例如,在一个# fractal_box上,应用表面沿着z方向且范围为85毫米和110毫米之间的粗糙表面(即15毫米的沟和10毫米峰)。则指令为:

        # fractal_box: 0 0 0 0.1 0.1 0.1 1.5 1 1 1 50 my_soil my_fractal_box        

        #add_surface_roughness: 0 0 0.1 0.1 0.1 0.1 1.5 1 1 0.085 0.110 my_fractal_box

        注:对于任何与六个曲面对应的#fractal_box,最多可以给出六个#add_rough_surface命令。

5.10 add_surface_water命令

        指令:在模型中使用粗糙表面的#fractal_box中添加表面水。

        命令格式为:#add_surface_water: f1 f2 f3 f4 f5 f6 f7 str1

f1、f2、 f3:为#fractal_box上表面的左下角(x,y,z)坐标。

f4、f5、f6:为#fractal_box上表面的右上角(x,y,z)坐标。坐标必须位于#fractal_box的六个表面之

一,但不必扩展到整个表面。

f7:用于水的深度,它应该被指定为相对于表面水被应用的#fractal_box的尺寸。

str1:为#fractal_box的标识符,地表水应该应用于该标识符。

        例如,将5毫米深的地表水添加到粗糙的表面的#fractal_box里。

        #fractal_box: 0 0 0 0.1 0.1 0.1 1.5 1 1 1 50 my_soil my_fractal_box

        #add_surface_roughness: 0 0 0.1 0.1 0.1 0.1 1 5 11 0.085 0.110 my_fractal_box

        #add_surface_water: 0 0 0.1 0.1 0.1 0.1 0.105 my_fractal_box

        注:水的模型采用单极Debye公式,其性质为:𝑟𝑠= 80.1,∞= 4.9,弛豫时间为:= 9.231 ×

10−12秒。如果自定义水,只要将它命名为water。

5.11 add_grass命令

        功能:在模型的#fractal_box中添加带有根的草。草叶在指定的表面积上随机分布,采用分形

分布来改变草叶的高度和根部的深度。

        命令格式为:#add_grass: f1 f2 f3 f4 f5 f6 f7 f8 f9 i1 str1 [i2]

f1、f2、f3:为#fractal_box上表面的左下角(x,y,z)坐标。

f4、f5、f6:为#fractal_box上表面的右上角(x,y,z)坐标。坐标必须位于#fractal_box的三个表面之一

(在正轴方向上),但不必扩展到整个表面。

f7:为分形维数,对于正交平行六面体,它的值应该在0到3之间。

f8、f9:用于设置草叶高度变化范围的下限和上限。这些限制与#fractal_box的尺寸相关。

i1:为应用于表面区域的草叶的数量。

str1:为#fractal_box的标识符,草应该应用于该标识符。

i2:为一个可选参数,用于控制用于创建分形的随机数生成器的播种。默认情况下,随机数生成器

将通过尝试从/dev/urandom(或Windows模拟)读取数据(如果可用)或从时钟读取数据来播种。

        例如,要在#fractal_box的正z方向上向整个表面应用100个高度在100到150毫米之间变化的草叶。

        #fractal_box: 0 0 0 0.1 0.1 0.1 1.5 1 150 my_soil my_fractal_box指定,

        #add_grass: 0 0 0.1 0.1 0.1 0.1 1.5 0.2 0.25 100 my_fractal_box.

        草的建模采用单极Debye公式,其性质为: 𝑟𝑠= 18.5087,∞= 12.7174,松弛时间为=

1.0793×10−11秒,如果自定义草,将它命名为grass。

        草叶的几何形状由参数方程定义:

        其中,𝑠x和𝑠y可以是-1或1或者随机选择,其中的常数𝑏x和𝑏y是基于高斯分布的随机数。

5.12 geometry_objects_read命令

        功能:插入预先定义的几何到一个模型。几何图形是使用存储在HDF5文件中的3D整数数组指

定的。整数必须与文本文件中指定的#material命令列表的顺序相对应。

        命令格式为:#geometry_objects_read: f1 f2 f3 file1 file2 [c1]

f1、f2、f3:为几何阵列左下角所在区域的左下角(x、y、z)坐标。

file1:为HDF5文件的路径和文件名,该文件包含一个定义几何形状的整数数组。

file2:为包含#material命令的文本文件的路径和文件名。

c1:为一个可选参数,可以是y或n,用于打开和关闭介质平滑。只有当正在读取的几何对象最初是

由gprMax生成的,即通过#geometry_objects_write命令,介电平滑才能打开。

        HDF5文件中的整数必须作为NumPy数组存储在根目录下,名为data,类型为np.int16。

        HDF5文件中的整数与材料文本文件中材料命令的顺序相对应。

        例如,#sand: 3 0 10 0是材料,文件中的第一个材料,它将与HDF5文件中的任何为零的整数

相关联。

        在HDF5文件中使用-1的整数来表示不在该位置构建任何材料,即模型中那个位置已经

存在的材料。

        几何对象的空间分辨率必须与模型中定义的空间分辨率匹配。

        空间分辨率必须指定为HDF5文件的根属性,名称为dx, dy, dz等于浮点元组,例如

(0.002,0.002,0.002)

        例如,要插入一个2x2x2mm^3的AustinMan模型,其左下角距离域原点40mm,并使用离散材料属性。

        #geometry_objects_read:0.040.04 0.04 ..

        /user_libs/AustinManWoman/AustinMan_v2.3_2x2x2.h5 ../user_libs/

        AustinManWoman/AustinManWoman_materials_dispersive.txt

5.13 geometry_objects_write命令

        功能:将模型中生成的几何图形写入文件。可以使用#geometry_objects_read命令将该文件读回gprMax。生成的复杂几何形状保存到文件中,并更快地导入到后续模型中。几何信息保存为三维整数数组存储在HDF5文件中,相应的材料信息存储在文本文件中。整数对应于文本文件中指定的#material命令列表的顺序。

        命令格式为:#geometry_objects_write: f1 f2 f3 f4 f5 f6 file1

f1、f2、f3:为平行六面体的左下(x,y,z)坐标。

f4、f5、f6:为平行六面体的右上(x,y,z)坐标。

file1:为存储几何和材质信息的文件的基本名称。

        注:HDF5文件的结构与#geometry_objects_read命令中描述的结构相同。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马程序员的Python学习视频中的构造方法是指在面向对象编程中用于初始化对象的特殊方法。在第十三章的视频中,具体介绍了构造方法的相关内容。构造方法通常被称为`__init__`方法,它会在创建对象时自动调用,并可以用来给对象的属性进行赋值。在构造方法中,可以使用参数来接收外部传入的值,并将其赋给对象的属性。构造方法的一些注意事项包括:构造方法必须以双下划线开头和结尾,构造方法可以有参数也可以没有参数,构造方法中可以进行属性的赋值操作等等。通过学习和应用构造方法,可以更好地理解和使用面向对象编程的概念和原理。如果想要安装Python的NumPy库,可以使用`pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy`命令来进行安装。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [三、python基础语法进阶篇(黑马程序猿-python学习记录)](https://blog.csdn.net/yinsefeixingchuan/article/details/128752143)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [8天Python从入门到精通 第十三章 面向对象 13.4 构造方法](https://blog.csdn.net/weixin_44226181/article/details/128911416)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值