logplus/appDllTest/src/appDllTest.cpp
2026-01-16 17:18:41 +08:00

135 lines
9.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "memrdwt.h"
#include "math.h"
#include "basefun.h"
#include "appDllTest.h"
#include "appDllTestDialog.h"
Slf_WAVE mWave[1];
extern "C"{
__declspec (dllexport) struct INC_STRU INC={2,
"AC:ACA;ACB;\
BS:BSA;BSB;"
};
__declspec (dllexport) struct INP_STRU INP;
__declspec (dllexport) struct OUTC_STRU OUTC={1,
"SP:SPA;SPC;"
};
__declspec (dllexport) struct OUTP_STRU OUTP;
__declspec (dllexport) struct HD_STRU HD={0.0,9999.0,0.0,0.0,0.0,0.0,0.0,"appDllTest.INP","appDllTest.TLP"};
// __declspec (dllexport) struct CONC_STRU CONC={1,
//"AA:AAA;AAB;;;0.00;"
//};
__declspec (dllexport) struct CONC_STRU CONC={100,
"C GCUR SWOP PFG BITS DEPI SPC SHFG SG MDFG GMN1 GMX1 GMN2 GMX2 GMN3 GMX3 GMN4 GMX4 GMN5 GMX5 GMN6 GMX6 GMN7 GMX7 GMN8 GMX8 SHCT CP XKM AMD0 TF TM TSH PORMX ACX ACN DG DF DSH DENX DENN NSH CNLX CNLN RTX RTN RW RMF M A N SIRR RSH SWX ADEN ACNL AAC AGR ASP ART ACON ANLL ANGR PSG DEPW DCP D1 D2 W1 W2 DA1 DA2 DA3 DA4 DB1 DB2 DB3 DB4 FG PG PP PR PS VG VP VR VS SRHM DPM1 DPM2 DPM3 DPM4 DPM5 DPM6 DPM7 DPM8 DPM9 DM10 MX WX ",
"C 电阻率选择标志;GCUR 计算泥质的经验系数;SWOP 饱和度计算选择标志;PFG 孔隙度计算选择标准;BITS 钻头直径(in);DEPI 层段解释标志;SPC 自然电位曲线反向标志;SHFG 泥质含量计算选择标志;SG 选择岩性系数(SI)计算标志;MDFG 粒度中值,渗透率计算选择标志;GR 自然伽马最小值(API);GR 自然伽马最大值(API);CNL 中子最小值(%);CNL 中子最大值(%);SP 自然电位最小值(mV);SP 自然电位最大值(mV);NLL 中子寿命最小值(%);NLL 中子寿命最大值(%);RT 电阻率最小值(Ohm.m);RT 电阻率最大值(Ohm.m);AC 声波时差最小值(μs/ft);AC 声波时差最大值(μs/ft);RXO 冲洗带电阻率最小值(Ohm.m);RXO 冲洗带电阻率最大值(Ohm.m);CAL 井径最小值(in);CAL 井径最大值(in);SHCT 泥质截止值;CP 声波压实校正系数;XKM 渗透率计算经验系数;AMD0 粒度中值计算经验系数;TF 流体声波时差(μs/ft);TM 岩石骨架声波时差(μs/ft);TSH 泥岩声波时差;PORMX 有效孔隙度截止值(%);ACX 声波时差最大值(μs/ft);ACN 声波时差最小值(μs/ft);DG 岩石骨架密度(g/cm^3^);DF 流体骨架密度(g/cm^3^);DSH 泥岩密度;DENX 密度最大限制值(g/cm^3^);DENN 密度最小限制值(g/cm^3^);NSH 泥岩中子;CNLX 中子最大限制值(%);CCNL 中子最小限制值(%);RTX 电阻率最大限制值(Ohm.m);RTN 电阻率最小限制值(Ohm.m);RW 地层水电阻率(Ohm.m);RMF 泥浆滤液电阻率(Ohm.m);M 胶结指数;A 岩心指数;N 饱和度指数;SIRR 提莫公式中束缚水饱和度(%);RSH 泥岩电阻率(Ohm.m);SWX 饱和度截止值(%);ADEN 密度附加校正值(g/cm^3^);ACNL 中子附加校正值(%);AAC 声波时差附加校正值(μs/ft);AGR 自然伽马附加校正值;ASP 中子附加校正值;ART 电阻率附加校正值;ACON 电导率附加校正值;ANLL 中子寿命附加校正值;ANGR 中子伽马附加校正值;PSG 强行敢于判别结果是指变为干层;DEPW 去掉不干预解释的水层;DCP 控制干层的渗透率下限;D1 最终判别向量坐标;D2 最终判别向量坐标;W1 油气层与油水同层界限值;W2 油水同层与水层界限值 ;DA1第一判别向量坐标;DA2第一判别向量坐标;DA3第一判别向量坐标;DA4第一判别向量坐标;DB1第一判别向量坐标;DB2第一判别向量坐标;DB3第一判别向量坐标;DB4第一判别向量坐标;FG FG NGR计算孔隙度标志;PG 自然伽马相对值得平均值 ;PP 孔隙度平均值;PR RXO/RT平均值;PS 含油饱和度平均值;VG 自然伽马相对值的均方差;VP 孔隙度的均方差;VR RXO/RT平均值;VS 含油饱和度的均方差;SRHM 残余烃饱和度与含水饱和度的相关系数;DPM1;DPM2;DPM3;DPM4;DPM5;DPM6;DPM7;DPM8;DPM9;DM10;MX 孔隙度截止值PORMX系数;WX 饱和度截止值SWX系数;",
";;;;in;;;;;;API;API;%;%;mV;mV;%;%;Ohm.m;Ohm.m;μs/ft;μs/ft;Ohm.m;Ohm.m;in;in;;;;;μs/ft;μs/ft;;%;μs/ft;μs/ft;g/cm^3^;g/cm^3^;;g/cm^3^;g/cm^3^;;%;%;Ohm.m;Ohm.m;Ohm.m;Ohm.m;;;;%;Ohm.m;%;g/cm^3^;%;μs/ft;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
"0使用RT计算含水饱和度, 1使用电导率计算含水饱和度; 0不选择,1第三纪地层参数为3.7, 2老地层参数为2;0不选择,1隐含公式,2计算M值, 3输入M、A;0不选择,1用DEN计算孔隙, 2用AC计算孔隙度,3用CNL计算孔隙度, 4用NGR计算孔隙度;;DEPI=0不生成解释结论, DEPI=1生成解释结论;0不选择,SPC=1砂岩SP为负异常, SPC≠1砂岩SP为正异常; CHECKBOX,1GR,2CNL,3SP,4NLL,5RT, 6AC,7RXO,8CAL;0不选择,1GR计算, 2用计算泥质含量曲线计算, 3除1和2其它参数用SP计算; 0不选择,1GR计算,2公式2计算,3SP计算, 4用提莫公式计算渗透率;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PSG=0不干预, PSG=1判定为干层;;;;;;;;;;;;;;;1中子伽马计算孔隙度公式(1), 2公式(2),3公式(3);;;;;;;;;;;;;;;;;;;;;;",
"选择性参数;选择性参数;选择性参数;选择性参数;选择性参数;选择性参数;选择性参数;选择性参数;选择性参数;选择性参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;泥质含量计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;物性计算参数;饱和度计算参数;饱和度计算参数;饱和度计算参数;饱和度计算参数;饱和度计算参数;饱和度计算参数;饱和度计算参数;饱和度计算参数;饱和度计算参数;饱和度计算参数;校正参数;校正参数;校正参数;校正参数;校正参数;校正参数;校正参数;校正参数;校正参数;人工干预参数;人工干预参数;人工干预参数;判别参数;判别参数;判别参数;判别参数;判别参数;判别参数;判别参数;判别参数;判别参数;判别参数;判别参数;判别参数;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;其它;"
};
__declspec (dllexport) struct CON_STRU CON={0.00};
__declspec (dllexport) struct ErrorInf errorinf;
__declspec (dllexport) struct LogType LogType={CURVE_OBJECT};
__declspec( dllexport ) CMemRdWt MemRdWt;
__declspec (dllexport) int appDllTest();
//以下两行代码用于创建自定义界面来控制参数的对话框如果不需开发者自己定义对话框则不需要这两行及下面的InitDialog函数初始化
// __declspec (dllexport) QDialog* InitDialog(QWidget *pF);
// __declspec( dllexport ) CappDllTestDialog *appDllTestDialog=NULL;
__declspec (dllexport) int Init();
__declspec (dllexport) int Finish();
}
struct Process_Struct{
float AC,BS;
float SP;
float AA;
int Process();
};
int Init()
{
return 1;
}
//此部分用于创建对话框,该第一话框将被显示在平台的参数区
//如果需要独立显示对话框,则不需熬此函数
/*
QDialog* InitDialog(QWidget *pF)
{
appDllTestDialog=new CappDllTestDialog(pF);
return appDllTestDialog;
}
*/
int Finish()
{
return 1;
}
int appDllTest()
{
Process_Struct Process;
return Process.Process();
}
int Process_Struct::Process()
{
//如果采用平台参数区设置对话框信息,需要用此函数确认参数
// appDllTestDialog->OnBnClickedOk();
/*
MemRdWt.Const();
char name[100];
MemRdWt.GetInCurveName(0,name);
Slf_WAVE waveinf;
int index1=MemRdWt.OpenWave(name);
if(index1>-1) MemRdWt.GetWaveInfo(index1,&waveinf);
else {
char buf[100];
strcpy(buf,name);
strcat(buf,"不存在,无法校正!");
AfxMessageBox(buf);
return 0;
}
for(int j=0;j<OUTC.Noo;j++) {
MemRdWt.GetInCurveName(j,name);
index1=MemRdWt.OpenWave(name);
if(index1<0) {
continue;
}
MemRdWt.GetWaveInfo(index1,&waveinf);
memmove(&mWave[j],&waveinf,sizeof(Slf_WAVE));
MemRdWt.GetOutCurveName(j,name);
strcpy(mWave[j].Name,name);
strcpy(mWave[j].AliasName,name);
mWave[j].TimeSamples=waveinf.TimeSamples;
LogType.addr[j].mWave=mWave[j];
// MemRdWt.DiscardObject(name);//
}
//如果需要自己独立弹出窗口,用此部分
// CappDllTestDialog da(0);
// da.m_StartDep=HD.Stdep;
// da.m_EndDep=HD.Endep;
// da.init();
// if(da.exec() != QDialog::Accepted) {
// return 0;
// }
MemRdWt.In();
MemRdWt.Out();
while(HD.Dep<=HD.Endep) {
MemRdWt.In();
*/
//Get Curve Value
GetINValue(AC,1,1);
GetINValue(BS,2,1);
//Get Control Value
GetPosValue(AA,CON,1,1);
//在此处添加命令处理程序代码
//Output Curve Value
// SP = AC;
// SetOUTValue(SP,1,1);
//Output end
/*MemRdWt.Out();
}*/
return 1;
}