From 558cd523a935fc27a4d69ac63db0115d96460a7c Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期四, 08 八月 2024 17:28:32 +0800 Subject: [PATCH] 项目整理 --- Hydro/Yw.EPAnet.Core/EpanetBase2.2.cs | 320 +++++++++++++ Hydro/Yw.EPAnet.Core/EPAmodel.cs | 256 ++++++++++ Hydro/Yw.EPAnet.Core/Yw.EPAnet.Core.csproj | 9 Hydro/Yw.EPAnet.Core/HydraulicCore.cs | 796 +++++++++++++++++++++++++++++++++ HStation.Xhs.Core.sln | 42 Hydro/Yw.EPAnet.Calcu.Core/Yw.EPAnet.Calcu.Core.csproj | 3 6 files changed, 1,405 insertions(+), 21 deletions(-) diff --git a/HStation.Xhs.Core.sln b/HStation.Xhs.Core.sln index e64d1a0..61088ec 100644 --- a/HStation.Xhs.Core.sln +++ b/HStation.Xhs.Core.sln @@ -99,13 +99,13 @@ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Yw.EPAnet.Calcu.Core", "Hydro\Yw.EPAnet.Calcu.Core\Yw.EPAnet.Calcu.Core.csproj", "{0BA4B37E-D5D2-41B1-890E-4436E496DC18}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Yw.EPAcore.Test", "Hydro\Yw.EPAcore.Test\Yw.EPAcore.Test.csproj", "{EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Yw.WinFrmUI.Hydro.Core", "WinFrmUI\Yw.WinFrmUI.Hydro.Core\Yw.WinFrmUI.Hydro.Core.csproj", "{BBC8C860-98B1-45B1-B41D-518DCB402C17}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Yw.Hydro.Core", "Hydro\Yw.Hydro.Core\Yw.Hydro.Core.csproj", "{F6068234-6BFC-48B1-9FAB-2892C097C430}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Yw.Hydraulic.Core", "Hydro\Yw.Hydraulic.Core\Yw.Hydraulic.Core.vcxproj", "{D2B8356F-0EA6-4167-8119-57B3E49A55CF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Yw.EPAnet.Core", "Hydro\Yw.EPAnet.Core\Yw.EPAnet.Core.csproj", "{D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -804,24 +804,6 @@ {0BA4B37E-D5D2-41B1-890E-4436E496DC18}.Release|x64.Build.0 = Release|Any CPU {0BA4B37E-D5D2-41B1-890E-4436E496DC18}.Release|x86.ActiveCfg = Release|Any CPU {0BA4B37E-D5D2-41B1-890E-4436E496DC18}.Release|x86.Build.0 = Release|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Debug|x64.ActiveCfg = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Debug|x64.Build.0 = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Debug|x86.ActiveCfg = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Debug|x86.Build.0 = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.dll_test|Any CPU.Build.0 = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.dll_test|x64.ActiveCfg = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.dll_test|x64.Build.0 = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.dll_test|x86.ActiveCfg = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.dll_test|x86.Build.0 = Debug|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Release|Any CPU.Build.0 = Release|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Release|x64.ActiveCfg = Release|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Release|x64.Build.0 = Release|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Release|x86.ActiveCfg = Release|Any CPU - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653}.Release|x86.Build.0 = Release|Any CPU {BBC8C860-98B1-45B1-B41D-518DCB402C17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BBC8C860-98B1-45B1-B41D-518DCB402C17}.Debug|Any CPU.Build.0 = Debug|Any CPU {BBC8C860-98B1-45B1-B41D-518DCB402C17}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -876,6 +858,24 @@ {D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Release|x64.Build.0 = Release|x64 {D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Release|x86.ActiveCfg = Release|Win32 {D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Release|x86.Build.0 = Release|Win32 + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Debug|x64.ActiveCfg = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Debug|x64.Build.0 = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Debug|x86.ActiveCfg = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Debug|x86.Build.0 = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.dll_test|Any CPU.Build.0 = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.dll_test|x64.ActiveCfg = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.dll_test|x64.Build.0 = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.dll_test|x86.ActiveCfg = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.dll_test|x86.Build.0 = Debug|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Release|Any CPU.Build.0 = Release|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Release|x64.ActiveCfg = Release|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Release|x64.Build.0 = Release|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Release|x86.ActiveCfg = Release|Any CPU + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -919,10 +919,10 @@ {1808ADF5-93D9-4F62-B60C-0E5993FC4350} = {CF8E0A6C-9342-430D-BD10-6E1B5DE18571} {42261EEA-8BA7-4096-92B1-E809BDD72A82} = {4F0A7BA1-6ED6-4F4F-A3B4-B9B3A133D869} {0BA4B37E-D5D2-41B1-890E-4436E496DC18} = {9F4F9ECE-9C4C-4796-91A1-69805F823EA5} - {EB7A36E1-7DAB-4562-BF44-D7F4D05D1653} = {9F4F9ECE-9C4C-4796-91A1-69805F823EA5} {BBC8C860-98B1-45B1-B41D-518DCB402C17} = {4F0A7BA1-6ED6-4F4F-A3B4-B9B3A133D869} {F6068234-6BFC-48B1-9FAB-2892C097C430} = {9F4F9ECE-9C4C-4796-91A1-69805F823EA5} {D2B8356F-0EA6-4167-8119-57B3E49A55CF} = {9F4F9ECE-9C4C-4796-91A1-69805F823EA5} + {D6F58BEC-660B-4EFF-9A8F-D70571F6EFB8} = {9F4F9ECE-9C4C-4796-91A1-69805F823EA5} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E02989A8-9B6F-43E5-AACA-790328215089} diff --git a/Hydro/Yw.EPAnet.Calcu.Core/Yw.EPAnet.Calcu.Core.csproj b/Hydro/Yw.EPAnet.Calcu.Core/Yw.EPAnet.Calcu.Core.csproj index a37d884..595aca9 100644 --- a/Hydro/Yw.EPAnet.Calcu.Core/Yw.EPAnet.Calcu.Core.csproj +++ b/Hydro/Yw.EPAnet.Calcu.Core/Yw.EPAnet.Calcu.Core.csproj @@ -41,6 +41,9 @@ <Compile Remove="Object\VisualObject.cs" /> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\Yw.EPAnet.Core\Yw.EPAnet.Core.csproj" /> + </ItemGroup> + <ItemGroup> <None Update="Template\template.inp"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> diff --git a/Hydro/Yw.EPAnet.Core/EPAmodel.cs b/Hydro/Yw.EPAnet.Core/EPAmodel.cs new file mode 100644 index 0000000..c897e7b --- /dev/null +++ b/Hydro/Yw.EPAnet.Core/EPAmodel.cs @@ -0,0 +1,256 @@ +锘�//using AForge; +//using AForge.Genetic; +//using Hydro.CodeProvider; +//using Hydro.CommonBase; +//using Yw.EPAcore.Core; +//using SolutionDBHelper_NS; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.Drawing; +using System.Linq; +using System.Net.NetworkInformation; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +////using WaterDistributioinManager; +//using Hydro.ConfigModel; + +namespace Yw.EPAcore.Core +{ + + //public static class EPAModelInput + //{ + // public static Dictionary<HydraulicInputType, int> defineEPATypeCode = new Dictionary<HydraulicInputType, int>() + // { + // { HydraulicInputType.press,HydraulicCore.Const_class.Const_Node.EN_TANKLEVEL }, + // { HydraulicInputType.demand,HydraulicCore.Const_class.Const_Node.EN_DEMAND }, + // { HydraulicInputType.level,HydraulicCore.Const_class.Const_Node.EN_TANKLEVEL }, + // { HydraulicInputType.initPumpRS,HydraulicCore.Const_class.Const_Link.EN_INITSETTING }, + // { HydraulicInputType.initSettings,HydraulicCore.Const_class.Const_Link.EN_INITSETTING }, + // { HydraulicInputType.initStatus,HydraulicCore.Const_class.Const_Link.EN_INITSTATUS }, + // { HydraulicInputType.pattern,HydraulicCore.Const_class.Const_Node.EN_PATTERN }, + + + // }; + + //} + public enum HydraulicInputType + { + /// <summary> + /// 绌� + /// </summary> + None = -1, + /// <summary> + /// 缁濆鍘嬪姏锛屽崟浣嶇背姘存煴 + /// </summary> + press = 0, //缁濆鍘嬪姏 + /// <summary> + /// 鐢ㄦ按閲忥紝鍗曚綅鏄珛鏂圭背姣忓皬鏃� + /// </summary> + demand = 1,// 鐢ㄦ按閲� + /// <summary> + /// 姘存睜姘翠綅锛屽崟浣嶆槸绫� + /// </summary> + level = 2,// 姘存睜娑蹭綅 + /// <summary> + /// 姘存车杞�熸瘮 + /// </summary> + initPumpRS = 3,// 0 姘存车鐘舵��0/1杩樻槸姘存车棰戠巼0~1 棰戠巼/50 杞��/棰濆畾杞�� + /// <summary> + /// 绮楃硻搴︺�侀榾闂ㄥ紑搴� + /// </summary> + initSettings = 4, + /// <summary> + /// 寮�鍏崇姸鎬� + /// </summary> + initStatus = 5,// 0 姘存车鐘舵��0/1杩樻槸姘存车棰戠巼0~1 棰戠巼/50 杞��/棰濆畾杞�� + /// <summary> + /// 绠″緞 + /// </summary> + diameter = 6, + /// <summary> + /// 闀垮害 + /// </summary> + length = 7, + /// <summary> + /// 妯″紡 + /// </summary> + pattern = 8, + /// <summary> + /// 鎬绘按閲� + /// </summary> + totalDemand = 9, + /// <summary> + /// 鍒嗛厤姘撮噺 + /// </summary> + Distribution_TotalDemand = 10, + /// <summary> + /// 鍒嗛厤褰撻噺 + /// </summary> + Distribution_UnitDemand = 11, + } + + public static class NodeOutputType + { + public static List<HydraulicOutputType> List=new List<HydraulicOutputType>() + { + HydraulicOutputType.None, + HydraulicOutputType.Elev, + HydraulicOutputType.Head, + HydraulicOutputType.Pressure, + HydraulicOutputType.Demand, + HydraulicOutputType.Quality, + }; + } + + public enum HydraulicOutputType + { + /// <summary> + /// 绌� + /// </summary> + None= -1, + + /// <summary> + /// 鑺傜偣鏍囬珮 + /// </summary> + Elev = (int)HydraulicCore.Const_class.Const_Node.EN_ELEVATION,//0 + + /// <summary> + /// 缁濆姘村帇 + /// </summary> + Head = (int)HydraulicCore.Const_class.Const_Node.EN_HEAD,//10 + + /// <summary> + /// 鑷敱姘村帇 + /// </summary> + Pressure = (int)HydraulicCore.Const_class.Const_Link.EN_STATUS,//11 + + /// <summary> + /// 闇�姘撮噺 + /// </summary> + Demand = (int)HydraulicCore.Const_class.Const_Node.EN_DEMAND,//9 + + /// <summary> + /// 鑺傜偣姘磋川 + /// </summary> + Quality = (int)HydraulicCore.Const_class.Const_Node.EN_QUALITY,//12 + + + + + + /// <summary> + /// 鍙e緞 + /// </summary> + Diameter = (int)HydraulicCore.Const_class.Const_Link.EN_DIAMETER,//0 + + /// <summary> + /// 闀垮害 + /// </summary> + Length = (int)HydraulicCore.Const_class.Const_Link.EN_LENGTH,//1 + + + /// <summary> + /// 姘村ご鎹熷け + /// </summary> + HeadLoss = (int)HydraulicCore.Const_class.Const_Link.EN_HEADLOSS,//10 + + + + /// <summary> + /// 娴侀噺锛堣绠楃粨鏋滐紝鍗曚綅绔嬫柟绫虫瘡灏忔椂锛屼粠寮�濮嬭妭鐐规祦鍚戠粨鏉熻妭鐐逛负姝o級 + /// </summary> + Flow = (int)HydraulicCore.Const_class.Const_Link.EN_FLOW,//8 + /// <summary> + /// 娴侀�� + /// </summary> + Velocity = (int)HydraulicCore.Const_class.Const_Link.EN_VELOCITY,//9 + /// <summary> + /// 鑳借�� + /// </summary> + Energy = (int)HydraulicCore.Const_class.Const_Link.EN_ENERGY,//13 + /// <summary> + /// 寮�鍏抽噺 + /// </summary> + InitStatus = (int)HydraulicCore.Const_class.Const_Link.EN_INITSTATUS,//4 + + + /// <summary> + /// 鐘舵�� + /// </summary> + Status = (int)HydraulicCore.Const_class.Const_Link.EN_STATUS,//11 + + + + + /// <summary> + /// 杞�焲绮楃硻绯绘暟|闃�闂ㄨ缃� + /// </summary> + Settings = (int)HydraulicCore.Const_class.Const_Link.EN_SETTING,//12 + + + + + + } + + + public enum HydraulicObjectType + { + /// <summary> + /// 鑺傜偣 + /// </summary> + EN_JUNCTION = 0, + /// <summary> + /// 姘村簱鑺傜偣 + /// </summary> + EN_RESERVOIR = 1, + /// <summary> + /// 姘存睜鑺傜偣 + /// </summary> + EN_TANK = 2, + /// <summary> + /// 鍏锋湁姝㈠洖闃�鐨勭閬� + /// </summary> + EN_CVPIPE = 10, + /// <summary> + /// 绠¢亾 + /// </summary> + EN_PIPE = 11, + + /// <summary> + /// 姘存车 + /// </summary> + EN_PUMP = 12, + /// <summary> + /// 鍑忓帇闃� + /// </summary> + EN_PRV = 13, + /// <summary> + /// 绋冲帇闃� + /// </summary> + EN_PSV = 14, + /// <summary> + /// 鍘嬪姏鍒跺姩闃� + /// </summary> + EN_PBV = 15, + /// <summary> + /// 娴侀噺鎺у埗闃� + /// </summary> + EN_FCV = 16, + /// <summary> + /// 鑺傛祦鎺у埗闃� + /// </summary> + EN_TCV = 17, + /// <summary> + /// 甯歌闃�闂� + /// </summary> + EN_GPV = 18, + } + + + +} diff --git a/Hydro/Yw.EPAnet.Core/EpanetBase2.2.cs b/Hydro/Yw.EPAnet.Core/EpanetBase2.2.cs new file mode 100644 index 0000000..a3b8085 --- /dev/null +++ b/Hydro/Yw.EPAnet.Core/EpanetBase2.2.cs @@ -0,0 +1,320 @@ +锘�#define EPA2_2 //EPA2_0 + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + + +namespace Yw.EPAcore.Core +{ + + class HydraulicCoreBase + { + + const string DLLName = "Yw.Hydraulic.Core.dll";//"epanet2.2.dll";//"epanet2.2.dll" + //{ These are codes used by the DLL functions }Yw.EPAcore.Core + + + #region 鑺傜偣 + // 鑾峰彇鑺傜偣鍙傛暟鍊� + [DllImport(DLLName)] + public static extern int ENgetnodevalue22(int projectID, int index, int paramcode, ref float value); + // 鑾峰彇鑺傜偣绫诲瀷 + [DllImport(DLLName)] + public static extern int ENgetnodetype22(int projectID, int index, ref int typecode); + // 鑾峰彇鑺傜偣缂栧彿 + [DllImport(DLLName)] + public static extern int ENgetnodeindex22(int projectID, string nodeid, ref int nodeindex); + + // 鑾峰彇鑺傜偣 id + [DllImport(DLLName)] + public static extern int ENgetnodeid22(int projectID, int index, StringBuilder id); + [DllImport(DLLName)] + public static extern int ENgetnodecomment22(int projectID, int index, StringBuilder id); + [DllImport(DLLName)] + public static extern int ENaddnode22(int projectID, string id, int nodeType, ref int index); + + [DllImport(DLLName)] + public static extern int ENgetcoord22(int projectID, int index, ref double x, ref double y); + [DllImport(DLLName)] + public static extern int ENsetcoord22(int projectID, int index, double x, double y); + + // 璁剧疆鑺傜偣鍙傛暟 + [DllImport(DLLName)] + public static extern int ENsetnodevalue22(int projectID, int index, int paramcode, float value); + #endregion + + #region 绠℃ + + // 璁剧疆绠℃鍙傛暟 + [DllImport(DLLName)] + public static extern int ENsetlinkvalue22(int projectID, int index, int paramcode, float value); + + // 鑾峰彇绠℃ id + [DllImport(DLLName)] + + public static extern int ENgetlinkid22(int projectID, int index, StringBuilder id); + [DllImport(DLLName)] + + public static extern int ENgetlinkcomment22(int projectID, int index, StringBuilder id); + // 鑾峰彇绠℃ id + [DllImport(DLLName)] + + public static extern int ENgetlinkindex22(int projectID, string id, ref int index); + // 鑾峰彇绠℃鑺傜偣 + [DllImport(DLLName)] + public static extern int ENgetlinknodes22(int projectID, int index, ref int fromnode, ref int tonode); + + + // 鑾峰緱绠℃鍙傛暟 + [DllImport(DLLName)] + public static extern int ENgetlinkvalue22(int projectID, int index, int paramcode, ref float value); + + // 璁剧疆绠℃绫诲瀷 + [DllImport(DLLName)] + public static extern int ENgetlinktype22(int projectID, int index, ref int typecode); + // 澧炲姞绠$嚎 + [DllImport(DLLName)] + public static extern int ENaddlink22(int projectID, string id, int linkType, string fromNode, string toNode, ref int index); + + + #endregion + + #region 妯″紡 + // 鑾峰彇妯″紡id + [DllImport(DLLName)] + public static extern int ENgetpatternindex22(int projectID, string patternID, ref int patternindex); + + + // 澧炲姞鏂扮殑鏃堕棿妯″紡 + [DllImport(DLLName)] + public static extern int ENaddpattern22(int projectID, string patternID); + // 璁剧疆鏃堕棿妯″紡鐨勫�� + [DllImport(DLLName)] + public static extern int ENsetpatternvalue22(int projectID, int index, int period, float value); + + + + public static int ENsetpatternvalue_ex(int projectID, string patternID, int period, float value) + { + int err = 0; + int patternid = 0; + err = ENgetpatternindex22(projectID, patternID, ref patternid); + if (err > 0) return err; + if (patternid == 0) + { + err = ENaddpattern22(projectID, patternID); + if (err > 0) return err; + err = ENgetpatternindex22(projectID, patternID, ref patternid); + if (err > 0) return err; + + } + return ENsetpatternvalue22(projectID, patternid, period, value); + } + + + + [DllImport(DLLName)] + public static extern int ENsetpattern22(int projectID, int index, float[] values, int n); + + /// <summary> + /// 鍔犲己鐗堟坊鍔犳ā寮�,濡傛灉妯″紡鍚嶇О涓嶅瓨鍦�,鍒欒嚜鍔ㄦ柊澧炴ā寮�;鏂板瀹屽悗,鑷畾缁戝畾鑺傜偣 + /// </summary> + /// <param name="projectID"></param> + /// <param name="nodeID"></param> + /// <param name="patternID"></param> + /// <param name="values"></param> + /// <returns></returns> + public static int ENsetpatternvalue_ex(int projectID, int nodeindex, string patternID, double[] values) + { + int err = 0; + int patternid = 0; + err = ENgetpatternindex22(projectID, patternID, ref patternid); + + if (err > 0 || patternid == 0) + { + err = ENaddpattern22(projectID, patternID); + if (err > 0) return err; + err = ENgetpatternindex22(projectID, patternID, ref patternid); + if (err > 0) return err; + } + + float[] v = values.Select(f => (float)f).ToArray(); + err = ENsetpattern22(projectID, patternid, v, values.Length); + if (err > 0) return err; + //int nodeindex = 0; + //err = ENgetnodeindex22 (projectID,nodeID,ref nodeindex); + //if (err > 0) return err; + err = ENsetnodevalue22(projectID, nodeindex, HydraulicCore.Const_class.Const_Node.EN_PATTERN, patternid); + return err; + } + + + [DllImport(DLLName)] + public static extern int ENsetcurve22(int projectID, int index, float[] Xvalues, float[] Yvalues, int n); + + + + + + #endregion + + #region 璁$畻鎺у埗 + + //epanet 瀹屽叏妯℃嫙鍑芥暟 + [DllImport(DLLName)] + public static extern int ENepanet22(int projectID, string f1, string f2, string f3, IntPtr vfunc); + // 鍏抽棴绠$綉鏂囦欢 + [DllImport(DLLName)] + public static extern int ENclose22(int projectID); + // 鍏抽棴姘村姏妯℃嫙绯荤粺锛岄噴鏀惧唴瀛� + [DllImport(DLLName)] + public static extern int ENcloseH22(int projectID); + // 鍏抽棴姘磋川妯℃嫙绯荤粺锛岄噴鏀惧唴瀛� + [DllImport(DLLName)] + public static extern int ENcloseQ22(int projectID); + // 璋冪敤鎵撳紑绠$綉鏂囦欢 + [DllImport(DLLName)] + public static extern int ENopen22(int projectID, string f1, string f2, string f3); + // 璋冪敤鎵撳紑姘村姏鍒嗘瀽绯荤粺 + [DllImport(DLLName)] + public static extern int ENopenH22(int projectID); + // 璋冪敤鎵撳紑姘村姏鍒嗘瀽绯荤粺 + [DllImport(DLLName)] + public static extern int ENopenQ22(int projectID); + + /// <summary> + /// 璋冪敤鍒濆鍖栨按鍔涜绠楃郴缁� + /// </summary> + /// <param name="saveflag">0-1鏍囧織锛岃鏄庡垎鏋愮粨鏋滄槸鍚︿互鍧囧寑鎶ュ憡鏃舵淇濆瓨鍒癊PANETH浜岃繘鍒惰緭鍑烘枃浠躲��</param> + /// <returns>杩斿洖閿欒缂栧彿锛�0琛ㄧず鏃犻敊璇�</returns> + [DllImport(DLLName)] + public static extern int ENinitH22(int projectID, int saveflag); + + // 璋冪敤杩愯姘村姏璁$畻 + [DllImport(DLLName)] + public static extern int ENrunH22(int projectID, ref int t1); + // 姘村姏璁$畻姝ラ暱 + [DllImport(DLLName)] + public static extern int ENnextH22(int projectID, ref int tstep1); + // 璋冪敤鍒濆鍖栨按璐ㄨ绠楃郴缁� + [DllImport(DLLName)] + public static extern int ENinitQ22(int projectID, int saveflag); + // 璋冪敤杩愯姘村姏璁$畻 + [DllImport(DLLName)] + public static extern int ENrunQ22(int projectID, ref int t1); + // 姘村姏璁$畻姝ラ暱 + [DllImport(DLLName)] + public static extern int ENnextQ22(int projectID, ref int tstep1); + + + + // 鍏ㄩ儴姘村姏妯℃嫙 + [DllImport(DLLName)] + public static extern int ENsolveH22(int projectID); + // 鍏ㄩ儴姘磋川妯℃嫙 + [DllImport(DLLName)] + public static extern int ENsolveQ22(int projectID); + + // 鐢熸垚鎶ュ憡 + [DllImport(DLLName)] + public static extern int ENsaveH22(int projectID); + #endregion + + #region 鎶ュ憡 + // 鐢熸垚鎶ュ憡 + [DllImport(DLLName)] + public static extern int ENreport22(int projectID); + // 閲嶇疆鎶ュ憡 + [DllImport(DLLName)] + public static extern int ENresetreport22(int projectID); + + // 閲嶇疆鎶ュ憡 + [DllImport(DLLName)] + public static extern int ENsetreport22(int projectID, string x); + #endregion + + #region 鍏朵粬 + + + // 鑾峰彇绠$綉鍏冧欢鏁� + [DllImport(DLLName)] + public static extern int ENgetcount22(int projectID, int countcode, ref int count); + + // 鑾峰彇閿欒淇℃伅 + [DllImport(DLLName)] + public static extern int ENgeterror22(int projectID, int errcode, StringBuilder errmsg, int nchar); + + // 杈撳嚭鏂囦欢淇℃伅 + [DllImport(DLLName)] + public static extern int ENsaveinpfile22(int projectID, string filename); + + + + // 鑾峰彇绠�鍗曟帶鍒剁姸鎬佺殑鍙傛暟 + [DllImport(DLLName)] + public static extern int ENgetcontrol22(int projectID, int cindex, ref int ctype, ref int index, ref + float setting, ref int nindex, ref float level); + + + + // 璁剧疆閫夐」 + [DllImport(DLLName)] + public static extern int ENsetoption22(int projectID, int code, float v); + // 璁剧疆閫夐」 + [DllImport(DLLName)] + public static extern int ENsetstatusreport22(int projectID, int code); + // 璁剧疆閫夐」 + [DllImport(DLLName)] + public static extern int ENgetoption22(int projectID, int code, ref float v); + + + // 璁剧疆閫夐」 + [DllImport(DLLName)] + public static extern int ENgettimeparam22(int projectID, int code, ref int v); + // 璁剧疆姘磋川绫诲瀷 + [DllImport(DLLName)] + public static extern int ENsetqualtype22(int projectID, int qualcode, string chemname, + string chemunits, string tracenode); + + + + + #endregion + + //琛ュ厖 + [DllImport(DLLName)] + public static extern int ENsetinistatus22(int projectID, string id, string value); + + //琛ュ厖 + [DllImport(DLLName)] + public static extern int ENsetprojectreport22(int projectID, int value); + + ////琛ュ厖 + //EN_Project p, int nodeIndex, int demandIndex, + // double* baseDemand + //琛ュ厖 + [DllImport(DLLName)] + public static extern int ENgetbasedemand22(int projectID, int nodeIndex, int demandIndex, out List<double> baseDemand); + // + + //琛ュ厖 + [DllImport(DLLName)] + public static extern int ENgetdemandpattern22(int projectID, int nodeIndex, int demandIndex, + out List<int> patIndex); + + //琛ュ厖 + [DllImport(DLLName)] + public static extern int ENgetTotalDemand22(int projectID, int p, out double value); + + + //int DLLEXPORT EN_getTotalDemand(EN_Project pr, int p, double *value) + // + } + + + + +} \ No newline at end of file diff --git a/Hydro/Yw.EPAnet.Core/HydraulicCore.cs b/Hydro/Yw.EPAnet.Core/HydraulicCore.cs new file mode 100644 index 0000000..4796caf --- /dev/null +++ b/Hydro/Yw.EPAnet.Core/HydraulicCore.cs @@ -0,0 +1,796 @@ +锘� +using System.Text; +using System; +using System.Collections.Generic; +using System.ComponentModel; + +namespace Yw.EPAcore.Core +{ + //public enum NodeValueType + //{ + // EN_ELEVATION = 0, // { Mode parameters } + // EN_BASEDEMAND = 1, + // EN_PATTERN = 2, + // EN_EMITTER = 3, + // EN_INITQUAL = 4, + // EN_SOURCEQUAL = 5, + // EN_SOURCEPAT = 6, + // EN_SOURCETYPE = 7, + // EN_TANKLEVEL = 8, + // EN_DEMAND = 9, + // EN_HEAD = 10, + // EN_PRESSURE = 11, + // EN_QUALITY = 12, + // EN_SOURCEMASS = 13, + // EN_INITVOLUME = 14, + // EN_MIXMODEL = 15, + // EN_MIXZONEVOL = 16, + //} + //public enum LinkValueType + //{ + // EN_DIAMETER = 0, // { Link parameters } + // EN_LENGTH = 1, + // EN_ROUGHNESS = 2, + // EN_MINORLOSS = 3, + // EN_INITSTATUS = 4, + // EN_INITSETTING = 5, + // EN_KBULK = 6, + // EN_KWALL = 7, + // EN_FLOW = 8, + // EN_VELOCITY = 9, + // EN_HEADLOSS = 10, + // EN_STATUS = 11, + // EN_SETTING = 12, + // EN_ENERGY = 13, + //} + public enum NodeValueType + { + 鏍囬珮 = 0, // { Mode parameters } + 鍩烘湰闇�姘撮噺 = 1, + 闇�姘撮噺妯″紡 = 2, + 鎵╂暎鍣ㄧ郴鏁� = 3, + 鍒濆鐗╄川娴撳害 = 4, + 杈撳叆鐗╄川娴撳害 = 5, + 娴撳害妯″紡 = 6, + 姘存簮绫诲瀷 = 7, + 姘存睜姘翠綅 = 8, + 闇�姘撮噺 = 9, + 缁濆鍘嬪姏 = 10, + 鑷敱鍘嬪姏 = 11, + 鐗╄川娴撳害 = 12, + 鐗╄川鎵╂暎娴撳害 = 13, + 鍒濆瀹圭Н = 14, + 澶氱墿璐ㄦ贩鍚堟ā鍨� = 15, + 澶氱墿璐ㄦ贩鍚堝绉� = 16, + } + public enum LinkValueType + { + 绠″緞 = 0, // { Link parameters } + 绠¢暱 = 1, + 娴锋.濞佸粔绯绘暟 = 2, + 灞�閮ㄦ按澶存崯澶� = 3, + 鍒濆鐘舵�� = 4, + 鍒濆璁剧疆 = 5, + 姘翠綋鍙嶅簲绯绘暟 = 6, + 绠″鍙嶅簲绯绘暟 = 7, + 娴侀噺 = 8, + 娴侀�� = 9, + 姘存崯 = 10, + 鐘舵�� = 11, + 璁剧疆 = 12, + 鍔熺巼 = 13, + } + public sealed class HydraulicCore + { + public static class Const_class + { + public static class Const_Node + { + public const int EN_ELEVATION = 0; // { Mode parameters } + public const int EN_BASEDEMAND = 1; + public const int EN_PATTERN = 2; + public const int EN_EMITTER = 3; + public const int EN_INITQUAL = 4; + public const int EN_SOURCEQUAL = 5; + public const int EN_SOURCEPAT = 6; + public const int EN_SOURCETYPE = 7; + public const int EN_TANKLEVEL = 8; + public const int EN_DEMAND = 9; + public const int EN_HEAD = 10; + public const int EN_PRESSURE = 11; + public const int EN_QUALITY = 12; + public const int EN_SOURCEMASS = 13; + public const int EN_INITVOLUME = 14; + public const int EN_MIXMODEL = 15; + public const int EN_MIXZONEVOL = 16; + } + + public static class Const_Tank + { + public const int EN_TANKDIAM = 17; + public const int EN_MINVOLUME = 18; + public const int EN_VOLCURVE = 19; + public const int EN_MINLEVEL = 20; + public const int EN_MAXLEVEL = 21; + public const int EN_MIXFRACTION = 22; + public const int EN_TANK_KBULK = 23; + } + + public static class Const_Link + { + + public const int EN_DIAMETER = 0; // { Link parameters } + public const int EN_LENGTH = 1; + public const int EN_ROUGHNESS = 2; + public const int EN_MINORLOSS = 3; + public const int EN_INITSTATUS = 4; + public const int EN_INITSETTING = 5; + public const int EN_KBULK = 6; + public const int EN_KWALL = 7; + public const int EN_FLOW = 8; + public const int EN_VELOCITY = 9; + public const int EN_HEADLOSS = 10; + public const int EN_STATUS = 11; + public const int EN_SETTING = 12; + public const int EN_ENERGY = 13; + } + + public static class Const_Time + { + public const int EN_DURATION = 0; // { Time parameters } + public const int EN_HYDSTEP = 1; + public const int EN_QUALSTEP = 2; + public const int EN_PATTERNSTEP = 3; + public const int EN_PATTERNSTART = 4; + public const int EN_REPORTSTEP = 5; + public const int EN_REPORTSTART = 6; + public const int EN_RULESTEP = 7; + public const int EN_STATISTIC = 8; + public const int EN_PERIODS = 9; + } + + public static class Const_Component + { + public const int EN_NODECOUNT = 0; //{ Component counts } + public const int EN_TANKCOUNT = 1; + public const int EN_LINKCOUNT = 2; + public const int EN_PATCOUNT = 3; + public const int EN_CURVECOUNT = 4; + public const int EN_CONTROLCOUNT = 5; + } + + public static class Const_Node_Type + { + public const int EN_JUNCTION = 0; // { Node types } + public const int EN_RESERVOIR = 1; + public const int EN_TANK = 2; + } + + public static class Const_Link_types + { + public const int EN_CVPIPE = 0; // { Link types } + public const int EN_PIPE = 1; + public const int EN_PUMP = 2; + public const int EN_PRV = 3; + public const int EN_PSV = 4; + public const int EN_PBV = 5; + public const int EN_FCV = 6; + public const int EN_TCV = 7; + public const int EN_GPV = 8; + } + + public static class Const_Quality_analysis_types + { + public const int EN_NONE = 0; // { Quality analysis types } + public const int EN_CHEM = 1; + public const int EN_AGE = 2; + public const int EN_TRACE = 3; + } + + public static class Const_Source_quality_types + { + public const int EN_CONCEN = 0; // { Source quality types } + public const int EN_MASS = 1; + public const int EN_SETPOINT = 2; + public const int EN_FLOWPACED = 3; + } + + public static class Const_Flow_units_types + { + public const int EN_CFS = 0; // { Flow units types } + public const int EN_GPM = 1; + public const int EN_MGD = 2; + public const int EN_IMGD = 3; + public const int EN_AFD = 4; + public const int EN_LPS = 5; + public const int EN_LPM = 6; + public const int EN_MLD = 7; + public const int EN_CMH = 8; + public const int EN_CMD = 9; + } + + public static class Const_Option_types + { + public const int EN_TRIALS = 0; // { Option types } + public const int EN_ACCURACY = 1; + public const int EN_TOLERANCE = 2; + public const int EN_EMITEXPON = 3; + public const int EN_DEMANDMULT = 4; + } + + public static class Const_Control_types + { + public const int EN_LOWLEVEL = 0; //{ Control types } + public const int EN_HILEVEL = 1; + public const int EN_TIMER = 2; + public const int EN_TIMEOFDAY = 3; + } + + public static class Const_Time_statistic_types + { + public const int EN_AVERAGE = 1; // { Time statistic types } + public const int EN_MINIMUM = 2; + public const int EN_MAXIMUM = 3; + public const int EN_RANGE = 4; + } + + public static class Const_Tank_mixing_models + { + public const int EN_MIX1 = 0; // { Tank mixing models } + public const int EN_MIX2 = 1; + public const int EN_FIFO = 2; + public const int EN_LIFO = 3; + } + + public static class Const_Save_results_Mode + { + public const int EN_NOSAVE = 0; // { Save-results-to-file flag } + public const int EN_SAVE = 1; + public const int EN_INITFLOW = 10; // { Re-initialize flow flag } + } + public static class Const_statuslevel + { + public const int EN_NONE = 0; + public const int EN_NORMAL = 0; + public const int EN_FULL = 0; + } + + } + + static int ProjectCount = 0; + + public void Dispose() + { + HydraulicCore.ProjectCount--; + } + + int projectID; + bool isWaterModelCalc = true; + public int GetProjectID() + { + return projectID; + } + public HydraulicCore(bool isWaterModelCalc) + { + this.isWaterModelCalc = isWaterModelCalc; + this.projectID = ProjectCount; + HydraulicCore.ProjectCount++; + } + // 鑾峰彇鑺傜偣鍙傛暟鍊� + + public int getnodevalue(int index, int paramcode, ref float value) + { + return HydraulicCoreBase.ENgetnodevalue22(projectID, index, paramcode, ref value); + } + // 鑾峰彇鑺傜偣绫诲瀷 + + public float getvalue(string ID, int paramcode) + { + int err = 0; + int index = 0; + err = getnodeindex(ID, ref index); + float value = 0; + if (index > 0) + { + err = getnodevalue(index, paramcode, ref value); + } + else + { + err = getlinkindex(ID, ref index); + err = getlinkvalue(index, paramcode, ref value); + } + return value; + + } + public float getvalue(string ID, int paramcode, bool isNode) + { + int err = 0; + int index = 0; + float value = 0; + if (isNode) + { + err = getnodeindex(ID, ref index); + + if (index > 0) + err = getnodevalue(index, paramcode, ref value); + } + + else + { + err = getlinkindex(ID, ref index); + if (index > 0) + err = getlinkvalue(index, paramcode, ref value); + } + return value; + + } + public int setvalue(string ID, int paramcode, double value, bool isNode) + { + int err = 0; + int index = 0; + + if (isNode) + { + err = getnodeindex(ID, ref index); + + if (index > 0) + err = setnodevalue(index, paramcode, (float)value); + } + + else + { + err = getlinkindex(ID, ref index); + if (index > 0) + err = setlinkvalue(index, paramcode, (float)value); + } + + return err; + + } + public int getnodetype(int index, ref int typecode) + { + return HydraulicCoreBase.ENgetnodetype22(projectID, index, ref typecode); + } + // 鑾峰彇鑺傜偣缂栧彿 + + public int getnodeindex(string nodeid, ref int nodeindex) + { + return HydraulicCoreBase.ENgetnodeindex22(projectID, nodeid, ref nodeindex); + } + + // 鑾峰彇鑺傜偣 id + + public int getnodeid(int index, StringBuilder id) + { + return HydraulicCoreBase.ENgetnodeid22(projectID, index, id); + } + public int getnodecomment(int index, StringBuilder id) + { + return HydraulicCoreBase.ENgetnodecomment22(projectID, index, id); + } + public int addnode(string id, int nodeType, ref int index) + { + return HydraulicCoreBase.ENaddnode22(projectID, id, nodeType, ref index); + } + + + public int getcoord(int index, ref double x, ref double y) + { + return HydraulicCoreBase.ENgetcoord22(projectID, index, ref x, ref y); + } + + public int setcoord(int index, double x, double y) + { + return HydraulicCoreBase.ENsetcoord22(projectID, index, x, y); + } + + // 璁剧疆鑺傜偣鍙傛暟 + + public int setnodevalue(int index, int paramcode, float value) + { + return HydraulicCoreBase.ENsetnodevalue22(projectID, index, paramcode, value); + } + + + + #region 绠℃ + + // 璁剧疆绠℃鍙傛暟 + + public int setlinkvalue(int index, int paramcode, float value) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENsetlinkvalue22(projectID, index, paramcode, value); + } + + // 鑾峰彇绠℃ id + + + public int getlinkid(int index, StringBuilder id) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENgetlinkid22(projectID, index, id); + } + public int getlinkcomment(int index, StringBuilder id) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENgetlinkcomment22(projectID, index, id); + } + // 鑾峰彇绠℃ id + + + public int getlinkindex(string id, ref int index) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENgetlinkindex22(projectID, id, ref index); + } + // 鑾峰彇绠℃鑺傜偣 + + public int getlinknodes(int index, ref int fromnode, ref int tonode) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENgetlinknodes22(projectID, index, ref fromnode, ref tonode); + } + + + // 鑾峰緱绠℃鍙傛暟 + + public int getlinkvalue(int index, int paramcode, ref float value) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENgetlinkvalue22(projectID, index, paramcode, ref value); + } + + // 璁剧疆绠℃绫诲瀷 + + public int getlinktype(int index, ref int typecode) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENgetlinktype22(projectID, index, ref typecode); + } + // 澧炲姞绠$嚎 + + public int addlink(string id, int linkType, string fromNode, string toNode, ref int index) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENaddlink22(projectID, id, linkType, fromNode, toNode, ref index); + } + + + #endregion + + #region 妯″紡 + // 鑾峰彇妯″紡id + + public int getpatternindex(string patternID, ref int patternindex) + { + return HydraulicCoreBase.ENgetpatternindex22(projectID, patternID, ref patternindex); + } + + + // 澧炲姞鏂扮殑鏃堕棿妯″紡 + + public int addpattern(string patternID) + { + return HydraulicCoreBase.ENaddpattern22(projectID, patternID); + } + // 璁剧疆鏃堕棿妯″紡鐨勫�� + + public int setpatternvalue(int index, int period, float value) + { + return HydraulicCoreBase.ENsetpatternvalue22(projectID, index, period, value); + } + + + + public int setpatternvalue_ex(string patternID, int period, float value) + { + return HydraulicCoreBase.ENsetpatternvalue_ex(projectID, patternID, period, value); + } + + + + + + public int setpattern(int index, float[] values, int n) + { + return HydraulicCoreBase.ENsetpattern22(projectID, index, values, n); + } + + /// <summary> + /// 鍔犲己鐗堟坊鍔犳ā寮�,濡傛灉妯″紡鍚嶇О涓嶅瓨鍦�,鍒欒嚜鍔ㄦ柊澧炴ā寮�;鏂板瀹屽悗,鑷畾缁戝畾鑺傜偣 + /// </summary> + /// <param name="projectID"></param> + /// <param name="index"></param> + /// <param name="patternID"></param> + /// <param name="values"></param> + /// <returns></returns> + public int setpatternvalue_ex(int index, string patternID, double[] values) + { + return HydraulicCoreBase.ENsetpatternvalue_ex(projectID, index, patternID, values); + } + + + + + public int setcurve(int index, float[] Xvalues, float[] Yvalues, int n) + { + return HydraulicCoreBase.ENsetcurve22(projectID, index, Xvalues, Yvalues, n); + } + + + + + + #endregion + + #region 璁$畻鎺у埗 + + //epanet 瀹屽叏妯℃嫙鍑芥暟 + + public int epanet(string f1, string f2, string f3, IntPtr vfunc) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENepanet22(projectID, f1, f2, f3, vfunc); + } + // 鍏抽棴绠$綉鏂囦欢 + + public int close() + { + ProjectCount--; + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENclose22(projectID); + + } + // 鍏抽棴姘村姏妯℃嫙绯荤粺锛岄噴鏀惧唴瀛� + + public int closeH() + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENcloseH22(projectID); + } + // 鍏抽棴姘磋川妯℃嫙绯荤粺锛岄噴鏀惧唴瀛� + + public int closeQ() + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENcloseQ22(projectID); + } + // 璋冪敤鎵撳紑绠$綉鏂囦欢 + + public int open(string f1, string f2, string f3) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENopen22(projectID, f1, f2, f3); + } + // 璋冪敤鎵撳紑姘村姏鍒嗘瀽绯荤粺 + + public int openH() + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENopenH22(projectID); + } + // 璋冪敤鎵撳紑姘村姏鍒嗘瀽绯荤粺 + + public int openQ() + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENopenQ22(projectID); + } + + /// <summary> + /// 璋冪敤鍒濆鍖栨按鍔涜绠楃郴缁� + /// </summary> + /// <param name="saveflag">0-1鏍囧織锛岃鏄庡垎鏋愮粨鏋滄槸鍚︿互鍧囧寑鎶ュ憡鏃舵淇濆瓨鍒癊PANETH浜岃繘鍒惰緭鍑烘枃浠躲��</param> + /// <returns>杩斿洖閿欒缂栧彿锛�0琛ㄧず鏃犻敊璇�</returns> + + public int initH(int saveflag) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENinitH22(projectID, saveflag); + } + + // 璋冪敤杩愯姘村姏璁$畻 + + public int runH(ref int t1) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENrunH22(projectID, ref t1); + } + // 姘村姏璁$畻姝ラ暱 + + public int nextH(ref int tstep1) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENnextH22(projectID, ref tstep1); + } + // 璋冪敤鍒濆鍖栨按璐ㄨ绠楃郴缁� + + public int initQ(int saveflag) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENinitQ22(projectID, saveflag); + } + // 璋冪敤杩愯姘村姏璁$畻 + + public int runQ(ref int t1) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENrunQ22(projectID, ref t1); + } + // 姘村姏璁$畻姝ラ暱 + + public int nextQ(ref int tstep1) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENnextQ22(projectID, ref tstep1); + } + + + + // 鍏ㄩ儴姘村姏妯℃嫙 + + public int solveH() + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENsolveH22(projectID); + } + // 鍏ㄩ儴姘磋川妯℃嫙 + + public int solveQ() + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENsolveQ22(projectID); + } + + // 鐢熸垚鎶ュ憡 + + public int saveH() + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENsaveH22(projectID); + } + #endregion + + #region 鎶ュ憡 + // 鐢熸垚鎶ュ憡 + + public int report() + { + return HydraulicCoreBase.ENreport22(projectID); + } + // 閲嶇疆鎶ュ憡 + + public int resetreport() + { + return HydraulicCoreBase.ENresetreport22(projectID); + } + + // 閲嶇疆鎶ュ憡 + + public int setreport(string x) + { + return HydraulicCoreBase.ENsetreport22(projectID, x); + } + #endregion + + #region 鍏朵粬 + + + // 鑾峰彇绠$綉鍏冧欢鏁� + + public int getcount(int countcode, ref int count) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENgetcount22(projectID, countcode, ref count); + } + + // 鑾峰彇閿欒淇℃伅 + + public int geterror(int errcode, StringBuilder errmsg, int nchar) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENgeterror22(projectID, errcode, errmsg, nchar); + } + + // 杈撳嚭鏂囦欢淇℃伅 + + public int saveinpfile(string filename) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENsaveinpfile22(projectID, filename); + } + + + + // 鑾峰彇绠�鍗曟帶鍒剁姸鎬佺殑鍙傛暟 + + public int getcontrol(int cindex, ref int ctype, ref int index, ref + float setting, ref int nindex, ref float level) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENgetcontrol22(projectID, cindex, ref ctype, ref index, ref + setting, ref nindex, ref level); + } + + + + // 璁剧疆閫夐」 + + public int setoption(int code, float v) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENsetoption22(projectID, code, v); + } + public int setstatusreport(int code) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENsetstatusreport22(projectID, code); + } + public float getoption(int code) + { + if (!isWaterModelCalc) return 0; + float v = 0; + HydraulicCoreBase.ENgetoption22(projectID, code, ref v); + return v; + } + + // 璁剧疆閫夐」 + + public int gettimeparam(int code, ref int v) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENgettimeparam22(projectID, code, ref v); + } + // 璁剧疆姘磋川绫诲瀷 + + public int setqualtype(int qualcode, string chemname, + string chemunits, string tracenode) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENsetqualtype22(projectID, qualcode, chemname, chemunits, tracenode); + } + + + + + #endregion + + //琛ュ厖 + + public int setinistatus(string id, string value) + { + if (!isWaterModelCalc) return 0; + return HydraulicCoreBase.ENsetinistatus22(projectID, id, value); + } + + //琛ュ厖 + + public int setprojectreport(int value) + { + return HydraulicCoreBase.ENsetprojectreport22(projectID, value); + } + + + + public int getbasedemand(int nodeIndex, int demandIndex, out List<double> baseDemand) + { + return HydraulicCoreBase.ENgetbasedemand22(projectID, nodeIndex, demandIndex, out baseDemand); + } + //琛ュ厖 + + public int getdemandpattern(int nodeIndex, int demandIndex, + out List<int> patIndex) + { + return HydraulicCoreBase.ENgetdemandpattern22(projectID, nodeIndex, demandIndex, out patIndex); + } + + public int getTotalDemand(int p, out double value) + { + return HydraulicCoreBase.ENgetTotalDemand22(projectID, p, out value); + } + + + + } +} \ No newline at end of file diff --git a/Hydro/Yw.EPAnet.Core/Yw.EPAnet.Core.csproj b/Hydro/Yw.EPAnet.Core/Yw.EPAnet.Core.csproj new file mode 100644 index 0000000..141e38f --- /dev/null +++ b/Hydro/Yw.EPAnet.Core/Yw.EPAnet.Core.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>disable</Nullable> + </PropertyGroup> + +</Project> -- Gitblit v1.9.3