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

[前后处理] 用 ansys 做前处理生成节点和网格

[复制链接]
发表于 2019-2-26 05:43:44 | 显示全部楼层 |阅读模式 来自 欧洲和中东地区
本人需要经常使用marc进行计算分析,但是由于MARC/MENTAT的前处理能力太弱,公司有没有HypperMesh的使用许可,所以我通过ansys APDL生成marc网格。使用以下代码可以将workbench生成的网格转成marc 格式 (仅适用于线性单元)。

!===================================== Start line !


*CFOPEN,PQFN7x7,dat                      !  Open marc file

*VWRITE
('EXTENDED')
*VWRITE
('ELEMENTS,7')
*VWRITE
('ELEMENTS,11')
*VWRITE
('ELEMENTS,134')
*VWRITE
('ELEMENTS,216')

*VWRITE
('VERSION,13')
*VWRITE
('END')

ALLSEL,ALL,ALL
*GET,NNOD,NODE,,COUNT
*VWRITE
('COORDINATES')
*VWRITE,'3',CHRVAL(NNOD),'0','1'
(A,3(',',A))

NNUM = 0
*DO,K1,1,NNOD,1
NNUM = NDNEXT(NNUM)
*VWRITE,CHRVAL(NNUM),NX(NNUM),NY(NNUM),NZ(NNUM)
(A8,TL1,3(',',E16.9))
*ENDDO


*GET,NELE,ELEM,,COUNT
*VWRITE
('CONNECTIVITY')
*VWRITE
('0,0,1,0,0,0,0,0,0')

ENUM = 0
*DO,K1,1,NELE,1
ENUM = ELNEXT(ENUM)
NI = NELEM(ENUM,1)
NJ = NELEM(ENUM,2)
NK = NELEM(ENUM,3)
NL = NELEM(ENUM,4)
NM = NELEM(ENUM,5)
NN = NELEM(ENUM,6)
N0 = NELEM(ENUM,7)
NP = NELEM(ENUM,8)

NONZERO1=NI*NJ*NK*NL*NM*NN*N0*NP
NONZERO2=NI*NJ*NK*NL
*IF, NONZERO1, GT, 0, THEN

*IF,NK,NE,NL, AND, NM,EQ, NP,THEN
*VWRITE,CHRVAL(ENUM),'216',CHRVAL(NL),CHRVAL(NI),CHRVAL(NJ),CHRVAL(NK),CHRVAL(NP)                                  ! ELEMENT TYPE = 216
(A,6(',',A))
*ELSEIF,NK,EQ,NL, AND,NM,EQ,NP
*VWRITE,CHRVAL(ENUM),'134',CHRVAL(NL),CHRVAL(NI),CHRVAL(NJ),CHRVAL(NP)                                                  ! ELEMENT TYPE = 134
(A,5(',',A),)
*ELSEIF, NK,NE,NL, AND, NM,NE,NP
*VWRITE,CHRVAL(ENUM),'7',CHRVAL(NL),CHRVAL(NI),CHRVAL(NJ),CHRVAL(NK),CHRVAL(NP),CHRVAL(NM),CHRVAL(NN),CHRVAL(N0)  ! ELEMENT TYPE = 7
(A,9(',',A))
*ELSEIF,NK,EQ,NL, AND,NM,NE,NP
*VWRITE,CHRVAL(ENUM),'7',CHRVAL(NL),CHRVAL(NI),CHRVAL(NJ),CHRVAL(NK),CHRVAL(NP),CHRVAL(NM),CHRVAL(NN),CHRVAL(N0)  ! ELEMENT TYPE = 7
(A,9(',',A))
*ENDIF

*ELSEIF,NONZERO2,GT,0,AND,NM,LE,0
*VWRITE,CHRVAL(ENUM),'11',CHRVAL(NL),CHRVAL(NI),CHRVAL(NJ),CHRVAL(NK)                                                  ! ELEMENT TYPE = 11
(A,5(',',A))

*ENDIF
*ENDDO



*GET, NCOMPS, COMP, 0, NCOMP
*DO,K1,1,NCOMPS,1
NCMP=K1
*GET, Cname,  COMP, NCMP,  NAME
*GET, CTYPE, COMP,Cname, TYPE
CMSEL,S,Cname

*IF, CTYPE, EQ, 1, THEN                                    ! node component
*VWRITE,'DEFINE','NDSQ','SET','NSET_',Cname
(3(A,','),A5,A8)

*GET,NNOD,NODE,,COUNT
NNUM = 0
*DO,K2,1,NNOD,1
NNUM = NDNEXT(NNUM)
*IF, K2, LT, NNOD, THEN
*VWRITE,CHRVAL(NNUM),'C'
((A,','),A)
*ELSE
*VWRITE,CHRVAL(NNUM)
(A)
*ENDIF
*ENDDO


*ELSEIF, CTYPE, EQ, 2                                      ! element component
*VWRITE,'DEFINE','ELSQ','SET','ESET_',Cname
(3(A,','),A5,A)
*GET,NELE,ELEM,,COUNT
ENUM = 0
*DO, K2, 1, NELE, 1
ENUM = ELNEXT(ENUM)
*IF, K2, LT, NELE, THEN
*VWRITE,CHRVAL(ENUM),'C'
((A,','),A)
*ELSE
*VWRITE,CHRVAL(ENUM)
(A)
*ENDIF
*ENDDO

*ENDIF

*ENDDO

*VWRITE
('END OPTION')

!*DO,K1,1,8,1
!*VWRITE,CHRVAL(NELEM(ENUM,K1)),NONZERO2
!(A,F7.0)
!*ENDDO
*CFCLOSE                                                  !   Close marc file
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 12:02 , Processed in 0.031577 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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