You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/3rd/Pebi/include/pch.h

479 lines
16 KiB
C

#pragma once
#ifndef PCH_H
#define PCH_H
#include "framework.h"
#endif //PCH_H
#define HX_API extern "C" _declspec(dllexport)
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <fstream>
#include <ctime>
#include <iomanip>
#include <unordered_set>
#include <Windows.h>
#ifndef M_PI
const double M_PI = acos(-1.0);
#endif
typedef std::vector<std::vector<std::vector<double>>>dVec3; //ČýÎŹĘý×é:double
typedef std::vector<std::vector<double>>dVec2; //śţÎŹĘý×é:double
typedef std::vector<std::vector<int>>iVec2; //śţÎŹĘý×é:int
typedef std::vector<double>dVec1; //ҝΏĘý×é:double
typedef std::vector<int>iVec1; //ҝΏĘý×é:int
template<class T> void HX_copy(std::vector<std::vector<std::vector<T>>>& p1, const std::vector<std::vector<std::vector<T>>>& p0)
{
int m = p0.size(); p1.resize(m);
for (int i = 0; i < m; ++i)
{
int n = p0[i].size(); p1[i].resize(n);
for (int j = 0; j < n; ++j)
{
int l = p0[i][j].size(); p1[i][j].resize(l);
for (int k = 0; k < l; ++k)
{
p1[i][j][k] = p0[i][j][k];
}
}
}
}
template<class T> void HX_copy(std::vector<std::vector<T>>& p1, const std::vector<std::vector<T>>& p0)
{
int m = p0.size(); p1.resize(m);
for (int i = 0; i < m; ++i)
{
int n = p0[i].size(); p1[i].resize(n);
for (int j = 0; j < n; ++j)
{
p1[i][j] = p0[i][j];
}
}
}
template<class T> void HX_copy(std::vector<T>& p1, const std::vector<T>& p0)
{
int m = p0.size(); p1.resize(m);
for (int i = 0; i < m; ++i)
{
p1[i] = p0[i];
}
}
template<class T> void HX_copy(std::vector<std::vector<std::vector<T>>>& p1, T*** p0, int m, int* n, int l)
{
p1.resize(m);
for (int i = 0; i < m; ++i)
{
p1[i].resize(n[i]);
for (int j = 0; j < n[i]; ++j)
{
p1[i][j].resize(l);
for (int k = 0; k < l; ++k)
{
p1[i][j][k] = p0[i][j][k];
}
}
}
}
template<class T> void HX_copy(std::vector<std::vector<T>>& p1, T** p0, int m, int n)
{
p1.resize(m);
for (int i = 0; i < m; ++i)
{
p1[i].resize(n);
for (int j = 0; j < n; ++j)
{
p1[i][j] = p0[i][j];
}
}
}
template<class T> void HX_copy(std::vector<T>& p1, T* p0, int m)
{
p1.resize(m);
for (int i = 0; i < m; ++i)
{
p1[i] = p0[i];
}
}
//ľă˝áššĚĺ
struct point
{
//ľă˝áššĚĺ
double x; double y; //ľă×řąę
point() { x = 0; y = 0; }
~point() {}
void set(const double& x_ = 0, const double& y_ = 0) { x = x_; y = y_; }
void set(const point& p) { x = p.x; y = p.y; }
};
struct point3
{
double x;
double y;
double z;
point3() { x = 0; y = 0; z = 0; }
~point3() {}
point3(const dVec1&p) { x = p[0]; y = p[1]; z = p[2]; }
point3(const double& x_ = 0, const double& y_ = 0, const double&z_ = 0) { x = x_; y = y_; z = z_;}
void set(const double& x_ = 0, const double& y_ = 0, const double& z_ = 0) { x = x_; y = y_; z = z_; }
void set(const point3&p) { x = p.x; y = p.y; z = p.z; }
};
//Íř¸ń˝áššĚĺ
struct cell
{
//Íř¸ńľĽÔŞ˝áššĚĺ
std::vector<point> p;
iVec2 pindex;
iVec1 isplot;
cell() {}
~cell() {}
};
//Íř¸ńË㡨ĘäČë˛ÎĘý˝áššĚĺ
struct HX_NWTM_GRID_INPUT
{
// Íř¸ńťŽˇÖË㡨ĘäČë˛ÎĘý˝áššĚĺ
dVec2 Boundary; //3D:{x0, y0, z0, x1, y1, z1} //2D:{x0, y0, x1, y1} ąß˝çĘýžÝ
dVec2 VerticalWell; //3D:{x0, y0, z0, x1, y1, z1, rw} //2D:{x0, y0, x1, y1, rw} ÖąžŽĘýžÝ
dVec2 HorizontalWell; //3D:{x0, y0, z0, x1, y1, z1, rw} ËŽĆ˝žŽĘýžÝ
dVec2 FractureVerticalWell; //3D:{x0, y0, z0, x1, y1, z1, wf} //2D:{x0, y0, x1, y1, wf, FC} ŃšÁŃÖąžŽĘýžÝ(wfÁѡě°ëżí,m,FC,Áѡ쾟Á÷ÄÜÁŚ,mD.m(FCÎŞ0ʹΪÎŢĎŢľźÁ÷ŁŹ´óÓÚ0ʹΪÓĐĎŢľźÁ÷))
dVec3 MultistageFracturedHorizontalWell; //3D:{x0, y0, z0, x1, y1, z1, wf} //2D:{x0, y0, x1, y1, wf, FC} śŕźśŃšÁŃËŽĆ˝žŽĘýžÝ(wfÁѡě°ëżí,m,FC,Áѡ쾟Á÷ÄÜÁŚ,mD.m(FCÎŞ0ʹΪÎŢĎŢľźÁ÷ŁŹ´óÓÚ0ʹΪÓĐĎŢľźÁ÷))
dVec2 InclinedWell; //3D:{x0, y0, z0, x1, y1, z1, rw} ĐąžŽĘýžÝ
dVec2 Fault; //3D:{x0, y0, z0, x1, y1, z1} //2D:{x0, y0, x1, y1} śĎ˛ăĘýžÝ
double GridControl; // Íř¸ń´óĐĄżŘÖƲÎĘý
int D; // ÎŹĘý
//ÄŹČĎłőĘźťŻ
HX_NWTM_GRID_INPUT()
{
dVec1 a(3), b(4), c(5), d(6);
Boundary.resize(4);
b[0] = -1500.0; b[1] = -1500.0; b[2] = -1500.0; b[3] = 1500.0; Boundary[0] = b;
b[0] = -1500.0; b[1] = 1500.0; b[2] = 1500.0; b[3] = 1500.0; Boundary[1] = b;
b[0] = 1500.0; b[1] = 1500.0; b[2] = 1500.0; b[3] = -1500.0; Boundary[2] = b;
b[0] = 1500.0; b[1] = -1500.0; b[2] = -1500.0; b[3] = -1500.0; Boundary[3] = b;
VerticalWell.resize(3);
a[0] = 0; a[1] = 0; a[2] = 0.1; VerticalWell[0] = a;
a[0] = 1000; a[1] = 1000; a[2] = 0.1; VerticalWell[1] = a;
a[0] = -1000; a[1] = -1000; a[2] = 0.1; VerticalWell[2] = a;
HorizontalWell.resize(0);
FractureVerticalWell.resize(1);
d[0] = -200; d[1] = -200; d[2] = 200; d[3] = -200; d[4] = 0.05; d[5] = 0; FractureVerticalWell[0] = d;
MultistageFracturedHorizontalWell.resize(1);
MultistageFracturedHorizontalWell[0].resize(3, dVec1(5));
d[0] = -600; d[1] = 600; d[2] = -400; d[3] = 600; d[4] = 0.1; d[5] = 0; MultistageFracturedHorizontalWell[0][0] = d;
d[0] = -600; d[1] = 400; d[2] = -400; d[3] = 400; d[4] = 0.1; d[5] = 0; MultistageFracturedHorizontalWell[0][1] = d;
d[0] = -600; d[1] = 200; d[2] = -400; d[3] = 200; d[4] = 0.1; d[5] = 0; MultistageFracturedHorizontalWell[0][2] = d;
InclinedWell.resize(0);
Fault.resize(1);
b[0] = -500; b[1] = 1000; b[2] = 500; b[3] = 500; Fault[0] = b;
GridControl = 150.0;
D = 2;
}
~HX_NWTM_GRID_INPUT() {}
};
//Íř¸ńË㡨Ęäłö˛ÎĘý˝áššĚĺ(ťćÍźÓĂ)
struct HX_NWTM_GRID_OUTPUT1
{
cell TRI_cell; //Čý˝ÇĐÎÍř¸ń
cell PEBI_cell; //PEBIÍř¸ń
HX_NWTM_GRID_OUTPUT1() {}
~HX_NWTM_GRID_OUTPUT1() {}
};
//Íř¸ńË㡨Ęäłö˛ÎĘý˝áššĚĺ(ÄŁĐÍÓĂ)
struct HX_NWTM_GRID_OUTPUT2
{
dVec2 Trinodexy;
dVec1 Area;
dVec2 D;
struct {
int n;
dVec2 XiLinw;
dVec2 lw;
dVec2 dw;
dVec1 rw;
iVec2 inwell;
dVec1 dwell;
} ZhiJingNeiBianJie;
struct {
int n;
dVec2 XiLinf;
dVec2 lf;
dVec2 df;
dVec1 xf;
iVec2 infra;
iVec1 nf;
iVec1 jjf;
iVec1 jjfl;
dVec1 lfcd;
iVec2 infra1;
dVec2 lf1;
dVec2 df1;
} LieFengJingNeiBianJie;
struct {
int n;
dVec2 XiLinh;
dVec2 lh;
dVec2 dh;
dVec2 dsxf;
iVec2 inhor;
iVec1 nhor;
dVec2 areah;
iVec2 inhor1;
iVec2 nh;
iVec2 jjh;
dVec2 hfcd;
iVec2 jjhl;
iVec2 jjh2;
iVec2 inhor2;
dVec2 lh1;
dVec2 dh1;
} DuoJiYaLieShuiPingJingNeiBianJie;
struct {
int n;
dVec2 WaiBianh;
dVec2 WaiBianl;
dVec2 WaiBiand;
} WaiBianJie;
struct {
int n;
dVec2 faultb1;
dVec2 faultb2;
dVec2 faultl1;
dVec2 faultd1;
} NeiBuDuanCeng;
struct {
iVec1 ia;
iVec1 ja;
iVec2 nzeros;
int numk;
} YuChuLiJuZhen;
HX_NWTM_GRID_OUTPUT2() {}
~HX_NWTM_GRID_OUTPUT2() {}
};
//KRINGING˛ĺÖľĘäČë˛ÎĘý˝áššĚĺ
struct HX_KRING_INPUT
{
double nugget; //żé˝đÖľ:ąíĘžżŐźäľăÔÚÁăžŕŔë´ŚľÄąäŇěłĚśČŁŹź´˛âÁżÎó˛îşÍĐĄÓÚ˛ÉŃůłßśČľÄËćťúąäŇěÖŽşÍ
double sill; //ťų̊־:ąíĘžąä˛îşŻĘýËćžŕŔëÔöźÓśřÇ÷ÓÚÎČś¨ľÄźŤĎŢÖľŁŹˇ´ÓłÇřÓňťŻąäÁżľÄ×ÜąäŇěłĚśČ
double range; //ąäłĚ:ąíĘžżŐźäĎŕšŘĐÔľÄÓĐЧžŕŔ륣ľąÁ˝ľăźäžŕŔ볏šý range ĘąŁŹËüĂÇÖŽźä˛ťÔŮžßÓĐżŐźäĎŕšŘĐÔ
double model; //ąä˛îşŻĘýÄŁĐÍ:Ö¸ś¨ąä˛îşŻĘýľÄĘýѧĐÎĘ˝ŁŹĂčĘöżŐźäĎŕšŘĐÔËćžŕŔëľÄąäťŻšćÂÉ{, , }
//¸ß˚ģĐÍSPHERICAL(0)ŁşĎŕšŘĐÔËćžŕŔëÔöźÓłĘÖ¸ĘýËĽźőŁŹĘĘÓĂÓÚÁŹĐřĐÔ˝ĎÇżľÄąäÁż
//Ö¸ĘýÄŁĐÍEXPONENTIAL(1)ŁşĎŕšŘĐÔżěËŮËĽźőŁŹĘĘÓĂÓÚžÖ˛żąäŇěĐԽϴóľÄąäÁż
//Çň×´ÄŁĐÍGAUSSIAN(2)ŁşÔÚąäłĚÄÚłĘĹ×ÎďĎßąäťŻŁŹłŹšýąäłĚşóĎŕšŘĐÔÎŞÁă
dVec2 p; //˛ĺÖľľă
dVec2 v; //
~HX_KRING_INPUT() {}
HX_KRING_INPUT(double nugget0, double sill0, double range0, double model0 , const dVec2& p0, const dVec2& v0)
{
nugget = nugget0; sill = sill0; range = range0; model = model0;
p = p0;
v = v0;
}
};
//KRINGING˛ĺÖľĘäłö˛ÎĘý˝áššĚĺ
struct HX_KRING_OUTPUT
{
dVec1 v;
HX_KRING_OUTPUT() {}
~HX_KRING_OUTPUT() {}
};
//ĘýÖľĘÔžŽÄŁĐÍÇó˝âĆ÷ĘäČë˛ÎĘý˝áššĚĺ
struct HX_NWTM_MODEL_INPUT
{
int T; //1:ÓÍľĽĎೣĘýpvt; 2:ÓÍľĽĎŕąäťŻpvt; 3:ËŽľĽĎೣĘýpvt; 4:ËŽľĽĎŕąäťŻpvt; 5:ĆřľĽĎŕąäťŻpvt; 6:ĆřľĽĎŕÄâŃšÁŚ; 7:ÓÍĆřÁ˝Ďŕ; 8:ÓÍËŽÁ˝Ďŕ; 9:ĆřËŽÁ˝Ďŕ; 10:ÓÍĆřËŽČýĎŕ
HX_NWTM_GRID_OUTPUT2 GRID;
struct Rate //Á÷ÁżĘýžÝ
{
dVec2 t; //Ęąźä, h [ŇťżÚžŽŇť×éĘý]
dVec2 qo; //ÓÍÁ÷Áż,m^3/d [ŇťżÚžŽŇť×éĘý]
dVec2 qg; //ĆřÁ÷Áż,m^3/d [ŇťżÚžŽŇť×éĘý]
dVec2 qw; //ËŽÁ÷Áż,m^3/d [ŇťżÚžŽŇť×éĘý]
}Rate;
struct Pressure //ŃšÁŚĘýžÝ
{
dVec2 t; //Ęąźä, h [ŇťżÚžŽŇť×éĘý]
dVec2 p; //ŃšÁŚ, MPa [ŇťżÚžŽŇť×éĘý]
}Pressure;
struct CS //žŽ´˘ąíƤĘýžÝ
{
dVec1 C; //žŽ´˘, m^3/MPa [ŇťżÚžŽŇť¸öĘý]
dVec1 S; //ąíƤ, [ŇťżÚžŽŇť¸öĘý]
}CS;
struct PVT //Á÷ĚĺĐÔÖĘĘýžÝ
{
dVec1 p; //ŃšÁŚ, MPa
double pb; //ąĽşÍŃšÁŚ, MPa
dVec1 Rso; //ČÜ˝âĆřÓÍąČ, m^3/m^3
dVec1 Bo; //ÓÍĚĺťýĎľĘý, m^3/m^3
dVec1 Co; //ÓÍŃšËőĎľĘý, 1/MPa
dVec1 miuo; //ÓÍŐłśČ, mPaĄ¤s
dVec1 rouo; //ÓÍĂÜśČ, kg/m^3
dVec1 Rv; //ÄýÎöÓÍĆřąČ, m^3/m^3
dVec1 Bg; //ĆřĚĺťýĎľĘý, m^3/m^3
dVec1 Cg; //ĆřŃšËőĎľĘý, 1/MPa
dVec1 miug; //ĆřŐłśČ, mPaĄ¤s
dVec1 roug; //ĆřĂÜśČ, kg/m^3
dVec1 Z; //ĆřĆŤ˛îŇň×Ó, 1
dVec1 Rsw; //ČÜ˝âĆřËŽąČ, m^3/m^3
dVec1 Bw; //ËŽĚĺťýĎľĘý, m^3/m^3
dVec1 Cw; //ËŽŃšËőĎľĘý, 1/MPa
dVec1 miuw; //ËŽŐłśČ, mPaĄ¤s
dVec1 rouw; //ËŽĂÜśČ, kg/m^3
dVec1 V; //Îü¸˝ĆřÁż, m^3/kg
dVec1 k_kinitial; //Éř͸ÂĘąČ, 1
dVec1 Cf_Cfinitial; //ŃŇĘŻŃšËőĎľĘýąČ, 1
dVec1 So; //ÓÍąĽşÍśČ
dVec1 Kro; //ÓÍĎŕśÔÉř͸ÂĘ
dVec1 Sg; //ĆřąĽşÍśČ
dVec1 Krg; //ĆřĎŕśÔÉř͸ÂĘ
dVec1 Sw; //ËŽąĽşÍśČ
dVec1 Krw; //ËŽĎŕśÔÉř͸ÂĘ
}PVT;
struct Base //ťů´ĄĘýžÝ
{
double Pi; //łőʟњÁŚ, MPa
double Cti; //×ŰşĎŃšËőĎľĘý, 1/MPa
double Cf; //ŃŇĘŻŃšËőĎľĘý, 1/MPa
double Soi; //łőĘźşŹÓÍąĽşÍśČ
double Sgi; //łőĘźşŹĆřąĽşÍśČ
double Swi; //łőĘźşŹËŽąĽşÍśČ
dVec1 k; //Éř͸ÂĘ, D [Ňť¸öÍř¸ńľĽÔŞŇť¸öÖľ]
dVec1 phi; //ż×ĎśśČ, 1 [Ňť¸öÍř¸ńľĽÔŞŇť¸öÖľ]
dVec1 h; //´˘˛ăşńśČ, m [Ňť¸öÍř¸ńľĽÔŞŇť¸öÖľ]
double d; //ĘąźäÔöł¤Ö¸Ęý
double dt_Min; //×îĐĄĘąźäźä¸ô, h
double dt_Max; //×î´óĘąźäźä¸ô, h
}Base;
//łőĘźťŻ
HX_NWTM_MODEL_INPUT() {}
~HX_NWTM_MODEL_INPUT() {}
HX_NWTM_MODEL_INPUT(const HX_NWTM_GRID_OUTPUT2& p0)
{
T =1;
GRID = p0;
Rate.t.resize(5);
Rate.qo.resize(5);
Rate.qw.resize(5);
Rate.qg.resize(5);
Rate.t[0].resize(2); Rate.t[0][0] = 2000; Rate.t[0][1] = 500;
Rate.qo[0].resize(2); Rate.qo[0][0] = 10; Rate.qo[0][1] = 0;
Rate.qw[0].resize(2); Rate.qw[0][0] = 2; Rate.qw[0][1] = 0;
Rate.qg[0].resize(2); Rate.qg[0][0] = 20000; Rate.qg[0][1] = 0;
Rate.t[1].resize(0);
Rate.qo[1].resize(0);
Rate.qw[1].resize(0);
Rate.qg[1].resize(0);
Rate.t[2].resize(3); Rate.t[2][0] = 1000; Rate.t[2][1] = 1000; Rate.t[2][2] = 500;
Rate.qo[2].resize(3); Rate.qo[2][0] = 30; Rate.qo[2][1] = 40; Rate.qo[2][2] = 20;
Rate.qw[2].resize(3); Rate.qw[2][0] = 3; Rate.qw[2][1] = 4; Rate.qw[2][2] = 2;
Rate.qg[2].resize(3); Rate.qg[2][0] = 30000; Rate.qg[2][1] = 40000; Rate.qg[2][2] = 20000;
Rate.t[3].resize(2); Rate.t[3][0] = 1500; Rate.t[3][1] = 1000;
Rate.qo[3].resize(2); Rate.qo[3][0] = 30; Rate.qo[3][1] = 20;
Rate.qw[3].resize(2); Rate.qw[3][0] = 5; Rate.qw[3][1] = 2;
Rate.qg[3].resize(2); Rate.qg[3][0] = 50000; Rate.qg[3][1] = 20000;
Rate.t[4].resize(2); Rate.t[4][0] = 1000; Rate.t[4][1] = 1500;
Rate.qo[4].resize(2); Rate.qo[4][0] = -50; Rate.qo[4][1] = -60;
Rate.qw[4].resize(2); Rate.qw[4][0] = -2; Rate.qw[4][1] = -5;
Rate.qg[4].resize(2); Rate.qg[4][0] = -20000; Rate.qg[4][1] = -50000;
Pressure.t.resize(0);
Pressure.p.resize(0);
CS.C.resize(5);
CS.C[0] = 0.1; CS.C[1] = 0.1; CS.C[2] = 0.1; CS.C[3] = 0.1; CS.C[4] = 0.1;
CS.S.resize(5);
CS.S[0] = 0.1; CS.S[1] = 0.1; CS.S[2] = 0.1; CS.S[3] = 0.1; CS.S[4] = 0.1;
PVT.p = dVec1(200, 0); for (int i = 0; i < 200; ++i) { PVT.p[i] = (i + 1.0); }
PVT.pb = 40.0;
PVT.Rso = dVec1(200, 0);
PVT.Bo = dVec1(200, 1.2);
PVT.Co = dVec1(200, 5e-4);
PVT.miuo = dVec1(200, 0.5);
PVT.rouo = dVec1(200, 800);
PVT.Rv = dVec1(200, 0);
PVT.Bg = dVec1(200, 5e-3);
PVT.Cg = dVec1(200, 2e-2);
PVT.miug = dVec1(200, 2e-2);
PVT.roug = dVec1(200, 200);
PVT.Z = dVec1(200, 1);
PVT.Rsw = dVec1(200, 0);
PVT.Bw = dVec1(200, 1.05);
PVT.Cw = dVec1(200, 1e-4);
PVT.miuw = dVec1(200, 0.8);
PVT.rouw = dVec1(200, 1000);
PVT.V = dVec1(200, 0);
PVT.k_kinitial = dVec1(200, 1);
PVT.Cf_Cfinitial = dVec1(200, 1);
PVT.So = dVec1(81, 0); for (int i = 0; i < 81; ++i) { PVT.So[i] = (0.1+i*0.01); }
PVT.Kro = dVec1(81, 0); for (int i = 0; i < 81; ++i) { PVT.Kro[i] = (i*0.0125); }
PVT.Krw = dVec1(81, 0); for (int i = 0; i < 81; ++i) { PVT.Krw[i] = (1 - i * 0.0125); }
PVT.Sg = dVec1(100, 0);
PVT.Krg = dVec1(100, 0);
PVT.Sw = dVec1(100, 0);
Base.Pi = 40.0;
Base.Cti = 1e-3;
Base.Cf = 1e-4;
Base.Soi = 0.8;
Base.Sgi = 0.0;
Base.Swi = 0.2;
Base.k = dVec1(p0.Trinodexy.size(), 0.001);
Base.phi = dVec1(p0.Trinodexy.size(), 0.1);
Base.h = dVec1(p0.Trinodexy.size(), 10);
Base.d = 1.05;
Base.dt_Min = 0.0025;
Base.dt_Max = 12.5;
}
};
//ĘýÖľĘÔžŽÄŁĐÍÇó˝âĆ÷Ęäłö˛ÎĘý˝áššĚĺ
struct HX_NWTM_MODEL_OUTPUT
{
dVec1 t; //Ęąźä, h
dVec2 pw; //žŽľ×ŃšÁŚ, MPa [ŇťżÚžŽŇť×éĘý]
dVec2 p; //ŃšÁڎ֞ź, MPa [Ňť¸öĘąźäŇť×éĘý]
dVec2 So; //ÓÍąĽşÍśČˇÖ˛ź [Ňť¸öĘąźäŇť×éĘý]
dVec2 Sg; //ĆřąĽşÍśČˇÖ˛ź [Ňť¸öĘąźäŇť×éĘý]
dVec2 Sw; //ËŽąĽşÍśČˇÖ˛ź [Ňť¸öĘąźäŇť×éĘý]
dVec2 k; //Éř͸Âʡֲź,mD [Ňť¸öĘąźäŇť×éĘý]
HX_NWTM_MODEL_OUTPUT() {}
~HX_NWTM_MODEL_OUTPUT() {}
};
HX_API void HX_NWTM_GRID(HX_NWTM_GRID_OUTPUT1& p1, HX_NWTM_GRID_OUTPUT2& p2, const HX_NWTM_GRID_INPUT& p0, std::string LIC); //ĘýÖľĘÔžŽÍř¸ń˝ÓżÚ
HX_API void HX_NWTM_KRINGING(HX_KRING_OUTPUT& p1, const HX_KRING_INPUT p0, std::string LIC); //ĘýÖľĘÔžŽˇÇžůÖĘĐÔźĆËă˝ÓżÚ
HX_API void HX_NWTM_MODEL(HX_NWTM_MODEL_OUTPUT& p1, const HX_NWTM_MODEL_INPUT& p0, std::string LIC); //ĘýÖľĘÔžŽÄŁĐÍÇó˝âĆ÷˝ÓżÚ