优化点3,4
This commit is contained in:
+331
-102
@@ -21,9 +21,9 @@ classdef EDFMAppController < handle
|
||||
obj.setDropDownItems('ResultTypeDropDown', {'Time Steps', 'Newtons vs Time'}, 'Time Steps');
|
||||
obj.setDropDownItems('ModelGridModelDropDown', {'1', '2'}, '1');
|
||||
obj.setDropDownItems('ModelFlowModelDropDown', {'1', '2', '3'}, '1');
|
||||
obj.setDropDownItems('GWgas_modelDropDown', {'1', '2'}, '1');
|
||||
obj.setDropDownItems('GWgas_modelDropDown', {'1'}, '1');
|
||||
obj.setDropDownItems('OWoil_modelDropDown', {'1', '2'}, '1');
|
||||
obj.setDropDownItems('MCgas_modelDropDown', {'1', '2'}, '1');
|
||||
obj.setDropDownItems('MCgas_modelDropDown', {'1'}, '1');
|
||||
obj.configureWellTables();
|
||||
obj.applyFixedUIState();
|
||||
|
||||
@@ -337,6 +337,9 @@ classdef EDFMAppController < handle
|
||||
obj.App.InitStatusLabel.Text = 'Init: multi-component';
|
||||
end
|
||||
end
|
||||
|
||||
obj.applyDiscretizationVisibility(gridModel);
|
||||
obj.applyFlowVisibility(flowModel);
|
||||
end
|
||||
end
|
||||
|
||||
@@ -373,47 +376,70 @@ classdef EDFMAppController < handle
|
||||
obj.setTextAreaExpr('SPMatrixKyTextArea', c.discretization.sp.matrix.ky);
|
||||
obj.setTextAreaExpr('SPMatrixKzTextArea', c.discretization.sp.matrix.kz);
|
||||
obj.setTextAreaExpr('SPMatrixPoriTextArea', c.discretization.sp.matrix.pori);
|
||||
obj.setNumericFieldValue('SPMatrixPrporEditField', c.discretization.sp.matrix.prpor);
|
||||
obj.setNumericFieldValue('SPMatrixCporEditField', c.discretization.sp.matrix.cpor);
|
||||
obj.setNumericFieldValue('SPRockDensityEditField', c.discretization.sp.matrix.rock_density);
|
||||
obj.setTextAreaExpr('SPFractureKfTextArea', c.discretization.sp.fracture.Kf);
|
||||
obj.setTextAreaExpr('SPFractureWfTextArea', c.discretization.sp.fracture.Wf);
|
||||
obj.setTextAreaExpr('SPFracturePorfTextArea', c.discretization.sp.fracture.Porf);
|
||||
obj.setNumericFieldValue('SPFracturePrporEditField', c.discretization.sp.fracture.prporf);
|
||||
obj.setNumericFieldValue('SPFractureCporfEditField', c.discretization.sp.fracture.cporf);
|
||||
obj.setNumericFieldValue('SPStressFractureEditField', c.discretization.sp.stress.fracture_factor);
|
||||
obj.setNumericFieldValue('SPStressMatrixEditField', c.discretization.sp.stress.matrix_factor);
|
||||
obj.setNumericFieldValue('SPStressRefPressureEditField', c.discretization.sp.stress.ref_pressure);
|
||||
|
||||
obj.setTextAreaExpr('DPkxTextArea', c.discretization.dp.fracture_layer.kx);
|
||||
obj.setTextAreaExpr('DPkyTextArea', c.discretization.dp.fracture_layer.ky);
|
||||
obj.setTextAreaExpr('DPkzTextArea', c.discretization.dp.fracture_layer.kz);
|
||||
obj.setTextAreaExpr('DPkx_matrixLayerTextArea', c.discretization.dp.matrix_layer.kx);
|
||||
obj.setTextAreaExpr('DPky_matrixLayerTextArea', c.discretization.dp.matrix_layer.ky);
|
||||
obj.setTextAreaExpr('DPkz_matrixLayerTextArea', c.discretization.dp.matrix_layer.kz);
|
||||
obj.setTextAreaExpr('DPpori_matrixLayerTextArea', c.discretization.dp.matrix_layer.pori);
|
||||
obj.setTextAreaExpr('DPsigmaTextArea', c.discretization.dp.shape_factor);
|
||||
obj.setTextAreaExpr('DPNTGTextArea', c.discretization.dp.NTG);
|
||||
obj.setNumericFieldValue('DPprporEditField', c.discretization.dp.prpor);
|
||||
obj.setNumericFieldValue('DPcporEditField', c.discretization.dp.cpor);
|
||||
obj.setTextAreaExpr('DPKfTextArea', c.discretization.dp.fracture.Kf);
|
||||
obj.setTextAreaExpr('DPWfTextArea', c.discretization.dp.fracture.Wf);
|
||||
obj.setTextAreaExpr('DPPorfTextArea', c.discretization.dp.fracture.Porf);
|
||||
obj.setNumericFieldValue('DPprporfEditField', c.discretization.dp.fracture.prporf);
|
||||
obj.setNumericFieldValue('DPcporfEditField', c.discretization.dp.fracture.cporf);
|
||||
obj.setNumericFieldValue('DPstress_factor_fractureEditField', c.discretization.dp.stress.fracture_factor);
|
||||
obj.setNumericFieldValue('DPstress_factor_matrixEditField', c.discretization.dp.stress.matrix_factor);
|
||||
obj.setNumericFieldValue('DPstress_factor_ref_pressureEditField', c.discretization.dp.stress.ref_pressure);
|
||||
obj.setTextAreaExpr('DPFractureLayerKxTextArea', c.discretization.dp.fracture_layer.kx);
|
||||
obj.setTextAreaExpr('DPFractureLayerKyTextArea', c.discretization.dp.fracture_layer.ky);
|
||||
obj.setTextAreaExpr('DPFractureLayerKzTextArea', c.discretization.dp.fracture_layer.kz);
|
||||
obj.setTextAreaExpr('DPMatrixLayerKxTextArea', c.discretization.dp.matrix_layer.kx);
|
||||
obj.setTextAreaExpr('DPMatrixLayerKyTextArea', c.discretization.dp.matrix_layer.ky);
|
||||
obj.setTextAreaExpr('DPMatrixLayerKzTextArea', c.discretization.dp.matrix_layer.kz);
|
||||
obj.setTextAreaExpr('DPMatrixLayerPoriTextArea', c.discretization.dp.matrix_layer.pori);
|
||||
obj.setTextAreaExpr('DPShapeFactorTextArea', c.discretization.dp.shape_factor);
|
||||
|
||||
commonDiscretization = obj.getCommonDiscretizationSource(c);
|
||||
obj.setNumericFieldValue('CommonPrporEditField', commonDiscretization.prpor);
|
||||
obj.setNumericFieldValue('CommonCporEditField', commonDiscretization.cpor);
|
||||
obj.setTextAreaExpr('CommonKfTextArea', commonDiscretization.Kf);
|
||||
obj.setTextAreaExpr('CommonWfTextArea', commonDiscretization.Wf);
|
||||
obj.setTextAreaExpr('CommonPorfTextArea', commonDiscretization.Porf);
|
||||
obj.setNumericFieldValue('CommonPrporfEditField', commonDiscretization.prporf);
|
||||
obj.setNumericFieldValue('CommonCporfEditField', commonDiscretization.cporf);
|
||||
obj.setNumericFieldValue('CommonStressFractureEditField', commonDiscretization.stress_fracture);
|
||||
obj.setNumericFieldValue('CommonStressMatrixEditField', commonDiscretization.stress_matrix);
|
||||
obj.setNumericFieldValue('CommonStressRefPressureEditField', commonDiscretization.stress_ref_pressure);
|
||||
obj.setNumericFieldValue('CommonRptEditField', commonDiscretization.Rpt);
|
||||
obj.setNumericFieldValue('CommonCfEditField', commonDiscretization.cf);
|
||||
obj.setNumericFieldValue('CommonCaEditField', commonDiscretization.ca);
|
||||
|
||||
obj.setNumericFieldValue('InitialPressureEditField', obj.firstScalar(c.initial.pressure));
|
||||
obj.setNumericFieldValue('InitialSwEditField', obj.firstScalar(c.initial.sw));
|
||||
obj.setNumericFieldValue('InitialCsEditField', obj.firstScalar(c.initial.cs));
|
||||
obj.setNumericFieldValue('InitialCbEditField', obj.firstScalar(c.initial.cb));
|
||||
|
||||
commonFlow = obj.getCommonFlowSource(c);
|
||||
obj.setNumericFieldValue('FlowCommonDensityWScEditField', commonFlow.density_w_sc);
|
||||
obj.setNumericFieldValue('FlowCommonPrwEditField', commonFlow.prw);
|
||||
obj.setNumericFieldValue('FlowCommonBwiEditField', commonFlow.Bwi);
|
||||
obj.setNumericFieldValue('FlowCommonCwEditField', commonFlow.cw);
|
||||
obj.setNumericFieldValue('FlowCommonVwiEditField', commonFlow.vwi);
|
||||
obj.setNumericFieldValue('FlowCommonCvwEditField', commonFlow.cvw);
|
||||
obj.setNumericFieldValue('FlowCommonPGradThresholdEditField', commonFlow.p_grad_threshold);
|
||||
obj.setNumericFieldValue('FlowCommonDensityGScEditField', commonFlow.density_g_sc);
|
||||
obj.setNumericFieldValue('FlowCommonGasPrgEditField', commonFlow.prg);
|
||||
obj.setNumericFieldValue('FlowCommonGasBgiEditField', commonFlow.Bgi);
|
||||
obj.setNumericFieldValue('FlowCommonGasCgEditField', commonFlow.cg);
|
||||
obj.setNumericFieldValue('FlowCommonGasVgiEditField', commonFlow.vgi);
|
||||
obj.setNumericFieldValue('FlowCommonGasCvgEditField', commonFlow.cvg);
|
||||
obj.setNumericFieldValue('FlowCommonGasVLEditField', commonFlow.gas_VL);
|
||||
obj.setNumericFieldValue('FlowCommonGasPLEditField', commonFlow.gas_PL);
|
||||
obj.setNumericFieldValue('FlowCommonGasKnEditField', commonFlow.gas_Kn);
|
||||
obj.setNumericFieldValue('FlowCommonGasBetaNonDarcyEditField', commonFlow.gas_beta_non_darcy);
|
||||
|
||||
obj.setTextAreaExpr('GWPRFTextArea', c.flow.gas_water.fracture_relperm_table);
|
||||
obj.setTextAreaExpr('GWRPGWTextArea', c.flow.gas_water.matrix_relperm_table);
|
||||
obj.setNumericFieldValue('GWifpcglEditField', c.flow.gas_water.ifpcgl);
|
||||
|
||||
obj.setTextAreaExpr('OWPRFTextArea', c.flow.oil_water.fracture_relperm_table);
|
||||
obj.setTextAreaExpr('OWPRMTextArea', c.flow.oil_water.matrix_relperm_table);
|
||||
obj.setDropDownValue('OWoil_modelDropDown', c.flow.oil_water.oil_model);
|
||||
obj.setNumericFieldValue('OWdensity_o_scEditField', c.flow.oil_water.density_o_sc);
|
||||
obj.setNumericFieldValue('OWproEditField', obj.firstScalar(c.flow.oil_water.pro));
|
||||
obj.setNumericFieldValue('OWBoiEditField', obj.firstScalar(c.flow.oil_water.Boi));
|
||||
obj.setNumericFieldValue('OWcoEditField', obj.firstScalar(c.flow.oil_water.co));
|
||||
obj.setNumericFieldValue('OWvoiEditField', obj.firstScalar(c.flow.oil_water.voi));
|
||||
obj.setNumericFieldValue('OWcvoEditField', obj.firstScalar(c.flow.oil_water.cvo));
|
||||
obj.setNumericFieldValue('OWifpcowEditField', c.flow.oil_water.ifpcow);
|
||||
|
||||
obj.setTextAreaExpr('MCcs_NcTextArea', c.flow.multi_component.cs_Nc);
|
||||
obj.setTextAreaExpr('MCkr_nosurfTextArea', c.flow.multi_component.kr_nosurf);
|
||||
@@ -423,30 +449,10 @@ classdef EDFMAppController < handle
|
||||
obj.setTextAreaExpr('MCkr_nosurf_fractureTextArea', c.flow.multi_component.kr_nosurf_fracture);
|
||||
obj.setTextAreaExpr('MCkr_surf_fractureTextArea', c.flow.multi_component.kr_surf_fracture);
|
||||
obj.setTextAreaExpr('MCPC_fractureTextArea', c.flow.multi_component.PC_fracture);
|
||||
obj.setNumericFieldValue('MCp_grad_thresholdEditField', c.flow.multi_component.p_grad_threshold);
|
||||
obj.setNumericFieldValue('MCgas_propVLEditField', c.flow.multi_component.gas_prop.VL);
|
||||
obj.setNumericFieldValue('MCgas_propPLEditField', c.flow.multi_component.gas_prop.PL);
|
||||
obj.setNumericFieldValue('MCgas_propKnEditField', c.flow.multi_component.gas_prop.Kn);
|
||||
obj.setNumericFieldValue('MCifpcglEditField', c.flow.multi_component.ifpcgl);
|
||||
obj.setNumericFieldValue('MCstress_factor_fractureEditField', c.flow.multi_component.gas_prop.stress_factor_fracture);
|
||||
obj.setNumericFieldValue('MCstress_factor_matrixEditField', c.flow.multi_component.gas_prop.stress_factor_matrix);
|
||||
obj.setNumericFieldValue('MCstress_factor_ref_pressureEditField', c.flow.multi_component.gas_prop.stress_factor_ref_pressure);
|
||||
obj.setNumericFieldValue('MCbeta_non_darcy_flowEditField', c.flow.multi_component.gas_prop.beta_non_darcy_flow);
|
||||
obj.setNumericFieldValue('MCdensity_g_scEditField', c.flow.multi_component.density_g_sc);
|
||||
obj.setDropDownValue('MCgas_modelDropDown', c.flow.multi_component.gas_model);
|
||||
obj.setNumericFieldValue('MCprgEditField', obj.firstScalar(c.flow.multi_component.prg));
|
||||
obj.setNumericFieldValue('MCBgiEditField', obj.firstScalar(c.flow.multi_component.Bgi));
|
||||
obj.setNumericFieldValue('MCcgEditField', obj.firstScalar(c.flow.multi_component.cg));
|
||||
obj.setNumericFieldValue('MCvgiEditField', obj.firstScalar(c.flow.multi_component.vgi));
|
||||
obj.setNumericFieldValue('MCcvgEditField', obj.firstScalar(c.flow.multi_component.cvg));
|
||||
obj.setTextAreaExpr('MCPprTextArea', c.flow.multi_component.Ppr);
|
||||
obj.setTextAreaExpr('MCBGTextArea', c.flow.multi_component.BG);
|
||||
obj.setTextAreaExpr('MCMUGTextArea', c.flow.multi_component.MUG);
|
||||
obj.setNumericFieldValue('MCdensity_w_scEditField', c.flow.multi_component.density_w_sc);
|
||||
obj.setNumericFieldValue('MCprwEditField', obj.firstScalar(c.flow.multi_component.prw));
|
||||
obj.setNumericFieldValue('MCBwiEditField', obj.firstScalar(c.flow.multi_component.Bwi));
|
||||
obj.setNumericFieldValue('MCcwEditField', obj.firstScalar(c.flow.multi_component.cw));
|
||||
obj.setNumericFieldValue('MCvwiEditField', obj.firstScalar(c.flow.multi_component.vwi));
|
||||
obj.setNumericFieldValue('MCcvwEditField', obj.firstScalar(c.flow.multi_component.cvw));
|
||||
|
||||
obj.setTableValue('Well1Table', c.wells.well1);
|
||||
obj.setTableValue('FractureWellLocationTable', obj.unwrapFirstCell(c.wells.welloc));
|
||||
@@ -492,47 +498,123 @@ classdef EDFMAppController < handle
|
||||
c.discretization.sp.matrix.ky = obj.getTextAreaExpr('SPMatrixKyTextArea', c.discretization.sp.matrix.ky);
|
||||
c.discretization.sp.matrix.kz = obj.getTextAreaExpr('SPMatrixKzTextArea', c.discretization.sp.matrix.kz);
|
||||
c.discretization.sp.matrix.pori = obj.getTextAreaExpr('SPMatrixPoriTextArea', c.discretization.sp.matrix.pori);
|
||||
c.discretization.sp.matrix.prpor = obj.getNumericFieldValue('SPMatrixPrporEditField', c.discretization.sp.matrix.prpor);
|
||||
c.discretization.sp.matrix.cpor = obj.getNumericFieldValue('SPMatrixCporEditField', c.discretization.sp.matrix.cpor);
|
||||
c.discretization.sp.matrix.rock_density = obj.getNumericFieldValue('SPRockDensityEditField', c.discretization.sp.matrix.rock_density);
|
||||
c.discretization.sp.fracture.Kf = obj.getTextAreaExpr('SPFractureKfTextArea', c.discretization.sp.fracture.Kf);
|
||||
c.discretization.sp.fracture.Wf = obj.getTextAreaExpr('SPFractureWfTextArea', c.discretization.sp.fracture.Wf);
|
||||
c.discretization.sp.fracture.Porf = obj.getTextAreaExpr('SPFracturePorfTextArea', c.discretization.sp.fracture.Porf);
|
||||
c.discretization.sp.fracture.prporf = obj.getNumericFieldValue('SPFracturePrporEditField', c.discretization.sp.fracture.prporf);
|
||||
c.discretization.sp.fracture.cporf = obj.getNumericFieldValue('SPFractureCporfEditField', c.discretization.sp.fracture.cporf);
|
||||
c.discretization.sp.stress.fracture_factor = obj.getNumericFieldValue('SPStressFractureEditField', c.discretization.sp.stress.fracture_factor);
|
||||
c.discretization.sp.stress.matrix_factor = obj.getNumericFieldValue('SPStressMatrixEditField', c.discretization.sp.stress.matrix_factor);
|
||||
c.discretization.sp.stress.ref_pressure = obj.getNumericFieldValue('SPStressRefPressureEditField', c.discretization.sp.stress.ref_pressure);
|
||||
|
||||
c.discretization.dp.fracture_layer.kx = obj.getTextAreaExpr('DPkxTextArea', c.discretization.dp.fracture_layer.kx);
|
||||
c.discretization.dp.fracture_layer.ky = obj.getTextAreaExpr('DPkyTextArea', c.discretization.dp.fracture_layer.ky);
|
||||
c.discretization.dp.fracture_layer.kz = obj.getTextAreaExpr('DPkzTextArea', c.discretization.dp.fracture_layer.kz);
|
||||
c.discretization.dp.matrix_layer.kx = obj.getTextAreaExpr('DPkx_matrixLayerTextArea', c.discretization.dp.matrix_layer.kx);
|
||||
c.discretization.dp.matrix_layer.ky = obj.getTextAreaExpr('DPky_matrixLayerTextArea', c.discretization.dp.matrix_layer.ky);
|
||||
c.discretization.dp.matrix_layer.kz = obj.getTextAreaExpr('DPkz_matrixLayerTextArea', c.discretization.dp.matrix_layer.kz);
|
||||
c.discretization.dp.matrix_layer.pori = obj.getTextAreaExpr('DPpori_matrixLayerTextArea', c.discretization.dp.matrix_layer.pori);
|
||||
c.discretization.dp.shape_factor = obj.getTextAreaExpr('DPsigmaTextArea', c.discretization.dp.shape_factor);
|
||||
c.discretization.dp.NTG = obj.getTextAreaExpr('DPNTGTextArea', c.discretization.dp.NTG);
|
||||
c.discretization.dp.prpor = obj.getNumericFieldValue('DPprporEditField', c.discretization.dp.prpor);
|
||||
c.discretization.dp.cpor = obj.getNumericFieldValue('DPcporEditField', c.discretization.dp.cpor);
|
||||
c.discretization.dp.fracture.Kf = obj.getTextAreaExpr('DPKfTextArea', c.discretization.dp.fracture.Kf);
|
||||
c.discretization.dp.fracture.Wf = obj.getTextAreaExpr('DPWfTextArea', c.discretization.dp.fracture.Wf);
|
||||
c.discretization.dp.fracture.Porf = obj.getTextAreaExpr('DPPorfTextArea', c.discretization.dp.fracture.Porf);
|
||||
c.discretization.dp.fracture.prporf = obj.getNumericFieldValue('DPprporfEditField', c.discretization.dp.fracture.prporf);
|
||||
c.discretization.dp.fracture.cporf = obj.getNumericFieldValue('DPcporfEditField', c.discretization.dp.fracture.cporf);
|
||||
c.discretization.dp.stress.fracture_factor = obj.getNumericFieldValue('DPstress_factor_fractureEditField', c.discretization.dp.stress.fracture_factor);
|
||||
c.discretization.dp.stress.matrix_factor = obj.getNumericFieldValue('DPstress_factor_matrixEditField', c.discretization.dp.stress.matrix_factor);
|
||||
c.discretization.dp.stress.ref_pressure = obj.getNumericFieldValue('DPstress_factor_ref_pressureEditField', c.discretization.dp.stress.ref_pressure);
|
||||
c.discretization.dp.fracture_layer.kx = obj.getTextAreaExpr('DPFractureLayerKxTextArea', c.discretization.dp.fracture_layer.kx);
|
||||
c.discretization.dp.fracture_layer.ky = obj.getTextAreaExpr('DPFractureLayerKyTextArea', c.discretization.dp.fracture_layer.ky);
|
||||
c.discretization.dp.fracture_layer.kz = obj.getTextAreaExpr('DPFractureLayerKzTextArea', c.discretization.dp.fracture_layer.kz);
|
||||
c.discretization.dp.matrix_layer.kx = obj.getTextAreaExpr('DPMatrixLayerKxTextArea', c.discretization.dp.matrix_layer.kx);
|
||||
c.discretization.dp.matrix_layer.ky = obj.getTextAreaExpr('DPMatrixLayerKyTextArea', c.discretization.dp.matrix_layer.ky);
|
||||
c.discretization.dp.matrix_layer.kz = obj.getTextAreaExpr('DPMatrixLayerKzTextArea', c.discretization.dp.matrix_layer.kz);
|
||||
c.discretization.dp.matrix_layer.pori = obj.getTextAreaExpr('DPMatrixLayerPoriTextArea', c.discretization.dp.matrix_layer.pori);
|
||||
c.discretization.dp.shape_factor = obj.getTextAreaExpr('DPShapeFactorTextArea', c.discretization.dp.shape_factor);
|
||||
c.discretization.dp.NTG = c.grid.NTG;
|
||||
|
||||
commonPrpor = obj.getNumericFieldValue('CommonPrporEditField', c.discretization.sp.matrix.prpor);
|
||||
commonCpor = obj.getNumericFieldValue('CommonCporEditField', c.discretization.sp.matrix.cpor);
|
||||
commonKf = obj.getTextAreaExpr('CommonKfTextArea', c.discretization.sp.fracture.Kf);
|
||||
commonWf = obj.getTextAreaExpr('CommonWfTextArea', c.discretization.sp.fracture.Wf);
|
||||
commonPorf = obj.getTextAreaExpr('CommonPorfTextArea', c.discretization.sp.fracture.Porf);
|
||||
commonPrporf = obj.getNumericFieldValue('CommonPrporfEditField', c.discretization.sp.fracture.prporf);
|
||||
commonCporf = obj.getNumericFieldValue('CommonCporfEditField', c.discretization.sp.fracture.cporf);
|
||||
commonStressFracture = obj.getNumericFieldValue('CommonStressFractureEditField', c.discretization.sp.stress.fracture_factor);
|
||||
commonStressMatrix = obj.getNumericFieldValue('CommonStressMatrixEditField', c.discretization.sp.stress.matrix_factor);
|
||||
commonStressRefPressure = obj.getNumericFieldValue('CommonStressRefPressureEditField', c.discretization.sp.stress.ref_pressure);
|
||||
commonRpt = obj.getNumericFieldValue('CommonRptEditField', c.discretization.sp.stress.Rpt);
|
||||
commonCf = obj.getNumericFieldValue('CommonCfEditField', c.discretization.sp.stress.cf);
|
||||
commonCa = obj.getNumericFieldValue('CommonCaEditField', c.discretization.sp.stress.ca);
|
||||
|
||||
c.discretization.sp.matrix.prpor = commonPrpor;
|
||||
c.discretization.sp.matrix.cpor = commonCpor;
|
||||
c.discretization.sp.fracture.Kf = commonKf;
|
||||
c.discretization.sp.fracture.Wf = commonWf;
|
||||
c.discretization.sp.fracture.Porf = commonPorf;
|
||||
c.discretization.sp.fracture.prporf = commonPrporf;
|
||||
c.discretization.sp.fracture.cporf = commonCporf;
|
||||
c.discretization.sp.stress.fracture_factor = commonStressFracture;
|
||||
c.discretization.sp.stress.matrix_factor = commonStressMatrix;
|
||||
c.discretization.sp.stress.ref_pressure = commonStressRefPressure;
|
||||
c.discretization.sp.stress.Rpt = commonRpt;
|
||||
c.discretization.sp.stress.cf = commonCf;
|
||||
c.discretization.sp.stress.ca = commonCa;
|
||||
|
||||
c.discretization.dp.prpor = commonPrpor;
|
||||
c.discretization.dp.cpor = commonCpor;
|
||||
c.discretization.dp.fracture.Kf = commonKf;
|
||||
c.discretization.dp.fracture.Wf = commonWf;
|
||||
c.discretization.dp.fracture.Porf = commonPorf;
|
||||
c.discretization.dp.fracture.prporf = commonPrporf;
|
||||
c.discretization.dp.fracture.cporf = commonCporf;
|
||||
c.discretization.dp.stress.fracture_factor = commonStressFracture;
|
||||
c.discretization.dp.stress.matrix_factor = commonStressMatrix;
|
||||
c.discretization.dp.stress.ref_pressure = commonStressRefPressure;
|
||||
c.discretization.dp.Rpt = commonRpt;
|
||||
c.discretization.dp.cf = commonCf;
|
||||
c.discretization.dp.ca = commonCa;
|
||||
|
||||
c.initial.pressure = obj.getNumericFieldValue('InitialPressureEditField', c.initial.pressure);
|
||||
c.initial.sw = obj.getNumericFieldValue('InitialSwEditField', c.initial.sw);
|
||||
c.initial.cs = obj.getNumericFieldValue('InitialCsEditField', c.initial.cs);
|
||||
c.initial.cb = obj.getNumericFieldValue('InitialCbEditField', c.initial.cb);
|
||||
|
||||
commonDensityWSc = obj.getNumericFieldValue('FlowCommonDensityWScEditField', c.flow.gas_water.density_w_sc);
|
||||
commonPrw = obj.getNumericFieldValue('FlowCommonPrwEditField', c.flow.gas_water.prw);
|
||||
commonBwi = obj.getNumericFieldValue('FlowCommonBwiEditField', c.flow.gas_water.Bwi);
|
||||
commonCw = obj.getNumericFieldValue('FlowCommonCwEditField', c.flow.gas_water.cw);
|
||||
commonVwi = obj.getNumericFieldValue('FlowCommonVwiEditField', c.flow.gas_water.vwi);
|
||||
commonCvw = obj.getNumericFieldValue('FlowCommonCvwEditField', c.flow.gas_water.cvw);
|
||||
commonPGradThreshold = obj.getNumericFieldValue('FlowCommonPGradThresholdEditField', c.flow.gas_water.p_grad_threshold);
|
||||
commonDensityGSc = obj.getNumericFieldValue('FlowCommonDensityGScEditField', c.flow.gas_water.density_g_sc);
|
||||
commonGasPrg = obj.getNumericFieldValue('FlowCommonGasPrgEditField', c.flow.gas_water.prg);
|
||||
commonGasBgi = obj.getNumericFieldValue('FlowCommonGasBgiEditField', c.flow.gas_water.Bgi);
|
||||
commonGasCg = obj.getNumericFieldValue('FlowCommonGasCgEditField', c.flow.gas_water.cg);
|
||||
commonGasVgi = obj.getNumericFieldValue('FlowCommonGasVgiEditField', c.flow.gas_water.vgi);
|
||||
commonGasCvg = obj.getNumericFieldValue('FlowCommonGasCvgEditField', c.flow.gas_water.cvg);
|
||||
commonGasVL = obj.getNumericFieldValue('FlowCommonGasVLEditField', c.flow.gas_water.gas_prop.VL);
|
||||
commonGasPL = obj.getNumericFieldValue('FlowCommonGasPLEditField', c.flow.gas_water.gas_prop.PL);
|
||||
commonGasKn = obj.getNumericFieldValue('FlowCommonGasKnEditField', c.flow.gas_water.gas_prop.Kn);
|
||||
commonGasBeta = obj.getNumericFieldValue('FlowCommonGasBetaNonDarcyEditField', c.flow.gas_water.gas_prop.beta_non_darcy_flow);
|
||||
|
||||
c.flow.gas_water.density_w_sc = commonDensityWSc;
|
||||
c.flow.gas_water.prw = commonPrw;
|
||||
c.flow.gas_water.Bwi = commonBwi;
|
||||
c.flow.gas_water.cw = commonCw;
|
||||
c.flow.gas_water.vwi = commonVwi;
|
||||
c.flow.gas_water.cvw = commonCvw;
|
||||
c.flow.gas_water.p_grad_threshold = commonPGradThreshold;
|
||||
c.flow.gas_water.density_g_sc = commonDensityGSc;
|
||||
c.flow.gas_water.prg = commonGasPrg;
|
||||
c.flow.gas_water.Bgi = commonGasBgi;
|
||||
c.flow.gas_water.cg = commonGasCg;
|
||||
c.flow.gas_water.vgi = commonGasVgi;
|
||||
c.flow.gas_water.cvg = commonGasCvg;
|
||||
c.flow.gas_water.gas_model = 1;
|
||||
c.flow.gas_water.gas_prop.VL = commonGasVL;
|
||||
c.flow.gas_water.gas_prop.PL = commonGasPL;
|
||||
c.flow.gas_water.gas_prop.Kn = commonGasKn;
|
||||
c.flow.gas_water.gas_prop.beta_non_darcy_flow = commonGasBeta;
|
||||
c.flow.gas_water.matrix_relperm_table = obj.getTextAreaExpr('GWRPGWTextArea', c.flow.gas_water.matrix_relperm_table);
|
||||
c.flow.gas_water.fracture_relperm_table = obj.getTextAreaExpr('GWPRFTextArea', c.flow.gas_water.fracture_relperm_table);
|
||||
c.flow.gas_water.ifpcgl = obj.getNumericFieldValue('GWifpcglEditField', c.flow.gas_water.ifpcgl);
|
||||
|
||||
c.flow.oil_water.density_w_sc = commonDensityWSc;
|
||||
c.flow.oil_water.prw = commonPrw;
|
||||
c.flow.oil_water.Bwi = commonBwi;
|
||||
c.flow.oil_water.cw = commonCw;
|
||||
c.flow.oil_water.vwi = commonVwi;
|
||||
c.flow.oil_water.cvw = commonCvw;
|
||||
c.flow.oil_water.p_grad_threshold = commonPGradThreshold;
|
||||
c.flow.oil_water.oil_model = obj.getNumericDropDownValue('OWoil_modelDropDown', c.flow.oil_water.oil_model);
|
||||
c.flow.oil_water.density_o_sc = obj.getNumericFieldValue('OWdensity_o_scEditField', c.flow.oil_water.density_o_sc);
|
||||
c.flow.oil_water.pro = obj.getNumericFieldValue('OWproEditField', c.flow.oil_water.pro);
|
||||
c.flow.oil_water.Boi = obj.getNumericFieldValue('OWBoiEditField', c.flow.oil_water.Boi);
|
||||
c.flow.oil_water.co = obj.getNumericFieldValue('OWcoEditField', c.flow.oil_water.co);
|
||||
c.flow.oil_water.voi = obj.getNumericFieldValue('OWvoiEditField', c.flow.oil_water.voi);
|
||||
c.flow.oil_water.cvo = obj.getNumericFieldValue('OWcvoEditField', c.flow.oil_water.cvo);
|
||||
c.flow.oil_water.matrix_relperm_table = obj.getTextAreaExpr('OWPRMTextArea', c.flow.oil_water.matrix_relperm_table);
|
||||
c.flow.oil_water.fracture_relperm_table = obj.getTextAreaExpr('OWPRFTextArea', c.flow.oil_water.fracture_relperm_table);
|
||||
c.flow.oil_water.ifpcow = obj.getNumericFieldValue('OWifpcowEditField', c.flow.oil_water.ifpcow);
|
||||
c.flow.oil_water.beta_non_darcy_flow = commonGasBeta;
|
||||
|
||||
c.flow.multi_component.cs_Nc = obj.getTextAreaExpr('MCcs_NcTextArea', c.flow.multi_component.cs_Nc);
|
||||
c.flow.multi_component.kr_nosurf = obj.getTextAreaExpr('MCkr_nosurfTextArea', c.flow.multi_component.kr_nosurf);
|
||||
@@ -542,30 +624,28 @@ classdef EDFMAppController < handle
|
||||
c.flow.multi_component.kr_nosurf_fracture = obj.getTextAreaExpr('MCkr_nosurf_fractureTextArea', c.flow.multi_component.kr_nosurf_fracture);
|
||||
c.flow.multi_component.kr_surf_fracture = obj.getTextAreaExpr('MCkr_surf_fractureTextArea', c.flow.multi_component.kr_surf_fracture);
|
||||
c.flow.multi_component.PC_fracture = obj.getTextAreaExpr('MCPC_fractureTextArea', c.flow.multi_component.PC_fracture);
|
||||
c.flow.multi_component.p_grad_threshold = obj.getNumericFieldValue('MCp_grad_thresholdEditField', c.flow.multi_component.p_grad_threshold);
|
||||
c.flow.multi_component.gas_prop.VL = obj.getNumericFieldValue('MCgas_propVLEditField', c.flow.multi_component.gas_prop.VL);
|
||||
c.flow.multi_component.gas_prop.PL = obj.getNumericFieldValue('MCgas_propPLEditField', c.flow.multi_component.gas_prop.PL);
|
||||
c.flow.multi_component.gas_prop.Kn = obj.getNumericFieldValue('MCgas_propKnEditField', c.flow.multi_component.gas_prop.Kn);
|
||||
c.flow.multi_component.ifpcgl = obj.getNumericFieldValue('MCifpcglEditField', c.flow.multi_component.ifpcgl);
|
||||
c.flow.multi_component.p_grad_threshold = commonPGradThreshold;
|
||||
c.flow.multi_component.gas_prop.VL = commonGasVL;
|
||||
c.flow.multi_component.gas_prop.PL = commonGasPL;
|
||||
c.flow.multi_component.gas_prop.Kn = commonGasKn;
|
||||
c.flow.multi_component.gas_prop.stress_factor_fracture = obj.getNumericFieldValue('MCstress_factor_fractureEditField', c.flow.multi_component.gas_prop.stress_factor_fracture);
|
||||
c.flow.multi_component.gas_prop.stress_factor_matrix = obj.getNumericFieldValue('MCstress_factor_matrixEditField', c.flow.multi_component.gas_prop.stress_factor_matrix);
|
||||
c.flow.multi_component.gas_prop.stress_factor_ref_pressure = obj.getNumericFieldValue('MCstress_factor_ref_pressureEditField', c.flow.multi_component.gas_prop.stress_factor_ref_pressure);
|
||||
c.flow.multi_component.gas_prop.beta_non_darcy_flow = obj.getNumericFieldValue('MCbeta_non_darcy_flowEditField', c.flow.multi_component.gas_prop.beta_non_darcy_flow);
|
||||
c.flow.multi_component.density_g_sc = obj.getNumericFieldValue('MCdensity_g_scEditField', c.flow.multi_component.density_g_sc);
|
||||
c.flow.multi_component.gas_model = obj.getNumericDropDownValue('MCgas_modelDropDown', c.flow.multi_component.gas_model);
|
||||
c.flow.multi_component.prg = obj.getNumericFieldValue('MCprgEditField', c.flow.multi_component.prg);
|
||||
c.flow.multi_component.Bgi = obj.getNumericFieldValue('MCBgiEditField', c.flow.multi_component.Bgi);
|
||||
c.flow.multi_component.cg = obj.getNumericFieldValue('MCcgEditField', c.flow.multi_component.cg);
|
||||
c.flow.multi_component.vgi = obj.getNumericFieldValue('MCvgiEditField', c.flow.multi_component.vgi);
|
||||
c.flow.multi_component.cvg = obj.getNumericFieldValue('MCcvgEditField', c.flow.multi_component.cvg);
|
||||
c.flow.multi_component.Ppr = obj.getTextAreaExpr('MCPprTextArea', c.flow.multi_component.Ppr);
|
||||
c.flow.multi_component.BG = obj.getTextAreaExpr('MCBGTextArea', c.flow.multi_component.BG);
|
||||
c.flow.multi_component.MUG = obj.getTextAreaExpr('MCMUGTextArea', c.flow.multi_component.MUG);
|
||||
c.flow.multi_component.density_w_sc = obj.getNumericFieldValue('MCdensity_w_scEditField', c.flow.multi_component.density_w_sc);
|
||||
c.flow.multi_component.prw = obj.getNumericFieldValue('MCprwEditField', c.flow.multi_component.prw);
|
||||
c.flow.multi_component.Bwi = obj.getNumericFieldValue('MCBwiEditField', c.flow.multi_component.Bwi);
|
||||
c.flow.multi_component.cw = obj.getNumericFieldValue('MCcwEditField', c.flow.multi_component.cw);
|
||||
c.flow.multi_component.vwi = obj.getNumericFieldValue('MCvwiEditField', c.flow.multi_component.vwi);
|
||||
c.flow.multi_component.cvw = obj.getNumericFieldValue('MCcvwEditField', c.flow.multi_component.cvw);
|
||||
c.flow.multi_component.gas_prop.beta_non_darcy_flow = commonGasBeta;
|
||||
c.flow.multi_component.density_g_sc = commonDensityGSc;
|
||||
c.flow.multi_component.gas_model = 1;
|
||||
c.flow.multi_component.prg = commonGasPrg;
|
||||
c.flow.multi_component.Bgi = commonGasBgi;
|
||||
c.flow.multi_component.cg = commonGasCg;
|
||||
c.flow.multi_component.vgi = commonGasVgi;
|
||||
c.flow.multi_component.cvg = commonGasCvg;
|
||||
c.flow.multi_component.density_w_sc = commonDensityWSc;
|
||||
c.flow.multi_component.prw = commonPrw;
|
||||
c.flow.multi_component.Bwi = commonBwi;
|
||||
c.flow.multi_component.cw = commonCw;
|
||||
c.flow.multi_component.vwi = commonVwi;
|
||||
c.flow.multi_component.cvw = commonCvw;
|
||||
|
||||
c.wells.well1 = obj.getTableValue('Well1Table', c.wells.well1);
|
||||
fractureWellLocation = obj.getNumericTableValue( ...
|
||||
@@ -609,6 +689,155 @@ classdef EDFMAppController < handle
|
||||
obj.setEditableState('FractureInputStyleDropDown', false);
|
||||
end
|
||||
|
||||
function applyDiscretizationVisibility(obj, gridModel)
|
||||
showBoundary = false;
|
||||
if gridModel == 1 && ~isempty(fieldnames(obj.Config)) ...
|
||||
&& isfield(obj.Config, 'discretization') ...
|
||||
&& isfield(obj.Config.discretization, 'sp') ...
|
||||
&& isfield(obj.Config.discretization.sp, 'boundary_polygon')
|
||||
showBoundary = ~isempty(obj.Config.discretization.sp.boundary_polygon);
|
||||
end
|
||||
|
||||
obj.setControlVisible('BoundaryTextAreaLabel', showBoundary);
|
||||
obj.setControlVisible('SPBoundaryTextArea', showBoundary);
|
||||
end
|
||||
|
||||
function applyFlowVisibility(obj, flowModel)
|
||||
showGasCommon = flowModel ~= 2;
|
||||
gasCommonProps = { ...
|
||||
'GasLabel', ...
|
||||
'FlowCommonDensityGScEditField', 'DensityGScLabel', ...
|
||||
'FlowCommonGasPrgEditField', 'GasPrgLabel', ...
|
||||
'FlowCommonGasBgiEditField', 'GasBgiLabel', ...
|
||||
'FlowCommonGasCgEditField', 'GasCgLabel', ...
|
||||
'FlowCommonGasVgiEditField', 'GasVgiLabel', ...
|
||||
'FlowCommonGasCvgEditField', 'GasCvgLabel', ...
|
||||
'FlowCommonGasVLEditField', 'GasVLLabel', ...
|
||||
'FlowCommonGasPLEditField', 'GasPLLabel', ...
|
||||
'FlowCommonGasKnEditField', 'GasKnLabel', ...
|
||||
'FlowCommonGasBetaNonDarcyEditField', 'GasBetaNonDarcyLabel'};
|
||||
for i = 1:numel(gasCommonProps)
|
||||
obj.setControlVisible(gasCommonProps{i}, showGasCommon);
|
||||
end
|
||||
end
|
||||
|
||||
function commonData = getCommonFlowSource(obj, c)
|
||||
if c.model.flow_model == 3
|
||||
waterSource = struct( ...
|
||||
'density_w_sc', c.flow.multi_component.density_w_sc, ...
|
||||
'prw', c.flow.multi_component.prw, ...
|
||||
'Bwi', c.flow.multi_component.Bwi, ...
|
||||
'cw', c.flow.multi_component.cw, ...
|
||||
'vwi', c.flow.multi_component.vwi, ...
|
||||
'cvw', c.flow.multi_component.cvw, ...
|
||||
'p_grad_threshold', c.flow.multi_component.p_grad_threshold);
|
||||
gasSource = struct( ...
|
||||
'density_g_sc', c.flow.multi_component.density_g_sc, ...
|
||||
'prg', c.flow.multi_component.prg, ...
|
||||
'Bgi', c.flow.multi_component.Bgi, ...
|
||||
'cg', c.flow.multi_component.cg, ...
|
||||
'vgi', c.flow.multi_component.vgi, ...
|
||||
'cvg', c.flow.multi_component.cvg, ...
|
||||
'gas_VL', c.flow.multi_component.gas_prop.VL, ...
|
||||
'gas_PL', c.flow.multi_component.gas_prop.PL, ...
|
||||
'gas_Kn', c.flow.multi_component.gas_prop.Kn, ...
|
||||
'gas_beta_non_darcy', c.flow.multi_component.gas_prop.beta_non_darcy_flow);
|
||||
elseif c.model.flow_model == 2
|
||||
waterSource = struct( ...
|
||||
'density_w_sc', c.flow.oil_water.density_w_sc, ...
|
||||
'prw', c.flow.oil_water.prw, ...
|
||||
'Bwi', c.flow.oil_water.Bwi, ...
|
||||
'cw', c.flow.oil_water.cw, ...
|
||||
'vwi', c.flow.oil_water.vwi, ...
|
||||
'cvw', c.flow.oil_water.cvw, ...
|
||||
'p_grad_threshold', c.flow.oil_water.p_grad_threshold);
|
||||
gasSource = struct( ...
|
||||
'density_g_sc', c.flow.gas_water.density_g_sc, ...
|
||||
'prg', c.flow.gas_water.prg, ...
|
||||
'Bgi', c.flow.gas_water.Bgi, ...
|
||||
'cg', c.flow.gas_water.cg, ...
|
||||
'vgi', c.flow.gas_water.vgi, ...
|
||||
'cvg', c.flow.gas_water.cvg, ...
|
||||
'gas_VL', c.flow.gas_water.gas_prop.VL, ...
|
||||
'gas_PL', c.flow.gas_water.gas_prop.PL, ...
|
||||
'gas_Kn', c.flow.gas_water.gas_prop.Kn, ...
|
||||
'gas_beta_non_darcy', c.flow.gas_water.gas_prop.beta_non_darcy_flow);
|
||||
else
|
||||
waterSource = struct( ...
|
||||
'density_w_sc', c.flow.gas_water.density_w_sc, ...
|
||||
'prw', c.flow.gas_water.prw, ...
|
||||
'Bwi', c.flow.gas_water.Bwi, ...
|
||||
'cw', c.flow.gas_water.cw, ...
|
||||
'vwi', c.flow.gas_water.vwi, ...
|
||||
'cvw', c.flow.gas_water.cvw, ...
|
||||
'p_grad_threshold', c.flow.gas_water.p_grad_threshold);
|
||||
gasSource = struct( ...
|
||||
'density_g_sc', c.flow.gas_water.density_g_sc, ...
|
||||
'prg', c.flow.gas_water.prg, ...
|
||||
'Bgi', c.flow.gas_water.Bgi, ...
|
||||
'cg', c.flow.gas_water.cg, ...
|
||||
'vgi', c.flow.gas_water.vgi, ...
|
||||
'cvg', c.flow.gas_water.cvg, ...
|
||||
'gas_VL', c.flow.gas_water.gas_prop.VL, ...
|
||||
'gas_PL', c.flow.gas_water.gas_prop.PL, ...
|
||||
'gas_Kn', c.flow.gas_water.gas_prop.Kn, ...
|
||||
'gas_beta_non_darcy', c.flow.gas_water.gas_prop.beta_non_darcy_flow);
|
||||
end
|
||||
|
||||
commonData = struct( ...
|
||||
'density_w_sc', waterSource.density_w_sc, ...
|
||||
'prw', waterSource.prw, ...
|
||||
'Bwi', waterSource.Bwi, ...
|
||||
'cw', waterSource.cw, ...
|
||||
'vwi', waterSource.vwi, ...
|
||||
'cvw', waterSource.cvw, ...
|
||||
'p_grad_threshold', waterSource.p_grad_threshold, ...
|
||||
'density_g_sc', gasSource.density_g_sc, ...
|
||||
'prg', gasSource.prg, ...
|
||||
'Bgi', gasSource.Bgi, ...
|
||||
'cg', gasSource.cg, ...
|
||||
'vgi', gasSource.vgi, ...
|
||||
'cvg', gasSource.cvg, ...
|
||||
'gas_VL', gasSource.gas_VL, ...
|
||||
'gas_PL', gasSource.gas_PL, ...
|
||||
'gas_Kn', gasSource.gas_Kn, ...
|
||||
'gas_beta_non_darcy', gasSource.gas_beta_non_darcy);
|
||||
end
|
||||
|
||||
function commonData = getCommonDiscretizationSource(obj, c)
|
||||
if c.model.grid_model == 2
|
||||
commonData = struct( ...
|
||||
'prpor', c.discretization.dp.prpor, ...
|
||||
'cpor', c.discretization.dp.cpor, ...
|
||||
'Kf', c.discretization.dp.fracture.Kf, ...
|
||||
'Wf', c.discretization.dp.fracture.Wf, ...
|
||||
'Porf', c.discretization.dp.fracture.Porf, ...
|
||||
'prporf', c.discretization.dp.fracture.prporf, ...
|
||||
'cporf', c.discretization.dp.fracture.cporf, ...
|
||||
'stress_fracture', c.discretization.dp.stress.fracture_factor, ...
|
||||
'stress_matrix', c.discretization.dp.stress.matrix_factor, ...
|
||||
'stress_ref_pressure', c.discretization.dp.stress.ref_pressure, ...
|
||||
'Rpt', c.discretization.dp.Rpt, ...
|
||||
'cf', c.discretization.dp.cf, ...
|
||||
'ca', c.discretization.dp.ca);
|
||||
else
|
||||
commonData = struct( ...
|
||||
'prpor', c.discretization.sp.matrix.prpor, ...
|
||||
'cpor', c.discretization.sp.matrix.cpor, ...
|
||||
'Kf', c.discretization.sp.fracture.Kf, ...
|
||||
'Wf', c.discretization.sp.fracture.Wf, ...
|
||||
'Porf', c.discretization.sp.fracture.Porf, ...
|
||||
'prporf', c.discretization.sp.fracture.prporf, ...
|
||||
'cporf', c.discretization.sp.fracture.cporf, ...
|
||||
'stress_fracture', c.discretization.sp.stress.fracture_factor, ...
|
||||
'stress_matrix', c.discretization.sp.stress.matrix_factor, ...
|
||||
'stress_ref_pressure', c.discretization.sp.stress.ref_pressure, ...
|
||||
'Rpt', c.discretization.sp.stress.Rpt, ...
|
||||
'cf', c.discretization.sp.stress.cf, ...
|
||||
'ca', c.discretization.sp.stress.ca);
|
||||
end
|
||||
end
|
||||
|
||||
function refreshResults(obj)
|
||||
summary = {};
|
||||
if isempty(fieldnames(obj.Results))
|
||||
|
||||
Binary file not shown.
+635
-1387
File diff suppressed because it is too large
Load Diff
@@ -68,7 +68,10 @@ config.discretization = struct( ...
|
||||
'stress', struct( ...
|
||||
'fracture_factor', 0, ...
|
||||
'matrix_factor', 0, ...
|
||||
'ref_pressure', 20)), ...
|
||||
'ref_pressure', 20, ...
|
||||
'Rpt', 0, ...
|
||||
'cf', 0, ...
|
||||
'ca', 0)), ...
|
||||
'dp', struct( ...
|
||||
'valid_grids', [], ...
|
||||
'NTG', [], ...
|
||||
@@ -95,7 +98,10 @@ config.discretization = struct( ...
|
||||
'stress', struct( ...
|
||||
'fracture_factor', 0, ...
|
||||
'matrix_factor', 0, ...
|
||||
'ref_pressure', 20)), ...
|
||||
'ref_pressure', 20), ...
|
||||
'Rpt', 0, ...
|
||||
'cf', 0, ...
|
||||
'ca', 0), ...
|
||||
'notes', '');
|
||||
|
||||
config.flow = struct( ...
|
||||
|
||||
@@ -11,6 +11,8 @@ config = merge_struct_defaults(config, defaults);
|
||||
|
||||
config.model.grid_model = first_nonempty_scalar(config.model.grid_model, 1);
|
||||
config.model.flow_model = first_nonempty_scalar(config.model.flow_model, 1);
|
||||
config.flow.gas_water.gas_model = 1;
|
||||
config.flow.multi_component.gas_model = 1;
|
||||
|
||||
legacy_model_fields = {'modelflag'};
|
||||
legacy_fracture_fields = {'input_style', 'fractureLines', 'fractureHeights', 'flowBarrierFlags'};
|
||||
|
||||
@@ -169,9 +169,9 @@ end
|
||||
|
||||
function tf = has_complete_gas_water_config(gw)
|
||||
required_fields = { ...
|
||||
'density_g_sc', 'density_w_sc', 'gas_model', 'prw', 'Bwi', 'cw', ...
|
||||
'density_g_sc', 'density_w_sc', 'prw', 'Bwi', 'cw', ...
|
||||
'vwi', 'cvw', 'ifpcgl', 'matrix_relperm_table', 'fracture_relperm_table', ...
|
||||
'p_grad_threshold'};
|
||||
'p_grad_threshold', 'prg', 'Bgi', 'cg', 'vgi', 'cvg'};
|
||||
|
||||
tf = true;
|
||||
for i = 1:numel(required_fields)
|
||||
@@ -187,14 +187,7 @@ if ~isfield(gw, 'gas_prop') || isempty(gw.gas_prop)
|
||||
return;
|
||||
end
|
||||
|
||||
if gw.gas_model == 1
|
||||
tf = all(isfield(gw, {'prg', 'Bgi', 'cg', 'vgi', 'cvg'})) && ...
|
||||
~isempty(gw.prg) && ~isempty(gw.Bgi) && ~isempty(gw.cg) && ...
|
||||
~isempty(gw.vgi) && ~isempty(gw.cvg);
|
||||
else
|
||||
tf = all(isfield(gw, {'Ppr', 'BG', 'MUG'})) && ...
|
||||
~isempty(gw.Ppr) && ~isempty(gw.BG) && ~isempty(gw.MUG);
|
||||
end
|
||||
tf = true;
|
||||
end
|
||||
|
||||
function tf = has_complete_oil_water_config(ow)
|
||||
@@ -223,13 +216,7 @@ end
|
||||
end
|
||||
|
||||
function [f, state0] = build_gas_water_flow_from_config(gw, initial_config, r)
|
||||
if gw.gas_model == 1
|
||||
[Ppr, BG, MUG] = cal_gas_prop(gw.prg, gw.Bgi, gw.cg, gw.vgi, gw.cvg);
|
||||
else
|
||||
Ppr = gw.Ppr;
|
||||
BG = gw.BG;
|
||||
MUG = gw.MUG;
|
||||
end
|
||||
[Ppr, BG, MUG] = cal_gas_prop(gw.prg, gw.Bgi, gw.cg, gw.vgi, gw.cvg);
|
||||
|
||||
matrix_table = gw.matrix_relperm_table;
|
||||
fracture_table = gw.fracture_relperm_table;
|
||||
@@ -290,7 +277,8 @@ required_fields = { ...
|
||||
'Ds', 'Db', 'c_ca_table', 'R', 'Vm', 'Temperature', ...
|
||||
'cs_Nc', 'kr_nosurf', 'kr_surf', 'PC', ...
|
||||
'cs_Nc_fracture', 'kr_nosurf_fracture', 'kr_surf_fracture', 'PC_fracture', ...
|
||||
'density_g_sc', 'density_w_sc', 'gas_model', 'prw', 'Bwi', 'cw', 'vwi', 'cvw'};
|
||||
'density_g_sc', 'density_w_sc', 'prw', 'Bwi', 'cw', 'vwi', 'cvw', ...
|
||||
'prg', 'Bgi', 'cg', 'vgi', 'cvg'};
|
||||
|
||||
tf = true;
|
||||
for i = 1:numel(required_fields)
|
||||
@@ -306,14 +294,7 @@ if ~isfield(mc, 'gas_prop') || isempty(mc.gas_prop)
|
||||
return;
|
||||
end
|
||||
|
||||
if mc.gas_model == 1
|
||||
tf = all(isfield(mc, {'prg', 'Bgi', 'cg', 'vgi', 'cvg'})) && ...
|
||||
~isempty(mc.prg) && ~isempty(mc.Bgi) && ~isempty(mc.cg) && ...
|
||||
~isempty(mc.vgi) && ~isempty(mc.cvg);
|
||||
else
|
||||
tf = all(isfield(mc, {'Ppr', 'BG', 'MUG'})) && ...
|
||||
~isempty(mc.Ppr) && ~isempty(mc.BG) && ~isempty(mc.MUG);
|
||||
end
|
||||
tf = true;
|
||||
end
|
||||
|
||||
function [f, state0] = build_multi_component_flow_from_config(mc, initial_config, r)
|
||||
@@ -324,13 +305,7 @@ cba_data = mc.c_ca_table(:, 3) * 1e-3;
|
||||
Nc_nosurf = min(mc.cs_Nc(:, 2));
|
||||
Nc_surf = max(mc.cs_Nc(:, 2));
|
||||
|
||||
if mc.gas_model == 1
|
||||
[Ppr, BG, MUG] = cal_gas_prop(mc.prg, mc.Bgi, mc.cg, mc.vgi, mc.cvg);
|
||||
else
|
||||
Ppr = mc.Ppr;
|
||||
BG = mc.BG;
|
||||
MUG = mc.MUG;
|
||||
end
|
||||
[Ppr, BG, MUG] = cal_gas_prop(mc.prg, mc.Bgi, mc.cg, mc.vgi, mc.cvg);
|
||||
|
||||
f = fluidPVT_new( ...
|
||||
Ppr, BG, MUG, mc.Bwi, mc.prw, mc.cw, mc.vwi, mc.cvw, ...
|
||||
|
||||
Reference in New Issue
Block a user