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/V3/main.cpp

652 lines
27 KiB
C++

#include"pch.h"
#include <sstream>
#include <string>
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
static int g_orgStdout = -1;
static FILE* g_nulPipe = nullptr;
void EnterSilentDllMode()
{
// <20><><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_orgStdout = _dup(_fileno(stdout));
// fopen_s <20><><EFBFBD><EFBFBD> fopen<65><6E><EFBFBD>򿪿<EFBFBD><F2BFAABF>豸 NUL
errno_t err;
err = fopen_s(&g_nulPipe, "NUL", "w");
if (err == 0 && g_nulPipe != nullptr)
{
_dup2(_fileno(g_nulPipe), _fileno(stdout));
_dup2(_fileno(g_nulPipe), _fileno(stderr));
}
}
void LeaveSilentDllMode()
{
// <20>ָ<EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>
if (g_orgStdout != -1)
{
_dup2(g_orgStdout, _fileno(stdout));
_dup2(g_orgStdout, _fileno(stderr));
_close(g_orgStdout);
g_orgStdout = -1;
}
// <20>رտ<D8B1><D5BF>ļ<EFBFBD><C4BC><EFBFBD>
if (g_nulPipe != nullptr)
{
fclose(g_nulPipe);
g_nulPipe = nullptr;
}
}
void Write2DVectorToCSV(const std::vector<std::vector<double>>& data, const std::string& filename) {
std::ofstream file(filename.c_str()); // VS2010<31><30>ʹ<EFBFBD><CAB9>.c_str()
if (file.is_open()) {
for (size_t row = 0; row < data.size(); ++row) {
for (size_t col = 0; col < data[row].size(); ++col) {
// <20><><EFBFBD>ù̶<C3B9>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʽ<EFBFBD>;<EFBFBD><CDBE><EFBFBD>
file << std::fixed << std::setprecision(15) << data[row][col];
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ʱ<EFBFBD><CAB1><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>
if (col != data[row].size() - 1) {
file << ",";
}
}
file << "\n"; // <20><><EFBFBD>з<EFBFBD>
}
file.close();
}
}
void Write1DVectorToCSV(const std::vector<double>& data, const std::string& filename, int precision = 15) {
std::ofstream file(filename.c_str());
if (file.is_open()) {
file << std::fixed << std::setprecision(precision);
for (size_t i = 0; i < data.size(); ++i) {
file << data[i] << "\n"; // ÿ<><C3BF>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD>һ<EFBFBD><D2BB>
}
file.close();
}
}
bool readCSVColumn(const std::string& filename, int columnIndex, std::vector<double>& data) {
std::ifstream file(filename);
if (!file.is_open()) {
std::cerr << "<EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>: " << filename << std::endl;
return false;
}
std::string line;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
if (file.good()) {
std::getline(file, line);
}
data.resize(0);
// <20><><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (std::getline(file, line)) {
std::istringstream ss(line);
std::string cell;
int currentColumn = 0;
bool columnFound = false;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>е<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
while (std::getline(ss, cell, ',')) {
if (currentColumn == columnIndex) {
try {
// ת<><D7AA>Ϊdouble<6C><65><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>vector
data.push_back(std::stod(cell));
}
catch (const std::invalid_argument& e) {
std::cerr << "ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: " << cell << " <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << std::endl;
return false;
}
columnFound = true;
break;
}
currentColumn++;
}
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!columnFound) {
std::cerr << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><> " << data.size() + 1 << " <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> " << columnIndex << std::endl;
}
}
file.close();
return true;
}
int main()
{
set_ilu_reuse_steps(5);
int solvetype[] = { 1,2 };
std::string solvetypename[] = {"<EFBFBD>¿<EFBFBD>","ԭ<EFBFBD><EFBFBD>"};
int omp_threads[] = { 1, 2, 4, 8, 16 };
//<2F><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int welltype;//1Ϊһ<CEAA><D2BB>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>һ<CEAA><D2BB>ѹ<EFBFBD><D1B9>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>һ<CEAA>ڶ<EFBFBD><DAB6><EFBFBD>ѹ<EFBFBD><D1B9>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><34><CEAA><EFBFBD>ھ<EFBFBD>(<28><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>)<29><>5Ϊ50<35><30>ֱ<EFBFBD><D6B1>
welltype = 1;
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int flowtype;//1Ϊ<31>͵<EFBFBD><CDB5><EFBFBD><E0B3A3>pvt<76><74>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><32>͵<EFBFBD><CDB5><EFBFBD><E0B3A3>pvt<76><74><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><33>͵<EFBFBD><CDB5><EFBFBD><E0B3A3>pvt<76><74><EFBFBD><EFBFBD>ʮ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><34>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>仯pvt<76><74>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>5Ϊˮ<CEAA><CBAE><EFBFBD><EFBFBD><E0B3A3>pvt<76><74>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>6Ϊˮ<CEAA><CBAE><EFBFBD><EFBFBD><EFBFBD>仯pvt<76><74>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><37><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯pvt<76><74>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><38><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><39><CEAA>ˮ<EFBFBD><CBAE><EFBFBD>һ<E0A3A8>ھ<EFBFBD><DABE><EFBFBD>
flowtype = 1;
const int WT[] = { 1,1,2,2,3,3,4,5 };
const int FT[] = { 1,9,1,9,1,9,2,3 };
std::string name[] =
{
"1-1<>͵<EFBFBD><CDB5><EFBFBD><E0B3A3>pvt(1<><31>ֱ<EFBFBD><D6B1>)",
"1-9<><39>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD> (1<><31>ֱ<EFBFBD><D6B1>)",
"2-1<>͵<EFBFBD><CDB5><EFBFBD><E0B3A3>pvt(1<><31>ѹ<EFBFBD><D1B9>ֱ<EFBFBD><D6B1>)",
"2-9<><39>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD> (1<><31>ѹ<EFBFBD><D1B9>ֱ<EFBFBD><D6B1>)",
"3-1<>͵<EFBFBD><CDB5><EFBFBD><E0B3A3>pvt(1<>ڶ<EFBFBD><DAB6><EFBFBD>ѹ<EFBFBD><D1B9>ˮƽ<CBAE><C6BD>)",
"3-9<><39>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD> (1<>ڶ<EFBFBD><DAB6><EFBFBD>ѹ<EFBFBD><D1B9>ˮƽ<CBAE><C6BD>)",
"4-2<>͵<EFBFBD><CDB5><EFBFBD><E0B3A3>pvt(5<>ھ<EFBFBD>)",
"5-3<>͵<EFBFBD><CDB5><EFBFBD><E0B3A3>pvt(50<35><30>ֱ<EFBFBD><D6B1>)"
};
for (int type = 0; type < 2; ++type){
set_solvetype(solvetype[type]);
std::cout << solvetypename[type] << "\n";
int threads ;
if (solvetype[type] == 1) {
threads = 5;
}
else if (solvetype[type] == 2) {
threads = 1;
}
for (int thr = 0; thr < threads; ++thr)
{
set_omp_threads(omp_threads[thr]);
std::cout << omp_threads[thr] << "<EFBFBD>̲߳<EFBFBD><EFBFBD><EFBFBD>\n";
for (int iiii = 0; iiii < 8; ++iiii)
{
welltype = WT[iiii];
flowtype = FT[iiii];
//<2F>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD>
int feijunzhi = 0;//0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE>ʣ<EFBFBD><31><CEAA><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD>
HX_NWTM_GRID_INPUT p0;
HX_NWTM_GRID_OUTPUT1 p1;
HX_NWTM_GRID_OUTPUT2 p2;
//<2F><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dVec1 a(3), b(4), c(5), d(6);
if (welltype == 1) {
//һ<><D2BB>ֱ<EFBFBD><D6B1>
p0.Boundary.resize(4);
b[0] = -1500.0; b[1] = -1500.0; b[2] = -1500.0; b[3] = 1500.0; p0.Boundary[0] = b;
b[0] = -1500.0; b[1] = 1500.0; b[2] = 1500.0; b[3] = 1500.0; p0.Boundary[1] = b;
b[0] = 1500.0; b[1] = 1500.0; b[2] = 1500.0; b[3] = -1500.0; p0.Boundary[2] = b;
b[0] = 1500.0; b[1] = -1500.0; b[2] = -1500.0; b[3] = -1500.0; p0.Boundary[3] = b;
p0.VerticalWell.resize(1);
a[0] = 0; a[1] = 0; a[2] = 0.1; p0.VerticalWell[0] = a;
p0.HorizontalWell.resize(0);
p0.FractureVerticalWell.resize(0);
p0.MultistageFracturedHorizontalWell.resize(0);
p0.InclinedWell.resize(0);
p0.Fault.resize(0);
}
else if (welltype == 2) {
//һ<><D2BB>ѹ<EFBFBD><D1B9>ֱ<EFBFBD><D6B1>
p0.Boundary.resize(4);
b[0] = -1500.0; b[1] = -1500.0; b[2] = -1500.0; b[3] = 1500.0; p0.Boundary[0] = b;
b[0] = -1500.0; b[1] = 1500.0; b[2] = 1500.0; b[3] = 1500.0; p0.Boundary[1] = b;
b[0] = 1500.0; b[1] = 1500.0; b[2] = 1500.0; b[3] = -1500.0; p0.Boundary[2] = b;
b[0] = 1500.0; b[1] = -1500.0; b[2] = -1500.0; b[3] = -1500.0; p0.Boundary[3] = b;
p0.VerticalWell.resize(0);
p0.HorizontalWell.resize(0);
p0.FractureVerticalWell.resize(1);
d[0] = -200; d[1] = 0; d[2] = 200; d[3] = 0; d[4] = 0.05; d[5] = 100.0; p0.FractureVerticalWell[0] = d;
p0.MultistageFracturedHorizontalWell.resize(0);
p0.InclinedWell.resize(0);
p0.Fault.resize(0);
}
else if (welltype == 3) {
//һ<>ڶ<EFBFBD><DAB6><EFBFBD>ѹ<EFBFBD><D1B9>ˮƽ<CBAE><C6BD>
p0.Boundary.resize(4);
b[0] = -1500.0; b[1] = -1500.0; b[2] = -1500.0; b[3] = 1500.0; p0.Boundary[0] = b;
b[0] = -1500.0; b[1] = 1500.0; b[2] = 1500.0; b[3] = 1500.0; p0.Boundary[1] = b;
b[0] = 1500.0; b[1] = 1500.0; b[2] = 1500.0; b[3] = -1500.0; p0.Boundary[2] = b;
b[0] = 1500.0; b[1] = -1500.0; b[2] = -1500.0; b[3] = -1500.0; p0.Boundary[3] = b;
p0.VerticalWell.resize(0);
p0.HorizontalWell.resize(0);
p0.FractureVerticalWell.resize(0);
p0.MultistageFracturedHorizontalWell.resize(1);
p0.MultistageFracturedHorizontalWell[0].resize(5, dVec1(6));
d[0] = -400; d[1] = -200; d[2] = -400; d[3] = 200; d[4] = 0.05; d[5] = 100; p0.MultistageFracturedHorizontalWell[0][0] = d;
d[0] = -200; d[1] = -200; d[2] = -200; d[3] = 200; d[4] = 0.05; d[5] = 100; p0.MultistageFracturedHorizontalWell[0][1] = d;
d[0] = 0; d[1] = -200; d[2] = 0; d[3] = 200; d[4] = 0.05; d[5] = 100; p0.MultistageFracturedHorizontalWell[0][2] = d;
d[0] = 200; d[1] = -200; d[2] = 200; d[3] = 200; d[4] = 0.05; d[5] = 100; p0.MultistageFracturedHorizontalWell[0][3] = d;
d[0] = 400; d[1] = -200; d[2] = 400; d[3] = 200; d[4] = 0.05; d[5] = 100; p0.MultistageFracturedHorizontalWell[0][4] = d;
p0.InclinedWell.resize(0);
p0.Fault.resize(0);
}
else if (welltype == 4) {
//<2F><><EFBFBD>ھ<EFBFBD>(<28><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>)
p0.Boundary.resize(4);
b[0] = -1500.0; b[1] = -1500.0; b[2] = -1500.0; b[3] = 1500.0; p0.Boundary[0] = b;
b[0] = -1500.0; b[1] = 1500.0; b[2] = 1500.0; b[3] = 1500.0; p0.Boundary[1] = b;
b[0] = 1500.0; b[1] = 1500.0; b[2] = 1500.0; b[3] = -1500.0; p0.Boundary[2] = b;
b[0] = 1500.0; b[1] = -1500.0; b[2] = -1500.0; b[3] = -1500.0; p0.Boundary[3] = b;
p0.VerticalWell.resize(3);
a[0] = 0; a[1] = 0; a[2] = 0.1; p0.VerticalWell[0] = a;
a[0] = 1000; a[1] = 1000; a[2] = 0.1; p0.VerticalWell[1] = a;
a[0] = -1000; a[1] = -1000; a[2] = 0.1; p0.VerticalWell[2] = a;
p0.HorizontalWell.resize(0);
p0.FractureVerticalWell.resize(1);
d[0] = -200; d[1] = -200; d[2] = 200; d[3] = -200; d[4] = 0.05; d[5] = 0; p0.FractureVerticalWell[0] = d;
p0.MultistageFracturedHorizontalWell.resize(1);
p0.MultistageFracturedHorizontalWell[0].resize(3, dVec1(6));
d[0] = -600; d[1] = 600; d[2] = -400; d[3] = 600; d[4] = 0.1; d[5] = 0; p0.MultistageFracturedHorizontalWell[0][0] = d;
d[0] = -600; d[1] = 400; d[2] = -400; d[3] = 400; d[4] = 0.1; d[5] = 0; p0.MultistageFracturedHorizontalWell[0][1] = d;
d[0] = -600; d[1] = 200; d[2] = -400; d[3] = 200; d[4] = 0.1; d[5] = 0; p0.MultistageFracturedHorizontalWell[0][2] = d;
p0.InclinedWell.resize(0);
p0.Fault.resize(1);
b[0] = -500; b[1] = 1000; b[2] = 500; b[3] = 500; p0.Fault[0] = b;
}
else if (welltype == 5) {
//50<35><30>ֱ<EFBFBD><D6B1>
p0.Boundary.resize(4);
b[0] = -1000.0; b[1] = -1000.0; b[2] = -1000.0; b[3] = 1000.0; p0.Boundary[0] = b;
b[0] = -1000.0; b[1] = 1000.0; b[2] = 1000.0; b[3] = 1000.0; p0.Boundary[1] = b;
b[0] = 1000.0; b[1] = 1000.0; b[2] = 1000.0; b[3] = -1000.0; p0.Boundary[2] = b;
b[0] = 1000.0; b[1] = -1000.0; b[2] = -1000.0; b[3] = -1000.0; p0.Boundary[3] = b;
p0.VerticalWell.resize(50);
a[0] = 766.32207856101854; a[1] = -408.4253100821785; a[2] = 0.108; p0.VerticalWell[0] = a;
a[0] = -359.11086885711029; a[1] = -242.17185988435722; a[2] = 0.108; p0.VerticalWell[1] = a;
a[0] = -396.28113134064483; a[1] = 618.18974488936828; a[2] = 0.108; p0.VerticalWell[2] = a;
a[0] = -844.38929572547772; a[1] = 859.25724767620932; a[2] = 0.108; p0.VerticalWell[3] = a;
a[0] = -631.69279373636357; a[1] = 620.26791301684102; a[2] = 0.108; p0.VerticalWell[4] = a;
a[0] = -858.84439780240791; a[1] = 333.48071142559911; a[2] = 0.108; p0.VerticalWell[5] = a;
a[0] = -844.38929572547772; a[1] = 609.87707237947734; a[2] = 0.108; p0.VerticalWell[6] = a;
a[0] = -639.95285206603785; a[1] = 867.56992018610026; a[2] = 0.108; p0.VerticalWell[7] = a;
a[0] = 764.25706397860017; a[1] = -190.2176566975379; a[2] = 0.108; p0.VerticalWell[8] = a;
a[0] = -410.73623341757479; a[1] = 867.56992018610026; a[2] = 0.108; p0.VerticalWell[9] = a;
a[0] = -121.63419187897284; a[1] = 98.647713021176514; a[2] = 0.108; p0.VerticalWell[10] = a;
a[0] = -152.6094106152517; a[1] = 364.65323333769061; a[2] = 0.108; p0.VerticalWell[11] = a;
a[0] = -152.6094106152517; a[1] = 620.26791301684102; a[2] = 0.108; p0.VerticalWell[12] = a;
a[0] = -361.17588343952877; a[1] = 102.80404927612199; a[2] = 0.108; p0.VerticalWell[13] = a;
a[0] = -844.38929572547772; a[1] = -231.78101924699342; a[2] = 0.108; p0.VerticalWell[14] = a;
a[0] = -156.73943978008879; a[1] = 875.88259269599121; a[2] = 0.108; p0.VerticalWell[15] = a;
a[0] = 138.55764550576896; a[1] = 890.42976958830059; a[2] = 0.108; p0.VerticalWell[16] = a;
a[0] = 446.24481828613784; a[1] = -439.59783199426988; a[2] = 0.108; p0.VerticalWell[17] = a;
a[0] = -846.45431030789632; a[1] = 61.240686726666581; a[2] = 0.108; p0.VerticalWell[18] = a;
a[0] = -142.28433770315883; a[1] = -223.46834673710214; a[2] = 0.108; p0.VerticalWell[19] = a;
a[0] = -375.63098551645885; a[1] = -472.84852203383423; a[2] = 0.108; p0.VerticalWell[20] = a;
a[0] = -602.78258958250342; a[1] = 354.2623927003267; a[2] = 0.108; p0.VerticalWell[21] = a;
a[0] = 431.78971620920788; a[1] = 624.42424927178672; a[2] = 0.108; p0.VerticalWell[22] = a;
a[0] = -834.06422281338484; a[1] = -474.92669016130685; a[2] = 0.108; p0.VerticalWell[23] = a;
a[0] = -836.12923739580344; a[1] = -747.16671486023938; a[2] = 0.108; p0.VerticalWell[24] = a;
a[0] = 813.81741395664631; a[1] = -693.13434354594744; a[2] = 0.108; p0.VerticalWell[25] = a;
a[0] = 458.63490578064966; a[1] = -718.07236107562062; a[2] = 0.108; p0.VerticalWell[26] = a;
a[0] = 409.07455580260353; a[1] = 873.80442456851847; a[2] = 0.108; p0.VerticalWell[27] = a;
a[0] = 124.10254342883854; a[1] = -454.14500888657915; a[2] = 0.108; p0.VerticalWell[28] = a;
a[0] = 138.55764550576896; a[1] = 96.569544893703778; a[2] = 0.108; p0.VerticalWell[29] = a;
a[0] = 101.38738302223419; a[1] = 611.95524050694985; a[2] = 0.108; p0.VerticalWell[30] = a;
a[0] = -373.56597093404037; a[1] = 360.49689708274514; a[2] = 0.108; p0.VerticalWell[31] = a;
a[0] = -604.8476041649219; a[1] = 79.944199873921661; a[2] = 0.108; p0.VerticalWell[32] = a;
a[0] = -611.0426479121777; a[1] = -219.31201048215667; a[2] = 0.108; p0.VerticalWell[33] = a;
a[0] = 448.30983286855667; a[1] = -202.68666546237455; a[2] = 0.108; p0.VerticalWell[34] = a;
a[0] = 735.34685982474002; a[1] = 880.03892895093713; a[2] = 0.108; p0.VerticalWell[35] = a;
a[0] = 107.58242676948976; a[1] = -724.30686545803894; a[2] = 0.108; p0.VerticalWell[36] = a;
a[0] = 150.94773300028032; a[1] = -196.45216107995623; a[2] = 0.108; p0.VerticalWell[37] = a;
a[0] = 762.19204939618135; a[1] = 113.19488991348589; a[2] = 0.108; p0.VerticalWell[38] = a;
a[0] = -125.76422104381015; a[1] = -470.77035390636138; a[2] = 0.108; p0.VerticalWell[39] = a;
a[0] = 452.43986203339387; a[1] = 366.73140146516357; a[2] = 0.108; p0.VerticalWell[40] = a;
a[0] = -350.85081052743578; a[1] = -751.32305111518485; a[2] = 0.108; p0.VerticalWell[41] = a;
a[0] = 122.03752884641995; a[1] = 354.2623927003267; a[2] = 0.108; p0.VerticalWell[42] = a;
a[0] = -608.9776333297591; a[1] = -447.91050450416094; a[2] = 0.108; p0.VerticalWell[43] = a;
a[0] = 407.0095412201847; a[1] = 113.19488991348589; a[2] = 0.108; p0.VerticalWell[44] = a;
a[0] = 731.21683065990283; a[1] = 636.89325803662314; a[2] = 0.108; p0.VerticalWell[45] = a;
a[0] = -121.63419187897284; a[1] = -724.30686545803894; a[2] = 0.108; p0.VerticalWell[46] = a;
a[0] = 289.3037100223255; a[1] = -925.88917382289742; a[2] = 0.108; p0.VerticalWell[47] = a;
a[0] = 737.41187440715862; a[1] = 366.73140146516357; a[2] = 0.108; p0.VerticalWell[48] = a;
a[0] = -611.0426479121777; a[1] = -730.54136984045726; a[2] = 0.108; p0.VerticalWell[49] = a;
p0.HorizontalWell.resize(0);
p0.FractureVerticalWell.resize(0);
p0.MultistageFracturedHorizontalWell.resize(0);
p0.InclinedWell.resize(0);
p0.Fault.resize(0);
}
p0.GridControl = 150.0;
p0.D = 2;
EnterSilentDllMode();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HX_NWTM_GRID(p1, p2, p0, "HX_license.dat");
HX_NWTM_MODEL_INPUT p3(p2);
HX_NWTM_MODEL_OUTPUT p4;
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (flowtype == 1) {
//<2F>͵<EFBFBD><CDB5><EFBFBD><E0B3A3>pvt<76><74>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
p3.T = 1;
p3.Rate.t.resize(1);
p3.Rate.qo.resize(1);
p3.Rate.t[0].resize(2); p3.Rate.t[0][0] = 2000; p3.Rate.t[0][1] = 500;
p3.Rate.qo[0].resize(2); p3.Rate.qo[0][0] = 20; p3.Rate.qo[0][1] = 0;
p3.CS.C.resize(1);
p3.CS.C[0] = 0;
p3.CS.S.resize(1);
p3.CS.S[0] = 0;
p3.PVT.p = dVec1(200, 0); for (int i = 0; i < 200; ++i) { p3.PVT.p[i] = (i + 1.0); }
p3.PVT.Bo = dVec1(200, 1.2);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB>ֵ
p3.PVT.miuo = dVec1(200, 0.5);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB>ֵ
p3.Base.Pi = 40.0;
p3.Base.Cti = 1e-3;
p3.Base.k = dVec1(p2.Trinodexy.size(), 0.001);
p3.Base.phi = dVec1(p2.Trinodexy.size(), 0.1);
p3.Base.h = dVec1(p2.Trinodexy.size(), 10);
p3.Base.d = 1.05;
p3.Base.dt_Min = 0.0025;
p3.Base.dt_Max = 12.5;
}
else if (flowtype == 2) {
//<2F>͵<EFBFBD><CDB5><EFBFBD><E0B3A3>pvt<76><74><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
p3.T = 1;
p3.Rate.t.resize(5);
p3.Rate.qo.resize(5);
p3.Rate.qw.resize(5);
p3.Rate.qg.resize(5);
p3.Rate.t[0].resize(2); p3.Rate.t[0][0] = 2000; p3.Rate.t[0][1] = 500;
p3.Rate.qo[0].resize(2); p3.Rate.qo[0][0] = 10; p3.Rate.qo[0][1] = 0;
p3.Rate.t[1].resize(0);
p3.Rate.qo[1].resize(0);
p3.Rate.t[2].resize(3); p3.Rate.t[2][0] = 1000; p3.Rate.t[2][1] = 1000; p3.Rate.t[2][2] = 500;
p3.Rate.qo[2].resize(3); p3.Rate.qo[2][0] = 30; p3.Rate.qo[2][1] = 40; p3.Rate.qo[2][2] = 20;
p3.Rate.t[3].resize(2); p3.Rate.t[3][0] = 1500; p3.Rate.t[3][1] = 1000;
p3.Rate.qo[3].resize(2); p3.Rate.qo[3][0] = 30; p3.Rate.qo[3][1] = 20;
p3.Rate.t[4].resize(2); p3.Rate.t[4][0] = 1000; p3.Rate.t[4][1] = 1500;
p3.Rate.qo[4].resize(2); p3.Rate.qo[4][0] = -50; p3.Rate.qo[4][1] = -60;
p3.Pressure.t.resize(0);
p3.Pressure.p.resize(0);
p3.CS.C.resize(5);
p3.CS.C[0] = 0.1; p3.CS.C[1] = 0.1; p3.CS.C[2] = 0.1; p3.CS.C[3] = 0.1; p3.CS.C[4] = 0.1;
p3.CS.S.resize(5);
p3.CS.S[0] = 0.1; p3.CS.S[1] = 0.1; p3.CS.S[2] = 0.1; p3.CS.S[3] = 0.1; p3.CS.S[4] = 0.1;
p3.PVT.p = dVec1(200, 0); for (int i = 0; i < 200; ++i) { p3.PVT.p[i] = (i + 1.0); }
p3.PVT.Bo = dVec1(200, 1.2);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB>ֵ
p3.PVT.miuo = dVec1(200, 0.5);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB>ֵ
p3.Base.Pi = 40.0;
p3.Base.Cti = 1e-3;
p3.Base.k = dVec1(p2.Trinodexy.size(), 0.001);
p3.Base.phi = dVec1(p2.Trinodexy.size(), 0.1);
p3.Base.h = dVec1(p2.Trinodexy.size(), 10);
p3.Base.d = 1.05;
p3.Base.dt_Min = 0.0025;
p3.Base.dt_Max = 12.5;
}
else if (flowtype == 3) {
//<2F>͵<EFBFBD><CDB5><EFBFBD><E0B3A3>pvt<76><74><EFBFBD><EFBFBD>ʮ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
p3.T = 1;
dVec1 t;
t.push_back(12);
t.push_back(12);
t.push_back(12);
t.push_back(48);
t.push_back(72);
p3.Rate.t.assign(50, t);
dVec1 q;
q.push_back(158.98699999999999);
q.push_back(190.785);
q.push_back(222.58199999999999);
q.push_back(238.48099999999999);
q.push_back(0.0);
p3.Rate.qo.assign(50, q);
p3.CS.C = dVec1(50, 0.01);
p3.CS.S = dVec1(50, 0);
p3.PVT.p = dVec1(200, 0); for (int i = 0; i < 200; ++i) { p3.PVT.p[i] = (i + 1.0); }
p3.PVT.Bo = dVec1(200, 1.07);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB>ֵ
p3.PVT.miuo = dVec1(200, 0.79);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB>ֵ
p3.Base.Pi = 40;
p3.Base.Cti = 0.43e-3;
p3.Base.k = dVec1(p2.Trinodexy.size(), 0.025);
p3.Base.phi = dVec1(p2.Trinodexy.size(), 0.1);
p3.Base.h = dVec1(p2.Trinodexy.size(), 10);
p3.Base.d = 1.05;
p3.Base.dt_Min = 0.0025;
p3.Base.dt_Max = 12.5;
}
else if (flowtype == 4) {
//<2F>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>仯pvt<76><74>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
p3.T = 2;
p3.Rate.t.resize(1);
p3.Rate.qo.resize(1);
p3.Rate.t[0].resize(2); p3.Rate.t[0][0] = 2000; p3.Rate.t[0][1] = 500;
p3.Rate.qo[0].resize(2); p3.Rate.qo[0][0] = 10; p3.Rate.qo[0][1] = 0;
p3.CS.C.resize(1);
p3.CS.C[0] = 0.1;
p3.CS.S.resize(1);
p3.CS.S[0] = 0.1;
p3.PVT.p = dVec1(200, 0); for (int i = 0; i < 200; ++i) { p3.PVT.p[i] = (i + 1.0); }
p3.PVT.Bo = dVec1(200, 1.2);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.PVT.miuo = dVec1(200, 0.5);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.PVT.Co = dVec1(200, 0.001);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.Base.Pi = 40.0;
p3.Base.Cf = 1e-3;
p3.Base.k = dVec1(p2.Trinodexy.size(), 0.001);
p3.Base.phi = dVec1(p2.Trinodexy.size(), 0.1);
p3.Base.h = dVec1(p2.Trinodexy.size(), 10);
p3.Base.d = 1.05;
p3.Base.dt_Min = 0.0025;
p3.Base.dt_Max = 12.5;
}
else if (flowtype == 5) {
//ˮ<><CBAE><EFBFBD><EFBFBD><E0B3A3>pvt<76><74>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
p3.T = 3;
p3.Rate.t.resize(1);
p3.Rate.qw.resize(1);
p3.Rate.t[0].resize(2); p3.Rate.t[0][0] = 2000; p3.Rate.t[0][1] = 500;
p3.Rate.qw[0].resize(2); p3.Rate.qw[0][0] = -10; p3.Rate.qw[0][1] = 0;
p3.CS.C.resize(1);
p3.CS.C[0] = 0.1;
p3.CS.S.resize(1);
p3.CS.S[0] = 0.1;
p3.PVT.p = dVec1(200, 0); for (int i = 0; i < 200; ++i) { p3.PVT.p[i] = (i + 1.0); }
p3.PVT.Bw = dVec1(200, 1.05);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB>ֵ
p3.PVT.miuw = dVec1(200, 0.8);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB>ֵ
p3.Base.Pi = 40.0;
p3.Base.Cti = 1e-3;
p3.Base.k = dVec1(p2.Trinodexy.size(), 0.001);
p3.Base.phi = dVec1(p2.Trinodexy.size(), 0.1);
p3.Base.h = dVec1(p2.Trinodexy.size(), 10);
p3.Base.d = 1.05;
p3.Base.dt_Min = 0.0025;
p3.Base.dt_Max = 12.5;
}
else if (flowtype == 6) {
//ˮ<><CBAE><EFBFBD><EFBFBD><EFBFBD>仯pvt<76><74>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
p3.T = 4;
p3.Rate.t.resize(1);
p3.Rate.qw.resize(1);
p3.Rate.t[0].resize(2); p3.Rate.t[0][0] = 2000; p3.Rate.t[0][1] = 500;
p3.Rate.qw[0].resize(2); p3.Rate.qw[0][0] = -10; p3.Rate.qw[0][1] = 0;
p3.CS.C.resize(1);
p3.CS.C[0] = 0.1;
p3.CS.S.resize(1);
p3.CS.S[0] = 0.1;
p3.PVT.p = dVec1(200, 0); for (int i = 0; i < 200; ++i) { p3.PVT.p[i] = (i + 1.0); }
p3.PVT.Bw = dVec1(200, 1.05);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.PVT.miuw = dVec1(200, 0.8);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.PVT.Cw = dVec1(200, 0.0001);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.Base.Pi = 40.0;
p3.Base.Cf = 1e-3;
p3.Base.k = dVec1(p2.Trinodexy.size(), 0.001);
p3.Base.phi = dVec1(p2.Trinodexy.size(), 0.1);
p3.Base.h = dVec1(p2.Trinodexy.size(), 10);
p3.Base.d = 1.05;
p3.Base.dt_Min = 0.0025;
p3.Base.dt_Max = 12.5;
}
else if (flowtype == 7) {
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯pvt<76><74>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
p3.T = 5;
p3.Rate.t.resize(1);
p3.Rate.qg.resize(1);
p3.Rate.t[0].resize(2); p3.Rate.t[0][0] = 2000; p3.Rate.t[0][1] = 500;
p3.Rate.qg[0].resize(2); p3.Rate.qg[0][0] = 50000; p3.Rate.qg[0][1] = 0;
p3.CS.C.resize(1);
p3.CS.C[0] = 0.1;
p3.CS.S.resize(1);
p3.CS.S[0] = 0.1;
p3.PVT.p = dVec1(200, 0); for (int i = 0; i < 200; ++i) { p3.PVT.p[i] = (i + 1.0); }
p3.PVT.Bg = dVec1(200, 5e-3);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.PVT.miug = dVec1(200, 2e-2);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.PVT.Cg = dVec1(200, 2e-2);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.Base.Pi = 40.0;
p3.Base.Cf = 1e-3;
p3.Base.k = dVec1(p2.Trinodexy.size(), 0.001);
p3.Base.phi = dVec1(p2.Trinodexy.size(), 0.1);
p3.Base.h = dVec1(p2.Trinodexy.size(), 10);
p3.Base.d = 1.05;
p3.Base.dt_Min = 0.0025;
p3.Base.dt_Max = 12.5;
}
else if (flowtype == 8) {
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
p3.T = 6;
p3.Rate.t.resize(1);
p3.Rate.qg.resize(1);
p3.Rate.t[0].resize(2); p3.Rate.t[0][0] = 2000; p3.Rate.t[0][1] = 500;
p3.Rate.qg[0].resize(2); p3.Rate.qg[0][0] = 50000; p3.Rate.qg[0][1] = 0;
p3.CS.C.resize(1);
p3.CS.C[0] = 0.1;
p3.CS.S.resize(1);
p3.CS.S[0] = 0.1;
p3.PVT.p = dVec1(200, 0); for (int i = 0; i < 200; ++i) { p3.PVT.p[i] = (i + 1.0); }
p3.PVT.Bg = dVec1(200, 5e-3);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.PVT.miug = dVec1(200, 2e-2);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.PVT.Cg = dVec1(200, 2e-2);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
p3.Base.Pi = 40.0;
p3.Base.Cf = 1e-3;
p3.Base.k = dVec1(p2.Trinodexy.size(), 0.001);
p3.Base.phi = dVec1(p2.Trinodexy.size(), 0.1);
p3.Base.h = dVec1(p2.Trinodexy.size(), 10);
p3.Base.d = 1.05;
p3.Base.dt_Min = 0.0025;
p3.Base.dt_Max = 12.5;
}
else if (flowtype == 9) {
//<2F><>ˮ<EFBFBD><CBAE><EFBFBD>һ<E0A3A8>ھ<EFBFBD><DABE><EFBFBD>
p3.T = 8;
p3.Rate.t.resize(1);
p3.Rate.qg.resize(1);
p3.Rate.t[0].resize(2); p3.Rate.t[0][0] = 2000; p3.Rate.t[0][1] = 500;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
p3.Rate.qo[0].resize(2); p3.Rate.qo[0][0] = 20; p3.Rate.qo[0][1] = 0;
p3.Rate.qw[0].resize(2); p3.Rate.qw[0][0] = 0; p3.Rate.qw[0][1] = 0;
////<2F><><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA>
//p3.Rate.qo[0].resize(2); p3.Rate.qo[0][0] = 15; p3.Rate.qo[0][1] = 0;
//p3.Rate.qw[0].resize(2); p3.Rate.qw[0][0] = 5; p3.Rate.qw[0][1] = 0;
////<2F><>עˮ<D7A2><CBAE>
//p3.Rate.qo[0].resize(2); p3.Rate.qo[0][0] = 0; p3.Rate.qo[0][1] = 0;
//p3.Rate.qw[0].resize(2); p3.Rate.qw[0][0] = -20; p3.Rate.qw[0][1] = 0;
p3.CS.C.resize(1);
p3.CS.C[0] = 0.1;
p3.CS.S.resize(1);
p3.CS.S[0] = 0.1;
//p3.PVT.p = dVec1(200, 0); for (int i = 0; i < 200; ++i) { p3.PVT.p[i] = (i + 1.0); }
//p3.PVT.Bo = dVec1(200, 1.2);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
//p3.PVT.miuo = dVec1(200, 0.5);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
//p3.PVT.Bw = dVec1(200, 1.05);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
//p3.PVT.miuw = dVec1(200, 0.8);//<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>
//p3.PVT.So = dVec1(81, 0); for (int i = 0; i < 81; ++i) { p3.PVT.So[i] = (0.1 + i * 0.01); }
//p3.PVT.Kro = dVec1(81, 0); for (int i = 0; i < 81; ++i) { p3.PVT.Kro[i] = (i*0.0125); }
//p3.PVT.Krw = dVec1(81, 0); for (int i = 0; i < 81; ++i) { p3.PVT.Krw[i] = (1 - i * 0.0125); }
readCSVColumn("PVT_ow.csv", 5, p3.PVT.miuo);
readCSVColumn("PVT_ow.csv", 4, p3.PVT.Bo);
readCSVColumn("PVT_ow.csv", 2, p3.PVT.miuw);
readCSVColumn("PVT_ow.csv", 1, p3.PVT.Bw);
readCSVColumn("PVT_ow.csv", 0, p3.PVT.p);
readCSVColumn("Krow.csv", 0, p3.PVT.So);
readCSVColumn("Krow.csv", 2, p3.PVT.Kro);
readCSVColumn("Krow.csv", 1, p3.PVT.Krw);
p3.Base.Pi = 40.0;
p3.Base.Cf = 1e-4;
p3.Base.Swi = 0.2;
p3.Base.k = dVec1(p2.Trinodexy.size(), 0.001);
p3.Base.phi = dVec1(p2.Trinodexy.size(), 0.1);
p3.Base.h = dVec1(p2.Trinodexy.size(), 10);
p3.Base.d = 1.05;
p3.Base.dt_Min = 0.0025;
p3.Base.dt_Max = 12.5;
}
//<2F>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (feijunzhi == 1) {
dVec2 k;
a[0] = -1000; a[1] = -800; a[2] = 0.001; k.push_back(a);
a[0] = -800; a[1] = 1000; a[2] = 0.01; k.push_back(a);
a[0] = 0; a[1] = 100; a[2] = 0.005; k.push_back(a);
a[0] = 500; a[1] = -1000; a[2] = 0.008; k.push_back(a);
a[0] = 1000; a[1] = 800; a[2] = 0.02; k.push_back(a);
HX_KRING_INPUT k0(0.01, 100, 1000, 0, p2.Trinodexy, k);
HX_KRING_OUTPUT k1;
HX_NWTM_KRINGING(k1, k0, "HX_license.dat");
p3.Base.k = k1.v;
dVec2 phi;
a[0] = -600; a[1] = 0; a[2] = 0.1; phi.push_back(a);
a[0] = 0; a[1] = 100; a[2] = 0.2; phi.push_back(a);
a[0] = 1000; a[1] = -200; a[2] = 0.05; phi.push_back(a);
HX_KRING_INPUT phi0(0.01, 100, 1000, 0, p2.Trinodexy, phi);
HX_KRING_OUTPUT phi1;
HX_NWTM_KRINGING(phi1, phi0, "HX_license.dat");
p3.Base.phi = phi1.v;
dVec2 h;
a[0] = -1000; a[1] = 100; a[2] = 10; h.push_back(a);
a[0] = 0; a[1] = 0; a[2] = 5; h.push_back(a);
a[0] = 1000; a[1] = 300; a[2] = 12; h.push_back(a);
HX_KRING_INPUT h0(0.01, 100, 1000, 0, p2.Trinodexy, h);
HX_KRING_OUTPUT h1;
HX_NWTM_KRINGING(h1, h0, "HX_license.dat");
p3.Base.h = h1.v;
/* std::ofstream file("k_phi_h.csv");
file << std::fixed << std::setprecision(15);
for (int i = 0; i < p2.Trinodexy.size(); ++i)
{
file << p2.Trinodexy[i][0] << "," << p2.Trinodexy[i][1] << "," << p3.Base.k[i] << "," << p3.Base.phi[i] << "," << p3.Base.h[i] <<"\n";
}
file.close();*/
}
//ģ<>ͼ<EFBFBD><CDBC><EFBFBD>
HX_NWTM_MODEL(p4, p3, "HX_license.dat");
LeaveSilentDllMode();
std::cout << " " << name[iiii] << ":" << getPEBInum() << "," << getsolvetime() << "ms\n";
//<2F><><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>
/*dVec2 pwf;
for (int i = 0; i < p4.t.size(); ++i) {
dVec1 a;
a.resize(p4.pw.size() + 1);
a[0] = p4.t[i];
for (int j = 1; j < a.size(); ++j) {
a[j] = p4.pw[j - 1][i];
}
pwf.push_back(a);
}
std::string filename = solvetypename[type] + name[iiii] + "pwf.csv";
Write2DVectorToCSV(pwf, filename);*/
/* Write1DVectorToCSV(p4.t, "t.csv");
Write2DVectorToCSV(p4.pw, "pw.csv");
Write2DVectorToCSV(p4.p, "C2.csv");
if (p3.T == 8) {
Write2DVectorToCSV(p4.So, "So.csv");
}*/
}
}
}
return 0;
}