extra變量的應用
1. 引言
大多數商業的巖土工程軟件只提供用戶定義的本構模型的接口,而沒有用戶定義變量接口的能力,僅Itasca軟件擁有這種額外存儲數據的功能。幾乎每個對象都有extra變量,例如zone, gp, interface, struct等,這允許用戶定義的數據與模型對象相關聯,例如,如果想存儲每個單元的質量和面積,那么可以使用zone.extra把這些信息存儲在與每個單元相關的額外變量中。因此在一個程序中,每個具有額外變量能力的模型對象可以分配給多個額外變量,不過最多只能是128個。額外變量可以是任何具有相應FISH類型的類型,即布爾型、整數型、浮點數、字符串、矢量、矩陣等。
無論什么樣的對象,extra變量總的表達形式是.extra(pnt,1), 其中第一個變量pnt是對象的指針,第二個變量是相應的額外變量的索引值,值域為1到128。與Pyhton的索引起始值0不同,extra變量的索引值是從1開始,即使在Python的應用中。
fish define setExtra bi = block.head loop while bi # 0 zi = block.(bi) loop while zi # 0 block.zone.extra(zi,1) = block.zone.mass(zi) block.zone.extra(zi,2) = block.zone.area(zi) zi = block.zone.next(zi) endloop bi = block.next(bi) endloopend
2. 主要的extra變量
如前所述,大多數對象都有extra變量,一些主要的extra變量總結如下:
block.contact.extra
block.extra
block.gp.extra
block.zone.extra
data.scalar.extra
data.vector.extra
data.tensor.extra
dfn.extra
fracture.extra
geom.edge.extra
geom.node.extra
geom.poly.extra
interface.elem.extra
struct.link.extra
struct.node.extra
zone.extra
zone.field.extra
zone.face.extra
extra變量的一些應用在以下文章中曾經討論過:
Update---在FLAC3D中使用Python
FLAC3D與Python的集成 (4)---zone.Zone類和方法
FLAC3D與Python的集成 (3)---網格劃分Building Blocks
結構元鏈接(structural element links)
離散斷裂網絡[DFN.]FISH函數分類與解析(UDEC和3DEC)
FLAC3D與Python的集成 (2)---數據交換至Numpy
3. set_extra變量
當使用Python時,使用set_extra變量可以直接把額外變量存儲,下面的例子存儲了三個變量:z.vol, z.model和gp.pos。
z = it.block.zone.find(1)z.set_extra(1, z.vol())z.set_extra(2, z.model())print(z.extra(1))print(z.extra(2))gp = it.block.gridpoint.near((2,2,2))gp.set_extra(1, gp.pos())print(gp.extra(1))
4. 應用例子
Itasca軟件的應力和位移是在直角坐標系中建立的,也就是說,單元的正應力和剪應力是zone.stress.xx,zone.stress.zz,zone.stress.xz之類的形式,節點位移是gp.disp.x,gp.disp.z之類的形式。對于一些圓形的幾何形狀,如果要獲得單元的徑向應力和節點的徑向位移,需要進行坐標變換。因此需要引入extra變量來存儲這兩個變量值(extra.prj)。
網格點徑向應力(Vector>Magnitude>Gridpoint)
網格點徑向位移(Vector>Magnitude>Gridpoint)
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















