using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//using JHFX = Package_turnout_analysis_geo; //几何分析 道岔分析
//using JHTQ = Package_turnout_identify_geo; //几何分析 道岔提取
using LGL = Package_turnout_analysis_wrf;//轮轨力 分析
//using LGLTQ = Package_turnout_identify_wrf;//轮轨力 提取
using JH = Package_turnout_analysis;
using MathWorks.MATLAB.NET.Arrays;
using JHWX = Package_geo_change_analysis_for_turnout;//微小算法
namespace ZDHscript
{
///
/// 算法类
///
public class AnalysisAlgorithmcs
{
///
/// 几何新算法
///
/// geo路径
/// geo文件名
/// 是否使用修正后里程,1为使用修正后里程,0为是用geo文件自带里程
/// 线路名英文缩写
/// 线路最小里程
/// 线路最大里程
/// 道岔台账,n*3维double型数组,第一列为正线道岔尖轨尖里程,第二列为辙叉号,第三列为道岔全长
/// 道岔台账信息,n*3维数组
/// 道岔尖心轨间距信息表,n*3维数组,分为高速和普速
/// 检测车名
public static MWArray[] JHFX(string fname_dir0, string fname0, int mile_id, string linename, double mile_min, double mile_max, double[] tz_curv, double[] tz_turnout, double[] distance_table, string carname)
{
JH.Class1 jhfx = new JH.Class1();
MWNumericArray tz_curv_switch = new MWNumericArray(tz_curv.Length / 6, 6, tz_curv);
MWNumericArray tz_turnout_switch = new MWNumericArray(tz_turnout.Length / 3, 3, tz_turnout);
MWNumericArray distance_table_switch = new MWNumericArray(distance_table.Length / 3, 3, distance_table);
MWArray[] agrsIn = new MWArray[] { fname_dir0, fname0, linename, tz_curv_switch, tz_turnout_switch, mile_min, mile_max, mile_id, carname, distance_table_switch };
MWArray[] agrsOut = new MWArray[12];
jhfx.sub_main_turnout_analysis(12, ref agrsOut, agrsIn);
return agrsOut;
}
///
/// 轮轨力新算法
///
/// bny路径
/// bny文件名
/// 线路名英文缩写
/// 线路最小里程
/// 线路最大里程
/// 道岔台账,n*3维double型数组,第一列为正线道岔尖轨尖里程,第二列为辙叉号,第三列为道岔全长
/// 道岔台账信息,n*3维数组
/// 道岔尖心轨间距信息表,n*3维数组,分为高速和普速
/// 检测车名
public static MWArray[] LGLFX(string fname_dir0, string fname0, string linename, double mile_min, double mile_max, double[] tz_curv, double[] tz_turnout, double[] distance_table, string carname)
{
LGL.Class1 lgl = new LGL.Class1();
MWNumericArray tz_curv_switch = new MWNumericArray(tz_curv.Length / 6, 6, tz_curv);
MWNumericArray tz_turnout_switch = new MWNumericArray(tz_turnout.Length / 3, 3, tz_turnout);
MWNumericArray distance_table_switch = new MWNumericArray(distance_table.Length / 3, 3, distance_table);
MWArray[] agrsIn = new MWArray[] { fname_dir0, fname0, linename, tz_curv_switch, tz_turnout_switch, mile_min, mile_max, carname, distance_table_switch };
MWArray[] agrsOut = new MWArray[8];
lgl.sub_main_turnout_analysis_wrf(8, ref agrsOut, agrsIn);
return agrsOut;
}
///
/// 微小算法
///
public static MWArray[] WXSF(string[] date, string[] car, double[] mile, double[] wave_data, double[] id_wave_all, double[] jx_loc_all, string[] line, double[] velo, string[] zc)
{
JHWX.Class1 wx = new JHWX.Class1();
MWCharArray date_ = new MWCharArray(date);
MWCharArray car_ = new MWCharArray(car);
MWNumericArray mile_ = new MWNumericArray(mile.Length, 1, mile);
MWNumericArray wave_data_ = new MWNumericArray(wave_data.Length / 18, 18, wave_data);
MWNumericArray id_wave_all_ = new MWNumericArray(id_wave_all.Length / 2, 2, id_wave_all);
MWNumericArray jx_loc_all_ = new MWNumericArray(jx_loc_all.Length / 2, 2, jx_loc_all);
MWCharArray line_ = new MWCharArray(line);
MWNumericArray velo_ = new MWNumericArray(velo.Length, 1, velo);
MWCharArray zc_ = new MWCharArray(zc);
MWArray[] agrsIn = new MWArray[] { date_, car_, mile_, wave_data_, id_wave_all_, jx_loc_all_, line_, velo_, zc_ };
MWArray[] agrsOut = new MWArray[11];
wx.sub_main_geometry_small_change(11, ref agrsOut, agrsIn);
return agrsOut;
}
}
}