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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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); //ĘýÖľĘÔžŽÄŁĐÍÇó˝âĆ÷˝ÓżÚ