找回密码
 注册
Simdroid-非首页
查看: 819|回复: 14

[前后处理] flac3d应力数据导入tecplot问题

[复制链接]
发表于 2007-1-15 14:05:23 | 显示全部楼层 |阅读模式 来自 北京

我将flac3d中的最大主应力数据导出,坐标取各个zone中点,出现了这样的问题:
bad or missing fe cell indices for cell 1912
error occured on line 17868
请问tecplot的数据格式是怎样编写的呢?请各位大侠指教,感激不尽!!!


;; 7/11/2004
;; Flac3d Mesh to Tecplot
;; Limits:
;;     (1)Zone Type ---- TETRAHEDRON or BRICK
;;     (2)Tecplot Version ---- Version 10
;;     (3)Only DISPLACEMENTS of Grid Point is Output
;;

;; Initialization
def ini_mesh2tec
        IO_READ  = 0
           IO_WRITE = 1
        IO_FISH  = 0
        IO_ASCII = 1

        array buf(1)
    tec_file = 'tec14.dat'
    zone_ngp = z_numgp(zone_head)
end
ini_mesh2tec

;; Write Tecplot File Head
def write_mesh_head
    buf(1) = 'TITLE     = "Flac3d Mesh to Tecplot Version 10" \n'
    buf(1) = buf(1) + 'VARIABLES = "X" "Y" "Z" "max" "media" "min"\n'
    buf(1) = buf(1) + 'ZONE T="Tecplot v10" \n'
    buf(1) = buf(1) + ' N=' + string(ngp) + ','
    buf(1) = buf(1) + ' E=' + string(nzone) + ','
    if zone_ngp = 4 then
            buf(1) = buf(1) + ' ZONETYPE=FETETRAHEDRON \n'           
    else
            buf(1) = buf(1) + ' ZONETYPE=FEbrick \n'
    endif
    buf(1) = buf(1) + ' DATAPACKING=POINT \n'
    buf(1) = buf(1) + ' DT=(SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE)'
    status = write(buf,1)
end



;; Write Grid Point Coordinates and Displacements

def write_prin
   
    p_z =  zone_head

    loop while p_z # null
         
         p1_x = gp_xpos(z_gp(p_z,1))
         p1_y = gp_ypos(z_gp(p_z,1))
         p1_z = gp_zpos(z_gp(p_z,1))

         p2_x = gp_xpos(z_gp(p_z,2))
         p2_y = gp_ypos(z_gp(p_z,2))
         p2_z = gp_zpos(z_gp(p_z,2))

         p3_x = gp_xpos(z_gp(p_z,3))
         p3_y = gp_ypos(z_gp(p_z,3))
         p3_z = gp_zpos(z_gp(p_z,3))

         p4_x = gp_xpos(z_gp(p_z,4))
         p4_y = gp_ypos(z_gp(p_z,4))
         p4_z = gp_zpos(z_gp(p_z,4))

         p5_x = gp_xpos(z_gp(p_z,5))
         p5_y = gp_ypos(z_gp(p_z,5))
         p5_z = gp_zpos(z_gp(p_z,5))

         p6_x = gp_xpos(z_gp(p_z,6))
         p6_y = gp_ypos(z_gp(p_z,6))
         p6_z = gp_zpos(z_gp(p_z,6))

         p7_x = gp_xpos(z_gp(p_z,7))
         p7_y = gp_ypos(z_gp(p_z,7))
         p7_z = gp_zpos(z_gp(p_z,7))

         p8_x = gp_xpos(z_gp(p_z,8))
         p8_y = gp_ypos(z_gp(p_z,8))
         p8_z = gp_zpos(z_gp(p_z,8))



        zonecenter_x = (p1_x +p2_x)/2
        zonecenter_y = (p1_y +p3_y)/2
        zonecenter_z = (p1_z +p4_z)/2

        buf(1) = string(zonecenter_x)
        buf(1) = buf(1) + '  ' + string(zonecenter_y)
        buf(1) = buf(1) + '  ' + string(zonecenter_z)      
        buf(1) = buf(1) + '  ' + string(z_sig1(p_z))
        buf(1) = buf(1) + '  ' + string(z_sig2(p_z))
        buf(1) = buf(1) + '  ' + string(z_sig3(p_z))
        status = write(buf,1)
        p_z = z_next(p_z)
    endloop   
end



;; Write Zone Connectivity
def write_zone   
    p_z = zone_head
    loop while p_z # null
            buf(1) = ''
        if zone_ngp = 4 then
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 1))) + '  '
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 2))) + '  '
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 3))) + '  '
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 4))) + '  '
       else
        
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 1))) + '  '
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 2))) + '  '
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 5))) + '  '
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 3))) + '  '
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 4))) + '  '
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 7))) + '  '
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 8))) + '  '
            buf(1) = buf(1) + string(gp_id(z_gp(p_z, 6))) + '  '            
        endif
        status = write(buf,1)
        p_z = z_next(p_z)
    endloop
end

;; Main Function
def mesh2tec       
    status = close
        status = open(tec_file,IO_WRITE,IO_ASCII)
        if status = 0 then
            write_mesh_head
            write_prin
            write_zone
                status = close
                ii = out('Successfully Write Data Into File ' + tec_file)
        else
                ii=out('Open File Error! Status = ' + string(status))                       
        endif                       
end
mesh2tec
 楼主| 发表于 2007-1-15 21:54:00 | 显示全部楼层 来自 北京

请问高手tecplot软件中点的个数和元的个数是如何确定的呢?

Simdroid开发平台
我看了很多例子,可就是看不懂,我的理解是点的个数就是gp的个数,元的个数就是zone的个数,可是我这样弄了确不对,请大侠指教,感激不尽!!!
发表于 2007-1-16 14:43:19 | 显示全部楼层 来自 江苏南京
tecplot中的精华在于FEBRICK


一个“brick”为空间8个点组成的多面体(不一定是“六面体”,可能是“四棱锥”)。
前四个点为一个面(点),后四个点为一个面(点),前后对应点相连为一个“brick”

wedeg 1 2 3 4 5 5 6 6 或 5 5 6 6 1 2 3 4

pyramid 1 1 1 1 2 3 4 5 或 2 3 4 5 1 1 1 1

TETRAHEDRON 1 2 3 3 4 4 4 4 或 1 1 1 1 2 2 3 4

而四面体也可以使用ET=TETRAHEDRON 提供了一个紧凑的数据格式,如 1 2 3 4 即可。


F=FEBLOCK 和 F=FEPOINT 的区别在于是按块,还是按点排列。


如下面的小例子:
-------------------------------------------------------------------
TITLE = "Example: FE-Volume Brick Data"
VARIABLES = "X", "Y", "Z", "Temperature"
ZONE N=14, E=5, F=FEBLOCK, ET=BRICK
0.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0
0.0 1.0 0.0 1.0 0.0 2.0 1.0 0.0 2.0 1.0 0.0 2.0 1.0 0.0
0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 1.0 1.0 1.0 2.0 2.0 2.0
9.5 14.5 15.0 16.0 15.5 17.0 17.0
17.5 18.5 20.0 17.5 18.0 17.5 16.5
1 1 1 1 2 4 5 3
2 4 5 3 7 10 11 8
4 4 5 5 10 13 14 11
4 4 4 4 9 12 13 10
2 2 4 4 7 6 9 10

------------------------
TITLE = "Example: FE-Volume Brick Data"
VARIABLES = "X", "Y", "Z", "Temperature"
ZONE N=14, E=5, F=FEPOINT, ET=BRICK
0.0 0.0 0.0 9.5
1.0 1.0 0.0 14.5
1.0 0.0 0.0 15.0
1.0 1.0 1.0 16.0
1.0 0.0 1.0 15.5
2.0 2.0 0.0 17.0
2.0 1.0 0.0 17.0
2.0 0.0 0.0 17.5
2.0 2.0 1.0 18.5
2.0 1.0 1.0 20.0
2.0 0.0 1.0 17.5
2.0 2.0 2.0 18.0
2.0 1.0 2.0 17.5
2.0 0.0 2.0 16.5
1 1 1 1 2 4 5 3
2 4 5 3 7 10 11 8
4 4 5 5 10 13 14 11
4 4 4 4 9 12 13 10
2 2 4 4 7 6 9 10
发表于 2007-4-21 18:40:10 | 显示全部楼层 来自 山东泰安
请教
ZONE N=14, E=5, F=FEBLOCK, ET=BRICK
N , E 表示什么意思?
发表于 2007-4-22 17:59:58 | 显示全部楼层 来自 山东泰安

请教coolyxw2000

在上述命令流的调用过程中出现如图所示情况。我用的是V3.1-261盗版软件,我该了函数名试也不行。
发表于 2007-4-22 18:10:00 | 显示全部楼层 来自 山东泰安
运行到
end
ini_mesh2tec
出现
bad pointer conversion错误信息
发表于 2007-5-16 09:01:40 | 显示全部楼层 来自 安徽合肥

回复 #4 lfz828 的帖子

N 表示坐标数目
E 表示单元数
回复 不支持

使用道具 举报

发表于 2007-5-16 09:07:54 | 显示全部楼层 来自 安徽合肥
随便请问下,
tecplot怎样把节点的大小增大?
回复 不支持

使用道具 举报

发表于 2007-5-21 22:01:30 | 显示全部楼层 来自 湖南长沙

回复 #3 haitang 的帖子

问一下,从flac3d转化到tecplot中,为什么我只能导出6个量x,y,z,xdis,ydis,zdis,而没有导出过szz呢?
回复 不支持

使用道具 举报

发表于 2007-7-13 21:48:36 | 显示全部楼层 来自 河北保定

回复 #1 coolyxw2000 的帖子

你好,请问如何按照3楼的格式将单元格的应力szz、sxz、sxy等等导进tecplot从而可画出应力等值线图?谢谢
回复 不支持

使用道具 举报

发表于 2007-7-16 16:53:04 | 显示全部楼层 来自 江苏南京
我的思路是将单元应力等效到节点上去,然后按照位移一样的格式即可导如入,enjoy!
回复 不支持

使用道具 举报

发表于 2008-3-13 17:08:12 | 显示全部楼层 来自 四川成都
高手指点啊,我也困惑好几天了
回复 不支持

使用道具 举报

发表于 2010-6-22 17:25:15 | 显示全部楼层 来自 湖北恩施州
正好要好好补习FISH!谢谢
回复 不支持

使用道具 举报

发表于 2010-8-25 01:23:42 | 显示全部楼层 来自 四川
嗯 这个问题值得考虑
回复 不支持

使用道具 举报

发表于 2012-5-1 10:21:33 | 显示全部楼层 来自 重庆沙坪坝区
请大神现身解答!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-24 16:35 , Processed in 0.058715 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表