我写了一个可以辅助设计的代码,壁厚和卡簧槽强度都可以算,我不太擅长写工程代码,命名比较烂,请谅解
#include <iostream>
using namespace std;
const int _6061t6y=250;
/*
http://www.nakka-rocketry.net/pix/ftycht2.gif
6061-t6铝合金的屈服强度随温度变化的曲线近似于一个二次函数
25摄氏度时屈服强度为室温的100%,250摄氏度时即达到室温下屈服强度的约45%
即可根据初中数学知识得出6061t6铝合金屈服强度和材料温度的近似函数关系式等于
f(x)=-(11/10125)*((x-25)^2)+25,x∈[25,250]
其中,f(x)是室温强度百分数百分号前的部分,x是材料温度
经验证,这条拟合的函数曲线可以一定地吻合(150°前不太准,正在优化)实测强度曲线
*/
double temp_yield(int x)//x即温度
{
return -1.0*(11.0/10125.0)*(x-25)*(x-25)+100;
}
double ye2shear(int ye)
{
return 0.65*ye;
}//根据经验公式,金属材料剪切强度约为其屈服强度的50%~80%,为了冗余和安全起见,这里的系数取65%
//e_min=((D_i*P_max)/(F_s))*safe
double mine;
int D_inner;
double pmax;
int safe;
int temp;
double calc_e(int pmax,int di,double f_s,int safe)
{
return ((1.0*di*pmax)/(f_s))*safe;
}
double calc_c(int pmax,int di,double f_y,int safe)
{
return (pmax*di)/(2*f_y/safe);
}
int main()
{
cout<<"固体火箭发动机壁厚及卡簧槽最大耐压计算器 v0.0.1(注:目前仅适用于无缝6061-T6铝合金壳体)\nBy ZZCjas(kcid:106216)\n";
cout<<"请输入发动机壳体内径(mm):";
cin>>D_inner;
cout<<"\n请输入发动机最大工作压强(Mpa):";
cin>>pmax;
cout<<"\n请输入壳体工作期间最大温度(隔热良好的情况下为一般40~50摄氏度,最大取80摄氏度即可):";
cin>>temp;
if(temp>250||temp<25)
{
cout<<"\n温度不应超过定义域(25<=温度<=250)\n";
return -1;
}
cout<<"\n请输入安全系数:";
cin>>safe;
double tempye=1.0*temp_yield(temp)/100*_6061t6y;
cout<<"\n\n计算结果:";
cout<<"最小壁厚:"<<fixed<<calc_c(pmax,D_inner,tempye,safe)<<"mm"<<endl;
cout<<"卡簧槽边缘距离壳体边缘距离:"<<fixed<<calc_e(pmax,D_inner,ye2shear(tempye),safe)<<"mm"<<endl;
cout<<"注:卡簧槽深度最大为壳体厚度的1/2倍,卡簧槽的宽度最好为卡簧厚度的1.5倍,设计时请注意\n计算内容仅供参考\n";
system("pause");
}