固体火箭发动机设计大作业
固体药柱设计大作业
组员1:学 号 10151019 姓 名 周鑫 组员2:学 号 10151020 姓 名 乔磊 组员3:学 号 10151011 姓 名 吴睿 组员4:学 号 姓 名
2013年 11 月 23 日
一、主要几何参数
药柱外径: D= 168 mm 药柱肉厚: e1特征尺寸: l星角数: n= 6 星槽圆弧半径:r= 4 mm
星边夹角: θ= 67.06度 (等面)、 60度 (减面) 星角系数: ε= 0.6
星根角处半径:r= 0 (无)、 3 mm(有) 二、计算程序 1、程序流程
3、具体计算程序
以下程序使用FORTRAN90编写
PROGRAM DESIGNOFGRAIN
COMMON /ARY1/R,TH,EXT,R1,R2,EE,ANG_HALF,N,RM1,H,B PARAMETER(PI=3.1415926) INTEGER FLAG
REAL,DIMENSION(3,6)::RM,RL,ANG,YC1,YC2,SC,FC
WRITE(*,*) '请输入星形药柱的几何参数' WRITE(*,*) '请输入药柱半径' READ*,R
WRITE(*,*) '请输入特征长度' READ*,EXT
WRITE(*,*) '请输入药柱肉厚' READ*,TH
WRITE(*,*) '请输入星槽圆弧半径' READ*,R1
WRITE(*,*) '请输入星边圆弧半径'
READ*,R2
WRITE(*,*) '请输入星角系数' READ*,EE
WRITE(*,*) '请输入星边夹角半角' READ*,ANG_HALF WRITE(*,*) '请输入星角数' READ*,N
IF(R2.LT.1.0E-6) THEN
FLAG=0
ELSE
FLAG=1
END IF
RM1=SQRT(R**2+EXT**2-2.0*R*EXT*COS(EE*PI/N)) H=EXT*SIN(EE*PI/N) B=H/COS(ANG_HALF) DATA
RM,RL,ANG,YC1,YC2,SC,FC/18*0.0,18*0.0,18*0.0,18*0.0,18*0.0,18*0.0,18*0.0/
DO I=1,3
DO J=1,6
RM(I,J)=SOLVEOFRM(I,J,FLAG) RL(I,J)=SOLVEOFRL(I,J,FLAG) ANG(I,J)=SOLVEOFANG(I,J,FLAG) YC1(I,J)=SOLVEOFYC1(I,J,FLAG) YC2(I,J)=SOLVEOFYC2(I,J,FLAG)
END DO
END DO
WRITE(*,*) '药柱半径',R
WRITE(*,*) '药柱肉厚',TH WRITE(*,*) '特征长度',EXT WRITE(*,*) '星槽圆弧半径',R1 WRITE(*,*) '星边圆弧半径',R2 WRITE(*,*) '星角系数',EE
WRITE(*,*) '星边夹角半角',ANG_HALF WRITE(*,*) '星角数',N
WRITE(*,*) '辅助几何参数RM1',RM1 WRITE(*,*) '辅助几何参数H',H WRITE(*,*) '辅助几何参数B',B WRITE(*,*) '面积单元几何特征参数RM' WRITE(*,100) ((RM(I,J),J=1,6),I=1,3) WRITE(*,*) '面积单元几何特征参数RL' WRITE(*,100) ((RL(I,J),J=1,6),I=1,3) WRITE(*,*) '面积单元几何特征参数ANG' WRITE(*,100) ((ANG(I,J),J=1,6),I=1,3) WRITE(*,*) '面积单元计算控制参数Y1' WRITE(*,100) ((YC1(I,J),J=1,6),I=1,3) WRITE(*,*) '面积单元计算控制参数Y2' WRITE(*,100) ((YC2(I,J),J=1,6),I=1,3) WRITE(*,*)
100 FORMAT(6F10.5)
NUM=10000
OPEN(10,FILE='OUTDATA.XLS',FORM='FORMATTED',ACCESS='SEQUENTIAL')
DO K=0,NUM
SUMOFSC=0.0 SUMOFFC=0.0 YC=K*(RM1-R1)/NUM DO I=1,3
))
))
SC(I,J)=SOLVEOFSC(I,J,FLAG,YC,YC1(I,J),YC2(I,J),RM(I,J),RL(I,J),ANG(I,J
FC(I,J)=SOLVEOFFC(I,J,FLAG,YC,YC1(I,J),YC2(I,J),RM(I,J),RL(I,J),ANG(I,J
SUMOFSC=SUMOFSC+SC(I,J) SUMOFFC=SUMOFFC+FC(I,J)
END DO
END DO WRITE(10,*)
(YC+R1)/EXT,'\T'C,2*N*SUMOFSC/EXT,'\T'C,(PI*R**2-
2*N*SUMOFFC)/(EXT**2)
END DO CLOSE(10) END
FUNCTION SOLVEOFRM(I,J,FLAG)
COMMON /ARY1/R,TH,EXT,R1,R2,EE,ANG_HALF,N,RM1,H,B INTEGER FLAG IF(FLAG.EQ.1) THEN
IF((I.EQ.1).AND.(J.EQ.1)) THEN
SOLVEOFRM=R
ELSE IF((I.EQ.2).AND.(J.EQ.1)) THEN
SOLVEOFRM=TH+R1
ELSE IF((I.EQ.3).AND.(J.EQ.1)) THEN
SOLVEOFRM=B
ELSE IF((I.EQ.1).AND.(J.EQ.2)) THEN
SOLVEOFRM=R2
ELSE IF((I.EQ.1).AND.(J.EQ.3)) THEN
SOLVEOFRM=(B-R1-R2)/TAN(ANG_HALF)
SOLVEOFRM=(B-R1-R2)/TAN(ANG_HALF)
ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN
SOLVEOFRM=RM1
ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN
SOLVEOFRM=R
ELSE
SOLVEOFRM=0.0
END IF
ELSE
IF((I.EQ.1).AND.(J.EQ.1)) THEN
SOLVEOFRM=R
ELSE IF((I.EQ.2).AND.(J.EQ.1)) THEN
SOLVEOFRM=TH+R1
ELSE IF((I.EQ.3).AND.(J.EQ.1)) THEN
SOLVEOFRM=B
ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN
SOLVEOFRM=(B-R1)/TAN(ANG_HALF)
ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN
SOLVEOFRM=RM1
ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN
SOLVEOFRM=R
ELSE
SOLVEOFRM=0.0
END IF
END IF END
FUNCTION SOLVEOFRL(I,J,FLAG)
COMMON /ARY1/R,TH,EXT,R1,R2,EE,ANG_HALF,N,RM1,H,B INTEGER FLAG
IF(FLAG.EQ.1) THEN
IF((I.EQ.1).AND.(J.EQ.1)) THEN
SOLVEOFRL=R-TH
ELSE IF((I.EQ.2).AND.(J.EQ.1)) THEN
SOLVEOFRL=R1
ELSE IF((I.EQ.3).AND.(J.EQ.1)) THEN
SOLVEOFRL=R1
ELSE IF((I.EQ.1).AND.(J.EQ.2)) THEN
SOLVEOFRL=0.0
ELSE IF((I.EQ.1).AND.(J.EQ.3)) THEN
SOLVEOFRL=R2
ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN
SOLVEOFRL=B-R1-R2
ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN
SOLVEOFRL=B
ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN
SOLVEOFRL=TH+R1
ELSE
SOLVEOFRL=0.0
END IF
ELSE
IF((I.EQ.1).AND.(J.EQ.1)) THEN
SOLVEOFRL=R-TH
ELSE IF((I.EQ.2).AND.(J.EQ.1)) THEN
SOLVEOFRL=R1
ELSE IF((I.EQ.3).AND.(J.EQ.1)) THEN
SOLVEOFRL=R1
ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN
SOLVEOFRL=B-R1
ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN
SOLVEOFRL=B
ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN
SOLVEOFRL=TH+R1
ELSE
SOLVEOFRL=0.0
END IF
END IF END
FUNCTION SOLVEOFANG(I,J,FLAG)
COMMON /ARY1/R,TH,EXT,R1,R2,EE,ANG_HALF,N,RM1,H,B INTEGER FLAG REAL::PI=3.1415926 IF(FLAG.EQ.1) THEN
IF((I.EQ.1).AND.(J.EQ.1)) THEN
SOLVEOFANG=(1-EE)*PI/N
ELSE IF((I.EQ.2).AND.(J.EQ.1)) THEN
SOLVEOFANG=ASIN((R/RM1)*SIN(EE*PI/N))
ELSE IF((I.EQ.3).AND.(J.EQ.1)) THEN
SOLVEOFANG=ACOS(H/RM1)-ANG_HALF
ELSE IF((I.EQ.1).AND.(J.EQ.2)) THEN
SOLVEOFANG=PI/2.0-ANG_HALF
ELSE IF((I.EQ.1).AND.(J.EQ.3)) THEN
SOLVEOFANG=0.0
ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN
SOLVEOFANG=0.0
ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN
SOLVEOFANG=H
ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN
SOLVEOFANG=EE*PI/N
ELSE
SOLVEOFANG=0.0
END IF
ELSE
IF((I.EQ.1).AND.(J.EQ.1)) THEN SOLVEOFANG=(1-EE)*PI/N ELSE IF((I.EQ.2).AND.(J.EQ.1)) THEN SOLVEOFANG=ASIN((R/RM1)*SIN(EE*PI/N)) ELSE IF((I.EQ.3).AND.(J.EQ.1)) THEN SOLVEOFANG=ACOS(H/RM1)-ANG_HALF ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN SOLVEOFANG=0.0 ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN SOLVEOFANG=H ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN SOLVEOFANG=EE*PI/N ELSE SOLVEOFANG=0.0 END IF
END IF
END
FUNCTION SOLVEOFYC1(I,J,FLAG)
COMMON /ARY1/R,TH,EXT,R1,R2,EE,ANG_HALF,N,RM1,H,B
INTEGER FLAG
IF(FLAG.EQ.1) THEN
IF((I.EQ.1).AND.(J.EQ.1)) THEN SOLVEOFYC1=0.0 ELSE IF((I.EQ.2).AND.(J.EQ.1)) THEN SOLVEOFYC1=0.0 ELSE IF((I.EQ.3).AND.(J.EQ.1)) THEN SOLVEOFYC1=0.0 ELSE IF((I.EQ.1).AND.(J.EQ.2)) THEN
SOLVEOFYC1=0.0 ELSE IF((I.EQ.1).AND.(J.EQ.3)) THEN SOLVEOFYC1=0.0 ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN SOLVEOFYC1=R2 ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN SOLVEOFYC1=B-R1 ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN SOLVEOFYC1=TH ELSE SOLVEOFYC1=0.0 END IF
ELSE
IF((I.EQ.1).AND.(J.EQ.1)) THEN SOLVEOFYC1=0.0 ELSE IF((I.EQ.2).AND.(J.EQ.1)) THEN SOLVEOFYC1=0.0 ELSE IF((I.EQ.3).AND.(J.EQ.1)) THEN SOLVEOFYC1=0.0 ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN SOLVEOFYC1=0.0 ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN SOLVEOFYC1=B-R1 ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN SOLVEOFYC1=TH ELSE SOLVEOFYC1=0.0 END IF
END IF
END
FUNCTION SOLVEOFYC2(I,J,FLAG)
COMMON /ARY1/R,TH,EXT,R1,R2,EE,ANG_HALF,N,RM1,H,B
INTEGER FLAG
IF(FLAG.EQ.1) THEN
IF((I.EQ.1).AND.(J.EQ.1)) THEN SOLVEOFYC2=TH ELSE IF((I.EQ.2).AND.(J.EQ.1)) THEN SOLVEOFYC2=TH ELSE IF((I.EQ.3).AND.(J.EQ.1)) THEN SOLVEOFYC2=B-R1 ELSE IF((I.EQ.1).AND.(J.EQ.2)) THEN SOLVEOFYC2=R2 ELSE IF((I.EQ.1).AND.(J.EQ.3)) THEN SOLVEOFYC2=R2 ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN SOLVEOFYC2=B-R1 ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN SOLVEOFYC2=RM1-R1 ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN SOLVEOFYC2=RM1-R1 ELSE SOLVEOFYC2=0.0 END IF
ELSE
IF((I.EQ.1).AND.(J.EQ.1)) THEN SOLVEOFYC2=TH ELSE IF((I.EQ.2).AND.(J.EQ.1)) THEN SOLVEOFYC2=TH ELSE IF((I.EQ.3).AND.(J.EQ.1)) THEN SOLVEOFYC2=B-R1 ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN
ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN SOLVEOFYC2=RM1-R1 ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN SOLVEOFYC2=RM1-R1 ELSE SOLVEOFYC2=0.0 END IF
END IF
END
FUNCTION SOLVEOFSC(I,J,FLAG,YCX,YCX1,YCX2,RMX,RLX,ANGX) COMMON /ARY1/R,TH,EXT,R1,R2,EE,ANG_HALF,N,RM1,H,B
INTEGER FLAG
REAL::PI=3.1415926
IF(FLAG.EQ.1) THEN
IF(((I.EQ.1).OR.(I.EQ.2).OR.(I.EQ.3)).AND.(J.EQ.1)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFSC=0.0 ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN SOLVEOFSC=ANGX*(RLX+YCX) ELSE SOLVEOFSC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.2)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFSC=0.0 ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN SOLVEOFSC=ANGX*(RMX-YCX) ELSE SOLVEOFSC=0.0
ELSE IF((I.EQ.1).AND.(J.EQ.3)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFSC=0.0 ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN SOLVEOFSC=RMX ELSE SOLVEOFSC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFSC=0.0 ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN SOLVEOFSC=RMX*(RLX-YCX+R2)/RLX ELSE SOLVEOFSC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFSC=0.0 ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN RTX=RLX+YCX-(B-R1) ANGXM=ACOS(ANGX/RMX) ANGX5=ACOS(ANGX/RTX) SOLVEOFSC=RTX*(ANGXM-ANGX5) ELSE SOLVEOFSC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFSC=0.0
EXTX=RMX-RLX RTX=RLX+YCX-TH RM1X=SQRT(RMX**2+EXTX**2-2*RMX*EXTX*COS(ANGX)) ANGX0=PI-ASIN(RMX*SIN(ANGX)/RM1X) ANGX6=ACOS((RTX**2+EXTX**2-RMX**2)/(2*RTX*EXTX)) GMAX=ASIN(RTX*SIN(ANGX6)/RMX) SOLVEOFSC=RTX*(ANGX6-ANGX0) ELSE SOLVEOFSC=0.0 END IF ELSE SOLVEOFSC=0.0 END IF
ELSE
IF(((I.EQ.1).OR.(I.EQ.2).OR.(I.EQ.3)).AND.(J.EQ.1)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFSC=0.0 ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN SOLVEOFSC=ANGX*(RLX+YCX) ELSE SOLVEOFSC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFSC=0.0 ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN SOLVEOFSC=RMX*(RLX-YCX+R2)/RLX ELSE SOLVEOFSC=0.0 END IF
IF(YCX.LT.YCX1) THEN SOLVEOFSC=0.0 ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN RTX=RLX+YCX-(B-R1) ANGXM=ACOS(ANGX/RMX) ANGX5=ACOS(ANGX/RTX) SOLVEOFSC=RTX*(ANGXM-ANGX5) ELSE SOLVEOFSC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFSC=0.0 ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN EXTX=RMX-RLX RTX=RLX+YCX-TH RM1X=SQRT(RMX**2+EXTX**2-2*RMX*EXTX*COS(ANGX)) ANGX0=PI-ASIN(RMX*SIN(ANGX)/RM1X) ANGX6=ACOS((RTX**2+EXTX**2-RMX**2)/(2*RTX*EXTX)) GMAX=ASIN(RTX*SIN(ANGX6)/RMX) SOLVEOFSC=RTX*(ANGX6-ANGX0) ELSE SOLVEOFSC=0.0 END IF ELSE SOLVEOFSC=0.0 END IF
END IF
END
FUNCTION SOLVEOFFC(I,J,FLAG,YCX,YCX1,YCX2,RMX,RLX,ANGX) COMMON /ARY1/R,TH,EXT,R1,R2,EE,ANG_HALF,N,RM1,H,B
INTEGER FLAG
REAL::PI=3.1415926
IF(FLAG.EQ.1) THEN
IF(((I.EQ.1).OR.(I.EQ.2).OR.(I.EQ.3)).AND.(J.EQ.1)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFFC=0.5*ANGX*(RMX**2-RLX**2) ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN SOLVEOFFC=0.5*ANGX*(RMX**2-(RLX+YCX)**2) ELSE SOLVEOFFC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.2)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFFC=0.5*ANGX*(RMX**2-RLX**2) ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN SOLVEOFFC=0.5*ANGX*((RMX-YCX)**2-RLX**2) ELSE SOLVEOFFC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.3)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFFC=RMX*RLX ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN SOLVEOFFC=RMX*(RLX-YCX) ELSE SOLVEOFFC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN IF(YCX.LT.YCX1) THEN
SOLVEOFFC=0.5*SOLVEOFSCX*RLX ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN SOLVEOFSCX=RMX*(RLX-YCX+R2)/RLX SLOVEOFFC=0.5*SOLVEOFSCX*(RLX-YCX+R2) ELSE SOLVEOFFC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN IF(YCX.LT.YCX1) THEN RTX=RLX ANGXM=ACOS(ANGX/RMX) ANGX5=ACOS(ANGX/RTX) SOLVEOFFC=0.5*(ANGX**2*(TAN(ANGXM)-TAN(ANGX5))-RTX**2*(ANGXM-ANGX5))
ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN RTX=RLX+YCX-(B-R1) ANGXM=ACOS(ANGX/RMX) ANGX5=ACOS(ANGX/RTX) SOLVEOFFC=0.5*(ANGX**2*(TAN(ANGXM)-TAN(ANGX5))-RTX**2*(ANGXM-ANGX5))
ELSE SOLVEOFFC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN IF(YCX.LT.YCX1) THEN EXTX=RMX-RLX RTX=RLX RM1X=SQRT(RMX**2+EXTX**2-2*RMX*EXTX*COS(ANGX)) ANGX0=PI-ASIN(RMX*SIN(ANGX)/RM1X) ANGX6=ACOS((RTX**2+EXTX**2-RMX**2)/(2*RTX*EXTX))
SOLVEOFFC=0.5*(RMX*EXTX*SIN(GMAX)+RMX**2*(ANGX-GMAX)-RTX**2*(ANGX6-ANGX0)-RMX*EXTX*SIN(ANGX))
ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN EXTX=RMX-RLX RTX=RLX+YCX-TH RM1X=SQRT(RMX**2+EXTX**2-2*RMX*EXTX*COS(ANGX)) ANGX0=PI-ASIN(RMX*SIN(ANGX)/RM1X) ANGX6=ACOS((RTX**2+EXTX**2-RMX**2)/(2*RTX*EXTX)) GMAX=ASIN(RTX*SIN(ANGX6)/RMX) SOLVEOFFC=0.5*(RMX*EXTX*SIN(GMAX)+RMX**2*(ANGX-GMAX)-RTX**2*(ANGX6-ANGX0)-RMX*EXTX*SIN(ANGX))
ELSE SOLVEOFFC=0.0 END IF ELSE SOLVEOFFC=0.0 END IF
ELSE
IF(((I.EQ.1).OR.(I.EQ.2).OR.(I.EQ.3)).AND.(J.EQ.1)) THEN IF(YCX.LT.YCX1) THEN SOLVEOFFC=0.5*ANGX*(RMX**2-RLX**2) ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN SOLVEOFFC=0.5*ANGX*(RMX**2-(RLX+YCX)**2) ELSE SOLVEOFFC=0.0 END IF ELSE IF((I.EQ.1).AND.(J.EQ.4)) THEN IF(YCX.LT.YCX1) THEN
SOLVEOFFC=0.5*SOLVEOFSCX*RLX
ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN
SOLVEOFSCX=RMX*(RLX-YCX+R2)/RLX SOLVEOFFC=0.5*SOLVEOFSCX*(RLX-YCX+R2)
ELSE
SOLVEOFFC=0.0
END IF
ELSE IF((I.EQ.1).AND.(J.EQ.5)) THEN
IF(YCX.LT.YCX1) THEN
RTX=RLX
ANGXM=ACOS(ANGX/RMX) ANGX5=ACOS(ANGX/RTX)
SOLVEOFFC=0.5*(ANGX**2*(TAN(ANGXM)-TAN(ANGX5))-
RTX**2*(ANGXM-ANGX5))
ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN
RTX=RLX+YCX-(B-R1) ANGXM=ACOS(ANGX/RMX) ANGX5=ACOS(ANGX/RTX)
SOLVEOFFC=0.5*(ANGX**2*(TAN(ANGXM)-TAN(ANGX5))-
RTX**2*(ANGXM-ANGX5))
ELSE
SOLVEOFFC=0.0
END IF
ELSE IF((I.EQ.1).AND.(J.EQ.6)) THEN
IF(YCX.LT.YCX1) THEN
EXTX=RMX-RLX RTX=RLX
RM1X=SQRT(RMX**2+EXTX**2-2*RMX*EXTX*COS(ANGX)) ANGX0=PI-ASIN(RMX*SIN(ANGX)/RM1X)
ANGX6=ACOS((RTX**2+EXTX**2-RMX**2)/(2*RTX*EXTX))
SOLVEOFFC=0.5*(RMX*EXTX*SIN(GMAX)+RMX**2*(ANGX-GMAX)-
RTX**2*(ANGX6-ANGX0)-RMX*EXTX*SIN(ANGX))
ELSE IF((YCX.GE.YCX1).AND.(YCX.LE.YCX2)) THEN
EXTX=RMX-RLX RTX=RLX+YCX-TH
RM1X=SQRT(RMX**2+EXTX**2-2*RMX*EXTX*COS(ANGX)) ANGX0=PI-ASIN(RMX*SIN(ANGX)/RM1X)
ANGX6=ACOS((RTX**2+EXTX**2-RMX**2)/(2*RTX*EXTX)) GMAX=ASIN(RTX*SIN(ANGX6)/RMX)
SOLVEOFFC=0.5*(RMX*EXTX*SIN(GMAX)+RMX**2*(ANGX-GMAX)-
RTX**2*(ANGX6-ANGX0)-RMX*EXTX*SIN(ANGX))
ELSE
SOLVEOFFC=0.0
END IF
ELSE
SOLVEOFFC=0.0
END IF
END IF END 三、计算结果
1、初始药柱截面形状图
等面有星根圆弧
减面有星根圆弧
等面无星根圆弧
2、燃烧周长随燃烧肉厚的变化关系
等面有星根圆弧
减面无星根圆弧
减面有星根圆弧。
等面有星根圆弧
等面无星根圆弧
3、通道截面积随燃烧肉厚的变化关系
减面有星根圆弧
减面无星根圆弧