From b8610c2d4c84a942faedc7ca54364e75edf5ab30 Mon Sep 17 00:00:00 2001 From: lvjunjie Date: Fri, 3 Jul 2026 15:49:52 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=A3=82=E7=BC=9D=E7=9A=84Fc=E5=9B=BA?= =?UTF-8?q?=E5=AE=9A=E4=B8=BA0=EF=BC=8C=E4=BA=95=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=202.=E5=88=9B=E5=BB=BA=E5=9B=BE=E5=85=83?= =?UTF-8?q?=E5=90=8E=E7=AB=8B=E5=88=BB=E5=90=8C=E6=AD=A5=E7=BB=99data?= =?UTF-8?q?=EF=BC=8C=E7=A1=AE=E4=BF=9D=E6=95=B0=E6=8D=AE=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nmCalculation/nmCalculationPebiGrid.cpp | 18 +++++-------- Src/nmNum/nmPlot/nmPlotGraphicBinder.cpp | 26 +++++++++++++++++++ 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/Src/nmNum/nmCalculation/nmCalculationPebiGrid.cpp b/Src/nmNum/nmCalculation/nmCalculationPebiGrid.cpp index a1440f2..2c05fb8 100644 --- a/Src/nmNum/nmCalculation/nmCalculationPebiGrid.cpp +++ b/Src/nmNum/nmCalculation/nmCalculationPebiGrid.cpp @@ -30,15 +30,6 @@ #include #include -// 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 #include #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[3] = vFracPoints[1].y(); crack[4] = 1; // 裂缝宽度 - crack[5] = getPebiFractureConductivity(pVerticalFracturedWell->getFractureModel(), pVerticalFracturedWell->getDfc()); // FC + // FC直接取井对象中保存的裂缝导流能力,0表示无限导流。 + crack[5] = pVerticalFracturedWell->getDfc().getValue().toDouble(); inputObj.FractureVerticalWell.push_back(crack); // 添加到自定义井顺序数组 pDataManager->appendCalculationWell(QPair(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[3] = vEndPoint.y(); crack[4] = 2; // 裂缝宽度 - crack[5] = getPebiFractureConductivity(pHorizontalFracturedWell->getFractureModel(), pHorizontalFracturedWell->getDfc()); // FC + // FC直接取井对象中保存的裂缝导流能力,0表示无限导流。 + crack[5] = pHorizontalFracturedWell->getDfc().getValue().toDouble(); vMultistageFracturedHorizontalWell.push_back(crack); } @@ -467,7 +460,8 @@ bool nmCalculationPebiGrid::meshGenPebiCrack(HX_NWTM_GRID_INPUT &inputObj) crack[3] = vEndPoint.y(); // todo,裂缝的宽度 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]; int iIndex = inputObj.VerticalWell.size() + inputObj.FractureVerticalWell.size(); diff --git a/Src/nmNum/nmPlot/nmPlotGraphicBinder.cpp b/Src/nmNum/nmPlot/nmPlotGraphicBinder.cpp index 0006149..b461ab6 100644 --- a/Src/nmNum/nmPlot/nmPlotGraphicBinder.cpp +++ b/Src/nmNum/nmPlot/nmPlotGraphicBinder.cpp @@ -63,6 +63,12 @@ void nmPlotGraphicBinder::createFaultForGraphic(nmObjLineFault* pGraphic) // 将图元值推入数据 pData->setFaultName(pGraphic->getName()); 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); @@ -274,6 +280,15 @@ void nmPlotGraphicBinder::createCrackForGraphic(nmObjLineCrack* pGraphic) // 将图元值推入数据 pData->setFractureName(pGraphic->getName()); 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); @@ -917,6 +932,8 @@ void nmPlotGraphicBinder::createRegionMarkForGraphic(nmObjRegionMark* pGraphic) nmDataAttribute ntgAttr = pData->getNetToGross(); ntgAttr.setValue(pGraphic->getNetToGross()); pData->setNetToGross(ntgAttr); + pData->setBackgroundColor(pGraphic->getBackgrdColor()); + pData->setSelectRegion(pGraphic->getSelectRegion()); // 建立信号连接 _connectRegionMark(pGraphic, pData); @@ -964,6 +981,8 @@ void nmPlotGraphicBinder::syncRegionMarkData(nmObjRegionMark* pGraphic) if (!pData) return; pData->setRegionMarkName(pGraphic->getName()); + pData->setBackgroundColor(pGraphic->getBackgrdColor()); + pData->setSelectRegion(pGraphic->getSelectRegion()); QVector pts = pGraphic->getAllValues(); if (pts.count() >= 1) { @@ -1163,6 +1182,13 @@ void nmPlotGraphicBinder::createRegionForGraphic(nmObjRegion* pGraphic) nmDataAttribute leakageAttr = pData->getRegionLeakage(); leakageAttr.setValue(pGraphic->getRegionLeakage()); 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;