DLOAD子程序旋转加载正弦分布载荷的问题----已解决附上源码
本帖最后由 wjunhx 于 2011-5-31 21:18 编辑我的子程序调试通过,但发现,COORDS只能调用COORDS(1~3)也就是X,Y,Z值,使用COORDS(4~6)不起作用.
在三维模型中是否没法调用角度坐标呀!期待高手回答.
如果不行只能自己再加入坐标转换的代码了.
R=SQRT(COORDS(1)*COORDS(1)+COORDS(2)*COORDS(2))
Z=COORDS(3)
THETA=THETA(COORDS(1),COORDS(2))
IF((COORDS(1).GE.0.AND.COORDS(2).GE.0)THEN
THETA=ASIN(COORDS(2)/R)
ELSE IF((COORDS(1).LE.0.AND.COORDS(2).GE.0)THEN
THETA=ASIN(COOR..........
谁有更好的方法,不吝赐教! 这样可行,已验证 SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,
1 COORDS,JLTYP,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION TIME(1),COORDS(3)
CHARACTER*80 SNAME
PARAMETER (PLOAD=5,PI=2*ASIN(1).D0,LOADSTEP=4,NE=4,CN=1,
2ETH=2*PI/NE
CTH=CN*ETH
MAXDO=NE/CN)
C
C CHANGE COORDS X,Y TO R,THETA
C
C GET R
RCOORDS=SQRT(COORDS(1)*COORDS(1)+COORDS(2)*COORDS(2))
C GET |SINTH|
SINTH=ABS(COORDS(2)/RCOORDS)
C IN QUADRANT 1
IF (COORDS(1).GE.0.AND.COORDS(2).GE.0)THEN
THETA=ASIN(SINTH)
C IN QUADRANT 2
ELSE IF(COORDS(1).LE.0.AND.COORDS(2).GT.0)THEN
THETA=ASIN(SINTH)+PI/2
C IN QUADRANT 3
ELSE IF(COORDS(1).LE.0.AND.COORDS(2).LT.0)THEN
THETA=ASIN(SINTH)+PI
C IN QUADRANT 4
ELSE IF(COORDS(1).GE.0.AND.COORDS(2).LT.0)THEN
THETA=ASIN(SINTH)+PI*3/2
C
C SINE-WAVE DISTRIBUTED LOAD: FORCE = P*SIN(th)
C
C
C
IF(KSTEP.GE.LOADSTEP.AND.KSTEP.LE.(LOADSTEP+MAXDO))THEN
IF(THETA.GE.(KSTEP-LOADSTEP)*CTH.AND.THETA.LE.
3(PI+(KSTEP-LOADSTEP)*CTH))THEN
F =ABS(SIN(THETA-(KSTEP-LOADSTEP)*CTH))*PLOAD
END IF
END IF
C
RETURN
C
END
坐标的问题解决了,但加载有问题,编译出错
总算调试通过,
本帖最后由 wjunhx 于 2011-5-31 19:31 编辑总算调试通过了,这是分16步转动一周,每步转动PI/8,每步加载范围为转动角+PI的转动载荷子程序。 结果见图 本帖最后由 wjunhx 于 2011-5-30 23:52 编辑
根据需要修改NLOAD的数值和分析步数目统一起来就可以了;想算多细都可以了 楼主可否上传一下cae文件,学习下
页:
[1]