|
|
#pragma once
|
|
|
|
|
|
#include "mAlgDefines.h"
|
|
|
#include "iSubWndBaseAF.h"
|
|
|
//#include "iAlgPseuCal.h"
|
|
|
|
|
|
class iParaManager;
|
|
|
//class cmParaManager;
|
|
|
class iAlgModelBase;
|
|
|
class cmAlgModelBase;
|
|
|
class iWxRunOptionStd;
|
|
|
class zxAlgThread;
|
|
|
class ZxObjWmPoint;
|
|
|
class M_SUB_WND_EXPORT iSubWndBaseFit : public iSubWndBaseAF
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
|
|
|
public:
|
|
|
|
|
|
explicit iSubWndBaseFit(QWidget *parent = 0, QString sExt = "");
|
|
|
~iSubWndBaseFit();
|
|
|
|
|
|
// 配置窗体
|
|
|
virtual void configWnd();
|
|
|
|
|
|
// 初始化Jobs
|
|
|
virtual bool createJobWxs();
|
|
|
virtual bool initJobWxUIs();
|
|
|
virtual void setDataWell(ZxDataWell* p);
|
|
|
|
|
|
// 序列化
|
|
|
virtual void onSerialize(ZxSerializer* ser);
|
|
|
virtual void onDeserialize(ZxSerializer* ser);
|
|
|
|
|
|
|
|
|
/// @brief 命令是否Enabled的状态判断,通常来自Ribbon
|
|
|
/// @param b (out),true:Enabled false:disabled
|
|
|
/// @param sName (in),Cmd Name
|
|
|
/// @param nID (in),Cmd ID
|
|
|
/// @param bLicensed (in),当前是否有授权
|
|
|
/// @return 本窗体是否已经进行状态判断(即属于本窗体可执行的命令)
|
|
|
virtual bool checkCmdEnable(bool &b, \
|
|
|
QString sName, int nID, \
|
|
|
bool bLicensed);
|
|
|
|
|
|
// 右键弹窗,然后激活Fitting窗口
|
|
|
virtual bool firstRunByDataPF(iWxRunOptionStd *pWxJobRun, \
|
|
|
ZxSegmentInfo* pSegInfo);
|
|
|
// 试井设计模式
|
|
|
virtual void copyModelOptionDn(iModelOption* p);
|
|
|
virtual void setDnMode(bool b);
|
|
|
|
|
|
public:
|
|
|
|
|
|
virtual void setJobRun(iJobRun* p, bool bFuzzyPit = false);
|
|
|
|
|
|
// 从各个Wx(m_vecWxDatas)中遍历查找
|
|
|
bool setParaValue(QString sPara, double d);
|
|
|
bool getParaValue(QString sPara, double& d);
|
|
|
// 返回所有参数,Key为英文ID
|
|
|
bool getAllParaValues(QMap<QString, double>& map,
|
|
|
bool bOnlyFitted);
|
|
|
//返回所有的模型参数
|
|
|
bool getAllParaValuesUnit(QMap<QString, QString>& map,
|
|
|
bool bOnlyFitted);
|
|
|
//返回所有的跟模型相关的参数
|
|
|
bool getModelParaValues(QMap<QString, double>& map);
|
|
|
bool getModelParaUnit(QMap<QString, QString>& map);
|
|
|
|
|
|
// 返回所有的跟模型相关的边界参数的类型,不渗透或定压
|
|
|
// 不渗透:0
|
|
|
// 定压:1
|
|
|
bool getBdyInfos(QMap<QString, int>& map);
|
|
|
|
|
|
// 返回当前模型相关的参数,包括ModelOption、以及井型等信息
|
|
|
iModelOption* getModelOption();
|
|
|
// 构建算法载体
|
|
|
bool buildAlgModel(iModelOption* pModelOption, \
|
|
|
bool bReset = true, \
|
|
|
bool bSetParas = true);
|
|
|
// 具体的创建算法载体
|
|
|
virtual void createAlgModel(ModelSeriesType o, AlgModelSrc ams, \
|
|
|
iModelOption* pModelOption);
|
|
|
|
|
|
// 返回所有窗体的指针
|
|
|
QVector<iWxBase*>* getAllWxPtr();
|
|
|
|
|
|
// 根据多相单相对右侧参数进行调整
|
|
|
void adjustParaUIsBy(bool bMultiPhase);
|
|
|
|
|
|
// 配置算法载体
|
|
|
bool configAlgModel();
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 重新调整工具栏
|
|
|
virtual void reAdjustToolbar(QToolBar*);
|
|
|
|
|
|
// 显示iInput的信息
|
|
|
// 0:Basic 1:Fluid 2:GasConst 3:PF other:All
|
|
|
virtual void showJobInfoInput(int n);
|
|
|
|
|
|
// 根据流体类型刷新 流体对话框
|
|
|
void changeFluidOption();
|
|
|
|
|
|
// 算法类关联信号
|
|
|
virtual void buildAlgSignals();
|
|
|
|
|
|
// 是否正确支持的模型
|
|
|
virtual bool isModelSupported(iModelOption* p);
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
// 对应流动段参数改变,如移动水平线,刷新结果视图
|
|
|
virtual void slotSegmentParamsChanged(ZxSegmentInfo& o);
|
|
|
|
|
|
// 常规拟合线程结束
|
|
|
virtual void slotCommonFitThreadFinished();
|
|
|
|
|
|
// 基础参数对话框流体类型发生改变
|
|
|
virtual void slotFluidTypeChanged(QString s);
|
|
|
// 左侧模型参数发生改变
|
|
|
virtual void slotOptionParasChanged(iModelOption* pOption);
|
|
|
|
|
|
public:
|
|
|
|
|
|
// 线程管理,被MainFrmWindow调用
|
|
|
// 当前窗体内部的线程,如Fitting里面的算法线程
|
|
|
// 增加参数QThread* p的目的为了后续扩展多个线程管理使用
|
|
|
virtual bool pauseSubThread(zxAlgThread* p = NULL);
|
|
|
virtual bool continueSubThread(zxAlgThread* p = NULL);
|
|
|
virtual bool quitSubThread(zxAlgThread* p = NULL);
|
|
|
virtual zxAlgThread* getSubThread(zxAlgThread* p);
|
|
|
|
|
|
signals:
|
|
|
|
|
|
/// @brief 触发信号,获取当前的井位图井点信息
|
|
|
/// @return vecWms.count()>1时有效
|
|
|
/// @note 仅仅返回正确有效的井点,其中中心井默认放在第一个
|
|
|
/// 如果vecWms.count()<=1,则认为不考虑井位图
|
|
|
void sigGetWmInfos(QVector<ZxObjWmPoint*>& vecWms);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 分别为 Basic、Fluid、(GasConst)、PF、ModelOption、ModelParameter;
|
|
|
QVector<iWxBase*> m_vecWxDatas;
|
|
|
|
|
|
// 输入参数部分,为了统一,此处用Wizard把iWxBase包裹
|
|
|
// 每个WiZard包括四个,但是只显示一个
|
|
|
QVector<iWxWizard*> m_vecWxWizards; //只有前四个
|
|
|
|
|
|
// 常规拟合算法类
|
|
|
// 由于Fitting和AnalDn都用到,故放在该类
|
|
|
iAlgModelBase* m_pAlgModel;
|
|
|
iParaManager* m_pParaManager;
|
|
|
|
|
|
// 是否序列化,由子类确定
|
|
|
QPointF m_ptFlowFirst;
|
|
|
|
|
|
#ifdef QT_DEBUG
|
|
|
bool m_bXcmBrother;
|
|
|
#endif
|
|
|
|
|
|
};
|