# 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 ; //<2F> <> ά<EFBFBD> <CEAC> <EFBFBD> <EFBFBD> :double
typedef std : : vector < std : : vector < double > > dVec2 ; //<2F> <> ά<EFBFBD> <CEAC> <EFBFBD> <EFBFBD> :double
typedef std : : vector < std : : vector < int > > iVec2 ; //<2F> <> ά<EFBFBD> <CEAC> <EFBFBD> <EFBFBD> :int
typedef std : : vector < double > dVec1 ; //һ ά<D2BB> <CEAC> <EFBFBD> <EFBFBD> :double
typedef std : : vector < int > iVec1 ; //һ ά<D2BB> <CEAC> <EFBFBD> <EFBFBD> :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 ] ;
}
}
//<2F> <> <EFBFBD> ṹ<EFBFBD> <E1B9B9>
struct point
{
//<2F> <> <EFBFBD> ṹ<EFBFBD> <E1B9B9>
double x ; double y ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
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 ; }
} ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> <E1B9B9>
struct cell
{
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ԫ<EFBFBD> ṹ<EFBFBD> <E1B9B9>
std : : vector < point > p ;
iVec2 pindex ;
iVec1 isplot ;
cell ( ) { }
~ cell ( ) { }
} ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> 㷨<EFBFBD> <E3B7A8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> <E1B9B9>
struct HX_NWTM_GRID_INPUT
{
// <20> <> <EFBFBD> <EFBFBD> <F1BBAEB7> 㷨<EFBFBD> <E3B7A8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> <E1B9B9>
dVec2 Boundary ; //3D:{x0, y0, z0, x1, y1, z1} //2D:{x0, y0, x1, y1} <20> ߽<EFBFBD> <DFBD> <EFBFBD> <EFBFBD> <EFBFBD>
dVec2 VerticalWell ; //3D:{x0, y0, z0, x1, y1, z1, rw} //2D:{x0, y0, x1, y1, rw} ֱ<> <D6B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
dVec2 HorizontalWell ; //3D:{x0, y0, z0, x1, y1, z1, rw} ˮƽ <CBAE> <C6BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
dVec2 FractureVerticalWell ; //3D:{x0, y0, z0, x1, y1, z1, wf} //2D:{x0, y0, x1, y1, wf, FC} ѹ<> <D1B9> ֱ<EFBFBD> <D6B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (wf<77> ѷ<EFBFBD> <D1B7> <EFBFBD> <EFBFBD> <EFBFBD> ,m,FC,<2C> ѷ쵼<D1B7> <ECB5BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ,mD.m(FCΪ0ʱΪ<CAB1> <CEAA> <EFBFBD> <EFBFBD> <DEB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 0ʱΪ<CAB1> <CEAA> <EFBFBD> <EFBFBD> <DEB5> <EFBFBD> ))
dVec3 MultistageFracturedHorizontalWell ; //3D:{x0, y0, z0, x1, y1, z1, wf} //2D:{x0, y0, x1, y1, wf, FC} <20> ༶ѹ<E0BCB6> <D1B9> ˮƽ <CBAE> <C6BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (wf<77> ѷ<EFBFBD> <D1B7> <EFBFBD> <EFBFBD> <EFBFBD> ,m,FC,<2C> ѷ쵼<D1B7> <ECB5BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ,mD.m(FCΪ0ʱΪ<CAB1> <CEAA> <EFBFBD> <EFBFBD> <DEB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 0ʱΪ<CAB1> <CEAA> <EFBFBD> <EFBFBD> <DEB5> <EFBFBD> ))
dVec2 InclinedWell ; //3D:{x0, y0, z0, x1, y1, z1, rw} б <> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
dVec2 Fault ; //3D:{x0, y0, z0, x1, y1, z1} //2D:{x0, y0, x1, y1} <20> ϲ <EFBFBD> <CFB2> <EFBFBD> <EFBFBD> <EFBFBD>
double GridControl ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> <D0A1> <EFBFBD> Ʋ<EFBFBD> <C6B2> <EFBFBD>
int D ; // ά<> <CEAC>
//Ĭ<> ϳ <EFBFBD> ʼ <EFBFBD> <CABC>
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 ( ) { }
} ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> 㷨<EFBFBD> <E3B7A8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> <E1B9B9> (<28> <> ͼ<EFBFBD> <CDBC> )
struct HX_NWTM_GRID_OUTPUT1
{
cell TRI_cell ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cell PEBI_cell ; //PEBI<42> <49> <EFBFBD> <EFBFBD>
HX_NWTM_GRID_OUTPUT1 ( ) { }
~ HX_NWTM_GRID_OUTPUT1 ( ) { }
} ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> 㷨<EFBFBD> <E3B7A8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> <E1B9B9> (ģ<> <C4A3> <EFBFBD> <EFBFBD> )
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<4E> <47> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> <E1B9B9>
struct HX_KRING_INPUT
{
double nugget ; //<2F> <> <EFBFBD> <EFBFBD> ֵ:<3A> <> ʾ <EFBFBD> ռ <EFBFBD> <D5BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 봦<EFBFBD> ı <EFBFBD> <C4B1> <EFBFBD> <EFBFBD> ̶ȣ <CCB6> <C8A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> ڲ<EFBFBD> <DAB2> <EFBFBD> <EFBFBD> ߶ȵ<DFB6> <C8B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֮<EFBFBD> <D6AE>
double sill ; //<2F> <> ֵ̨:<3A> <> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD> <EEBAAF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӷ<EFBFBD> <D3B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȶ<EFBFBD> <C8B6> ļ<EFBFBD> <C4BC> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> ӳ<EFBFBD> <D3B3> <EFBFBD> <EFBFBD> <F2BBAFB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ܱ<EFBFBD> <DCB1> <EFBFBD> <EFBFBD> ̶<EFBFBD>
double range ; //<2F> <> <EFBFBD> <EFBFBD> :<3A> <> ʾ <EFBFBD> ռ <EFBFBD> <D5BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ե<EFBFBD> <D4B5> <EFBFBD> Ч<EFBFBD> <D0A7> <EFBFBD> 롣<EFBFBD> <EBA1A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 볬<EFBFBD> <EBB3AC> range ʱ<> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֮<EFBFBD> 䲻<EFBFBD> پ<EFBFBD> <D9BE> пռ <D0BF> <D5BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
double model ; //<2F> <> <EFBFBD> <EFBFBD> <EEBAAF> ģ<EFBFBD> <C4A3> :ָ<> <D6B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EEBAAF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѧ<EFBFBD> <D1A7> ʽ <EFBFBD> <CABD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ռ <EFBFBD> <D5BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ı 仯<C4B1> <E4BBAF> <EFBFBD> <EFBFBD> {, , }
//<2F> <> ˹ģ<CBB9> <C4A3> SPHERICAL(0)<29> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӳ<EFBFBD> ָ<EFBFBD> <D6B8> ˥<EFBFBD> <CBA5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Խ<EFBFBD> ǿ<EFBFBD> ı <EFBFBD> <C4B1> <EFBFBD>
//ָ<> <D6B8> ģ<EFBFBD> <C4A3> EXPONENTIAL(1)<29> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Կ<EFBFBD> <D4BF> <EFBFBD> ˥<EFBFBD> <CBA5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ھ ֲ<DABE> <D6B2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Խϴ<D4BD> <CFB4> ı <EFBFBD> <C4B1> <EFBFBD>
//<2F> <> ״ģ<D7B4> <C4A3> GAUSSIAN(2)<29> <> <EFBFBD> ڱ<EFBFBD> <DAB1> <EFBFBD> <EFBFBD> ڳ<EFBFBD> <DAB3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߱仯<DFB1> <E4BBAF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̺<EFBFBD> <CCBA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <CEAA>
dVec2 p ; //<2F> <> ֵ<EFBFBD> <D6B5>
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<4E> <47> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> <E1B9B9>
struct HX_KRING_OUTPUT
{
dVec1 v ;
HX_KRING_OUTPUT ( ) { }
~ HX_KRING_OUTPUT ( ) { }
} ;
//<2F> <> ֵ<EFBFBD> Ծ<EFBFBD> ģ<EFBFBD> <C4A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> <E1B9B9>
struct HX_NWTM_MODEL_INPUT
{
int T ; //1:<3A> ͵<EFBFBD> <CDB5> ೣ<EFBFBD> <E0B3A3> pvt; 2:<3A> ͵<EFBFBD> <CDB5> <EFBFBD> <EFBFBD> 仯pvt; 3:ˮ<> <CBAE> <EFBFBD> ೣ<EFBFBD> <E0B3A3> pvt; 4:ˮ<> <CBAE> <EFBFBD> <EFBFBD> <EFBFBD> 仯pvt; 5:<3A> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 仯pvt; 6:<3A> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> ; 7:<3A> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ; 8:<3A> <> ˮ<EFBFBD> <CBAE> <EFBFBD> <EFBFBD> ; 9:<3A> <> ˮ<EFBFBD> <CBAE> <EFBFBD> <EFBFBD> ; 10:<3A> <> <EFBFBD> <EFBFBD> ˮ<EFBFBD> <CBAE> <EFBFBD> <EFBFBD>
HX_NWTM_GRID_OUTPUT2 GRID ;
struct Rate //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
{
dVec2 t ; //ʱ<> <CAB1> , h [һ <> ھ <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
dVec2 qo ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ,m^3/d [һ <> ھ <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
dVec2 qg ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ,m^3/d [һ <> ھ <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
dVec2 qw ; //ˮ<> <CBAE> <EFBFBD> <EFBFBD> ,m^3/d [һ <> ھ <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
} Rate ;
struct Pressure //ѹ<> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
{
dVec2 t ; //ʱ<> <CAB1> , h [һ <> ھ <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
dVec2 p ; //ѹ<> <D1B9> , MPa [һ <> ھ <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
} Pressure ;
struct CS //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƥ<EFBFBD> <C6A4> <EFBFBD> <EFBFBD>
{
dVec1 C ; //<2F> <> <EFBFBD> <EFBFBD> , m^3/MPa [һ <> ھ <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
dVec1 S ; //<2F> <> Ƥ, [һ <> ھ <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
} CS ;
struct PVT //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
{
dVec1 p ; //ѹ<> <D1B9> , MPa
double pb ; //<2F> <> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> , MPa
dVec1 Rso ; //<2F> ܽ<EFBFBD> <DCBD> <EFBFBD> <EFBFBD> ͱ<EFBFBD> , m^3/m^3
dVec1 Bo ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϵ<EFBFBD> <CFB5> , m^3/m^3
dVec1 Co ; //<2F> <> ѹ<EFBFBD> <D1B9> ϵ<EFBFBD> <CFB5> , 1/MPa
dVec1 miuo ; //<2F> <> ճ<EFBFBD> <D5B3> , mPa<50> <61> s
dVec1 rouo ; //<2F> <> <EFBFBD> ܶ<EFBFBD> , kg/m^3
dVec1 Rv ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , m^3/m^3
dVec1 Bg ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϵ<EFBFBD> <CFB5> , m^3/m^3
dVec1 Cg ; //<2F> <> ѹ<EFBFBD> <D1B9> ϵ<EFBFBD> <CFB5> , 1/MPa
dVec1 miug ; //<2F> <> ճ<EFBFBD> <D5B3> , mPa<50> <61> s
dVec1 roug ; //<2F> <> <EFBFBD> ܶ<EFBFBD> , kg/m^3
dVec1 Z ; //<2F> <> ƫ<EFBFBD> <C6AB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 1
dVec1 Rsw ; //<2F> ܽ<EFBFBD> <DCBD> <EFBFBD> ˮ<EFBFBD> <CBAE> , m^3/m^3
dVec1 Bw ; //ˮ<> <CBAE> <EFBFBD> <EFBFBD> ϵ<EFBFBD> <CFB5> , m^3/m^3
dVec1 Cw ; //ˮѹ<CBAE> <D1B9> ϵ<EFBFBD> <CFB5> , 1/MPa
dVec1 miuw ; //ˮճ<CBAE> <D5B3> , mPa<50> <61> s
dVec1 rouw ; //ˮ<> ܶ<EFBFBD> , kg/m^3
dVec1 V ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , m^3/kg
dVec1 k_kinitial ; //<2F> <> <EFBFBD> ʱ<EFBFBD> , 1
dVec1 Cf_Cfinitial ; //<2F> <> ʯѹ<CAAF> <D1B9> ϵ<EFBFBD> <CFB5> <EFBFBD> <EFBFBD> , 1
dVec1 So ; //<2F> ͱ<EFBFBD> <CDB1> Ͷ<EFBFBD>
dVec1 Kro ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <CDB8>
dVec1 Sg ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> Ͷ<EFBFBD>
dVec1 Krg ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <CDB8>
dVec1 Sw ; //ˮ<> <CBAE> <EFBFBD> Ͷ<EFBFBD>
dVec1 Krw ; //ˮ<> <CBAE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <CDB8>
} PVT ;
struct Base //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
{
double Pi ; //<2F> <> ʼ ѹ<CABC> <D1B9> , MPa
double Cti ; //<2F> ۺ<EFBFBD> ѹ<EFBFBD> <D1B9> ϵ<EFBFBD> <CFB5> , 1/MPa
double Cf ; //<2F> <> ʯѹ<CAAF> <D1B9> ϵ<EFBFBD> <CFB5> , 1/MPa
double Soi ; //<2F> <> ʼ <EFBFBD> <CABC> <EFBFBD> ͱ<EFBFBD> <CDB1> Ͷ<EFBFBD>
double Sgi ; //<2F> <> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ͷ<EFBFBD>
double Swi ; //<2F> <> ʼ <EFBFBD> <CABC> ˮ<EFBFBD> <CBAE> <EFBFBD> Ͷ<EFBFBD>
dVec1 k ; //<2F> <> <EFBFBD> <CDB8> , D [һ <> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ԫһ <D4AA> <D2BB> ֵ]
dVec1 phi ; //<2F> <> ϶<EFBFBD> <CFB6> , 1 [һ <> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ԫһ <D4AA> <D2BB> ֵ]
dVec1 h ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , m [һ <> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ԫһ <D4AA> <D2BB> ֵ]
double d ; //ʱ<> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ<EFBFBD> <D6B8>
double dt_Min ; //<2F> <> С ʱ<D0A1> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , h
double dt_Max ; //<2F> <> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , h
} Base ;
//<2F> <> ʼ <EFBFBD> <CABC>
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 ;
}
} ;
//<2F> <> ֵ<EFBFBD> Ծ<EFBFBD> ģ<EFBFBD> <C4A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> <E1B9B9>
struct HX_NWTM_MODEL_OUTPUT
{
dVec1 t ; //ʱ<> <CAB1> , h
dVec2 pw ; //<2F> <> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> , MPa [һ <> ھ <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
dVec2 p ; //ѹ<> <D1B9> <EFBFBD> ֲ<EFBFBD> , MPa [һ <> <D2BB> ʱ<EFBFBD> <CAB1> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
dVec2 So ; //<2F> ͱ<EFBFBD> <CDB1> Ͷȷֲ<C8B7> [һ <> <D2BB> ʱ<EFBFBD> <CAB1> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
dVec2 Sg ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> Ͷȷֲ<C8B7> [һ <> <D2BB> ʱ<EFBFBD> <CAB1> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
dVec2 Sw ; //ˮ<> <CBAE> <EFBFBD> Ͷȷֲ<C8B7> [һ <> <D2BB> ʱ<EFBFBD> <CAB1> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
dVec2 k ; //<2F> <> <EFBFBD> ʷֲ<CAB7> ,mD [һ <> <D2BB> ʱ<EFBFBD> <CAB1> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ]
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 ) ; //<2F> <> ֵ<EFBFBD> Ծ<EFBFBD> <D4BE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿ<EFBFBD>
HX_API void HX_NWTM_KRINGING ( HX_KRING_OUTPUT & p1 , const HX_KRING_INPUT p0 , std : : string LIC ) ; //<2F> <> ֵ<EFBFBD> Ծ<EFBFBD> <D4BE> Ǿ<EFBFBD> <C7BE> <EFBFBD> <EFBFBD> Լ<EFBFBD> <D4BC> <EFBFBD> <EFBFBD> ӿ<EFBFBD>
HX_API void HX_NWTM_MODEL ( HX_NWTM_MODEL_OUTPUT & p1 , const HX_NWTM_MODEL_INPUT & p0 , std : : string LIC ) ; //<2F> <> ֵ<EFBFBD> Ծ<EFBFBD> ģ<EFBFBD> <C4A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿ<EFBFBD>