- 积分
- 0
- 注册时间
- 2009-6-4
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 qliao 于 2012-7-17 21:27 编辑
理论:
代码:
DOUBLE PRECISION :: I1,I2,I3,A,B,C,E1,E2,Fai,SP1,SP2,SP3,SP
PARAMETER (PI=3.141592653589)
C
C CALCULATE THE STRESS INVARIANTS
I1=stressNew(k,1)+stressNew(k, 2)+stressNew(k,3)
I2=stressNew(k,1)*stressNew(k,2)+stressNew(k,2)*
* stressNew(k,3)+stressNew(k,1)*stressNew(k,3)-
* stressNew(k,4)**2-stressNew(k,5)**2-stressNew(k,6)**2
I3=stressNew(k,1)*stressNew(k,2)*stressNew(k,3)
* -stressNew(k,1)*stressNew(k,6)**2-stressNew(k,2)
* *stressNew(k,5)**2-stressNew(k,3)*stressNew(k,4)**2
* +2*stressNew(k,4)*stressNew(k,5)*stressNew(k,6)
C
C calculate principal stress
A=I1/3.0
E1=I1**2-3.0*I2
IF(E1.GT.0.0001)THEN
B=SQRT(E1)
ELSE
C WRITE(*,*) 'Warning: B is less than 0.01,set to 0'
B=0.0
ENDIF
C
IF(B.GT.0)THEN
E2=(2.0*I1**3-9.0*I1*I2+27.0*I3)/B**3/2.0
IF(E2.GT.1.0)THEN
C WRITE(*,*) 'Warning:cos(Fai)>1,E2= ', E2, 'adjust to 1'
E2=1.0
ELSEIF(E2.LT.-1.0)THEN
C WRITE(*,*) 'Warning:cos(Fai)<-1,E2= ', E2, 'adjust to -1'
E2=-1.0
ENDIF
Fai=ACOS(E2)/3.0
SP1=A+2.0*B*COS(Fai)/3.0
SP2=A+2.0*B*COS(Fai+2.0*PI/3.0)/3.0
SP3=A+2.0*B*COS(Fai+4.0*PI/3.0)/3.0
ELSE
SP1=A
SP2=A
SP3=A
ENDIF
C
C make sure SP1>=SP2>=SP3
IF(SP1.LT.SP2)THEN
SP=SP1
SP1=SP2
SP2=SP
ENDIF
IF(SP1.LT.SP3)THEN
SP=SP1
SP1=SP3
SP3=SP
ENDIF
IF(SP2.LT.SP3)THEN
SP=SP2
SP2=SP3
SP3=SP
ENDIF
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|