Files
MetroGauges-Old/MetroGauges/Model/KineModel.cs
2026-02-23 17:02:55 +08:00

2083 lines
65 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using MetroGauges.General;
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace MetroGauges.Model
{
/// <summary>
/// MetroGaugeFormulae(限界计算公式)
/// </summary>
public class KineModel : DataModel
{
public KineModel() { }
public KineModel(string strPosition, string name, double x, double y)
{
StrPosition = strPosition;
Name = name;
X = x;
Y = y;
}
/// <summary>
/// 所在位置
/// </summary>
public override PositionI Position
{
get
{
if (StrPosition == "受电弓")
{
return PositionI.Pantograph;
}
else if (StrPosition == "受流器")
{
return PositionI.Collector;
}
else if (StrPosition == "车体")
{
return PositionI.Body;
}
else if (StrPosition == "转向架构架")
{
return PositionI.BogieFrame;
}
else if (StrPosition == "簧下")
{
return PositionI.Unsprung;
}
else if (StrPosition == "轮缘")
{
return PositionI.Rim;
}
else if (StrPosition == "踏面")
{
return PositionI.Tread;
}
else
{
return PositionI.INVAIL;
}
}
}
#region Parameters
/// <summary>
/// A型车B型车
/// </summary>
public static NMetro nMetro;
/// <summary>
/// 工况
/// </summary>
public static WorkCondition Condition;
/// <summary>
/// 上受流切除向上:下受流释放反弹量
/// </summary>
public static CollectorStatus collectorStatus;
/// <summary>
/// 车辆限界-整体道床:碎石道床
/// </summary>
public static Ballast m_Bal;
/// <summary>
/// 站台:区间
/// </summary>
public static Location location;
/// <summary>
/// 直线:曲线
/// </summary>
public static CurveType CurType;
/// <summary>
/// 车辆运行环境
/// </summary>88
public static General.Environment Env;
/// <summary>
/// 判断高度阀点数
/// </summary>
public static HeightValve heightValve;
/// <summary>
/// 接触网物理性质
/// </summary>
public static Physics Catenary;
/// <summary>
/// 车轮物理性质
/// </summary>
public static Physics Wheel;
/// <summary>
/// 高架受电弓高度
/// </summary>
public static ElvateHeight Eh;
/// <summary>
/// 销内:销外
/// </summary>
public static Pin pin;
/// <summary>
/// 车辆结构
/// </summary>
public static Structure structure;
/// <summary>
/// 含钢轨内侧磨耗的最大轨距(mm)
/// </summary>
private double l => 1441;
/// <summary>
/// 轮对轮缘最大磨耗量时的最小外侧距(mm)
/// </summary>
private double d => 1397;
/// <summary>
/// 线路中心线横向位差值(mm)
/// </summary>
private double Δ_c
{
get
{
switch (m_Bal)
{
case Ballast.Monolithic:
return 5;
case Ballast.Gravel:
return 25;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架轴箱轴承横向游隙(mm)
/// </summary>
private double Δ_q1 => 1;
/// <summary>
/// 车轮横向弹性变形量mm
/// </summary>
private double Δ_q2
{
get
{
switch (Wheel)
{
case Physics.Flexibility:
return 2;
case Physics.Inflexibility:
return 0;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架一系弹簧横向弹性变形量mm
/// </summary>
private double Δ_q3
{
get
{
switch (location)
{
case Location.Platform:
return 3;
case Location.Region:
return 6;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架中心销径向间隙及磨耗量mm
/// </summary>
private double Δ_w1 => 0;
#region
//public double result => 15;
private static double δ_w2;
/// <summary>
/// 转向架二系弹簧相对名义中心位置的横向弹性变形量mm15~20:20~25
/// </summary>
public double Δ_w2 { get => δ_w2; set { δ_w2 = value; OnPropertyChanged(); } }
//{
// get
// {
//switch (loc)
//{
// case Location.Platform:
// if (result >= 15 && result <= 20)
// {
// return result;
// }
// else
// {
// throw new ArgumentOutOfRangeException("Δ_w2需在15~20mm之间");
// }
// case Location.Region:
// if (result >= 20 && result <= 25)
// {
// return result;
// }
// else
// {
// throw new ArgumentOutOfRangeException("Δ_w2需在20~25mm之间");
// }
// default:
// return double.NaN;
//}
//}
//set
//{
//double result = 15;
//if (loc == Location.Platform)
//{
// if (value > 15 && value < 20)
// {
// result = value;
// }
// else
// {
// throw new ArgumentOutOfRangeException("位于站台时Δ_w2需在15~20mm之间");
// }
//}
//else if (loc == Location.Region)
//{
// if (value > 20 && value < 25)
// {
// result = value;
// }
// else
// {
// throw new ArgumentOutOfRangeException("位于区间时Δ_w2需在20~25mm之间");
// }
//}
//}
//}
private static double δX_Bxgpx;
/// <summary>
/// 悬挂故障引起的车体横向偏移量mm
/// </summary>
public double ΔX_Bxgpx { get => δX_Bxgpx; set { δX_Bxgpx = value; OnPropertyChanged(); } }
private static double δY_Bxgpx1;
/// <summary>
/// 悬挂故障引起的车体竖向向上偏移量mm
/// </summary>
public double ΔY_Bxgpx1 { get => δY_Bxgpx1; set { δY_Bxgpx1 = value; OnPropertyChanged(); } }
private static double δY_Bxgpx2;
/// <summary>
/// 悬挂故障引起的车体竖向向下偏移量mm
/// </summary>
public double ΔY_Bxgpx2 { get => δY_Bxgpx2; set { δY_Bxgpx2 = value; OnPropertyChanged(); } }
/// <summary>
/// 转向架高度阀杆横向间距mm
/// </summary>
private double _b_h;
public double b_h { get => _b_h; set { _b_h = value; OnPropertyChanged(); } }
/// <summary>
/// 计算ΔXa 或ΔXi 时取线路最小平面曲线半径m
/// </summary>
public double R_min;
/// <summary>
/// 设备限界在曲线地段标准加宽量mm
/// </summary>
public double ΔX_bz;
/// <summary>
/// 车体销外AW3 上翘量/AW0 下垂量或车体销内AW0上拱量mm
/// </summary>
public double ΔM_t9
{
get
{
switch (pin)
{
case Pin.Inside:
switch (Condition)
{
case WorkCondition.AW0:
return 8;
case WorkCondition.AW3:
return 0;
default:
return 0;
}
case Pin.Outside:
switch (Condition)
{
case WorkCondition.AW0:
return -5;
case WorkCondition.AW3:
return 0;
default:
return 0;
}
default:
return double.NaN;
}
}
}
private static double _n;
private static double _m;
/// <summary>
/// 转向架计算断面至相邻轴距离
/// </summary>
public double m { get => _m; set { _m = value; OnPropertyChanged(); } }
/// <summary>
/// 车体计算断面至相邻中心销距离
/// </summary>
public double n { get => _n; set { _n = value; OnPropertyChanged(); } }
private static double δX_txgpx;
/// <summary>
/// 悬挂故障引起的构架横向偏移量mm
/// </summary>
public double ΔX_txgpx { get => δX_txgpx; set { δX_txgpx = value; OnPropertyChanged(); } }
private static double δY_txgpx1;
/// <summary>
/// 悬挂故障引起的构架竖向向上偏移量mm
/// </summary>
public double ΔY_txgpx1 { get => δY_txgpx1; set { δY_txgpx1 = value; OnPropertyChanged(); } }
private static double δY_txgpx2;
/// <summary>
/// 悬挂故障引起的构架竖向向下偏移量mm
/// </summary>
public double ΔY_txgpx2 { get => δY_txgpx2; set { δY_txgpx2 = value; OnPropertyChanged(); } }
/// <summary>
/// 曲线加宽校验补偿量mmA2B2受电弓A1B1撤下与接触轨接近部分轮廓线校核时
/// </summary>
private double _ΔX => 0;
#endregion
/// <summary>
/// 轨道横向弹性变形量mm
/// </summary>
private double Δ_e
{
get
{
switch (CurType)
{
case CurveType.Straight:
return 1;
case CurveType.Curve:
return 3;
default:
return double.NaN;
}
}
}
/// <summary>
/// AW3 时载客不对称的计算载客重量kgAW0 时不对称的计算,载客重量为0
/// </summary>
public double m_z
{
get
{
switch (nMetro)
{
case NMetro.A:
return 12600;
case NMetro.B:
return 10200;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架高度阀不感度mm
/// </summary>
private double _f_2 => 5;
/// <summary>
/// 两条钢轨的相对高度误差值mm
/// </summary>
public double Δh_c1
{
get
{
switch (m_Bal)
{
case Ballast.Monolithic:
return 4;
case Ballast.Gravel:
return 10;
default:
return double.NaN;
}
}
}
/// <summary>
/// 两条钢轨的相对高度的弹性变化量mm
/// </summary>
public double Δh_c2
{
get
{
switch (m_Bal)
{
case Ballast.Monolithic:
return 1;
case Ballast.Gravel:
return 2;
default:
return double.NaN;
}
}
}
/// <summary>
/// 车体受风面积m2
/// </summary>
private double A_w
{
get
{
switch (nMetro)
{
case NMetro.A:
return 70;
case NMetro.B:
return 57;
default:
return double.NaN;
}
}
}
/// <summary>
/// 风压 (N/m2)
/// </summary>
private double P_w
{
get
{
switch (location)
{
case Location.Platform:
return 210;
case Location.Region:
return 400;
default:
return double.NaN;
}
}
}
/// <summary>
/// 横向加速度m/s2
/// </summary>
public double a_B
{
get
{
switch (location)
{
case Location.Platform:
switch (CurType)
{
case CurveType.Straight:
return 0.3;
case CurveType.Curve:
return 0.6;
default:
return double.NaN;
}
case Location.Region:
return 1.0;
default:
return double.NaN;
}
}
}
/// <summary>
/// 受电弓相对车体横向晃动量mm
/// </summary>
public double ΔS_hd => 25;
/// <summary>
/// 轮对横向制造误差值mm
/// </summary>
public double Δ_d => 2;
/// <summary>
/// 转向架中心销安装定位误差值mm
/// </summary>
public double ΔM_t1 => 1;
/// <summary>
/// 转向架一系弹簧横向定位误差值mm
/// </summary>
public double ΔM_t2 => 1;
/// <summary>
/// 车体半宽横向制造误差值mm
/// </summary>
public double ΔM_t3 => 5;
/// <summary>
/// 车体表面设备安装误差值mm
/// </summary>
public double ΔM_t4 => 2;
/// <summary>
/// 受电弓横向安装误差值mm
/// </summary>
private double ΔM_t5 => 5;
/// <summary>
/// 车体倾斜量mm
/// </summary>
private double ΔX_Bq => 15;
/// <summary>
/// 车体侧墙高度mm
/// </summary>
private double H_cq
{
get
{
switch (nMetro)
{
case NMetro.A:
return 2500;
case NMetro.B:
return 2300;
default:
return double.NaN;
}
}
}
/// <summary>
/// 车底架边梁底面距轨顶平面高度mm
/// </summary>
private double h_sj
{
get
{
switch (nMetro)
{
case NMetro.A:
return 870;
case NMetro.B:
return 870;
default:
return double.NaN;
}
}
}
/// <summary>
/// 车辆一侧一系弹簧并列数
/// </summary>
private double n_p => 4;
/// <summary>
/// 每一轴箱一系弹簧垂向刚度值 (N/mm)
/// </summary>
private double c_p
{
get
{
switch (nMetro)
{
case NMetro.A:
return 1200;
case NMetro.B:
return 1200;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架一系弹簧横向间距mm
/// </summary>
private double b_p
{
get
{
switch (nMetro)
{
case NMetro.A:
return 1940;
case NMetro.B:
return 1930;
default:
return double.NaN;
}
}
}
/// <summary>
/// 车辆一侧二系弹簧并列数四点高度阀为2三点高度阀为1二点高度阀为0
/// </summary>
private double n_s
{
get
{
switch (heightValve)
{
case HeightValve.Two:
return 0;
case HeightValve.Three:
return 1;
case HeightValve.Four:
return 2;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架一侧二系弹簧垂向刚度值 (N/mm)
/// </summary>
private double c_s
{
get
{
switch (Condition)
{
case WorkCondition.AW0:
return 200;
case WorkCondition.AW3:
switch (nMetro)
{
case NMetro.A:
return 350;
case NMetro.B:
return 400;
default:
return double.NaN;
}
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架二系弹簧横向间距mm
/// </summary>
private double b_s
{
get
{
switch (nMetro)
{
case NMetro.A:
return 1880;
case NMetro.B:
return 1850;
default:
return double.NaN;
}
}
}
/// <summary>
/// 每根抗侧滚扭杆的抗侧滚刚度(N.mm/rad)
/// </summary>
private double K_φn
{
get
{
switch (nMetro)
{
case NMetro.A:
return 2.5 * 1E9;
case NMetro.B:
return 2.5 * 1E9;
default:
return double.NaN;
}
}
}
/// <summary>
/// AW0 或含AW3 载客的车体重量kg
/// </summary>
public double m_B
{
get
{
switch (Condition)
{
case WorkCondition.AW0:
return 23400;
case WorkCondition.AW3:
switch (nMetro)
{
case NMetro.A:
return 48000;
case NMetro.B:
return 42000;
default:
return double.NaN;
}
default:
return double.NaN;
}
}
}
/// <summary>
/// 重力加速度m/s2取9.81m/s2
/// </summary>
private double g => 9.81;
/// <summary>
/// 车体重心距轨顶平面高度mm
/// </summary>
private double h_sc
{
get
{
switch (Condition)
{
case WorkCondition.AW0:
switch (nMetro)
{
case NMetro.A:
return 1600;
case NMetro.B:
return 1450;
default:
return double.NaN;
}
case WorkCondition.AW3:
switch (nMetro)
{
case NMetro.A:
return 1800;
case NMetro.B:
return 1650;
default:
return double.NaN;
}
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架一系弹簧上支承面距轨顶平面高度mm
/// </summary>
private double h_cp
{
get
{
switch (nMetro)
{
case NMetro.A:
return 500;
case NMetro.B:
return 500;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架二系弹簧上支承面距轨顶平面高度mm
/// </summary>
private double h_cs
{
get
{
switch (nMetro)
{
case NMetro.A:
return 890;
case NMetro.B:
return 860;
default:
return double.NaN;
}
}
}
/// <summary>
/// 车体受风面积形心距轨顶平面高度mm
/// </summary>
private double h_sw
{
get
{
switch (nMetro)
{
case NMetro.A:
return 2350;
case NMetro.B:
return 2350;
default:
return double.NaN;
}
}
}
/// <summary>
/// 车辆地板面未能补赏的高度误差值mm
/// </summary>
private double ΔM_t6 => 10;
/// <summary>
/// 车体下部及吊挂物高度尺寸制造安装误差值mm
/// </summary>
private double ΔM_t7 => -10;
/// <summary>
/// 车体上部或上部安装设备的高度尺寸制造安装误差值mm
/// </summary>
private double ΔM_t8 => 12;
/// <summary>
/// 转向架构架横向制造误差值mm
/// </summary>
private double ΔM_t10
{
get
{
switch (nMetro)
{
case NMetro.A:
return 2;
case NMetro.B:
return 2;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架构架向上竖向制造误差值mm
/// </summary>
private double ΔM_t11
{
get
{
switch (nMetro)
{
case NMetro.A:
return 1.5;
case NMetro.B:
return 1.5;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架构架向下竖向制造误差值mm
/// </summary>
private double ΔM_t12
{
get
{
switch (nMetro)
{
case NMetro.A:
return 1.5;
case NMetro.B:
return 1.5;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架簧下部分横向制造误差值mm
/// </summary>
private double ΔM_t13 => 1;
/// <summary>
/// 转向架簧下部分竖向制造误差值mm
/// </summary>
private double ΔM_t14
{
get
{
switch (nMetro)
{
case NMetro.A:
return 1;
case NMetro.B:
return 1;
default:
return double.NaN;
}
}
}
/// <summary>
/// 受流器横向安装误差值及受流器横向尺寸公差值mm
/// </summary>
private double ΔM_t15 => 2;
/// <summary>
/// 受流器竖向安装误差值及受流器竖向尺寸公差值mm
/// </summary>
private double ΔM_t16 => 2;
/// <summary>
/// 转向架一系弹簧竖向动挠度mm
/// </summary>
private double Δf_p
{
get
{
switch (nMetro)
{
case NMetro.A:
return 12;
case NMetro.B:
return 15;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架二系弹簧竖向动挠度mm
/// </summary>
private double Δf_s
{
get
{
switch (nMetro)
{
case NMetro.A:
return 15;
case NMetro.B:
return 20;
default:
return double.NaN;
}
}
}
/// <summary>
/// 线路中心线竖向位差值mm
/// </summary>
private double δ_c
{
get
{
switch (m_Bal)
{
case Ballast.Monolithic:
return 5;
case Ballast.Gravel:
return 10;
default:
return double.NaN;
}
}
}
/// <summary>
/// 轨道竖向弹性变形量mm
/// </summary>
private double δ_e
{
get
{
switch (m_Bal)
{
case Ballast.Monolithic:
return -2;
case Ballast.Gravel:
return -5;
default:
return double.NaN;
}
}
}
/// <summary>
/// 轨道竖向磨耗量mm
/// </summary>
private double δ_w0 => 10.0;
/// <summary>
/// 车轮最大镟削量mm
/// </summary>
private double δ_w1 => -35.0;
/// <summary>
/// 两次镟轮间不可补偿的踏面磨耗量mm
/// </summary>
private double _δ_w1
{
get
{
switch (Position)
{
case PositionI.Body:
return -12;
case PositionI.Rim:
return -8;
default:
return δ_w1;
}
}
}
/// <summary>
/// 转向架一系弹簧空重车挠度变化量
/// </summary>
private double f_1
{
get
{
switch (nMetro)
{
case NMetro.A:
return -25;
case NMetro.B:
return -19;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架一系弹簧垂向永久变形量mm
/// </summary>
private double f_01 => -5.0;
/// <summary>
/// 车轮竖向弹性变形量mm
/// </summary>
private double _f_01
{
get
{
switch (Wheel)
{
case Physics.Flexibility:
return -1;
case Physics.Inflexibility:
return 0;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架二系弹簧垂向永久变形量mm
/// </summary>
private double f_02 => 0;
/// <summary>
/// 转向架二系弹簧空重车挠度变化量mm
/// </summary>
private double f_2 => 5.0;
/// <summary>
/// 车辆定距
/// </summary>
public double a
{
get
{
switch (nMetro)
{
case NMetro.A:
return 15700;
case NMetro.B:
return 12600;
default:
return double.NaN;
}
}
}
/// <summary>
/// 转向架固定轴距 A:2.5 B 2.2,2.3
/// </summary>
public double p
{
get
{
switch (nMetro)
{
case NMetro.A:
return 2.5;
case NMetro.B:
return 2.3;
default:
return double.NaN;
}
}
}
/// <summary>
/// 柔性架空线抬升量或刚性架空线安装误差mm
/// </summary>
private double ΔJ_vd
{
get
{
switch (Catenary)
{
case Physics.Flexibility:
return 25;
case Physics.Inflexibility:
return 10;
default:
return double.NaN;
}
}
}
/// <summary>
/// 架空线磨耗量mm
/// </summary>
private double ΔJ_vw
{
get
{
switch (Catenary)
{
case Physics.Flexibility:
return 3.7;
case Physics.Inflexibility:
return 6;
default:
return double.NaN;
}
}
}
/// <summary>
/// 受电弓炭精板磨耗量mm
/// </summary>
private static double ΔS_vw => 15.0;
/// <summary>
/// 轨道横向弹性变形直线与曲线差值
/// </summary>
private double Δ_de => 0;
/// <summary>
/// 上部受流器切除竖向向上位移量或下部受流工作释放反弹量mm
/// </summary>
private double ΔH_vt
{
get
{
switch (collectorStatus)
{
case CollectorStatus.Upper:
return 55;
case CollectorStatus.Lower:
return 70;
default:
return double.NaN;
}
}
}
/// <summary>
/// 接触轨距走行轨轨顶平面高度公差值mm
/// </summary>
private double ΔC_vt => 6.0;//Δcvt取正公差+6mm
#endregion
/// <summary>
/// 被比较式子
/// </summary>
private double ComparedFormula => 2 * _f_2 / b_h;
/// <summary>
/// 整车一系弹簧侧滚刚度 (N.mm/rad)
/// </summary>
/// <returns></returns>
private double K_φp => 0.5 * n_p * c_p * b_p * b_p;
/// <summary>
/// 整车二系弹簧侧滚刚度 (N.mm/rad)
/// </summary>
/// <returns></returns>
private double K_φs => 0.5 * n_s * c_s * b_s * b_s + 2 * K_φn;
/// <summary>
/// 含一、二系影响的重力倾角附加系数
/// </summary>
/// <returns></returns>
private double S => m_B * g * ((h_sc - h_cp) / K_φp + (h_sc - h_cs) / K_φs);
/// <summary>
/// 只含一系影响的重力倾角附加系数
/// </summary>
private double S_1 => m_B * g * (h_sc - h_cp) / K_φp;
/// <summary>
/// 只含二系影响的重力倾角附加系数
/// </summary>
private double S_2 => m_B * g * (h_sc - h_cs) / K_φs;
#region
/// <summary>
/// 侧风载荷引起侧倾的转换系数
/// </summary>
private double C_h => (Y - h_cp) * (h_sw - h_cp) / K_φp + (Y - h_cs) * (h_sw - h_cs) / K_φs;
/// <summary>
/// 横向加速度载荷引起侧倾的转换系数
/// </summary>
private double _C_h => (Y - h_cp) * (h_sc - h_cp) / K_φp + (Y - h_cs) * (h_sc - h_cs) / K_φs;
/// <summary>
/// 横向制造误差值mm
/// </summary>
private double ΔM()
{
double result;
result = Squa(Δ_d / 2) + Squa(ΔM_t1) + Squa(ΔM_t2) + Squa(ΔM_t3) + Squa(ΔM_t4) + Squa(ΔM_t5) + Math.Sqrt(ΔX_Bq / H_cq * (Y - h_sj) * (Y - h_sj));
return result;
}
#region
/// <summary>
/// 车体侧倾横向偏移量mm
/// </summary>
public double ΔX_Bcp()
{
//Formula
double F1 = 100 * m_z * g * (1 + S_1) / K_φp;
double F2 = 100 * m_z * g * (1 + S_2) / K_φs;
if (F2 > ComparedFormula)
{
F2 = ComparedFormula;
}
double F3 = Squa(Δh_c1 / 1500 * Y * (1 + S));
double F4 = Squa(Δh_c2 / 1500 * Y * (1 + S));
double F5 = Squa(A_w * P_w * (1 + S) * C_h);
double F6 = Squa(m_B * a_B * (1 + S) * _C_h);
double F7 = ΔS_hd;
if (Env == General.Environment.Tunnel)
{
F5 = 0.0;
}
if (Position != PositionI.Pantograph)
{
F7 = 0;
}
return F2 * Math.Abs(Y - h_cs) + F1 * Math.Abs(Y - h_cp) + Math.Sqrt(F3 + F4 + F5 + F6 + Squa(F7));
}
private double δX_BP()
{
double result;
double F1 = Math.Sqrt(Squa((l - d) / 2) + Squa(Δ_c));
double F2 = (Δ_q1 + Δ_q2 + Δ_q3);
double F3 = Δ_w1 + Δ_w2;
result = (F1 + F2 + F3) * (2 * n + a) / a + Δ_e + ΔM() + _ΔX + ΔX_Bxgpx + ΔX_Bcp();
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 横向平移和倾角产生横向偏移方向相同时,车体横向偏移量
/// </summary>
public double ΔX_BP
{
get
{
double result = δX_BP();
if (Position != PositionI.Body)
{
result = double.NaN;
}
return result;
}
set
{
double result = δX_BP();
if (Position != PositionI.Body)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double δY_BPu()
{
double result;
double F1 = Squa(ΔM_t6) + Squa(ΔM_t8) + Squa(ΔX_Bq / H_cq * X);
double F2 = Squa(Δf_s * (2 * n + a) / a) + Squa(Δf_p * (2 * n + a) / a) + Squa(δ_c);
double F3 = 100 * m_z * g * (1 + S_2) / K_φs;
if (F3 > ComparedFormula)
{
F3 = ComparedFormula;
}
double F4 = 100 * m_z * g * (1 + S_1) / K_φp;
double F5 = Squa(Δh_c1 / 1500 * (1 + S) * X) + Squa(Δh_c2 / 1500 * (1 + S) * X);
double F6 = Squa(A_w * P_w * (1 + S) * X * ((h_sw - h_cp) / K_φp + (h_sw - h_cs) / K_φs));
double F7 = Squa(m_B * a_B * (1 + S) * X * ((h_sc - h_cp) / K_φp + (h_sc - h_cs) / K_φs));
if (Env == General.Environment.Tunnel)
{
F6 = 0.0;
}
result = ΔM_t9 + Math.Sqrt(F1) + Math.Sqrt(F2) - (X * F3 + X * F4 + ΔY_Bxgpx1 + Math.Sqrt(F5 + F6 + F7));
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 横向平移和倾角产生横向偏移方向相同时,车体竖向向上偏移量
/// </summary>
public double ΔY_BPu
{
get
{
double result = δY_BPu();
if (Position != PositionI.Body)
{
result = double.NaN;
}
return result;
}
set
{
double result = δY_BPu();
if (Position != PositionI.Body)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
/// <summary>
/// 横向平移和倾角产生横向偏移方向相同时,车体侧倾竖向偏移量
/// </summary>
/// <param name="Y"></param>
/// <returns></returns>
private double ΔY_Bcpd()
{
double result;
double F1 = 100 * m_z * g * (1 + S_2) / K_φs;
if (F1 > ComparedFormula)
{
F1 = ComparedFormula;
}
double F2 = 100 * m_z * g * (1 + S_1) / K_φp;
double F3 = Squa(Δf_s * (2 * n + a) / a) + Squa(Δf_p * (2 * n + a) / a) + Squa(δ_c);
double F4 = Squa(Δh_c1 / 1500 * (1 + S) * X) + Squa(Δh_c2 / 1500 * (1 + S) * X);
double F5 = Squa(A_w * P_w * (1 + S) * X * ((h_sw - h_cp) / K_φp + (h_sw - h_cs) / K_φs));
double F6 = Squa(m_B * a_B * (1 + S) * X * ((h_sc - h_cp) / K_φp + (h_sc - h_cs) / K_φs));
if (Env == General.Environment.Tunnel)
{
F5 = 0;
}
result = F1 * X + F2 * X + Math.Sqrt(F3 + F4 + F5 + F6);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
private double δY_BPd()
{
double result;
double F1 = Squa(ΔM_t6) + Squa(ΔM_t7) + Squa(ΔX_Bq / H_cq * X);
var value = f_01 + _f_01 + f_1 + f_02 + f_2 + δ_e + δ_w0 + _δ_w1;
result = value + Math.Sqrt(F1) + ΔY_Bxgpx2 + ΔY_Bcpd();
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 横向平移和倾角产生横向偏移方向相同时,车体竖向向下偏移量
/// </summary>
public double ΔY_BPd
{
get
{
double result = δY_BPd();
if (Position != PositionI.Body)
{
result = double.NaN;
}
return result;
}
set
{
double result = δY_BPd();
if (Position != PositionI.Body)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
#endregion
#region
private double _δX_BP()
{
double result;
double F1 = Math.Sqrt(Squa(l - d) / 2 + Squa(Δ_c));
double F2 = (Δ_q1 + Δ_q2 + Δ_q3);
double F3 = (Δ_w1 + Δ_w2);
result = (F1 + F2 + F3) * (2 * n + a) / a + Δ_e + ΔM() + _ΔX - ΔX_Bxgpx - ΔX_Bcp();
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 横向平移和倾角产生横向偏移方向相反时,车体横向偏移量
/// </summary>
public double _ΔX_BP
{
get
{
double result = _δX_BP();
if (Position != PositionI.Body)
{
result = double.NaN;
}
return result;
}
set
{
double result = _δX_BP();
if (Position != PositionI.Body)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
///// <summary>
///// 横向平移和倾角产生横向偏移方向相反时,车体侧倾竖向偏移量
///// </summary>
///// <param name="X"></param>
///// <returns></returns>
//private double _ΔY_Bcpd()
//{
// double result;
// double F1 = 100 * m_z * g * (1 + S_2) / K_φs;
// double F2 = 100 * m_z * g * (1 + S_1) / K_φp;
// double F3 = Squa(Δf_s * (2 * n + a) / a) + Squa(Δf_p * (2 * n + a) / a) + Squa(δ_c);
// double F4 = Squa(Δh_c1 / 1500 * (1 + S) * X) + Squa(Δh_c2 / 1500 * (1 + S) * X);
// double F5 = Squa(A_w * P_w * (1 + S) * X * ((h_sw - h_cp) / K_φp + (h_sw - h_cs) / K_φs));
// double F6 = Squa(m_B * a_B * (1 + S) * X * ((h_sc - h_cp) / K_φp + (h_sc - h_cs) / K_φs));
// if (F1 > ComparedFormula)
// {
// F1 = ComparedFormula;
// }
// if (Env == General.Environment.Tunnel)
// {
// F5 = 0;
// }
// result = -F2 * X - F1 * X + F3 - Math.Sqrt(F4 + F5 + F6);
// return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
//}
private double _δY_BPu()
{
double result;
double F1 = Squa(ΔM_t6) + Squa(ΔM_t8) + Squa(ΔX_Bq / H_cq * X);
double F2 = Squa(Δf_s * (2 * n + a) / a) + Squa(Δf_p * (2 * n + a) / a) + Squa(δ_c);
double F3 = 100 * m_z * g * (1 + S_2) / K_φs;
if (F3 > ComparedFormula)
{
F3 = ComparedFormula;
}
double F4 = 100 * m_z * g * (1 + S_1) / K_φp;
double F5 = Squa(Δh_c1 / 1500 * (1 + S) * X) + Squa(Δh_c2 / 1500 * (1 + S) * X);
double F6 = Squa(A_w * P_w * (1 + S) * X * ((h_sw - h_cp) / K_φp + (h_sw - h_cs) / K_φs));
double F7 = Squa(m_B * a_B * (1 + S) * X * ((h_sc - h_cp) / K_φp + (h_sc - h_cs) / K_φs));
if (Env == General.Environment.Tunnel)
{
F6 = 0.0;
}
result = ΔM_t9 + Math.Sqrt(F1) + Math.Sqrt(F2) + X * F3 + X * F4 + ΔY_Bxgpx1 + Math.Sqrt(F5 + F6 + F7);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 横向平移和倾角产生横向偏移方向相反时,车体竖向向上偏移量
/// </summary>
public double _ΔY_BPu
{
get
{
double result = _δY_BPu();
if (Position != PositionI.Body)
{
result = double.NaN;
}
return result;
}
set
{
double result = _δY_BPu();
if (Position != PositionI.Body)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double _δY_BPd()
{
double result;
double F1 = Squa(ΔM_t6) + Squa(ΔM_t7) + Squa(ΔX_Bq / H_cq * X);
double F2 = Squa(Δf_s * (2 * n + a) / a) + Squa(Δf_p * (2 * n + a) / a) + Squa(δ_c);
double F3 = 100 * m_z * g * (1 + S_2) / K_φs;
if (F3 > ComparedFormula)
{
F3 = ComparedFormula;
}
double F4 = 100 * m_z * g * (1 + S_1) / K_φp;
double F5 = Squa(Δh_c1 / 1500 * (1 + S) * X) + Squa(Δh_c2 / 1500 * (1 + S) * X);
double F6 = Squa(A_w * P_w * (1 + S) * X * ((h_sw - h_cp) / K_φp + (h_sw - h_cs) / K_φs));
double F7 = Squa(m_B * a_B * (1 + S) * X * ((h_sc - h_cp) / K_φp + (h_sc - h_cs) / K_φs));
result = f_01 + _f_01 + f_1 + f_02 + f_2 + δ_e + δ_w0 + _δ_w1 + Math.Sqrt(F1) + Math.Sqrt(F2) - (X * F3 + X * F4 + ΔY_Bxgpx2 + Math.Sqrt(F5 + F6 + F7));
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 横向平移和倾角产生横向偏移方向相反时,车体竖向向下偏移量
/// </summary>
public double _ΔY_BPd
{
get
{
double result = _δY_BPd();
if (Position != PositionI.Body)
{
result = double.NaN;
}
return result;
}
set
{
double result = _δY_BPd();
if (Position != PositionI.Body)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
#endregion
private double δX_t()
{
double result;
double F1 = Math.Sqrt(Squa(l - d) / 2 + Squa(Δ_c));
double F2 = (Δ_q1 + Δ_q2 + Δ_q3);
double F3 = Squa(ΔM_t10) + Squa(Δ_d / 2);
double F4 = 100 * m_z * g * (1 + S_1) / K_φp;
double F5 = Squa(Δh_c1 / 1500 * Y * (1 + S_1));
double F6 = Squa(Δh_c2 / 1500 * Y * (1 + S_1));
double F7 = Squa(A_w * P_w * (1 + S_1) * (Y - h_cp) * (h_sw - h_cp) / K_φp);
double F8 = Squa(m_B * a_B * (1 + S_1) * (Y - h_cp) * (h_sc - h_cp) / K_φp);
if (Position == PositionI.Collector)
{
F3 = Squa(ΔM_t15) + Squa(Δ_d / 2);
}
if (Env == General.Environment.Tunnel)
{
F7 = 0.0;
}
result = (F1 + F2) * ((2 * m) + p) / p + Δ_e + Math.Sqrt(F3) + F4 * Math.Abs(Y - h_cp) + ΔX_txgpx + _ΔX + Math.Sqrt(F5 + F6 + F7 + F8);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 横向平移和倾角产生横向偏移方向相同,构架横向偏移量
/// </summary>
public double ΔX_t
{
get
{
double result = δX_t();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
return result;
}
set
{
double result = δX_t();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double _δY_tu()
{
double result;
double F1 = ΔM_t11;
double F2 = Squa(Δf_p * ((2 * m + p) / p)) + Squa(δ_c);
double F3 = 100 * m_z * g * (1 + S_1) / K_φp;
double F4 = Squa(((Δh_c1 / 1500) * (1 + S_1)) * X);
double F5 = Squa(((Δh_c2 / 1500) * (1 + S_1)) * X);
double F6 = Squa(A_w * P_w * (1 + S_1) * X * (h_sw - h_cp) / K_φp);
double F7 = Squa(m_B * a_B * (1 + S_1) * X * (h_sc - h_cp) / K_φp);
if (Position == PositionI.Collector)
{
F1 = Squa(ΔM_t16);
}
if (Env == General.Environment.Tunnel)
{
F6 = 0.0;
}
result = F1 + F3 * X + _ΔX + ΔY_txgpx1 + Math.Sqrt(F2 + F4 + F5 + F6 + F7);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 竖向平移和倾角产生竖向偏移方向相反,构架竖向向上偏移量
/// </summary>
public double _ΔY_tu
{
get
{
double result = _δY_tu();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
return result;
}
set
{
double result = _δY_tu();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double δY_td()
{
double result;
double F1 = ΔM_t12;
double F2 = 100 * m_z * g * (1 + S_1) / K_φp;
double F3 = Squa(Δf_p * ((2 * m + p) / p)) + Squa(δ_c);
double F4 = Squa(((Δh_c1 / 1500) * (1 + S_1)) * X);
double F5 = Squa(((Δh_c2 / 1500) * (1 + S_1)) * X);
double F6 = Squa((A_w * P_w) * (1 + S_1) * X * (h_sw - h_cp) / K_φp);
double F7 = Squa(m_B * a_B * (1 + S_1) * X * (h_sc - h_cp) / K_φp);
if (Position == PositionI.Collector)
{
F1 = ΔM_t16;
}
if (Env == General.Environment.Tunnel)
{
F6 = 0.0;
}
result = _f_01 + δ_w1 + f_01 + f_1 + δ_e + δ_w0 + F1 + F2 * X + _ΔX + ΔY_txgpx2 + Math.Sqrt(F3 + F4 + F5 + F6 + F7);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 竖向平移和倾角产生竖向偏移方向相同,构架竖向向下偏移量
/// </summary>
public double ΔY_td
{
get
{
double result = δY_td();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
return result;
}
set
{
double result = δY_td();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double _δX_t()
{
double result;
double F1 = Math.Sqrt(Squa(l - d) / 2 + Squa(Δ_c));
double F2 = (Δ_q1 + Δ_q2 + Δ_q3);
double F3 = Squa(ΔM_t10) + Squa(Δ_d / 2);
double F4 = 100 * m_z * g * (1 + S_1) / K_φp;
double F5 = Squa(Δh_c1 / 1500 * Y * (1 + S_1));
double F6 = Squa(Δh_c2 / 1500 * Y * (1 + S_1));
double F7 = Squa(A_w * P_w * (1 + S_1) * (Y - h_cp) * (h_sw - h_cp) / K_φp);
double F8 = Squa(m_B * a_B * (1 + S_1) * (Y - h_cp) * (h_sc - h_cp) / K_φp);
if (Position == PositionI.Collector)
{
F3 = Squa(ΔM_t15) + Squa(Δ_d / 2);
}
if (Env == General.Environment.Tunnel)
{
F7 = 0.0;
}
result = (F1 + F2) * (2 * m + p) / p + Δ_e + Math.Sqrt(F3) + F4 * Math.Abs(Y - h_cp) - ΔX_txgpx + _ΔX - Math.Sqrt(F5 + F6 + F7 + F8);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 横向平移和倾角产生横向偏移方向相反,水平偏移量
/// </summary>
public double _ΔX_t
{
get
{
double result = _δX_t();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
return result;
}
set
{
double result = _δX_t();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double δY_tu()
{
double result;
double F1 = ΔM_t11;
double F2 = Squa(Δf_p * ((2 * m + p) / p)) + Squa(δ_c);
double F3 = 100 * m_z * g * (1 + S_1) / K_φp;
double F4 = Squa(((Δh_c1 / 1500) * (1 + S_1)) * X);
double F5 = Squa(((Δh_c2 / 1500) * (1 + S_1)) * X);
double F6 = Squa(A_w * P_w * (1 + S_1) * X * (h_sw - h_cp) / K_φp);
double F7 = Squa(m_B * a_B * (1 + S_1) * X * (h_sc - h_cp) / K_φp);
if (Position == PositionI.Collector)
{
F1 = Squa(ΔM_t16);
}
if (Env == General.Environment.Tunnel)
{
F6 = 0.0;
}
result = F1 + Math.Sqrt(F2) - (F3 * X) + _ΔX - ΔY_txgpx1 - Math.Sqrt(F4 + F5 + F6 + F7);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 竖向平移和倾角产生竖向偏移方向相同,构架竖向向上偏移量
/// </summary>
public double ΔY_tu
{
get
{
double result = δY_tu();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
return result;
}
set
{
double result = δY_tu();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double _δY_td()
{
double result;
double F1 = ΔM_t12;
double F2 = 100 * m_z * g * (1 + S_1) / K_φp;
double F3 = Squa(Δf_p * ((2 * m + p) / p)) + Squa(δ_c);
double F4 = Squa(((Δh_c1 / 1500) * (1 + S_1)) * X);
double F5 = Squa(((Δh_c2 / 1500) * (1 + S_1)) * X);
double F6 = Squa((A_w * P_w) * (1 + S_1) * X * (h_sw - h_cp) / K_φp);
double F7 = Squa(m_B * a_B * (1 + S_1) * X * (h_sc - h_cp) / K_φp);
if (Position == PositionI.Collector)
{
F1 = ΔM_t16;
}
if (Env == General.Environment.Tunnel)
{
F6 = 0.0;
}
result = _f_01 + δ_w1 + f_01 + f_1 + δ_e + δ_w0 + F1 + _ΔX + Math.Sqrt(F3) - ΔY_txgpx2 - F2 * X - Math.Sqrt(F4 + F5 + F6 + F7);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 竖向平移和倾角产生竖向偏移方向相反,构架竖向向下偏移量
/// </summary>
public double _ΔY_td
{
get
{
double result = _δY_td();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
return result;
}
set
{
double result = _δY_td();
if (Position != PositionI.BogieFrame)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
#endregion
private double δX_w()
{
double result;
double F1 = Squa((l - d) / 2) + Squa(Δ_c);
double F2 = Squa(ΔM_t13) + Squa(Δ_d / 2);
double F3 = Squa(Δh_c1) + Squa(Δh_c2);
result = F1 + Δ_e + Math.Sqrt(F2) + Y / 1500 * Math.Sqrt(F3);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 簧下部分横向偏移量
/// </summary>
public double ΔX_w
{
get
{
double result = δX_w();
if (Position != PositionI.Unsprung)
{
result = double.NaN;
}
return result;
}
set
{
double result = δX_w();
if (Position != PositionI.Unsprung)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double δY_wd()
{
double result;
double F1 = Squa(δ_c) + Squa(Δh_c1 / 1500 * X) + Squa(Δh_c2 / 1500 * X);
result = _f_01 + δ_w1 + δ_e + δ_w0 + ΔM_t14 + Math.Sqrt(F1);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 簧下部分竖向偏移量
/// </summary>
public double ΔY_wd
{
get
{
double result = δY_wd();
if (Position != PositionI.Unsprung)
{
result = double.NaN;
}
return result;
}
set
{
double result = δY_wd();
if (Position != PositionI.Unsprung)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double δY_f()
{
double result;
double F1 = Squa(δ_c) + Squa(Δh_c1 / 2) + Squa(Δh_c2 / 2);
result = _δ_w1 + δ_e + δ_w0 + Math.Sqrt(F1);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 轮缘部分竖向偏移量
/// </summary>
public double ΔY_f
{
get
{
double result = δY_f();
if (Position != PositionI.Rim)
{
result = double.NaN;
}
return result;
}
set
{
double result = δY_f();
if (Position != PositionI.Rim)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double δY_m()
{
double result;
double F1 = Squa(δ_c) + Squa(Δh_c1 / 2) + Squa(Δh_c2 / 2);
result = δ_e + δ_w0 + Math.Sqrt(F1);
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 踏面部分竖向偏移量
/// </summary>
public double ΔY_m
{
get
{
double result = δY_m();
if (Position != PositionI.Tread)
{
result = double.NaN;
}
return result;
}
set
{
double result = δY_m();
if (Position != PositionI.Tread)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double δX_gu()
{
double result;
double F1 = Math.Sqrt(Squa(l - d) / 2 + Squa(Δ_c));
double F2 = (Δ_q1 + Δ_q2 + Δ_q3);
double F3 = (Δ_w1 + Δ_w2);
result = (F1 + F2 + F3) + Δ_e + ΔM() + ΔX_Bxgpx + ΔX_Bcp();
return Math.Round(result, decimals, MidpointRounding.AwayFromZero);
}
/// <summary>
/// 受电弓横向偏移量
/// </summary>
public double ΔX_gu
{
get
{
double result = δX_gu();
if (Position != PositionI.Pantograph)
{
result = double.NaN;
}
return result;
}
set
{
double result = δX_gu();
if (Position != PositionI.Pantograph)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
private double δY_gu()
{
return ΔJ_vd + ΔJ_vw + ΔS_vw;
}
/// <summary>
/// 受电弓竖向向上偏移量mm柔性接触网和刚性接触网的ΔJvd 25,10 ΔJvw 3.7,6
/// </summary>
public double ΔY_gu
{
get
{
double result = δY_gu();
if (Position != PositionI.Pantograph)
{
result = double.NaN;
}
return result;
}
set
{
double result = δY_gu();
if (Position != PositionI.Pantograph)
{
result = double.NaN;
}
result = value;
OnPropertyChanged();
}
}
/// <summary>
/// 受流器横向偏移量mm
/// </summary>
/// <param name="Y"></param>
/// <returns></returns>
private double δX_sd()
{
return δX_t() + Δ_de;
}
/// <summary>
/// 上部受流工作状态时受流器根部转轴点的竖向向上偏移量mm
/// </summary>
private double δY_su1()
{
return δY_tu() + ΔM_t16;
}
/// <summary>
/// 上部受流工作状态时受流器与接触轨接触点的竖向向上偏移量mm
/// </summary>
private double δY_su2 => ΔC_vt;
/// <summary>
/// 上部受流工作释放状态的竖向向上偏移量mm
/// </summary>
private double δY_su3()
{
return δY_tu() + ΔH_vt + ΔM_t16;
}
/// <summary>
/// 上部受流工作状态时受流器根部转轴的竖向向下偏移量mm
/// </summary>
/// <returns></returns>
private double δY_sd1()
{
return δY_td() + ΔM_t16;
}
/// <summary>
/// 上部受流工作状态时受流器与接触轨接触点的竖向向下偏移量mm
/// </summary>
private double δY_sd2 => ΔC_vt;
/// <summary>
/// 上部受流工作释放状态的竖向向下偏移量mm
/// </summary>
private double δY_sd3()
{
return δY_td() + ΔM_t16;
}
/// <summary>
/// 下部受流工作状态的竖向向上偏移量mm
/// </summary>
private double δY_su4 => ΔC_vt;
/// <summary>
/// 下部受流工作状态的竖向向下偏移量mm
/// </summary>
private double δY_su5()
{
return δY_tu() + ΔH_vt + ΔM_t16;
}
/// <summary>
/// 下部受流工作状态的竖向向下偏移量mm)
/// </summary>
private double δY_sd4 => ΔC_vt;
/// <summary>
/// 下部受流工作释放状态的竖向向下偏移量mm
/// </summary>
public double δY_sd5()
{
return δY_td() + ΔM_t16;
}
public static KineModel Copy(KineModel kine)
{
return new KineModel(kine.StrPosition, kine.Name, kine.X, kine.Y);
}
}
}