- 积分
- 0
- 注册时间
- 2008-11-25
- 仿真币
-
- 最后登录
- 1970-1-1
|
本人需要经常使用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 |
|