- 积分
- 0
- 注册时间
- 2010-9-26
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2012-4-28 11:25:31
|
显示全部楼层
来自 武汉大学
本帖最后由 kunpeng0920 于 2012-4-28 11:28 编辑
njweiwei2 发表于 2012-4-28 11:10
把形成面的线选出来,然后
al,all
OPEN(13,FILE='2ANS.LOG')
WRITE(13,*) "FINI"
WRITE(13,*) "/CLEAR,START"
WRITE(13,*) "/FILENAME,EXERCISE2"
WRITE(13,*) "/TITLE,GENBLOCK"
WRITE(13,*) "/PREP7"
WRITE(13,*) "ET,1,SOLID45"
WRITE(13,*) "MP,KXX,1,70"
DO I=1,NP !点数
WRITE(13,111)(COP(I,J),J=1,3) !格式:K,点的坐标(X,Y,Z)
END DO
DO IEDGE=1,NEDGE !边数
WRITE(13,112)(MEDGE(IEDGE,I),I=1,2) !格式:LSTR,端点1,端点2
END DO
DO IPLAN=1,NPLAN !面数
WRITE(13,*)'!',IPLAN !面编号
IF(MPLAN1(IPLAN,1).GT.4)THEN
PSTR=MPLAN1(IPLAN,3)
IP1=MPLAN2(PSTR+1)
IP2=MPLAN2(PSTR+2)
V1=COP(IP2,1:3)-COP(IP1,1:3) !IP1到IP2的矢量
DO IT=MPLAN1(IPLAN,3)+3,MPLAN1(IPLAN+1,3)-1
IP3=MPLAN2(IT)
V2=COP(IP3,1:3)-COP(IP1,1:3) !IP1到IP3的矢量
DU=DOT_PRODUCT(V1,V2) !V1和V2的点积
DD=SQRT(SUM(V1**2))*SQRT(SUM(V2**2))
ANGLE=DU/DD !矢量V1,V2的夹角
IF(ANGLE.GE.1.0) THEN
ANGLE=0.0
ELSE IF(ANGLE.LE.-1.0) THEN
ANGLE=180.0
ELSE
ANGLE=ACOSD(ANGLE)
END IF
IF(ANGLE.GT.30) GOTO 40
ENDDO
40 WRITE(13,*)"KWPLAN,-1,",IP1,",", IP2,",",IP3
WRITE(13,*)"CSWPLA,11,0,1,1,"
WRITE(13,*)"CSYS,11,"
ENDIF
WRITE(13,113)MPLAN1(IPLAN,1),MPLAN1(IPLAN,1)
DO IT=MPLAN1(IPLAN,3)+1,MPLAN1(IPLAN+1,3)-1
WRITE(13,114)MPLAN3(IT)
ENDDO
WRITE(13,115)
IF(MPLAN1(IPLAN,1).GT.4)THEN
WRITE(13,*)"CSYS,0"
ENDIF
ENDDO
111 FORMAT("K, ,",3(F35.15,","))
112 FORMAT("LSTR,",2(I8,","))
113 FORMAT("FLST,2,",I5,", 4, NOOR,", I5)
114 FORMAT("FITEM,2,",I8)
115 FORMAT("AL,P51X")
CLOSE(13)
这是别人用fortran写的一段程序,因为点线面都是用程序生成的,运算过程中存在误差,造成导入ansys时出现点不在同一面上的情况,提示出错,这段程序有什么问题??
|
|