- 积分
- 0
- 注册时间
- 2005-10-20
- 仿真币
-
- 最后登录
- 1970-1-1
|
我将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 |
|