1.裂缝的Fc固定为0,井正常读取 2.创建图元后立刻同步给data,确保数据一致

feature/nm-para-property-20260615
lvjunjie 6 days ago
parent 5f16278eee
commit b8610c2d4c

@ -30,15 +30,6 @@
#include <vtkType.h> #include <vtkType.h>
#include <vtkUnsignedCharArray.h> #include <vtkUnsignedCharArray.h>
// PEBI二维裂缝输入约定FC为0表示无限导流大于0表示有限导流能力。
static double getPebiFractureConductivity(const nmDataAttribute& fractureModel, const nmDataAttribute& conductivity)
{
if(fractureModel.getValue().toString().contains("Infinite", Qt::CaseInsensitive)) {
return 0.0;
}
return conductivity.getValue().toDouble();
}
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
#include <windows.h> #include <windows.h>
#define DEBUG_OUT(msg) OutputDebugStringA(QString("[Mesh] %1\n").arg(msg).toLocal8Bit().data()) #define DEBUG_OUT(msg) OutputDebugStringA(QString("[Mesh] %1\n").arg(msg).toLocal8Bit().data())
@ -298,7 +289,8 @@ bool nmCalculationPebiGrid::meshGenPebiWells(HX_NWTM_GRID_INPUT& inputObj)
crack[2] = vFracPoints[1].x(); crack[2] = vFracPoints[1].x();
crack[3] = vFracPoints[1].y(); crack[3] = vFracPoints[1].y();
crack[4] = 1; // 裂缝宽度 crack[4] = 1; // 裂缝宽度
crack[5] = getPebiFractureConductivity(pVerticalFracturedWell->getFractureModel(), pVerticalFracturedWell->getDfc()); // FC // FC直接取井对象中保存的裂缝导流能力0表示无限导流。
crack[5] = pVerticalFracturedWell->getDfc().getValue().toDouble();
inputObj.FractureVerticalWell.push_back(crack); inputObj.FractureVerticalWell.push_back(crack);
// 添加到自定义井顺序数组 // 添加到自定义井顺序数组
pDataManager->appendCalculationWell(QPair<NM_WELL_MODEL, QString>(NM_WELL_MODEL::Vertical_Fractured_Well, pVerticalFracturedWell->getWellName())); pDataManager->appendCalculationWell(QPair<NM_WELL_MODEL, QString>(NM_WELL_MODEL::Vertical_Fractured_Well, pVerticalFracturedWell->getWellName()));
@ -322,7 +314,8 @@ bool nmCalculationPebiGrid::meshGenPebiWells(HX_NWTM_GRID_INPUT& inputObj)
crack[2] = vEndPoint.x(); crack[2] = vEndPoint.x();
crack[3] = vEndPoint.y(); crack[3] = vEndPoint.y();
crack[4] = 2; // 裂缝宽度 crack[4] = 2; // 裂缝宽度
crack[5] = getPebiFractureConductivity(pHorizontalFracturedWell->getFractureModel(), pHorizontalFracturedWell->getDfc()); // FC // FC直接取井对象中保存的裂缝导流能力0表示无限导流。
crack[5] = pHorizontalFracturedWell->getDfc().getValue().toDouble();
vMultistageFracturedHorizontalWell.push_back(crack); vMultistageFracturedHorizontalWell.push_back(crack);
} }
@ -467,7 +460,8 @@ bool nmCalculationPebiGrid::meshGenPebiCrack(HX_NWTM_GRID_INPUT &inputObj)
crack[3] = vEndPoint.y(); crack[3] = vEndPoint.y();
// todo裂缝的宽度 // todo裂缝的宽度
crack[4] = 1; crack[4] = 1;
crack[5] = getPebiFractureConductivity(pFrac->getFractureFlowModel(), pFrac->getFractureDfc()); // FC // 手动画裂缝目前只支持无限导流FC固定为0。
crack[5] = 0.0;
qDebug() << crack[0] << crack[1] << crack[2] << crack[3] << crack[4] << crack[5]; qDebug() << crack[0] << crack[1] << crack[2] << crack[3] << crack[4] << crack[5];
int iIndex = inputObj.VerticalWell.size() + inputObj.FractureVerticalWell.size(); int iIndex = inputObj.VerticalWell.size() + inputObj.FractureVerticalWell.size();

@ -63,6 +63,12 @@ void nmPlotGraphicBinder::createFaultForGraphic(nmObjLineFault* pGraphic)
// 将图元值推入数据 // 将图元值推入数据
pData->setFaultName(pGraphic->getName()); pData->setFaultName(pGraphic->getName());
pData->setFaultPoints(pGraphic->getAllValues()); pData->setFaultPoints(pGraphic->getAllValues());
nmDataAttribute faultFlowModel = pData->getFaultFlowModel();
faultFlowModel.setValue(pGraphic->getFaultFlowModel() == 0 ? tr("Leaky") : tr("Composite limit"));
pData->setFaultFlowModel(faultFlowModel);
nmDataAttribute faultLeakage = pData->getFaultLeakage();
faultLeakage.setValue(pGraphic->getFaultLeakage());
pData->setFaultLeakage(faultLeakage);
// 建立信号连接 // 建立信号连接
_connectFault(pGraphic, pData); _connectFault(pGraphic, pData);
@ -274,6 +280,15 @@ void nmPlotGraphicBinder::createCrackForGraphic(nmObjLineCrack* pGraphic)
// 将图元值推入数据 // 将图元值推入数据
pData->setFractureName(pGraphic->getName()); pData->setFractureName(pGraphic->getName());
pData->setFracturePoints(pGraphic->getAllValues()); pData->setFracturePoints(pGraphic->getAllValues());
nmDataAttribute fractureFlowModel = pData->getFractureFlowModel();
fractureFlowModel.setValue(pGraphic->getCrackFlowModel() == 0 ? tr("Infinite Conductivity") : tr("Finite Conductivity"));
pData->setFractureFlowModel(fractureFlowModel);
nmDataAttribute fractureDfc = pData->getFractureDfc();
fractureDfc.setValue(pGraphic->getCrackDfc());
pData->setFractureDfc(fractureDfc);
nmDataAttribute fractureDw = pData->getFractureDw();
fractureDw.setValue(pGraphic->getCrackDw());
pData->setFractureDw(fractureDw);
// 建立信号连接 // 建立信号连接
_connectCrack(pGraphic, pData); _connectCrack(pGraphic, pData);
@ -917,6 +932,8 @@ void nmPlotGraphicBinder::createRegionMarkForGraphic(nmObjRegionMark* pGraphic)
nmDataAttribute ntgAttr = pData->getNetToGross(); nmDataAttribute ntgAttr = pData->getNetToGross();
ntgAttr.setValue(pGraphic->getNetToGross()); ntgAttr.setValue(pGraphic->getNetToGross());
pData->setNetToGross(ntgAttr); pData->setNetToGross(ntgAttr);
pData->setBackgroundColor(pGraphic->getBackgrdColor());
pData->setSelectRegion(pGraphic->getSelectRegion());
// 建立信号连接 // 建立信号连接
_connectRegionMark(pGraphic, pData); _connectRegionMark(pGraphic, pData);
@ -964,6 +981,8 @@ void nmPlotGraphicBinder::syncRegionMarkData(nmObjRegionMark* pGraphic)
if (!pData) return; if (!pData) return;
pData->setRegionMarkName(pGraphic->getName()); pData->setRegionMarkName(pGraphic->getName());
pData->setBackgroundColor(pGraphic->getBackgrdColor());
pData->setSelectRegion(pGraphic->getSelectRegion());
QVector<QPointF> pts = pGraphic->getAllValues(); QVector<QPointF> pts = pGraphic->getAllValues();
if (pts.count() >= 1) { if (pts.count() >= 1) {
@ -1163,6 +1182,13 @@ void nmPlotGraphicBinder::createRegionForGraphic(nmObjRegion* pGraphic)
nmDataAttribute leakageAttr = pData->getRegionLeakage(); nmDataAttribute leakageAttr = pData->getRegionLeakage();
leakageAttr.setValue(pGraphic->getRegionLeakage()); leakageAttr.setValue(pGraphic->getRegionLeakage());
pData->setRegionLeakage(leakageAttr); pData->setRegionLeakage(leakageAttr);
pData->setPenWidth(pGraphic->getPen().widthF());
pData->setBackgrdColor(pGraphic->getBackgrdColor());
nmObjRegionMark* pRegionMark = pGraphic->getRegionMark();
if (pRegionMark) {
pData->setRegionMarkData(getRegionMarkDataFor(pRegionMark));
}
// 建立映射 // 建立映射
m_mapRegionData[pGraphic] = pData; m_mapRegionData[pGraphic] = pData;

Loading…
Cancel
Save