parent
6bd527bae2
commit
2dd85480ec
564
core.cs
564
core.cs
|
|
@ -9,29 +9,20 @@ namespace conductortension
|
|||
//area 导线截面
|
||||
//t 温度
|
||||
// l 档距
|
||||
public static double Fx(double E,double load,double tension,double alpha,double area,double t)
|
||||
public static double Fx(double E, double load, double tension, double alpha, double area, double t,double l)
|
||||
{
|
||||
return E * Math.Pow(load / tension, 2) /24- tension / area - alpha * E * t;
|
||||
return E * Math.Pow(load*l / tension, 2) / 24 - tension / area - alpha * E * t;
|
||||
}
|
||||
|
||||
public static bool CalZhangLi(calStressLoadNew inPut, ref double ZhangLi)
|
||||
{
|
||||
//张力=T6
|
||||
//T6=T5-(T5^2*(T5+a)-b)/(T5^2*3+T5*a*2)
|
||||
//T5=T4-(T4^2*(T4+a)-b)/(T4^2*3+T4*a*2)
|
||||
//T4=T3-(T3^2*(T3+a)-b)/(T3^2*3+T3*a*2)
|
||||
//T3=T2-(T2^2*(T2+a)-b)/(T2^2*3+T2*a*2)
|
||||
//T2=T1-(T1^2*(T1+a)-b)/(T1^2*3+T1*a*2)
|
||||
//T1=最大使用张力-(最大使用张力^2*(最大使用张力+a)-b)/(最大使用张力^2*3+最大使用张力*a*2)
|
||||
//a=截面积*控制工况荷载^2*档距^2*弹性模量/(控制工况应力^2*24)-控制工况应力+温度线膨胀系数*截面积*弹性模量*(待求工况温度-控制工况温度)
|
||||
//b=截面积*弹性模量*待求工况综合荷载^2*档距^2/24
|
||||
|
||||
//计算最大使用张力
|
||||
double ZuiDaShiYongZhangLi; //最大使用张力=计算拉断力*保证破断张力取计算拉断力的/安全系数
|
||||
ZuiDaShiYongZhangLi = inPut.LaDuanLi * inPut.BaoZhengPoDuanZhangLiXiShu / inPut.AnQuan;
|
||||
ZuiDaShiYongZhangLi = inPut.LaDuanLi * inPut.BaoZhengPoDuanZhangLiXiShu/100 / inPut.AnQuan;
|
||||
//ZuiDaShiYongZhangLi = inPut.LaDuanLi / inPut.AnQuan;
|
||||
//计算温度线膨胀系数
|
||||
double XianPengZhang = inPut.XianPengZhang * 0.000001;
|
||||
double XianPengZhang = inPut.XianPengZhang;
|
||||
//计算平均运行张力
|
||||
//先判断年平均运行张力(%)是否为百分数,如果是百分数则变为小数计算。
|
||||
if (inPut.NianPingJun > 100 || inPut.NianPingJun <= 0)
|
||||
|
|
@ -42,7 +33,7 @@ namespace conductortension
|
|||
{
|
||||
inPut.NianPingJun = inPut.NianPingJun / 100;
|
||||
}
|
||||
double PingJunYunXingZhangLi = inPut.LaDuanLi * inPut.BaoZhengPoDuanZhangLiXiShu * inPut.NianPingJun;///////////////////////////////////////////////////////////////////////年平均是20%还是0.2,这里要求的是小数
|
||||
double PingJunYunXingZhangLi = inPut.LaDuanLi * inPut.BaoZhengPoDuanZhangLiXiShu/100 * inPut.NianPingJun;///////////////////////////////////////////////////////////////////////年平均是20%还是0.2,这里要求的是小数
|
||||
if (inPut.SheJiFengSuGaoDu == 0)
|
||||
{
|
||||
inPut.SheJiFengSuGaoDu = 10;
|
||||
|
|
@ -51,7 +42,7 @@ namespace conductortension
|
|||
{
|
||||
inPut.PingJunGaoDu = 20;//TODO:需要依据电压等级选择
|
||||
}
|
||||
double a, b, T1, T2, T3, T4, T5, T6;
|
||||
//double a, b, T1, T2, T3, T4, T5, T6;
|
||||
//计算待求工况比载
|
||||
double DaiHeZai = 0; //待求工况比载
|
||||
if (CalHeZai(inPut, ref DaiHeZai) == false)
|
||||
|
|
@ -88,7 +79,9 @@ namespace conductortension
|
|||
NianPingJun.DaiFeng = NianPingJun.PingFeng;
|
||||
NianPingJun.DaiWen = NianPingJun.PingWen;
|
||||
DaFeng.DaiBing = DaFeng.FengBing;
|
||||
DaFeng.DaiFeng = DaFeng.FengFeng;
|
||||
double wind_velocity;
|
||||
wind_velocity = Math.Round(DaFeng.FengFeng * Math.Pow(DaFeng.PingJunGaoDu / DaFeng.SheJiFengSuGaoDu, 0.16), 2);
|
||||
DaFeng.DaiFeng = wind_velocity;//大风工况风速折算到平均高。
|
||||
DaFeng.DaiWen = DaFeng.FengWen;
|
||||
FuBing.DaiBing = FuBing.BingBing;
|
||||
FuBing.DaiFeng = FuBing.BingFeng;
|
||||
|
|
@ -108,375 +101,109 @@ namespace conductortension
|
|||
ChuShiNianPingJun[3] = ChuShiNianPingJun[1] / ChuShiNianPingJun[2];
|
||||
ChuShiDaFeng[3] = ChuShiDaFeng[1] / ChuShiDaFeng[2];
|
||||
ChuShiFuBing[3] = ChuShiFuBing[1] / ChuShiFuBing[2];
|
||||
//5:计算并存储Fo
|
||||
ChuShiZuiDiQiWen[4] = -1 * (ChuShiZuiDiQiWen[2] + inPut.JieMianJi * inPut.MoLiang * XianPengZhang * ChuShiZuiDiQiWen[0]);
|
||||
ChuShiNianPingJun[4] = -1 * (ChuShiNianPingJun[2] + inPut.JieMianJi * inPut.MoLiang * XianPengZhang * ChuShiNianPingJun[0]);
|
||||
ChuShiDaFeng[4] = -1 * (ChuShiDaFeng[2] + inPut.JieMianJi * inPut.MoLiang * XianPengZhang * ChuShiDaFeng[0]);
|
||||
ChuShiFuBing[4] = -1 * (ChuShiFuBing[2] + inPut.JieMianJi * inPut.MoLiang * XianPengZhang * ChuShiFuBing[0]);
|
||||
//二、将四个初始计算数据按照P/T值由小到大排序,形成计算数组
|
||||
double[,] JiSuanGongKuangShuZu = new double[5, 4]; //共5行,分别代表1:控制工况(1最低气温,2年平均气温,3大风,4覆冰),2:温度,3:比载,4:应力,5:Fo=-(T+A*E*a*t)(N)
|
||||
for (int i = 0; i < 5; i++)
|
||||
|
||||
//计算4个工况下的Fx by 杜孟远2020.4.17
|
||||
//t_dangju 试探最大Fx时使用的档距
|
||||
int[] MaxFxConditionFlag = new int[inPut.DangJu+1];//记录不同t_dangju下,哪种工况的Fx最大。1代表最低温,2代表年平均温,3代表大风,4代表覆冰。0位置元素无效。
|
||||
MaxFxConditionFlag[0]=1;
|
||||
for (int t_dangju = inPut.DangJu-1; t_dangju <= inPut.DangJu; t_dangju++)
|
||||
{
|
||||
for (int j = 0; j < 4; j++)
|
||||
double Fx_dangjuZuiDiWen;
|
||||
double Fx_dangjuNianPingJun;
|
||||
double Fx_dangjuDaFeng;
|
||||
double Fx_dangjuFuBing;
|
||||
Fx_dangjuZuiDiWen = Fx(inPut.MoLiang, ChuShiZuiDiQiWen[1], ChuShiZuiDiQiWen[2], inPut.XianPengZhang, inPut.JieMianJi, ChuShiZuiDiQiWen[0], t_dangju);
|
||||
Fx_dangjuNianPingJun = Fx(inPut.MoLiang, ChuShiNianPingJun[1], ChuShiNianPingJun[2], inPut.XianPengZhang, inPut.JieMianJi, ChuShiNianPingJun[0], t_dangju);
|
||||
Fx_dangjuDaFeng = Fx(inPut.MoLiang, ChuShiDaFeng[1], ChuShiDaFeng[2], inPut.XianPengZhang, inPut.JieMianJi, ChuShiDaFeng[0], t_dangju);
|
||||
Fx_dangjuFuBing = Fx(inPut.MoLiang, ChuShiFuBing[1], ChuShiFuBing[2], inPut.XianPengZhang, inPut.JieMianJi, ChuShiFuBing[0], t_dangju);
|
||||
double maxFx;
|
||||
maxFx = Fx_dangjuZuiDiWen;
|
||||
MaxFxConditionFlag[t_dangju] = 1;
|
||||
if (maxFx < Fx_dangjuNianPingJun)
|
||||
{
|
||||
JiSuanGongKuangShuZu[i, j] = 0;
|
||||
maxFx = Fx_dangjuNianPingJun;
|
||||
MaxFxConditionFlag[t_dangju] = 2;
|
||||
}
|
||||
}
|
||||
//排序数组,将四组P/T值存入排序数组进行由小到大的冒泡排序
|
||||
double[,] PaiXuShuZu = new double[4, 2];
|
||||
PaiXuShuZu[0, 0] = ChuShiZuiDiQiWen[3]; //第二维度的0代表P/T值
|
||||
PaiXuShuZu[0, 1] = 1;//第二维度的1代表工况序号,用于排序后的换位
|
||||
PaiXuShuZu[1, 0] = ChuShiNianPingJun[3];
|
||||
PaiXuShuZu[1, 1] = 2;
|
||||
PaiXuShuZu[2, 0] = ChuShiDaFeng[3];
|
||||
PaiXuShuZu[2, 1] = 3;
|
||||
PaiXuShuZu[3, 0] = ChuShiFuBing[3];
|
||||
PaiXuShuZu[3, 1] = 4;
|
||||
double temp_PT = 0;
|
||||
double temp_BianHao = 0;
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
for (int j = 0; j < 3 - i; j++)
|
||||
if (maxFx < Fx_dangjuDaFeng)
|
||||
{
|
||||
if (PaiXuShuZu[j, 0] > PaiXuShuZu[j + 1, 0])
|
||||
{
|
||||
temp_PT = PaiXuShuZu[j, 0];
|
||||
temp_BianHao = PaiXuShuZu[j, 1];
|
||||
PaiXuShuZu[j, 0] = PaiXuShuZu[j + 1, 0];
|
||||
PaiXuShuZu[j, 1] = PaiXuShuZu[j + 1, 1];
|
||||
PaiXuShuZu[j + 1, 0] = temp_PT;
|
||||
PaiXuShuZu[j + 1, 1] = temp_BianHao;
|
||||
maxFx = Fx_dangjuDaFeng;
|
||||
MaxFxConditionFlag[t_dangju] = 3;
|
||||
}
|
||||
if (maxFx < Fx_dangjuFuBing)
|
||||
{
|
||||
maxFx = Fx_dangjuFuBing;
|
||||
MaxFxConditionFlag[t_dangju] = 4;
|
||||
}
|
||||
if (MaxFxConditionFlag[t_dangju]!=MaxFxConditionFlag[t_dangju-1] )//有突变,找到了临界档距的范围
|
||||
{
|
||||
double criticalSpan;
|
||||
double formerTension=0;
|
||||
double formerLoad=0;
|
||||
double formerTemperature=0;
|
||||
switch (MaxFxConditionFlag[t_dangju - 1])
|
||||
{
|
||||
case 1:
|
||||
formerLoad = ChuShiZuiDiQiWen[1];
|
||||
formerTension = ChuShiZuiDiQiWen[2];
|
||||
formerTemperature = ChuShiZuiDiQiWen[0];
|
||||
break;
|
||||
case 2:
|
||||
formerLoad = ChuShiNianPingJun[1];
|
||||
formerTension = ChuShiNianPingJun[2];
|
||||
formerTemperature = ChuShiNianPingJun[0];
|
||||
break;
|
||||
case 3:
|
||||
formerLoad = ChuShiDaFeng[1];
|
||||
formerTension = ChuShiDaFeng[2];
|
||||
formerTemperature = ChuShiDaFeng[0];
|
||||
break;
|
||||
case 4:
|
||||
formerLoad = ChuShiFuBing[1];
|
||||
formerTension = ChuShiFuBing[2];
|
||||
formerTemperature = ChuShiFuBing[0];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//排序完成后将四组工况数据按照排序顺序写入计算工况数组
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
if (PaiXuShuZu[i, 1] == 1)
|
||||
{
|
||||
JiSuanGongKuangShuZu[0, i] = 1;//1代表最低温
|
||||
JiSuanGongKuangShuZu[1, i] = ChuShiZuiDiQiWen[0];
|
||||
JiSuanGongKuangShuZu[2, i] = ChuShiZuiDiQiWen[1];
|
||||
JiSuanGongKuangShuZu[3, i] = ChuShiZuiDiQiWen[2];
|
||||
JiSuanGongKuangShuZu[4, i] = ChuShiZuiDiQiWen[4];
|
||||
}
|
||||
else if (PaiXuShuZu[i, 1] == 2)
|
||||
{
|
||||
JiSuanGongKuangShuZu[0, i] = 2;//2代表年平均气温
|
||||
JiSuanGongKuangShuZu[1, i] = ChuShiNianPingJun[0];
|
||||
JiSuanGongKuangShuZu[2, i] = ChuShiNianPingJun[1];
|
||||
JiSuanGongKuangShuZu[3, i] = ChuShiNianPingJun[2];
|
||||
JiSuanGongKuangShuZu[4, i] = ChuShiNianPingJun[4];
|
||||
}
|
||||
else if (PaiXuShuZu[i, 1] == 3)
|
||||
{
|
||||
JiSuanGongKuangShuZu[0, i] = 3;//3代表最大风
|
||||
JiSuanGongKuangShuZu[1, i] = ChuShiDaFeng[0];
|
||||
JiSuanGongKuangShuZu[2, i] = ChuShiDaFeng[1];
|
||||
JiSuanGongKuangShuZu[3, i] = ChuShiDaFeng[2];
|
||||
JiSuanGongKuangShuZu[4, i] = ChuShiDaFeng[4];
|
||||
}
|
||||
else if (PaiXuShuZu[i, 1] == 4)
|
||||
{
|
||||
JiSuanGongKuangShuZu[0, i] = 4;//4代表最大覆冰
|
||||
JiSuanGongKuangShuZu[1, i] = ChuShiFuBing[0];
|
||||
JiSuanGongKuangShuZu[2, i] = ChuShiFuBing[1];
|
||||
JiSuanGongKuangShuZu[3, i] = ChuShiFuBing[2];
|
||||
JiSuanGongKuangShuZu[4, i] = ChuShiFuBing[4];
|
||||
}
|
||||
}//完成计算工况数组的录入
|
||||
double currentTension=0;
|
||||
double currentLoad=0;
|
||||
double currentTemperature=0;
|
||||
switch (MaxFxConditionFlag[t_dangju])
|
||||
{
|
||||
case 1:
|
||||
currentLoad = ChuShiZuiDiQiWen[1];
|
||||
currentTension = ChuShiZuiDiQiWen[2];
|
||||
currentTemperature = ChuShiZuiDiQiWen[0];
|
||||
break;
|
||||
case 2:
|
||||
currentLoad = ChuShiNianPingJun[1];
|
||||
currentTension = ChuShiNianPingJun[2];
|
||||
currentTemperature = ChuShiNianPingJun[0];
|
||||
break;
|
||||
case 3:
|
||||
currentLoad = ChuShiDaFeng[1];
|
||||
currentTension = ChuShiDaFeng[2];
|
||||
currentTemperature = ChuShiDaFeng[0];
|
||||
break;
|
||||
case 4:
|
||||
currentLoad = ChuShiFuBing[1];
|
||||
currentTension = ChuShiFuBing[2];
|
||||
currentTemperature = ChuShiFuBing[0];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
double t1=24 / inPut.MoLiang * (formerTension - currentTension) / inPut.JieMianJi;
|
||||
double t2=24 * inPut.XianPengZhang * (formerTemperature - currentTemperature) ;
|
||||
double t3= Math.Pow(formerLoad / formerTension, 2) - Math.Pow(currentLoad / currentTension, 2);
|
||||
criticalSpan = Math.Sqrt( (t1+ t2)/t3);//TODO:暂时不用
|
||||
Console.WriteLine("{0}", criticalSpan);
|
||||
|
||||
// Lab/Lbc/Lcd只算前三个工况
|
||||
// Lac/Lbd只算前两个工况
|
||||
// Lad只算第一个工况
|
||||
double[] QianSanGe = new double[3];
|
||||
double[] QianLiangGe = new double[2];
|
||||
double DiYiGe = 0;
|
||||
//以此计算这几个值
|
||||
//计算Lab/Lbc/Lcd中的第一个值
|
||||
if (PaiXuShuZu[0, 0] == PaiXuShuZu[1, 0])
|
||||
{
|
||||
QianSanGe[0] = -1;
|
||||
}
|
||||
else if ((JiSuanGongKuangShuZu[4, 1] - JiSuanGongKuangShuZu[4, 0]) / (Math.Pow(PaiXuShuZu[0, 0], 2) - Math.Pow(PaiXuShuZu[1, 0], 2)) > 0)
|
||||
{
|
||||
QianSanGe[0] = Math.Pow(24 * (JiSuanGongKuangShuZu[4, 1] - JiSuanGongKuangShuZu[4, 0]) / (Math.Pow(PaiXuShuZu[0, 0], 2) - Math.Pow(PaiXuShuZu[1, 0], 2)) / inPut.MoLiang / inPut.JieMianJi, 0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
QianSanGe[0] = -1;
|
||||
}
|
||||
//计算Lab/Lbc/Lcd中的第二个值
|
||||
if (PaiXuShuZu[1, 0] == PaiXuShuZu[2, 0])
|
||||
{
|
||||
QianSanGe[1] = -1;
|
||||
}
|
||||
else if ((JiSuanGongKuangShuZu[4, 2] - JiSuanGongKuangShuZu[4, 1]) / (Math.Pow(PaiXuShuZu[1, 0], 2) - Math.Pow(PaiXuShuZu[2, 0], 2)) > 0)
|
||||
{
|
||||
QianSanGe[1] = Math.Pow(24 * (JiSuanGongKuangShuZu[4, 2] - JiSuanGongKuangShuZu[4, 1]) / (Math.Pow(PaiXuShuZu[1, 0], 2) - Math.Pow(PaiXuShuZu[2, 0], 2)) / inPut.MoLiang / inPut.JieMianJi, 0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
QianSanGe[1] = -1;
|
||||
}
|
||||
//计算Lab/Lbc/Lcd中的第三个值
|
||||
if (PaiXuShuZu[2, 0] == PaiXuShuZu[3, 0])
|
||||
{
|
||||
QianSanGe[2] = -1;
|
||||
}
|
||||
else if ((JiSuanGongKuangShuZu[4, 3] - JiSuanGongKuangShuZu[4, 2]) / (Math.Pow(PaiXuShuZu[2, 0], 2) - Math.Pow(PaiXuShuZu[3, 0], 2)) > 0)
|
||||
{
|
||||
QianSanGe[2] = Math.Pow(24 * (JiSuanGongKuangShuZu[4, 3] - JiSuanGongKuangShuZu[4, 2]) / (Math.Pow(PaiXuShuZu[2, 0], 2) - Math.Pow(PaiXuShuZu[3, 0], 2)) / inPut.MoLiang / inPut.JieMianJi, 0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
QianSanGe[2] = -1;
|
||||
}
|
||||
//计算Lac/Lbd中的第一个值
|
||||
if (PaiXuShuZu[0, 0] == PaiXuShuZu[2, 0])
|
||||
{
|
||||
QianLiangGe[0] = -1;
|
||||
}
|
||||
else if ((JiSuanGongKuangShuZu[4, 2] - JiSuanGongKuangShuZu[4, 0]) / (Math.Pow(PaiXuShuZu[0, 0], 2) - Math.Pow(PaiXuShuZu[2, 0], 2)) > 0)
|
||||
{
|
||||
QianLiangGe[0] = Math.Pow(24 * (JiSuanGongKuangShuZu[4, 2] - JiSuanGongKuangShuZu[4, 0]) / (Math.Pow(PaiXuShuZu[0, 0], 2) - Math.Pow(PaiXuShuZu[2, 0], 2)) / inPut.MoLiang / inPut.JieMianJi, 0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
QianLiangGe[0] = -1;
|
||||
}
|
||||
//计算Lac/Lbd中的第二个值
|
||||
if (PaiXuShuZu[1, 0] == PaiXuShuZu[3, 0])
|
||||
{
|
||||
QianLiangGe[1] = -1;
|
||||
}
|
||||
else if ((JiSuanGongKuangShuZu[4, 3] - JiSuanGongKuangShuZu[4, 1]) / (Math.Pow(PaiXuShuZu[1, 0], 2) - Math.Pow(PaiXuShuZu[3, 0], 2)) > 0)
|
||||
{
|
||||
QianLiangGe[1] = Math.Pow(24 * (JiSuanGongKuangShuZu[4, 3] - JiSuanGongKuangShuZu[4, 1]) / (Math.Pow(PaiXuShuZu[1, 0], 2) - Math.Pow(PaiXuShuZu[3, 0], 2)) / inPut.MoLiang / inPut.JieMianJi, 0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
QianLiangGe[1] = -1;
|
||||
}
|
||||
//计算Lbd
|
||||
if (PaiXuShuZu[0, 0] == PaiXuShuZu[3, 0])
|
||||
{
|
||||
DiYiGe = -1;
|
||||
}
|
||||
else if ((JiSuanGongKuangShuZu[4, 3] - JiSuanGongKuangShuZu[4, 0]) / (Math.Pow(PaiXuShuZu[0, 0], 2) - Math.Pow(PaiXuShuZu[3, 0], 2)) > 0)
|
||||
{
|
||||
DiYiGe = Math.Pow(24 * (JiSuanGongKuangShuZu[4, 3] - JiSuanGongKuangShuZu[4, 0]) / (Math.Pow(PaiXuShuZu[0, 0], 2) - Math.Pow(PaiXuShuZu[3, 0], 2)) / inPut.MoLiang / inPut.JieMianJi, 0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
DiYiGe = -1;
|
||||
}
|
||||
//根据上述计算值即可判断临界档距有效计算值
|
||||
double[] LinJieDangJuYouXiaoJiSuanZhi = new double[4];
|
||||
//计算第一个临界档距有效计算值
|
||||
if (QianSanGe[0] < 0 || QianLiangGe[0] < 0 || DiYiGe < 0)
|
||||
{
|
||||
LinJieDangJuYouXiaoJiSuanZhi[0] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
double MIN = QianSanGe[0];
|
||||
if (MIN > QianLiangGe[0])
|
||||
{
|
||||
MIN = QianLiangGe[0];
|
||||
}
|
||||
if (MIN > DiYiGe)
|
||||
{
|
||||
MIN = DiYiGe;
|
||||
}
|
||||
LinJieDangJuYouXiaoJiSuanZhi[0] = MIN;
|
||||
}
|
||||
//计算第二个临界档距有效计算值
|
||||
if (QianSanGe[1] < 0 || QianLiangGe[1] < 0)
|
||||
{
|
||||
LinJieDangJuYouXiaoJiSuanZhi[1] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (QianSanGe[1] <= QianLiangGe[1])
|
||||
{
|
||||
LinJieDangJuYouXiaoJiSuanZhi[1] = QianSanGe[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
LinJieDangJuYouXiaoJiSuanZhi[1] = QianLiangGe[1];
|
||||
}
|
||||
}
|
||||
//计算第三个临界档距有效计算值
|
||||
if (QianSanGe[2] < 0)
|
||||
{
|
||||
LinJieDangJuYouXiaoJiSuanZhi[2] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
LinJieDangJuYouXiaoJiSuanZhi[2] = QianSanGe[2];
|
||||
}
|
||||
//定义第四个临界档距有效计算值
|
||||
LinJieDangJuYouXiaoJiSuanZhi[3] = 999999;
|
||||
//完成临界档距有效计算值的计算
|
||||
|
||||
//临界档距表,第一列:临界档距,第二列:控制工况,第三列:气温,第四列:比载,第五列:应力
|
||||
double[,] LinJieDangJuBiao = new double[4, 5];
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
for (int j = 0; j < 5; j++)
|
||||
{
|
||||
LinJieDangJuBiao[i, j] = 0;
|
||||
}
|
||||
}
|
||||
//计算第一行
|
||||
if (LinJieDangJuYouXiaoJiSuanZhi[0] != 0)
|
||||
{
|
||||
LinJieDangJuBiao[0, 0] = LinJieDangJuYouXiaoJiSuanZhi[0];
|
||||
LinJieDangJuBiao[0, 1] = JiSuanGongKuangShuZu[0, 0];
|
||||
LinJieDangJuBiao[0, 2] = JiSuanGongKuangShuZu[1, 0];
|
||||
LinJieDangJuBiao[0, 3] = JiSuanGongKuangShuZu[2, 0];
|
||||
LinJieDangJuBiao[0, 4] = JiSuanGongKuangShuZu[3, 0];
|
||||
}
|
||||
else if (LinJieDangJuYouXiaoJiSuanZhi[1] != 0)
|
||||
{
|
||||
LinJieDangJuBiao[0, 0] = LinJieDangJuYouXiaoJiSuanZhi[1];
|
||||
LinJieDangJuBiao[0, 1] = JiSuanGongKuangShuZu[0, 1];
|
||||
LinJieDangJuBiao[0, 2] = JiSuanGongKuangShuZu[1, 1];
|
||||
LinJieDangJuBiao[0, 3] = JiSuanGongKuangShuZu[2, 1];
|
||||
LinJieDangJuBiao[0, 4] = JiSuanGongKuangShuZu[3, 1];
|
||||
}
|
||||
else if (LinJieDangJuYouXiaoJiSuanZhi[2] != 0)
|
||||
{
|
||||
LinJieDangJuBiao[0, 0] = LinJieDangJuYouXiaoJiSuanZhi[2];
|
||||
LinJieDangJuBiao[0, 1] = JiSuanGongKuangShuZu[0, 2];
|
||||
LinJieDangJuBiao[0, 2] = JiSuanGongKuangShuZu[1, 2];
|
||||
LinJieDangJuBiao[0, 3] = JiSuanGongKuangShuZu[2, 2];
|
||||
LinJieDangJuBiao[0, 4] = JiSuanGongKuangShuZu[3, 2];
|
||||
}
|
||||
else
|
||||
{
|
||||
LinJieDangJuBiao[0, 0] = LinJieDangJuYouXiaoJiSuanZhi[3];
|
||||
LinJieDangJuBiao[0, 1] = JiSuanGongKuangShuZu[0, 3];
|
||||
LinJieDangJuBiao[0, 2] = JiSuanGongKuangShuZu[1, 3];
|
||||
LinJieDangJuBiao[0, 3] = JiSuanGongKuangShuZu[2, 3];
|
||||
LinJieDangJuBiao[0, 4] = JiSuanGongKuangShuZu[3, 3];
|
||||
}
|
||||
//计算第二个临界档距
|
||||
if (LinJieDangJuYouXiaoJiSuanZhi[1] > LinJieDangJuBiao[0, 0])
|
||||
{
|
||||
LinJieDangJuBiao[1, 0] = LinJieDangJuYouXiaoJiSuanZhi[1];
|
||||
}
|
||||
else if (LinJieDangJuYouXiaoJiSuanZhi[2] > LinJieDangJuBiao[0, 0])
|
||||
{
|
||||
LinJieDangJuBiao[1, 0] = LinJieDangJuYouXiaoJiSuanZhi[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
LinJieDangJuBiao[1, 0] = LinJieDangJuYouXiaoJiSuanZhi[3];
|
||||
}
|
||||
//计算第三个临界档距
|
||||
if (LinJieDangJuYouXiaoJiSuanZhi[2] > LinJieDangJuBiao[1, 0])
|
||||
{
|
||||
LinJieDangJuBiao[2, 0] = LinJieDangJuYouXiaoJiSuanZhi[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
LinJieDangJuBiao[2, 0] = LinJieDangJuYouXiaoJiSuanZhi[3];
|
||||
}
|
||||
//计算第二行(除[1,0])
|
||||
if (QianSanGe[0] == LinJieDangJuBiao[0, 0])
|
||||
{
|
||||
LinJieDangJuBiao[1, 1] = JiSuanGongKuangShuZu[0, 1];
|
||||
LinJieDangJuBiao[1, 2] = JiSuanGongKuangShuZu[1, 1];
|
||||
LinJieDangJuBiao[1, 3] = JiSuanGongKuangShuZu[2, 1];
|
||||
LinJieDangJuBiao[1, 4] = JiSuanGongKuangShuZu[3, 1];
|
||||
}
|
||||
else if (QianLiangGe[0] == LinJieDangJuBiao[0, 0])
|
||||
{
|
||||
LinJieDangJuBiao[1, 1] = JiSuanGongKuangShuZu[0, 2];
|
||||
LinJieDangJuBiao[1, 2] = JiSuanGongKuangShuZu[1, 2];
|
||||
LinJieDangJuBiao[1, 3] = JiSuanGongKuangShuZu[2, 2];
|
||||
LinJieDangJuBiao[1, 4] = JiSuanGongKuangShuZu[3, 2];
|
||||
}
|
||||
else if (QianSanGe[1] == LinJieDangJuBiao[0, 0])
|
||||
{
|
||||
LinJieDangJuBiao[1, 1] = JiSuanGongKuangShuZu[0, 2];
|
||||
LinJieDangJuBiao[1, 2] = JiSuanGongKuangShuZu[1, 2];
|
||||
LinJieDangJuBiao[1, 3] = JiSuanGongKuangShuZu[2, 2];
|
||||
LinJieDangJuBiao[1, 4] = JiSuanGongKuangShuZu[3, 2];
|
||||
}
|
||||
else
|
||||
{
|
||||
LinJieDangJuBiao[1, 1] = JiSuanGongKuangShuZu[0, 3];
|
||||
LinJieDangJuBiao[1, 2] = JiSuanGongKuangShuZu[1, 3];
|
||||
LinJieDangJuBiao[1, 3] = JiSuanGongKuangShuZu[2, 3];
|
||||
LinJieDangJuBiao[1, 4] = JiSuanGongKuangShuZu[3, 3];
|
||||
}
|
||||
//计算第三行(除[2,0])
|
||||
if (QianSanGe[1] == LinJieDangJuBiao[1, 0])
|
||||
{
|
||||
LinJieDangJuBiao[2, 1] = JiSuanGongKuangShuZu[0, 2];
|
||||
LinJieDangJuBiao[2, 2] = JiSuanGongKuangShuZu[1, 2];
|
||||
LinJieDangJuBiao[2, 3] = JiSuanGongKuangShuZu[2, 2];
|
||||
LinJieDangJuBiao[2, 4] = JiSuanGongKuangShuZu[3, 2];
|
||||
}
|
||||
else
|
||||
{
|
||||
LinJieDangJuBiao[2, 1] = JiSuanGongKuangShuZu[0, 3];
|
||||
LinJieDangJuBiao[2, 2] = JiSuanGongKuangShuZu[1, 3];
|
||||
LinJieDangJuBiao[2, 3] = JiSuanGongKuangShuZu[2, 3];
|
||||
LinJieDangJuBiao[2, 4] = JiSuanGongKuangShuZu[3, 3];
|
||||
}
|
||||
//计算第四行(除[3,0])
|
||||
LinJieDangJuBiao[3, 1] = JiSuanGongKuangShuZu[0, 3];
|
||||
LinJieDangJuBiao[3, 2] = JiSuanGongKuangShuZu[1, 3];
|
||||
LinJieDangJuBiao[3, 3] = JiSuanGongKuangShuZu[2, 3];
|
||||
LinJieDangJuBiao[3, 4] = JiSuanGongKuangShuZu[3, 3];
|
||||
//完成临界档距表的计算
|
||||
|
||||
//计算控制工况、控制气温、控制比载、控制张力
|
||||
if (inPut.DangJu < LinJieDangJuBiao[0, 0])
|
||||
{
|
||||
KongZhiGongKuang = (int)LinJieDangJuBiao[0, 1];
|
||||
KongZhiQiWen = LinJieDangJuBiao[0, 2];
|
||||
KongZhiBiZai = LinJieDangJuBiao[0, 3];
|
||||
KongZhiYingLi = LinJieDangJuBiao[0, 4];
|
||||
}
|
||||
else if (inPut.DangJu < LinJieDangJuBiao[1, 0])
|
||||
{
|
||||
KongZhiGongKuang = (int)LinJieDangJuBiao[1, 1];
|
||||
KongZhiQiWen = LinJieDangJuBiao[1, 2];
|
||||
KongZhiBiZai = LinJieDangJuBiao[1, 3];
|
||||
KongZhiYingLi = LinJieDangJuBiao[1, 4];
|
||||
}
|
||||
else if (inPut.DangJu < LinJieDangJuBiao[2, 0])
|
||||
{
|
||||
KongZhiGongKuang = (int)LinJieDangJuBiao[2, 1];
|
||||
KongZhiQiWen = LinJieDangJuBiao[2, 2];
|
||||
KongZhiBiZai = LinJieDangJuBiao[2, 3];
|
||||
KongZhiYingLi = LinJieDangJuBiao[2, 4];
|
||||
}
|
||||
else
|
||||
{
|
||||
KongZhiGongKuang = (int)LinJieDangJuBiao[3, 1];
|
||||
KongZhiQiWen = LinJieDangJuBiao[3, 2];
|
||||
KongZhiBiZai = LinJieDangJuBiao[3, 3];
|
||||
KongZhiYingLi = LinJieDangJuBiao[3, 4];
|
||||
//Console.WriteLine("{0}:{1}",t_dangju,MaxFxConditionFlag[t_dangju]);
|
||||
}
|
||||
|
||||
//计算a
|
||||
a = inPut.JieMianJi * Math.Pow(KongZhiBiZai, 2) * Math.Pow(inPut.DangJu, 2) * inPut.MoLiang / (Math.Pow(KongZhiYingLi, 2) * 24) - KongZhiYingLi + XianPengZhang * inPut.JieMianJi * inPut.MoLiang * (inPut.DaiWen - KongZhiQiWen);
|
||||
//计算b
|
||||
b = inPut.JieMianJi * inPut.MoLiang * Math.Pow(DaiHeZai, 2) * Math.Pow(inPut.DangJu, 2) / 24;
|
||||
|
||||
T1 = ZuiDaShiYongZhangLi - (Math.Pow(ZuiDaShiYongZhangLi, 2) * (ZuiDaShiYongZhangLi + a) - b) / (Math.Pow(ZuiDaShiYongZhangLi, 2) * 3 + ZuiDaShiYongZhangLi * a * 2);
|
||||
T2 = T1 - (T1 * T1 * (T1 + a) - b) / (T1 * T1 * 3 + T1 * a * 2);
|
||||
T3 = T2 - (T2 * T2 * (T2 + a) - b) / (T2 * T2 * 3 + T2 * a * 2);
|
||||
T4 = T3 - (T3 * T3 * (T3 + a) - b) / (T3 * T3 * 3 + T3 * a * 2);
|
||||
T5 = T4 - (T4 * T4 * (T4 + a) - b) / (T4 * T4 * 3 + T4 * a * 2);
|
||||
T6 = T5 - (T5 * T5 * (T5 + a) - b) / (T5 * T5 * 3 + T5 * a * 2);
|
||||
ZhangLi = T6;
|
||||
Console.ReadKey();
|
||||
ZhangLi = BaoLiuLiangWei(ZhangLi);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -514,7 +241,7 @@ namespace conductortension
|
|||
public double DaiBing; //待求工况覆冰(mm)
|
||||
public double DaiFeng; //待求工况风速(m/s)
|
||||
public double DaiWen; //待求工况气温(C)
|
||||
public double DangJu; //档距(m)
|
||||
public int DangJu; //档距(m)
|
||||
public double SheJiFengSuGaoDu; //设计基准风速高度
|
||||
public double BaoZhengPoDuanZhangLiXiShu; //保证破断张力取计算拉断力的%,即张力系数
|
||||
public double dxLoad; //线荷载
|
||||
|
|
@ -525,70 +252,7 @@ namespace conductortension
|
|||
// //综合荷载=Math.Pow(Math.Pow(垂直荷载,2)+Math.Pow(水平荷载,2),0.5)
|
||||
double ChuiZhiHeZai = 0; //垂直荷载=自重荷载+9.80665*0.9*PI*待求工况覆冰厚度*(待求工况覆冰厚度+导线直径)/1000
|
||||
double ZiZhongHeZai = 0; //自重荷载=导线单位重量*9.80665/1000/
|
||||
//double ShuiPingHeZai = 0; //水平荷载=0.625*待求工况风速^2*(导线直径+2*待求工况覆冰厚度)*风压不均匀系数*(如果待求工况覆冰厚度>10或者导线直径<17,则为1.2,否则是1.1)
|
||||
// //*(导线平均高度/设计风速基准高度)^(2*地面粗糙度指数)*地面粗糙度系数K/1000
|
||||
// double FengYaBuJunYun = CalFengYaBuJunYun(inPut.DaiFeng); //风压不均匀系数
|
||||
// double a = 0; //地面粗糙度指数a
|
||||
// double K = 0; //系数K
|
||||
// //计算地面粗糙度指数a和系数K
|
||||
// if (inPut.CuCaoDu == 4)
|
||||
// {
|
||||
// a = inPut.CuCaoDu_a;
|
||||
// K = inPut.CuCaoDu_K;
|
||||
// }
|
||||
// else if (CalCuCaoDu(inPut.CuCaoDu , ref a , ref K) == false)
|
||||
// {
|
||||
// return false;
|
||||
// }
|
||||
// if (inPut.SheJiFengSuGaoDu == 0)
|
||||
// {
|
||||
// inPut.SheJiFengSuGaoDu = 10;
|
||||
// }
|
||||
// if (inPut.PingJunGaoDu == 0)
|
||||
// {
|
||||
// inPut.PingJunGaoDu = 20;
|
||||
// }
|
||||
// //计算自重荷载
|
||||
// ZiZhongHeZai = inPut.ZhongLiang * 9.80665 / 1000;
|
||||
// //计算垂直荷载
|
||||
// ChuiZhiHeZai = ZiZhongHeZai + 9.80665 * 0.9 * Math .PI * inPut.DaiBing * (inPut.DaiBing + inPut.WaiJing) / 1000;
|
||||
// //计算水平荷载
|
||||
// double temp; //计算水平荷载中所需进行判断的中间值
|
||||
|
||||
// if (inPut.DaiBing> 0 || inPut.WaiJing <17)
|
||||
// {
|
||||
// temp = 1.2;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// temp = 1.1;
|
||||
// }
|
||||
//// ShuiPingHeZai = 0.625 * Math.Pow(inPut.DaiFeng, 2) * (inPut.WaiJing + 2 * inPut.DaiBing) * FengYaBuJunYun * temp * Math.Pow(inPut.PingJunGaoDu / inPut.SheJiFengSuGaoDu, 2 * a) * K / 1000;
|
||||
// ShuiPingHeZai =1 * Math.Pow(inPut.DaiFeng, 2) * (inPut.WaiJing + 2 * inPut.DaiBing) * FengYaBuJunYun * temp * Math.Pow(inPut.PingJunGaoDu / inPut.SheJiFengSuGaoDu, 2 * a) * K / 1600;
|
||||
|
||||
// HeZai = Math.Pow(Math.Pow(ChuiZhiHeZai, 2) + Math.Pow(ShuiPingHeZai, 2), 0.5);
|
||||
// // HeZai = BaoLiuLiangWei(HeZai);
|
||||
|
||||
double bi = 1;//覆冰增大系数B
|
||||
|
||||
//if (inPut.DaiBing == 0) //'无冰工况
|
||||
// bi = 1;
|
||||
//else if (inPut.DaiBing <= 5)
|
||||
// bi = 1.1;
|
||||
//else if (inPut.DaiBing <= 10)
|
||||
// bi = 1.2;
|
||||
//else if (inPut.DaiBing <= 15)
|
||||
// bi = 1.3;
|
||||
//else if (inPut.DaiBing <= 20)
|
||||
// bi = 1.5;
|
||||
//else if (inPut.DaiBing <= 25)
|
||||
// bi = 1.7;
|
||||
//else if (inPut.DaiBing <= 30)
|
||||
// bi = 1.8;
|
||||
//else if (inPut.DaiBing <= 40)
|
||||
// bi = 1.9;
|
||||
//else if (inPut.DaiBing <= 60)
|
||||
// bi = 2;
|
||||
//导线力学计算不考虑覆冰增大系数 by 杜孟远 20200406
|
||||
double u;//体型系数
|
||||
|
||||
|
|
@ -607,20 +271,20 @@ namespace conductortension
|
|||
|
||||
if (inPut.DaiBing == 0) //'无冰工况
|
||||
{
|
||||
if (inPut.DaiFeng < 20)
|
||||
a = 1;
|
||||
else if (inPut.DaiFeng < 27)
|
||||
a = 0.85;
|
||||
else if (inPut.DaiFeng < 31.5)
|
||||
a = 0.75;
|
||||
else
|
||||
a = 0.7;
|
||||
dx3 = Math.Pow(inPut.DaiFeng, 2) * inPut.WaiJing * u * a * bi / 1600;// '导线无冰风荷载
|
||||
if (inPut.DaiFeng < 20)
|
||||
a = 1;
|
||||
else if (inPut.DaiFeng < 27)
|
||||
a = 0.85;
|
||||
else if (inPut.DaiFeng < 31.5)
|
||||
a = 0.75;
|
||||
else
|
||||
a = 0.7;
|
||||
dx3 = Math.Pow(inPut.DaiFeng, 2) * inPut.WaiJing * u * a * bi / 1600;// '导线无冰风荷载
|
||||
}
|
||||
else
|
||||
{
|
||||
//a = 1; // '有冰工况定义风压不均匀系数a=1
|
||||
dx3 = 1.2*Math.Pow(inPut.DaiFeng, 2) * (inPut.WaiJing + 2 * inPut.DaiBing) * a * bi/ 1600; // '导线有冰风荷载
|
||||
dx3 = 1.2 * Math.Pow(inPut.DaiFeng, 2) * (inPut.WaiJing + 2 * inPut.DaiBing) * a * bi / 1600; // '导线有冰风荷载
|
||||
}
|
||||
|
||||
HeZai = Math.Sqrt(Math.Pow((ZiZhongHeZai + ChuiZhiHeZai), 2) + Math.Pow(dx3, 2));// '存储导线荷载
|
||||
|
|
|
|||
Loading…
Reference in New Issue