diff --git a/docs/app_designer_binding_guide.md b/docs/app_designer_binding_guide.md new file mode 100644 index 0000000..755b5e7 --- /dev/null +++ b/docs/app_designer_binding_guide.md @@ -0,0 +1,167 @@ +# App Designer Binding Guide + +## Fastest Path + +按原计划要最快跑通,建议只先做这一条主线: + +1. 保持真正界面文件为 [EDFM_Simulator_App.mlapp](C:\Users\15715\Documents\code\edfm_gui\gui_support\app\EDFM_Simulator_App.mlapp)。 +2. 不直接改解包后的 `.mlapp` 内容。 +3. 用新加的控制器 [EDFMAppController.m](C:\Users\15715\Documents\code\edfm_gui\gui_support\app\EDFMAppController.m) 负责绑定。 +4. 首先只保证 `case01` 的模板加载、配置导入导出、运行、结果导入导出、基础绘图跑通。 +5. 其他 case 和更细的参数编辑体验留到下一轮。 + +原因很直接:现在仓库里后端已经有统一 `config`、`case01` 模板、`run_case(config)`、MAT 导入导出,缺的主要就是 `.mlapp` 的回调连接和控件同步。 + +## 我已经补了什么 + +新增了 [EDFMAppController.m](C:\Users\15715\Documents\code\edfm_gui\gui_support\app\EDFMAppController.m),负责: + +- 启动默认加载 `case01` +- `New Config` +- 模板加载 +- config 导入导出 +- result 导入导出 +- 从 UI 回写 `config` +- 从 `config` 刷新 UI +- 调用 `run_case(config)` +- 基础结果摘要和绘图 +- SP/DP 页签切换 +- 三种流动模型页签切换 + +当前重点是让你现有 `.mlapp` 最快可运行,不是一次性把所有参数编辑体验做完。 + +## 你需要在 App Designer 里手动做的事 + +只在 [EDFM_Simulator_App.mlapp](C:\Users\15715\Documents\code\edfm_gui\gui_support\app\EDFM_Simulator_App.mlapp) 里做下面这些操作。 + +### 1. 添加控制器属性 + +在属性区加上: + +```matlab +Controller EDFMAppController +``` + +如果已经有,就保留,不要改名。 + +### 2. 添加 startup 函数 + +在 Code View 里确认有: + +```matlab +function startupApp(app) + app.Controller = EDFMAppController(app); + app.Controller.startup(); +end +``` + +并确认构造函数里有: + +```matlab +runStartupFcn(app, @(~,~)startupApp(app)); +``` + +### 3. 绑定按钮回调 + +把这些控件分别绑定到这些方法: + +- `NewConfigButton` -> `onNewConfig` +- `LoadTemplateButton` -> `onLoadTemplate` +- `ImportConfigButton` -> `onImportConfig` +- `ExportConfigButton` -> `onExportConfig` +- `RunButton` -> `onRun` +- `RunCurrentConfigButton` -> `onRun` +- `ImportResultButton` -> `onImportResult` +- `ExportResultButton` -> `onExportResult` +- `PlotResultButton` -> `onPlotResult` + +对应方法: + +```matlab +function onNewConfig(app) + app.Controller.newConfig(); +end + +function onLoadTemplate(app) + app.Controller.loadTemplate(app.TemplateDropDown.Value); +end + +function onImportConfig(app) + app.Controller.importConfig(); +end + +function onExportConfig(app) + app.Controller.exportConfig(); +end + +function onRun(app) + app.Controller.runCurrentConfig(); +end + +function onImportResult(app) + app.Controller.importResults(); +end + +function onExportResult(app) + app.Controller.exportResults(); +end + +function onPlotResult(app) + app.Controller.plotResults(); +end +``` + +### 4. 绑定模型切换回调 + +给下面两个下拉框绑定 `onModelChanged`: + +- `ModelFlowModelDropDown` +- `ModelGridModelDropDown` + +方法: + +```matlab +function onModelChanged(app) + if ~isempty(app.Controller) + app.Controller.syncModelTabs(); + end +end +``` + +同时把: + +- `ResultTypeDropDown` 的 `ValueChangedFcn` + +绑定到 `onPlotResult`。 + +### 5. 保持控件名不变 + +控制器默认依赖这些命名,不要在 App Designer 里随意改: + +- 顶栏:`TemplateDropDown`、`LoadTemplateButton`、`ImportConfigButton`、`ExportConfigButton`、`RunButton`、`ImportResultButton`、`ExportResultButton`、`StatusLabel` +- 模型:`ModelFlagDropDown`、`ModelGridModelDropDown`、`ModelFlowModelDropDown` +- 网格:`GridDxTextArea`、`GridDyTextArea`、`GridDzTextArea`、`GridNTGTextArea` +- 裂缝:`FractureInputStyleDropDown`、`FractureInputTextArea`、`FractureLinesTextArea`、`FractureHeightsTextArea`、`FractureFlowBarrierFlagsTextArea` +- SP:`SPBoundaryTextArea`、`SPInvalidLayerTextArea`、`SPMatrixKxTextArea`、`SPMatrixKyTextArea`、`SPMatrixKzTextArea`、`SPMatrixPoriTextArea`、`SPMatrixPrporEditField`、`SPMatrixCporEditField`、`SPRockDensityEditField`、`SPFractureKfTextArea`、`SPFractureWfTextArea`、`SPFracturePorfTextArea`、`SPFracturePrporEditField`、`SPFractureCporfEditField`、`SPStressFractureEditField`、`SPStressMatrixEditField`、`SPStressRefPressureEditField` +- DP:`DPkxTextArea`、`DPkyTextArea`、`DPkzTextArea`、`DPkx_matrixLayerTextArea`、`DPky_matrixLayerTextArea`、`DPkz_matrixLayerTextArea`、`DPpori_matrixLayerTextArea`、`DPsigmaTextArea`、`DPNTGTextArea`、`DPprporEditField`、`DPcporEditField`、`DPKfTextArea`、`DPWfTextArea`、`DPPorfTextArea`、`DPprporfEditField`、`DPcporfEditField`、`DPstress_factor_fractureEditField`、`DPstress_factor_matrixEditField`、`DPstress_factor_ref_pressureEditField` +- 初始值和多组分主控件:`InitialPressureEditField`、`InitialSwEditField`、`InitialCsEditField`、`InitialCbEditField`、`InitStatusLabel`、`MCcs_NcTextArea`、`MCkr_nosurfTextArea`、`MCkr_surfTextArea`、`MCPCTextArea`、`MCcs_Nc_fractureTextArea`、`MCkr_nosurf_fractureTextArea`、`MCkr_surf_fractureTextArea`、`MCPC_fractureTextArea`、`MCp_grad_thresholdEditField`、`MCgas_propVLEditField`、`MCgas_propPLEditField`、`MCgas_propKnEditField`、`MCstress_factor_fractureEditField`、`MCstress_factor_matrixEditField`、`MCstress_factor_ref_pressureEditField`、`MCbeta_non_darcy_flowEditField`、`MCdensity_g_scEditField`、`MCgas_modelDropDown`、`MCprgEditField`、`MCBgiEditField`、`MCcgEditField`、`MCvgiEditField`、`MCcvgEditField`、`MCPprTextArea`、`MCBGTextArea`、`MCMUGTextArea`、`MCdensity_w_scEditField`、`MCprwEditField`、`MCBwiEditField`、`MCcwEditField`、`MCvwiEditField`、`MCcvwEditField` +- 井和排程:`Well1Table`、`FractureWellLocationTable`、`Well2Table`、`ScheduleTable`、`TimeTextArea`、`DtMinTextArea`、`DtMaxTextArea` +- 求解器:`YitaPEditField`、`YitaSEditField`、`OmegaEditField`、`NmaxEditField`、`EpsAveEditField`、`EpsMaxEditField` +- 运行和结果:`RunLogTextArea`、`RunProgressLabel`、`CurrentStageLabel`、`CurrentTimeLabel`、`CurrentDtLabel`、`ResultSummaryTextArea`、`ResultTypeDropDown`、`ResultAxes`、`ResultTab` +- 页签组:`TabGroup2`、`TabGroup3`、`GasWaterTab`、`OilWaterTab`、`MultiComponentTab`、`SPTab`、`DPTab` + +## 第一轮验证怎么做 + +1. 在 App Designer 打开 [EDFM_Simulator_App.mlapp](C:\Users\15715\Documents\code\edfm_gui\gui_support\app\EDFM_Simulator_App.mlapp)。 +2. 按上面的方式挂好属性、startup 和 callbacks。 +3. 直接运行 app。 +4. 看启动后是否自动加载 `case01`。 +5. 看 `ModelFlowModelDropDown = 3` 时是否自动切到多组分页。 +6. 不改参数直接点 `Run`,先验证统一链路能否起跑。 + +## 当前已知限制 + +- 模板仍然只有 `case01`。 +- 现在是“先跑通”的控制器,不是最终版用户体验。 +- `UITable` 里嵌套 cell 和矩阵的编辑体验还比较原始。 +- [launch_edfm_simulator_app.m](C:\Users\15715\Documents\code\edfm_gui\gui_support\app\launch_edfm_simulator_app.m) 目前仍指向手写 `.m` app,不适合你当前的 `.mlapp` 工作流,所以这一步先直接在 App Designer 里运行 `.mlapp`。 diff --git a/docs/edfm_simulator_app.txt b/docs/edfm_simulator_app.txt new file mode 100644 index 0000000..b2ea1b9 --- /dev/null +++ b/docs/edfm_simulator_app.txt @@ -0,0 +1,2118 @@ +classdef EDFM_Simulator_App < matlab.apps.AppBase + + % Properties that correspond to app components + properties (Access = public) + UIFigure matlab.ui.Figure + NewConfigButton matlab.ui.control.Button + TabGroup matlab.ui.container.TabGroup + ModelTab matlab.ui.container.Tab + ModelFlowModelDropDown matlab.ui.control.DropDown + FlowModelDropDownLabel matlab.ui.control.Label + ModelGridModelDropDown matlab.ui.control.DropDown + GridModelDropDownLabel matlab.ui.control.Label + ModelFlagDropDown matlab.ui.control.DropDown + ModelFlagDropDownLabel matlab.ui.control.Label + GridTab matlab.ui.container.Tab + GridNTGTextArea matlab.ui.control.TextArea + NTGTextAreaLabel matlab.ui.control.Label + GridDzTextArea matlab.ui.control.TextArea + DzTextAreaLabel matlab.ui.control.Label + GridDyTextArea matlab.ui.control.TextArea + DyTextAreaLabel matlab.ui.control.Label + GridDxTextArea matlab.ui.control.TextArea + DxTextAreaLabel matlab.ui.control.Label + FractureTab matlab.ui.container.Tab + FractureFlowBarrierFlagsTextArea matlab.ui.control.TextArea + FlowBarrierFlagsTextAreaLabel matlab.ui.control.Label + FractureHeightsTextArea matlab.ui.control.TextArea + FractureHeightsTextAreaLabel matlab.ui.control.Label + FractureLinesTextArea matlab.ui.control.TextArea + FractureLinesTextAreaLabel matlab.ui.control.Label + FractureInputTextArea matlab.ui.control.TextArea + FractureInputTextAreaLabel matlab.ui.control.Label + FractureInputStyleDropDown matlab.ui.control.DropDown + FractureInputStyleDropDownLabel matlab.ui.control.Label + DiscretizationTab matlab.ui.container.Tab + TabGroup3 matlab.ui.container.TabGroup + SPTab matlab.ui.container.Tab + SPcaEditField matlab.ui.control.NumericEditField + caEditFieldLabel matlab.ui.control.Label + SPcfEditField matlab.ui.control.NumericEditField + cfEditFieldLabel matlab.ui.control.Label + SPRptEditField matlab.ui.control.NumericEditField + RptEditFieldLabel matlab.ui.control.Label + SPStressRefPressureEditField matlab.ui.control.NumericEditField + StressRefPressureEditFieldLabel matlab.ui.control.Label + SPStressMatrixEditField matlab.ui.control.NumericEditField + StressMatrixEditFieldLabel matlab.ui.control.Label + SPStressFractureEditField matlab.ui.control.NumericEditField + StressFractureEditFieldLabel matlab.ui.control.Label + SPFracturePrporEditField matlab.ui.control.NumericEditField + FracturePrporEditFieldLabel matlab.ui.control.Label + SPFractureCporfEditField matlab.ui.control.NumericEditField + FractureCporfEditFieldLabel matlab.ui.control.Label + SPFracturePorfTextArea matlab.ui.control.TextArea + FracturePorfTextAreaLabel matlab.ui.control.Label + SPFractureWfTextArea matlab.ui.control.TextArea + FractureWfTextAreaLabel matlab.ui.control.Label + SPFractureKfTextArea matlab.ui.control.TextArea + FractureKfTextAreaLabel matlab.ui.control.Label + SPRockDensityEditField matlab.ui.control.NumericEditField + RockDensityEditFieldLabel matlab.ui.control.Label + SPMatrixCporEditField matlab.ui.control.NumericEditField + MatrixCporEditFieldLabel matlab.ui.control.Label + SPMatrixPrporEditField matlab.ui.control.NumericEditField + MatrixPrporEditFieldLabel matlab.ui.control.Label + SPMatrixPoriTextArea matlab.ui.control.TextArea + MatrixPoriTextAreaLabel matlab.ui.control.Label + SPMatrixKzTextArea matlab.ui.control.TextArea + MatrixKzTextAreaLabel matlab.ui.control.Label + SPMatrixKyTextArea matlab.ui.control.TextArea + MatrixKyTextAreaLabel matlab.ui.control.Label + SPMatrixKxTextArea matlab.ui.control.TextArea + MatrixKxTextAreaLabel matlab.ui.control.Label + SPInvalidLayerTextArea matlab.ui.control.TextArea + InvalidLayerTextAreaLabel matlab.ui.control.Label + SPBoundaryTextArea matlab.ui.control.TextArea + BoundaryTextAreaLabel matlab.ui.control.Label + DPTab matlab.ui.container.Tab + DPcaEditField matlab.ui.control.NumericEditField + caEditFieldLabel_2 matlab.ui.control.Label + DPcffEditField matlab.ui.control.NumericEditField + cffEditFieldLabel matlab.ui.control.Label + DPRptEditField matlab.ui.control.NumericEditField + RptEditFieldLabel_2 matlab.ui.control.Label + DPstress_factor_ref_pressureEditField matlab.ui.control.NumericEditField + stress_factor_ref_pressureEditFieldLabel matlab.ui.control.Label + DPstress_factor_matrixEditField matlab.ui.control.NumericEditField + stress_factor_matrixEditFieldLabel matlab.ui.control.Label + DPstress_factor_fractureEditField matlab.ui.control.NumericEditField + stress_factor_fractureEditFieldLabel matlab.ui.control.Label + DPcporfEditField matlab.ui.control.NumericEditField + cporfEditFieldLabel matlab.ui.control.Label + DPprporfEditField matlab.ui.control.NumericEditField + prporfEditFieldLabel matlab.ui.control.Label + DPPorfTextArea matlab.ui.control.TextArea + PorfTextAreaLabel matlab.ui.control.Label + DPWfTextArea matlab.ui.control.TextArea + WfTextAreaLabel matlab.ui.control.Label + DPKfTextArea matlab.ui.control.TextArea + KfTextAreaLabel matlab.ui.control.Label + DPcporEditField matlab.ui.control.NumericEditField + cporLabel matlab.ui.control.Label + DPprporEditField matlab.ui.control.NumericEditField + prporEditFieldLabel matlab.ui.control.Label + DPNTGTextArea matlab.ui.control.TextArea + NTGTextArea_2Label matlab.ui.control.Label + DPsigmaTextArea matlab.ui.control.TextArea + sigmaTextAreaLabel matlab.ui.control.Label + DPpori_matrixLayerTextArea matlab.ui.control.TextArea + pori_matrixLayerTextAreaLabel matlab.ui.control.Label + DPkz_matrixLayerTextArea matlab.ui.control.TextArea + kz_matrixLayerTextAreaLabel matlab.ui.control.Label + DPky_matrixLayerTextArea matlab.ui.control.TextArea + ky_matrixLayerTextAreaLabel matlab.ui.control.Label + DPkx_matrixLayerTextArea matlab.ui.control.TextArea + kx_matrixLayerTextAreaLabel matlab.ui.control.Label + DPkzTextArea matlab.ui.control.TextArea + kzTextAreaLabel matlab.ui.control.Label + DPkyTextArea matlab.ui.control.TextArea + kyTextAreaLabel matlab.ui.control.Label + DPkxTextArea matlab.ui.control.TextArea + kxTextAreaLabel matlab.ui.control.Label + FlowTab matlab.ui.container.Tab + InitialCbEditField matlab.ui.control.NumericEditField + InitialCbEditFieldLabel matlab.ui.control.Label + InitialCsEditField matlab.ui.control.NumericEditField + InitialCsEditFieldLabel matlab.ui.control.Label + InitialSwEditField matlab.ui.control.NumericEditField + InitialSwEditFieldLabel matlab.ui.control.Label + InitialPressureEditField matlab.ui.control.NumericEditField + InitialPressureEditFieldLabel matlab.ui.control.Label + InitStatusLabel matlab.ui.control.Label + TabGroup2 matlab.ui.container.TabGroup + GasWaterTab matlab.ui.container.Tab + GWPRFTextArea matlab.ui.control.TextArea + PRFTextAreaLabel matlab.ui.control.Label + GWRPGWTextArea matlab.ui.control.TextArea + RPGWTextAreaLabel matlab.ui.control.Label + GWifpcglEditField matlab.ui.control.NumericEditField + ifpcglEditFieldLabel matlab.ui.control.Label + GWcvwEditField matlab.ui.control.NumericEditField + cvwEditFieldLabel matlab.ui.control.Label + GWvwiEditField matlab.ui.control.NumericEditField + vwiEditFieldLabel matlab.ui.control.Label + GWcwEditField matlab.ui.control.NumericEditField + cwEditFieldLabel matlab.ui.control.Label + GWBwiEditField matlab.ui.control.NumericEditField + BwiEditFieldLabel matlab.ui.control.Label + GWprwEditField matlab.ui.control.NumericEditField + prwEditFieldLabel matlab.ui.control.Label + GWMUGTextArea matlab.ui.control.TextArea + MUGTextAreaLabel matlab.ui.control.Label + GWBGTextArea matlab.ui.control.TextArea + BGTextAreaLabel matlab.ui.control.Label + GWPprTextArea matlab.ui.control.TextArea + PprTextAreaLabel matlab.ui.control.Label + GWcvgEditField matlab.ui.control.NumericEditField + cvgEditFieldLabel matlab.ui.control.Label + GWvgiEditField matlab.ui.control.NumericEditField + vgiEditFieldLabel matlab.ui.control.Label + GWcgEditField matlab.ui.control.NumericEditField + cgEditFieldLabel matlab.ui.control.Label + GWBgiEditField matlab.ui.control.NumericEditField + BgiEditFieldLabel matlab.ui.control.Label + GWprgEditField matlab.ui.control.NumericEditField + prgEditFieldLabel matlab.ui.control.Label + GWgas_modelDropDown matlab.ui.control.DropDown + gas_modelDropDownLabel matlab.ui.control.Label + GWdensity_w_scEditField matlab.ui.control.NumericEditField + density_w_scEditFieldLabel matlab.ui.control.Label + GWdensity_g_scEditField matlab.ui.control.NumericEditField + density_g_scEditFieldLabel matlab.ui.control.Label + GWp_grad_thresholdEditField matlab.ui.control.NumericEditField + p_grad_thresholdEditFieldLabel matlab.ui.control.Label + GWbeta_non_darcy_flowEditField matlab.ui.control.NumericEditField + beta_non_darcy_flowEditFieldLabel matlab.ui.control.Label + GWgas_propKnEditField matlab.ui.control.NumericEditField + gas_propKnEditFieldLabel matlab.ui.control.Label + GWgas_propPLEditField matlab.ui.control.NumericEditField + gas_propPLEditFieldLabel matlab.ui.control.Label + GWgas_propVLEditField matlab.ui.control.NumericEditField + gas_propVLEditFieldLabel matlab.ui.control.Label + OilWaterTab matlab.ui.container.Tab + OWp_grad_thresholdEditField matlab.ui.control.NumericEditField + p_grad_thresholdEditFieldLabel_2 matlab.ui.control.Label + OWbeta_non_Darcy_flowEditField matlab.ui.control.NumericEditField + beta_non_Darcy_flowEditFieldLabel matlab.ui.control.Label + OWPRFTextArea matlab.ui.control.TextArea + PRFTextAreaLabel_2 matlab.ui.control.Label + OWPRMTextArea matlab.ui.control.TextArea + PRMTextAreaLabel matlab.ui.control.Label + OWifpcowEditField matlab.ui.control.NumericEditField + ifpcowEditFieldLabel matlab.ui.control.Label + OWcvwEditField matlab.ui.control.NumericEditField + cvwEditFieldLabel_2 matlab.ui.control.Label + OWvwiEditField matlab.ui.control.NumericEditField + vwiEditFieldLabel_2 matlab.ui.control.Label + OWcwEditField matlab.ui.control.NumericEditField + cwEditFieldLabel_2 matlab.ui.control.Label + OWBwiEditField matlab.ui.control.NumericEditField + BwiEditFieldLabel_2 matlab.ui.control.Label + OWprwEditField matlab.ui.control.NumericEditField + prwEditFieldLabel_2 matlab.ui.control.Label + OWMUOTextArea matlab.ui.control.TextArea + MUOTextAreaLabel matlab.ui.control.Label + OWBOTextArea matlab.ui.control.TextArea + BOTextAreaLabel matlab.ui.control.Label + OWPprTextArea matlab.ui.control.TextArea + PprTextAreaLabel_2 matlab.ui.control.Label + OWcvoEditField matlab.ui.control.NumericEditField + cvoEditFieldLabel matlab.ui.control.Label + OWvoiEditField matlab.ui.control.NumericEditField + voiEditFieldLabel matlab.ui.control.Label + OWcoEditField matlab.ui.control.NumericEditField + coEditFieldLabel matlab.ui.control.Label + OWBoiEditField matlab.ui.control.NumericEditField + BoiEditFieldLabel matlab.ui.control.Label + OWproEditField matlab.ui.control.NumericEditField + proEditFieldLabel matlab.ui.control.Label + OWoil_modelDropDown matlab.ui.control.DropDown + oil_modelDropDownLabel matlab.ui.control.Label + OWdensity_w_scEditField matlab.ui.control.NumericEditField + density_w_scEditFieldLabel_2 matlab.ui.control.Label + OWdensity_o_scEditField matlab.ui.control.NumericEditField + density_o_scEditFieldLabel matlab.ui.control.Label + MultiComponentTab matlab.ui.container.Tab + MCcvwEditField matlab.ui.control.NumericEditField + cvwEditFieldLabel_3 matlab.ui.control.Label + MCvwiEditField matlab.ui.control.NumericEditField + vwiEditFieldLabel_3 matlab.ui.control.Label + MCcwEditField matlab.ui.control.NumericEditField + cwEditFieldLabel_3 matlab.ui.control.Label + MCBwiEditField matlab.ui.control.NumericEditField + BwiEditFieldLabel_3 matlab.ui.control.Label + MCprwEditField matlab.ui.control.NumericEditField + prwEditFieldLabel_3 matlab.ui.control.Label + MCdensity_w_scEditField matlab.ui.control.NumericEditField + density_w_scEditFieldLabel_3 matlab.ui.control.Label + MCMUGTextArea matlab.ui.control.TextArea + MUGTextAreaLabel_2 matlab.ui.control.Label + MCBGTextArea matlab.ui.control.TextArea + BGTextAreaLabel_2 matlab.ui.control.Label + MCPprTextArea matlab.ui.control.TextArea + PprTextAreaLabel_3 matlab.ui.control.Label + MCcvgEditField matlab.ui.control.NumericEditField + cvgEditFieldLabel_2 matlab.ui.control.Label + MCvgiEditField matlab.ui.control.NumericEditField + vgiEditFieldLabel_2 matlab.ui.control.Label + MCcgEditField matlab.ui.control.NumericEditField + cgEditFieldLabel_2 matlab.ui.control.Label + MCBgiEditField matlab.ui.control.NumericEditField + BgiEditFieldLabel_2 matlab.ui.control.Label + MCprgEditField matlab.ui.control.NumericEditField + prgEditFieldLabel_2 matlab.ui.control.Label + MCgas_modelDropDown matlab.ui.control.DropDown + gas_modelDropDownLabel_2 matlab.ui.control.Label + MCdensity_g_scEditField matlab.ui.control.NumericEditField + density_g_scEditFieldLabel_2 matlab.ui.control.Label + MCbeta_non_darcy_flowEditField matlab.ui.control.NumericEditField + beta_non_darcy_flowEditFieldLabel_2 matlab.ui.control.Label + MCstress_factor_ref_pressureEditField matlab.ui.control.NumericEditField + stress_factor_ref_pressureEditFieldLabel_2 matlab.ui.control.Label + MCstress_factor_matrixEditField matlab.ui.control.NumericEditField + stress_factor_matrixEditFieldLabel_2 matlab.ui.control.Label + MCstress_factor_fractureEditField matlab.ui.control.NumericEditField + stress_factor_fractureEditFieldLabel_2 matlab.ui.control.Label + MCgas_propKnEditField matlab.ui.control.NumericEditField + gas_propKnEditFieldLabel_2 matlab.ui.control.Label + MCgas_propPLEditField matlab.ui.control.NumericEditField + gas_propPLEditFieldLabel_2 matlab.ui.control.Label + MCgas_propVLEditField matlab.ui.control.NumericEditField + gas_propVLEditFieldLabel_2 matlab.ui.control.Label + MCp_grad_thresholdEditField matlab.ui.control.NumericEditField + p_grad_thresholdEditFieldLabel_3 matlab.ui.control.Label + MCifpcglEditField matlab.ui.control.NumericEditField + ifpcglEditFieldLabel_2 matlab.ui.control.Label + MCPC_fractureTextArea matlab.ui.control.TextArea + PC_fractureTextAreaLabel matlab.ui.control.Label + MCkr_surf_fractureTextArea matlab.ui.control.TextArea + kr_surf_fractureTextAreaLabel matlab.ui.control.Label + MCkr_nosurf_fractureTextArea matlab.ui.control.TextArea + kr_nosurf_fractureTextAreaLabel matlab.ui.control.Label + MCcs_Nc_fractureTextArea matlab.ui.control.TextArea + cs_Nc_fractureTextAreaLabel matlab.ui.control.Label + MCPCTextArea matlab.ui.control.TextArea + PCTextAreaLabel matlab.ui.control.Label + MCkr_surfTextArea matlab.ui.control.TextArea + kr_surfTextAreaLabel matlab.ui.control.Label + MCkr_nosurfTextArea matlab.ui.control.TextArea + kr_nosurfTextAreaLabel matlab.ui.control.Label + MCcs_NcTextArea matlab.ui.control.TextArea + cs_NcTextAreaLabel matlab.ui.control.Label + MCTemperatureEditField matlab.ui.control.NumericEditField + TemperatureEditFieldLabel matlab.ui.control.Label + MCVmEditField matlab.ui.control.NumericEditField + VmEditFieldLabel matlab.ui.control.Label + MCREditField matlab.ui.control.NumericEditField + REditFieldLabel matlab.ui.control.Label + MCc_ca_tableTextArea matlab.ui.control.TextArea + c_ca_tableTextAreaLabel matlab.ui.control.Label + MCDbEditField matlab.ui.control.NumericEditField + DbEditFieldLabel matlab.ui.control.Label + MCDsEditField matlab.ui.control.NumericEditField + DsEditFieldLabel matlab.ui.control.Label + WellsTab matlab.ui.container.Tab + DtMaxTextArea matlab.ui.control.TextArea + DtMaxTextAreaLabel matlab.ui.control.Label + DtMinTextArea matlab.ui.control.TextArea + DtMinTextAreaLabel matlab.ui.control.Label + TimeTextArea matlab.ui.control.TextArea + TimeTextAreaLabel matlab.ui.control.Label + ScheduleTable matlab.ui.control.Table + Well2Table matlab.ui.control.Table + FractureWellLocationTable matlab.ui.control.Table + Well1Table matlab.ui.control.Table + SoloverTab matlab.ui.container.Tab + EpsMaxEditField matlab.ui.control.NumericEditField + EpsMaxEditFieldLabel matlab.ui.control.Label + EpsAveEditField matlab.ui.control.NumericEditField + EpsAveEditFieldLabel matlab.ui.control.Label + NmaxEditField matlab.ui.control.NumericEditField + NmaxEditFieldLabel matlab.ui.control.Label + OmegaEditField matlab.ui.control.NumericEditField + OmegaEditFieldLabel matlab.ui.control.Label + YitaSEditField matlab.ui.control.NumericEditField + YitaSEditFieldLabel matlab.ui.control.Label + YitaPEditField matlab.ui.control.NumericEditField + YitaPEditFieldLabel matlab.ui.control.Label + RunTab matlab.ui.container.Tab + RunProgressLabel matlab.ui.control.Label + RunLogTextArea matlab.ui.control.TextArea + RunLogTextAreaLabel matlab.ui.control.Label + RunCurrentConfigButton matlab.ui.control.Button + ResultsTab matlab.ui.container.Tab + ResultTab matlab.ui.control.Table + PlotResultButton matlab.ui.control.Button + ResultTypeDropDown matlab.ui.control.DropDown + ResultTypeDropDownLabel matlab.ui.control.Label + ResultSummaryTextArea matlab.ui.control.TextArea + ResultSummaryTextAreaLabel matlab.ui.control.Label + ResultAxes matlab.ui.control.UIAxes + StatusLabel matlab.ui.control.Label + ExportResultButton matlab.ui.control.Button + ImportResultButton matlab.ui.control.Button + RunButton matlab.ui.control.Button + ExportConfigButton matlab.ui.control.Button + ImportConfigButton matlab.ui.control.Button + LoadTemplateButton matlab.ui.control.Button + TemplateDropDown matlab.ui.control.DropDown + end + + % Component initialization + methods (Access = private) + + % Create UIFigure and components + function createComponents(app) + + % Create UIFigure and hide until all components are created + app.UIFigure = uifigure('Visible', 'off'); + app.UIFigure.Position = [100 100 1275 807]; + app.UIFigure.Name = 'MATLAB App'; + + % Create TemplateDropDown + app.TemplateDropDown = uidropdown(app.UIFigure); + app.TemplateDropDown.Items = {'', ''}; + app.TemplateDropDown.Position = [18 774 120 22]; + app.TemplateDropDown.Value = ''; + + % Create LoadTemplateButton + app.LoadTemplateButton = uibutton(app.UIFigure, 'push'); + app.LoadTemplateButton.Position = [177 774 94 23]; + app.LoadTemplateButton.Text = 'Load Template'; + + % Create ImportConfigButton + app.ImportConfigButton = uibutton(app.UIFigure, 'push'); + app.ImportConfigButton.Position = [399 774 87 23]; + app.ImportConfigButton.Text = 'Import Config'; + + % Create ExportConfigButton + app.ExportConfigButton = uibutton(app.UIFigure, 'push'); + app.ExportConfigButton.Position = [532 774 88 23]; + app.ExportConfigButton.Text = 'Export Config'; + + % Create RunButton + app.RunButton = uibutton(app.UIFigure, 'push'); + app.RunButton.Position = [648 774 70 23]; + app.RunButton.Text = 'Run'; + + % Create ImportResultButton + app.ImportResultButton = uibutton(app.UIFigure, 'push'); + app.ImportResultButton.Position = [761 774 86 23]; + app.ImportResultButton.Text = 'Import Result'; + + % Create ExportResultButton + app.ExportResultButton = uibutton(app.UIFigure, 'push'); + app.ExportResultButton.Position = [883 774 87 23]; + app.ExportResultButton.Text = 'Export Result'; + + % Create StatusLabel + app.StatusLabel = uilabel(app.UIFigure); + app.StatusLabel.Position = [1196 774 39 22]; + app.StatusLabel.Text = 'Status'; + + % Create TabGroup + app.TabGroup = uitabgroup(app.UIFigure); + app.TabGroup.Position = [8 46 1247 706]; + + % Create ModelTab + app.ModelTab = uitab(app.TabGroup); + app.ModelTab.Title = 'Model'; + + % Create ModelFlagDropDownLabel + app.ModelFlagDropDownLabel = uilabel(app.ModelTab); + app.ModelFlagDropDownLabel.HorizontalAlignment = 'right'; + app.ModelFlagDropDownLabel.Position = [30 609 61 22]; + app.ModelFlagDropDownLabel.Text = 'ModelFlag'; + + % Create ModelFlagDropDown + app.ModelFlagDropDown = uidropdown(app.ModelTab); + app.ModelFlagDropDown.Items = {'1', '', '', ''}; + app.ModelFlagDropDown.Position = [106 609 100 22]; + app.ModelFlagDropDown.Value = ''; + + % Create GridModelDropDownLabel + app.GridModelDropDownLabel = uilabel(app.ModelTab); + app.GridModelDropDownLabel.HorizontalAlignment = 'right'; + app.GridModelDropDownLabel.Position = [31 558 60 22]; + app.GridModelDropDownLabel.Text = 'GridModel'; + + % Create ModelGridModelDropDown + app.ModelGridModelDropDown = uidropdown(app.ModelTab); + app.ModelGridModelDropDown.Items = {'1', '2', '', ''}; + app.ModelGridModelDropDown.Position = [106 558 100 22]; + app.ModelGridModelDropDown.Value = ''; + + % Create FlowModelDropDownLabel + app.FlowModelDropDownLabel = uilabel(app.ModelTab); + app.FlowModelDropDownLabel.HorizontalAlignment = 'right'; + app.FlowModelDropDownLabel.Position = [31 507 63 22]; + app.FlowModelDropDownLabel.Text = 'FlowModel'; + + % Create ModelFlowModelDropDown + app.ModelFlowModelDropDown = uidropdown(app.ModelTab); + app.ModelFlowModelDropDown.Items = {'1', '2', '3'}; + app.ModelFlowModelDropDown.Position = [109 507 100 22]; + app.ModelFlowModelDropDown.Value = '1'; + + % Create GridTab + app.GridTab = uitab(app.TabGroup); + app.GridTab.Title = 'Grid'; + + % Create DxTextAreaLabel + app.DxTextAreaLabel = uilabel(app.GridTab); + app.DxTextAreaLabel.HorizontalAlignment = 'right'; + app.DxTextAreaLabel.Position = [49 643 25 22]; + app.DxTextAreaLabel.Text = 'Dx'; + + % Create GridDxTextArea + app.GridDxTextArea = uitextarea(app.GridTab); + app.GridDxTextArea.Position = [89 607 263 60]; + + % Create DyTextAreaLabel + app.DyTextAreaLabel = uilabel(app.GridTab); + app.DyTextAreaLabel.HorizontalAlignment = 'right'; + app.DyTextAreaLabel.Position = [49 543 25 22]; + app.DyTextAreaLabel.Text = 'Dy'; + + % Create GridDyTextArea + app.GridDyTextArea = uitextarea(app.GridTab); + app.GridDyTextArea.Position = [89 507 263 60]; + + % Create DzTextAreaLabel + app.DzTextAreaLabel = uilabel(app.GridTab); + app.DzTextAreaLabel.HorizontalAlignment = 'right'; + app.DzTextAreaLabel.Position = [49 449 25 22]; + app.DzTextAreaLabel.Text = 'Dz'; + + % Create GridDzTextArea + app.GridDzTextArea = uitextarea(app.GridTab); + app.GridDzTextArea.Position = [89 401 263 72]; + + % Create NTGTextAreaLabel + app.NTGTextAreaLabel = uilabel(app.GridTab); + app.NTGTextAreaLabel.HorizontalAlignment = 'right'; + app.NTGTextAreaLabel.Position = [49 347 30 22]; + app.NTGTextAreaLabel.Text = 'NTG'; + + % Create GridNTGTextArea + app.GridNTGTextArea = uitextarea(app.GridTab); + app.GridNTGTextArea.Position = [94 311 267 60]; + + % Create FractureTab + app.FractureTab = uitab(app.TabGroup); + app.FractureTab.Title = 'Fracture'; + + % Create FractureInputStyleDropDownLabel + app.FractureInputStyleDropDownLabel = uilabel(app.FractureTab); + app.FractureInputStyleDropDownLabel.HorizontalAlignment = 'right'; + app.FractureInputStyleDropDownLabel.Position = [57 622 103 22]; + app.FractureInputStyleDropDownLabel.Text = 'FractureInputStyle'; + + % Create FractureInputStyleDropDown + app.FractureInputStyleDropDown = uidropdown(app.FractureTab); + app.FractureInputStyleDropDown.Items = {''}; + app.FractureInputStyleDropDown.Position = [175 622 147 22]; + app.FractureInputStyleDropDown.Value = ''; + + % Create FractureInputTextAreaLabel + app.FractureInputTextAreaLabel = uilabel(app.FractureTab); + app.FractureInputTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureInputTextAreaLabel.Position = [74 560 76 22]; + app.FractureInputTextAreaLabel.Text = 'FractureInput'; + + % Create FractureInputTextArea + app.FractureInputTextArea = uitextarea(app.FractureTab); + app.FractureInputTextArea.Position = [165 524 150 60]; + + % Create FractureLinesTextAreaLabel + app.FractureLinesTextAreaLabel = uilabel(app.FractureTab); + app.FractureLinesTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureLinesTextAreaLabel.Position = [72 466 78 22]; + app.FractureLinesTextAreaLabel.Text = 'FractureLines'; + + % Create FractureLinesTextArea + app.FractureLinesTextArea = uitextarea(app.FractureTab); + app.FractureLinesTextArea.Position = [165 430 150 60]; + + % Create FractureHeightsTextAreaLabel + app.FractureHeightsTextAreaLabel = uilabel(app.FractureTab); + app.FractureHeightsTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureHeightsTextAreaLabel.Position = [54 378 90 22]; + app.FractureHeightsTextAreaLabel.Text = 'FractureHeights'; + + % Create FractureHeightsTextArea + app.FractureHeightsTextArea = uitextarea(app.FractureTab); + app.FractureHeightsTextArea.Position = [159 342 150 60]; + + % Create FlowBarrierFlagsTextAreaLabel + app.FlowBarrierFlagsTextAreaLabel = uilabel(app.FractureTab); + app.FlowBarrierFlagsTextAreaLabel.HorizontalAlignment = 'right'; + app.FlowBarrierFlagsTextAreaLabel.Position = [48 278 96 22]; + app.FlowBarrierFlagsTextAreaLabel.Text = 'FlowBarrierFlags'; + + % Create FractureFlowBarrierFlagsTextArea + app.FractureFlowBarrierFlagsTextArea = uitextarea(app.FractureTab); + app.FractureFlowBarrierFlagsTextArea.Position = [159 242 150 60]; + + % Create DiscretizationTab + app.DiscretizationTab = uitab(app.TabGroup); + app.DiscretizationTab.Title = 'Discretization'; + + % Create TabGroup3 + app.TabGroup3 = uitabgroup(app.DiscretizationTab); + app.TabGroup3.Position = [48 37 1156 623]; + + % Create SPTab + app.SPTab = uitab(app.TabGroup3); + app.SPTab.Title = 'SP'; + + % Create BoundaryTextAreaLabel + app.BoundaryTextAreaLabel = uilabel(app.SPTab); + app.BoundaryTextAreaLabel.HorizontalAlignment = 'right'; + app.BoundaryTextAreaLabel.Position = [12 541 56 22]; + app.BoundaryTextAreaLabel.Text = 'Boundary'; + + % Create SPBoundaryTextArea + app.SPBoundaryTextArea = uitextarea(app.SPTab); + app.SPBoundaryTextArea.Position = [83 505 150 60]; + + % Create InvalidLayerTextAreaLabel + app.InvalidLayerTextAreaLabel = uilabel(app.SPTab); + app.InvalidLayerTextAreaLabel.HorizontalAlignment = 'right'; + app.InvalidLayerTextAreaLabel.Position = [12 458 70 22]; + app.InvalidLayerTextAreaLabel.Text = 'InvalidLayer'; + + % Create SPInvalidLayerTextArea + app.SPInvalidLayerTextArea = uitextarea(app.SPTab); + app.SPInvalidLayerTextArea.Position = [97 422 150 60]; + + % Create MatrixKxTextAreaLabel + app.MatrixKxTextAreaLabel = uilabel(app.SPTab); + app.MatrixKxTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixKxTextAreaLabel.Position = [266 401 52 22]; + app.MatrixKxTextAreaLabel.Text = 'MatrixKx'; + + % Create SPMatrixKxTextArea + app.SPMatrixKxTextArea = uitextarea(app.SPTab); + app.SPMatrixKxTextArea.Position = [333 365 150 60]; + + % Create MatrixKyTextAreaLabel + app.MatrixKyTextAreaLabel = uilabel(app.SPTab); + app.MatrixKyTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixKyTextAreaLabel.Position = [263 323 52 22]; + app.MatrixKyTextAreaLabel.Text = 'MatrixKy'; + + % Create SPMatrixKyTextArea + app.SPMatrixKyTextArea = uitextarea(app.SPTab); + app.SPMatrixKyTextArea.Position = [330 287 150 60]; + + % Create MatrixKzTextAreaLabel + app.MatrixKzTextAreaLabel = uilabel(app.SPTab); + app.MatrixKzTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixKzTextAreaLabel.Position = [260 228 52 22]; + app.MatrixKzTextAreaLabel.Text = 'MatrixKz'; + + % Create SPMatrixKzTextArea + app.SPMatrixKzTextArea = uitextarea(app.SPTab); + app.SPMatrixKzTextArea.Position = [327 192 150 60]; + + % Create MatrixPoriTextAreaLabel + app.MatrixPoriTextAreaLabel = uilabel(app.SPTab); + app.MatrixPoriTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixPoriTextAreaLabel.Position = [256 128 59 22]; + app.MatrixPoriTextAreaLabel.Text = 'MatrixPori'; + + % Create SPMatrixPoriTextArea + app.SPMatrixPoriTextArea = uitextarea(app.SPTab); + app.SPMatrixPoriTextArea.Position = [330 92 150 60]; + + % Create MatrixPrporEditFieldLabel + app.MatrixPrporEditFieldLabel = uilabel(app.SPTab); + app.MatrixPrporEditFieldLabel.HorizontalAlignment = 'right'; + app.MatrixPrporEditFieldLabel.Position = [289 543 67 22]; + app.MatrixPrporEditFieldLabel.Text = 'MatrixPrpor'; + + % Create SPMatrixPrporEditField + app.SPMatrixPrporEditField = uieditfield(app.SPTab, 'numeric'); + app.SPMatrixPrporEditField.Position = [371 543 100 22]; + + % Create MatrixCporEditFieldLabel + app.MatrixCporEditFieldLabel = uilabel(app.SPTab); + app.MatrixCporEditFieldLabel.HorizontalAlignment = 'right'; + app.MatrixCporEditFieldLabel.Position = [292 479 64 22]; + app.MatrixCporEditFieldLabel.Text = 'MatrixCpor'; + + % Create SPMatrixCporEditField + app.SPMatrixCporEditField = uieditfield(app.SPTab, 'numeric'); + app.SPMatrixCporEditField.Position = [371 479 100 22]; + + % Create RockDensityEditFieldLabel + app.RockDensityEditFieldLabel = uilabel(app.SPTab); + app.RockDensityEditFieldLabel.HorizontalAlignment = 'right'; + app.RockDensityEditFieldLabel.Position = [24 360 72 22]; + app.RockDensityEditFieldLabel.Text = 'RockDensity'; + + % Create SPRockDensityEditField + app.SPRockDensityEditField = uieditfield(app.SPTab, 'numeric'); + app.SPRockDensityEditField.Position = [111 360 100 22]; + + % Create FractureKfTextAreaLabel + app.FractureKfTextAreaLabel = uilabel(app.SPTab); + app.FractureKfTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureKfTextAreaLabel.Position = [540 316 61 22]; + app.FractureKfTextAreaLabel.Text = 'FractureKf'; + + % Create SPFractureKfTextArea + app.SPFractureKfTextArea = uitextarea(app.SPTab); + app.SPFractureKfTextArea.Position = [616 280 150 60]; + + % Create FractureWfTextAreaLabel + app.FractureWfTextAreaLabel = uilabel(app.SPTab); + app.FractureWfTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureWfTextAreaLabel.Position = [530 226 64 22]; + app.FractureWfTextAreaLabel.Text = 'FractureWf'; + + % Create SPFractureWfTextArea + app.SPFractureWfTextArea = uitextarea(app.SPTab); + app.SPFractureWfTextArea.Position = [609 190 150 60]; + + % Create FracturePorfTextAreaLabel + app.FracturePorfTextAreaLabel = uilabel(app.SPTab); + app.FracturePorfTextAreaLabel.HorizontalAlignment = 'right'; + app.FracturePorfTextAreaLabel.Position = [522 131 72 22]; + app.FracturePorfTextAreaLabel.Text = 'FracturePorf'; + + % Create SPFracturePorfTextArea + app.SPFracturePorfTextArea = uitextarea(app.SPTab); + app.SPFracturePorfTextArea.Position = [609 95 150 60]; + + % Create FractureCporfEditFieldLabel + app.FractureCporfEditFieldLabel = uilabel(app.SPTab); + app.FractureCporfEditFieldLabel.HorizontalAlignment = 'right'; + app.FractureCporfEditFieldLabel.Position = [523 479 79 22]; + app.FractureCporfEditFieldLabel.Text = 'FractureCporf'; + + % Create SPFractureCporfEditField + app.SPFractureCporfEditField = uieditfield(app.SPTab, 'numeric'); + app.SPFractureCporfEditField.Position = [617 479 100 22]; + + % Create FracturePrporEditFieldLabel + app.FracturePrporEditFieldLabel = uilabel(app.SPTab); + app.FracturePrporEditFieldLabel.HorizontalAlignment = 'right'; + app.FracturePrporEditFieldLabel.Position = [516 422 79 22]; + app.FracturePrporEditFieldLabel.Text = 'FracturePrpor'; + + % Create SPFracturePrporEditField + app.SPFracturePrporEditField = uieditfield(app.SPTab, 'numeric'); + app.SPFracturePrporEditField.Position = [610 422 100 22]; + + % Create StressFractureEditFieldLabel + app.StressFractureEditFieldLabel = uilabel(app.SPTab); + app.StressFractureEditFieldLabel.HorizontalAlignment = 'right'; + app.StressFractureEditFieldLabel.Position = [849 541 84 22]; + app.StressFractureEditFieldLabel.Text = 'StressFracture'; + + % Create SPStressFractureEditField + app.SPStressFractureEditField = uieditfield(app.SPTab, 'numeric'); + app.SPStressFractureEditField.Position = [948 541 100 22]; + + % Create StressMatrixEditFieldLabel + app.StressMatrixEditFieldLabel = uilabel(app.SPTab); + app.StressMatrixEditFieldLabel.HorizontalAlignment = 'right'; + app.StressMatrixEditFieldLabel.Position = [855 500 72 22]; + app.StressMatrixEditFieldLabel.Text = 'StressMatrix'; + + % Create SPStressMatrixEditField + app.SPStressMatrixEditField = uieditfield(app.SPTab, 'numeric'); + app.SPStressMatrixEditField.Position = [942 500 100 22]; + + % Create StressRefPressureEditFieldLabel + app.StressRefPressureEditFieldLabel = uilabel(app.SPTab); + app.StressRefPressureEditFieldLabel.HorizontalAlignment = 'right'; + app.StressRefPressureEditFieldLabel.Position = [813 445 106 22]; + app.StressRefPressureEditFieldLabel.Text = 'StressRefPressure'; + + % Create SPStressRefPressureEditField + app.SPStressRefPressureEditField = uieditfield(app.SPTab, 'numeric'); + app.SPStressRefPressureEditField.Position = [934 445 100 22]; + + % Create RptEditFieldLabel + app.RptEditFieldLabel = uilabel(app.SPTab); + app.RptEditFieldLabel.HorizontalAlignment = 'right'; + app.RptEditFieldLabel.Position = [879 352 25 22]; + app.RptEditFieldLabel.Text = 'Rpt'; + + % Create SPRptEditField + app.SPRptEditField = uieditfield(app.SPTab, 'numeric'); + app.SPRptEditField.Position = [919 352 100 22]; + + % Create cfEditFieldLabel + app.cfEditFieldLabel = uilabel(app.SPTab); + app.cfEditFieldLabel.HorizontalAlignment = 'right'; + app.cfEditFieldLabel.Position = [894 302 25 22]; + app.cfEditFieldLabel.Text = 'cf'; + + % Create SPcfEditField + app.SPcfEditField = uieditfield(app.SPTab, 'numeric'); + app.SPcfEditField.Position = [934 302 100 22]; + + % Create caEditFieldLabel + app.caEditFieldLabel = uilabel(app.SPTab); + app.caEditFieldLabel.HorizontalAlignment = 'right'; + app.caEditFieldLabel.Position = [902 251 25 22]; + app.caEditFieldLabel.Text = 'ca'; + + % Create SPcaEditField + app.SPcaEditField = uieditfield(app.SPTab, 'numeric'); + app.SPcaEditField.Position = [942 251 100 22]; + + % Create DPTab + app.DPTab = uitab(app.TabGroup3); + app.DPTab.Title = 'DP'; + + % Create kxTextAreaLabel + app.kxTextAreaLabel = uilabel(app.DPTab); + app.kxTextAreaLabel.HorizontalAlignment = 'right'; + app.kxTextAreaLabel.Position = [66 558 25 22]; + app.kxTextAreaLabel.Text = 'kx'; + + % Create DPkxTextArea + app.DPkxTextArea = uitextarea(app.DPTab); + app.DPkxTextArea.Position = [106 522 150 60]; + + % Create kyTextAreaLabel + app.kyTextAreaLabel = uilabel(app.DPTab); + app.kyTextAreaLabel.HorizontalAlignment = 'right'; + app.kyTextAreaLabel.Position = [68 482 25 22]; + app.kyTextAreaLabel.Text = 'ky'; + + % Create DPkyTextArea + app.DPkyTextArea = uitextarea(app.DPTab); + app.DPkyTextArea.Position = [108 446 150 60]; + + % Create kzTextAreaLabel + app.kzTextAreaLabel = uilabel(app.DPTab); + app.kzTextAreaLabel.HorizontalAlignment = 'right'; + app.kzTextAreaLabel.Position = [76 400 25 22]; + app.kzTextAreaLabel.Text = 'kz'; + + % Create DPkzTextArea + app.DPkzTextArea = uitextarea(app.DPTab); + app.DPkzTextArea.Position = [116 364 150 60]; + + % Create kx_matrixLayerTextAreaLabel + app.kx_matrixLayerTextAreaLabel = uilabel(app.DPTab); + app.kx_matrixLayerTextAreaLabel.HorizontalAlignment = 'right'; + app.kx_matrixLayerTextAreaLabel.Position = [32 314 86 22]; + app.kx_matrixLayerTextAreaLabel.Text = 'kx_matrixLayer'; + + % Create DPkx_matrixLayerTextArea + app.DPkx_matrixLayerTextArea = uitextarea(app.DPTab); + app.DPkx_matrixLayerTextArea.Position = [133 278 150 60]; + + % Create ky_matrixLayerTextAreaLabel + app.ky_matrixLayerTextAreaLabel = uilabel(app.DPTab); + app.ky_matrixLayerTextAreaLabel.HorizontalAlignment = 'right'; + app.ky_matrixLayerTextAreaLabel.Position = [27 218 86 22]; + app.ky_matrixLayerTextAreaLabel.Text = 'ky_matrixLayer'; + + % Create DPky_matrixLayerTextArea + app.DPky_matrixLayerTextArea = uitextarea(app.DPTab); + app.DPky_matrixLayerTextArea.Position = [128 182 150 60]; + + % Create kz_matrixLayerTextAreaLabel + app.kz_matrixLayerTextAreaLabel = uilabel(app.DPTab); + app.kz_matrixLayerTextAreaLabel.HorizontalAlignment = 'right'; + app.kz_matrixLayerTextAreaLabel.Position = [15 117 86 22]; + app.kz_matrixLayerTextAreaLabel.Text = 'kz_matrixLayer'; + + % Create DPkz_matrixLayerTextArea + app.DPkz_matrixLayerTextArea = uitextarea(app.DPTab); + app.DPkz_matrixLayerTextArea.Position = [116 81 150 60]; + + % Create pori_matrixLayerTextAreaLabel + app.pori_matrixLayerTextAreaLabel = uilabel(app.DPTab); + app.pori_matrixLayerTextAreaLabel.HorizontalAlignment = 'right'; + app.pori_matrixLayerTextAreaLabel.Position = [-8 47 94 22]; + app.pori_matrixLayerTextAreaLabel.Text = 'pori_matrixLayer'; + + % Create DPpori_matrixLayerTextArea + app.DPpori_matrixLayerTextArea = uitextarea(app.DPTab); + app.DPpori_matrixLayerTextArea.Position = [101 11 150 60]; + + % Create sigmaTextAreaLabel + app.sigmaTextAreaLabel = uilabel(app.DPTab); + app.sigmaTextAreaLabel.HorizontalAlignment = 'right'; + app.sigmaTextAreaLabel.Position = [373 559 37 22]; + app.sigmaTextAreaLabel.Text = 'sigma'; + + % Create DPsigmaTextArea + app.DPsigmaTextArea = uitextarea(app.DPTab); + app.DPsigmaTextArea.Position = [425 523 150 60]; + + % Create NTGTextArea_2Label + app.NTGTextArea_2Label = uilabel(app.DPTab); + app.NTGTextArea_2Label.HorizontalAlignment = 'right'; + app.NTGTextArea_2Label.Position = [376 469 30 22]; + app.NTGTextArea_2Label.Text = 'NTG'; + + % Create DPNTGTextArea + app.DPNTGTextArea = uitextarea(app.DPTab); + app.DPNTGTextArea.Position = [421 433 150 60]; + + % Create prporEditFieldLabel + app.prporEditFieldLabel = uilabel(app.DPTab); + app.prporEditFieldLabel.HorizontalAlignment = 'right'; + app.prporEditFieldLabel.Position = [411 358 33 22]; + app.prporEditFieldLabel.Text = 'prpor'; + + % Create DPprporEditField + app.DPprporEditField = uieditfield(app.DPTab, 'numeric'); + app.DPprporEditField.Position = [459 358 100 22]; + + % Create cporLabel + app.cporLabel = uilabel(app.DPTab); + app.cporLabel.HorizontalAlignment = 'right'; + app.cporLabel.Position = [427 307 28 22]; + app.cporLabel.Text = 'cpor'; + + % Create DPcporEditField + app.DPcporEditField = uieditfield(app.DPTab, 'numeric'); + app.DPcporEditField.Position = [470 307 100 22]; + + % Create KfTextAreaLabel + app.KfTextAreaLabel = uilabel(app.DPTab); + app.KfTextAreaLabel.HorizontalAlignment = 'right'; + app.KfTextAreaLabel.Position = [401 258 25 22]; + app.KfTextAreaLabel.Text = 'Kf'; + + % Create DPKfTextArea + app.DPKfTextArea = uitextarea(app.DPTab); + app.DPKfTextArea.Position = [441 222 150 60]; + + % Create WfTextAreaLabel + app.WfTextAreaLabel = uilabel(app.DPTab); + app.WfTextAreaLabel.HorizontalAlignment = 'right'; + app.WfTextAreaLabel.Position = [394 176 25 22]; + app.WfTextAreaLabel.Text = 'Wf'; + + % Create DPWfTextArea + app.DPWfTextArea = uitextarea(app.DPTab); + app.DPWfTextArea.Position = [434 140 150 60]; + + % Create PorfTextAreaLabel + app.PorfTextAreaLabel = uilabel(app.DPTab); + app.PorfTextAreaLabel.HorizontalAlignment = 'right'; + app.PorfTextAreaLabel.Position = [412 72 27 22]; + app.PorfTextAreaLabel.Text = 'Porf'; + + % Create DPPorfTextArea + app.DPPorfTextArea = uitextarea(app.DPTab); + app.DPPorfTextArea.Position = [454 36 150 60]; + + % Create prporfEditFieldLabel + app.prporfEditFieldLabel = uilabel(app.DPTab); + app.prporfEditFieldLabel.HorizontalAlignment = 'right'; + app.prporfEditFieldLabel.Position = [744 537 36 22]; + app.prporfEditFieldLabel.Text = 'prporf'; + + % Create DPprporfEditField + app.DPprporfEditField = uieditfield(app.DPTab, 'numeric'); + app.DPprporfEditField.Position = [795 537 100 22]; + + % Create cporfEditFieldLabel + app.cporfEditFieldLabel = uilabel(app.DPTab); + app.cporfEditFieldLabel.HorizontalAlignment = 'right'; + app.cporfEditFieldLabel.Position = [748 491 32 22]; + app.cporfEditFieldLabel.Text = 'cporf'; + + % Create DPcporfEditField + app.DPcporfEditField = uieditfield(app.DPTab, 'numeric'); + app.DPcporfEditField.Position = [795 491 100 22]; + + % Create stress_factor_fractureEditFieldLabel + app.stress_factor_fractureEditFieldLabel = uilabel(app.DPTab); + app.stress_factor_fractureEditFieldLabel.HorizontalAlignment = 'right'; + app.stress_factor_fractureEditFieldLabel.Position = [660 424 121 22]; + app.stress_factor_fractureEditFieldLabel.Text = 'stress_factor_fracture'; + + % Create DPstress_factor_fractureEditField + app.DPstress_factor_fractureEditField = uieditfield(app.DPTab, 'numeric'); + app.DPstress_factor_fractureEditField.Position = [796 424 100 22]; + + % Create stress_factor_matrixEditFieldLabel + app.stress_factor_matrixEditFieldLabel = uilabel(app.DPTab); + app.stress_factor_matrixEditFieldLabel.HorizontalAlignment = 'right'; + app.stress_factor_matrixEditFieldLabel.Position = [628 379 113 22]; + app.stress_factor_matrixEditFieldLabel.Text = 'stress_factor_matrix'; + + % Create DPstress_factor_matrixEditField + app.DPstress_factor_matrixEditField = uieditfield(app.DPTab, 'numeric'); + app.DPstress_factor_matrixEditField.Position = [756 379 100 22]; + + % Create stress_factor_ref_pressureEditFieldLabel + app.stress_factor_ref_pressureEditFieldLabel = uilabel(app.DPTab); + app.stress_factor_ref_pressureEditFieldLabel.HorizontalAlignment = 'right'; + app.stress_factor_ref_pressureEditFieldLabel.Position = [604 320 148 22]; + app.stress_factor_ref_pressureEditFieldLabel.Text = 'stress_factor_ref_pressure'; + + % Create DPstress_factor_ref_pressureEditField + app.DPstress_factor_ref_pressureEditField = uieditfield(app.DPTab, 'numeric'); + app.DPstress_factor_ref_pressureEditField.Position = [767 320 100 22]; + + % Create RptEditFieldLabel_2 + app.RptEditFieldLabel_2 = uilabel(app.DPTab); + app.RptEditFieldLabel_2.HorizontalAlignment = 'right'; + app.RptEditFieldLabel_2.Position = [740 251 25 22]; + app.RptEditFieldLabel_2.Text = 'Rpt'; + + % Create DPRptEditField + app.DPRptEditField = uieditfield(app.DPTab, 'numeric'); + app.DPRptEditField.Position = [780 251 100 22]; + + % Create cffEditFieldLabel + app.cffEditFieldLabel = uilabel(app.DPTab); + app.cffEditFieldLabel.HorizontalAlignment = 'right'; + app.cffEditFieldLabel.Position = [733 192 25 22]; + app.cffEditFieldLabel.Text = 'cff'; + + % Create DPcffEditField + app.DPcffEditField = uieditfield(app.DPTab, 'numeric'); + app.DPcffEditField.Position = [773 192 100 22]; + + % Create caEditFieldLabel_2 + app.caEditFieldLabel_2 = uilabel(app.DPTab); + app.caEditFieldLabel_2.HorizontalAlignment = 'right'; + app.caEditFieldLabel_2.Position = [744 123 25 22]; + app.caEditFieldLabel_2.Text = 'ca'; + + % Create DPcaEditField + app.DPcaEditField = uieditfield(app.DPTab, 'numeric'); + app.DPcaEditField.Position = [784 123 100 22]; + + % Create FlowTab + app.FlowTab = uitab(app.TabGroup); + app.FlowTab.Title = 'Flow'; + + % Create TabGroup2 + app.TabGroup2 = uitabgroup(app.FlowTab); + app.TabGroup2.Position = [69 38 1120 529]; + + % Create GasWaterTab + app.GasWaterTab = uitab(app.TabGroup2); + app.GasWaterTab.Title = 'GasWater'; + + % Create gas_propVLEditFieldLabel + app.gas_propVLEditFieldLabel = uilabel(app.GasWaterTab); + app.gas_propVLEditFieldLabel.HorizontalAlignment = 'right'; + app.gas_propVLEditFieldLabel.Position = [61 448 73 22]; + app.gas_propVLEditFieldLabel.Text = 'gas_prop.VL'; + + % Create GWgas_propVLEditField + app.GWgas_propVLEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWgas_propVLEditField.Position = [149 448 100 22]; + + % Create gas_propPLEditFieldLabel + app.gas_propPLEditFieldLabel = uilabel(app.GasWaterTab); + app.gas_propPLEditFieldLabel.HorizontalAlignment = 'right'; + app.gas_propPLEditFieldLabel.Position = [41 407 73 22]; + app.gas_propPLEditFieldLabel.Text = 'gas_prop.PL'; + + % Create GWgas_propPLEditField + app.GWgas_propPLEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWgas_propPLEditField.Position = [129 407 100 22]; + + % Create gas_propKnEditFieldLabel + app.gas_propKnEditFieldLabel = uilabel(app.GasWaterTab); + app.gas_propKnEditFieldLabel.HorizontalAlignment = 'right'; + app.gas_propKnEditFieldLabel.Position = [42 364 73 22]; + app.gas_propKnEditFieldLabel.Text = 'gas_prop.Kn'; + + % Create GWgas_propKnEditField + app.GWgas_propKnEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWgas_propKnEditField.Position = [130 364 100 22]; + + % Create beta_non_darcy_flowEditFieldLabel + app.beta_non_darcy_flowEditFieldLabel = uilabel(app.GasWaterTab); + app.beta_non_darcy_flowEditFieldLabel.HorizontalAlignment = 'right'; + app.beta_non_darcy_flowEditFieldLabel.Position = [14 323 119 22]; + app.beta_non_darcy_flowEditFieldLabel.Text = 'beta_non_darcy_flow'; + + % Create GWbeta_non_darcy_flowEditField + app.GWbeta_non_darcy_flowEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWbeta_non_darcy_flowEditField.Position = [148 323 100 22]; + + % Create p_grad_thresholdEditFieldLabel + app.p_grad_thresholdEditFieldLabel = uilabel(app.GasWaterTab); + app.p_grad_thresholdEditFieldLabel.HorizontalAlignment = 'right'; + app.p_grad_thresholdEditFieldLabel.Position = [19 279 98 22]; + app.p_grad_thresholdEditFieldLabel.Text = 'p_grad_threshold'; + + % Create GWp_grad_thresholdEditField + app.GWp_grad_thresholdEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWp_grad_thresholdEditField.Position = [132 279 100 22]; + + % Create density_g_scEditFieldLabel + app.density_g_scEditFieldLabel = uilabel(app.GasWaterTab); + app.density_g_scEditFieldLabel.HorizontalAlignment = 'right'; + app.density_g_scEditFieldLabel.Position = [36 237 75 22]; + app.density_g_scEditFieldLabel.Text = 'density_g_sc'; + + % Create GWdensity_g_scEditField + app.GWdensity_g_scEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWdensity_g_scEditField.Position = [126 237 100 22]; + + % Create density_w_scEditFieldLabel + app.density_w_scEditFieldLabel = uilabel(app.GasWaterTab); + app.density_w_scEditFieldLabel.HorizontalAlignment = 'right'; + app.density_w_scEditFieldLabel.Position = [25 200 77 22]; + app.density_w_scEditFieldLabel.Text = 'density_w_sc'; + + % Create GWdensity_w_scEditField + app.GWdensity_w_scEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWdensity_w_scEditField.Position = [117 200 100 22]; + + % Create gas_modelDropDownLabel + app.gas_modelDropDownLabel = uilabel(app.GasWaterTab); + app.gas_modelDropDownLabel.HorizontalAlignment = 'right'; + app.gas_modelDropDownLabel.Position = [41 132 64 22]; + app.gas_modelDropDownLabel.Text = 'gas_model'; + + % Create GWgas_modelDropDown + app.GWgas_modelDropDown = uidropdown(app.GasWaterTab); + app.GWgas_modelDropDown.Items = {''}; + app.GWgas_modelDropDown.Position = [120 132 100 22]; + app.GWgas_modelDropDown.Value = ''; + + % Create prgEditFieldLabel + app.prgEditFieldLabel = uilabel(app.GasWaterTab); + app.prgEditFieldLabel.HorizontalAlignment = 'right'; + app.prgEditFieldLabel.Position = [332 448 25 22]; + app.prgEditFieldLabel.Text = 'prg'; + + % Create GWprgEditField + app.GWprgEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWprgEditField.Position = [372 448 100 22]; + + % Create BgiEditFieldLabel + app.BgiEditFieldLabel = uilabel(app.GasWaterTab); + app.BgiEditFieldLabel.HorizontalAlignment = 'right'; + app.BgiEditFieldLabel.Position = [339 407 25 22]; + app.BgiEditFieldLabel.Text = 'Bgi'; + + % Create GWBgiEditField + app.GWBgiEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWBgiEditField.Position = [379 407 100 22]; + + % Create cgEditFieldLabel + app.cgEditFieldLabel = uilabel(app.GasWaterTab); + app.cgEditFieldLabel.HorizontalAlignment = 'right'; + app.cgEditFieldLabel.Position = [338 364 25 22]; + app.cgEditFieldLabel.Text = 'cg'; + + % Create GWcgEditField + app.GWcgEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWcgEditField.Position = [378 364 100 22]; + + % Create vgiEditFieldLabel + app.vgiEditFieldLabel = uilabel(app.GasWaterTab); + app.vgiEditFieldLabel.HorizontalAlignment = 'right'; + app.vgiEditFieldLabel.Position = [345 320 25 22]; + app.vgiEditFieldLabel.Text = 'vgi'; + + % Create GWvgiEditField + app.GWvgiEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWvgiEditField.Position = [385 320 100 22]; + + % Create cvgEditFieldLabel + app.cvgEditFieldLabel = uilabel(app.GasWaterTab); + app.cvgEditFieldLabel.HorizontalAlignment = 'right'; + app.cvgEditFieldLabel.Position = [339 280 25 22]; + app.cvgEditFieldLabel.Text = 'cvg'; + + % Create GWcvgEditField + app.GWcvgEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWcvgEditField.Position = [379 280 100 22]; + + % Create PprTextAreaLabel + app.PprTextAreaLabel = uilabel(app.GasWaterTab); + app.PprTextAreaLabel.HorizontalAlignment = 'right'; + app.PprTextAreaLabel.Position = [330 231 25 22]; + app.PprTextAreaLabel.Text = 'Ppr'; + + % Create GWPprTextArea + app.GWPprTextArea = uitextarea(app.GasWaterTab); + app.GWPprTextArea.Position = [370 195 150 60]; + + % Create BGTextAreaLabel + app.BGTextAreaLabel = uilabel(app.GasWaterTab); + app.BGTextAreaLabel.HorizontalAlignment = 'right'; + app.BGTextAreaLabel.Position = [329 156 25 22]; + app.BGTextAreaLabel.Text = 'BG'; + + % Create GWBGTextArea + app.GWBGTextArea = uitextarea(app.GasWaterTab); + app.GWBGTextArea.Position = [369 120 150 60]; + + % Create MUGTextAreaLabel + app.MUGTextAreaLabel = uilabel(app.GasWaterTab); + app.MUGTextAreaLabel.HorizontalAlignment = 'right'; + app.MUGTextAreaLabel.Position = [329 71 33 22]; + app.MUGTextAreaLabel.Text = 'MUG'; + + % Create GWMUGTextArea + app.GWMUGTextArea = uitextarea(app.GasWaterTab); + app.GWMUGTextArea.Position = [377 35 150 60]; + + % Create prwEditFieldLabel + app.prwEditFieldLabel = uilabel(app.GasWaterTab); + app.prwEditFieldLabel.HorizontalAlignment = 'right'; + app.prwEditFieldLabel.Position = [598 463 25 22]; + app.prwEditFieldLabel.Text = 'prw'; + + % Create GWprwEditField + app.GWprwEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWprwEditField.Position = [638 463 100 22]; + + % Create BwiEditFieldLabel + app.BwiEditFieldLabel = uilabel(app.GasWaterTab); + app.BwiEditFieldLabel.HorizontalAlignment = 'right'; + app.BwiEditFieldLabel.Position = [607 424 25 22]; + app.BwiEditFieldLabel.Text = 'Bwi'; + + % Create GWBwiEditField + app.GWBwiEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWBwiEditField.Position = [647 424 100 22]; + + % Create cwEditFieldLabel + app.cwEditFieldLabel = uilabel(app.GasWaterTab); + app.cwEditFieldLabel.HorizontalAlignment = 'right'; + app.cwEditFieldLabel.Position = [599 388 25 22]; + app.cwEditFieldLabel.Text = 'cw'; + + % Create GWcwEditField + app.GWcwEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWcwEditField.Position = [639 388 100 22]; + + % Create vwiEditFieldLabel + app.vwiEditFieldLabel = uilabel(app.GasWaterTab); + app.vwiEditFieldLabel.HorizontalAlignment = 'right'; + app.vwiEditFieldLabel.Position = [610 353 25 22]; + app.vwiEditFieldLabel.Text = 'vwi'; + + % Create GWvwiEditField + app.GWvwiEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWvwiEditField.Position = [650 353 100 22]; + + % Create cvwEditFieldLabel + app.cvwEditFieldLabel = uilabel(app.GasWaterTab); + app.cvwEditFieldLabel.HorizontalAlignment = 'right'; + app.cvwEditFieldLabel.Position = [619 313 26 22]; + app.cvwEditFieldLabel.Text = 'cvw'; + + % Create GWcvwEditField + app.GWcvwEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWcvwEditField.Position = [660 313 100 22]; + + % Create ifpcglEditFieldLabel + app.ifpcglEditFieldLabel = uilabel(app.GasWaterTab); + app.ifpcglEditFieldLabel.HorizontalAlignment = 'right'; + app.ifpcglEditFieldLabel.Position = [614 273 33 22]; + app.ifpcglEditFieldLabel.Text = 'ifpcgl'; + + % Create GWifpcglEditField + app.GWifpcglEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWifpcglEditField.Position = [662 273 100 22]; + + % Create RPGWTextAreaLabel + app.RPGWTextAreaLabel = uilabel(app.GasWaterTab); + app.RPGWTextAreaLabel.HorizontalAlignment = 'right'; + app.RPGWTextAreaLabel.Position = [586 234 42 22]; + app.RPGWTextAreaLabel.Text = 'RPGW'; + + % Create GWRPGWTextArea + app.GWRPGWTextArea = uitextarea(app.GasWaterTab); + app.GWRPGWTextArea.Position = [643 198 150 60]; + + % Create PRFTextAreaLabel + app.PRFTextAreaLabel = uilabel(app.GasWaterTab); + app.PRFTextAreaLabel.HorizontalAlignment = 'right'; + app.PRFTextAreaLabel.Position = [597 158 29 22]; + app.PRFTextAreaLabel.Text = 'PRF'; + + % Create GWPRFTextArea + app.GWPRFTextArea = uitextarea(app.GasWaterTab); + app.GWPRFTextArea.Position = [641 122 150 60]; + + % Create OilWaterTab + app.OilWaterTab = uitab(app.TabGroup2); + app.OilWaterTab.Title = 'OilWater'; + + % Create density_o_scEditFieldLabel + app.density_o_scEditFieldLabel = uilabel(app.OilWaterTab); + app.density_o_scEditFieldLabel.HorizontalAlignment = 'right'; + app.density_o_scEditFieldLabel.Position = [23 457 75 22]; + app.density_o_scEditFieldLabel.Text = 'density_o_sc'; + + % Create OWdensity_o_scEditField + app.OWdensity_o_scEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWdensity_o_scEditField.Position = [113 457 100 22]; + + % Create density_w_scEditFieldLabel_2 + app.density_w_scEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.density_w_scEditFieldLabel_2.HorizontalAlignment = 'right'; + app.density_w_scEditFieldLabel_2.Position = [18 416 77 22]; + app.density_w_scEditFieldLabel_2.Text = 'density_w_sc'; + + % Create OWdensity_w_scEditField + app.OWdensity_w_scEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWdensity_w_scEditField.Position = [110 416 100 22]; + + % Create oil_modelDropDownLabel + app.oil_modelDropDownLabel = uilabel(app.OilWaterTab); + app.oil_modelDropDownLabel.HorizontalAlignment = 'right'; + app.oil_modelDropDownLabel.Position = [41 367 56 22]; + app.oil_modelDropDownLabel.Text = 'oil_model'; + + % Create OWoil_modelDropDown + app.OWoil_modelDropDown = uidropdown(app.OilWaterTab); + app.OWoil_modelDropDown.Items = {''}; + app.OWoil_modelDropDown.Position = [112 367 100 22]; + app.OWoil_modelDropDown.Value = ''; + + % Create proEditFieldLabel + app.proEditFieldLabel = uilabel(app.OilWaterTab); + app.proEditFieldLabel.HorizontalAlignment = 'right'; + app.proEditFieldLabel.Position = [67 332 25 22]; + app.proEditFieldLabel.Text = 'pro'; + + % Create OWproEditField + app.OWproEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWproEditField.Position = [107 332 100 22]; + + % Create BoiEditFieldLabel + app.BoiEditFieldLabel = uilabel(app.OilWaterTab); + app.BoiEditFieldLabel.HorizontalAlignment = 'right'; + app.BoiEditFieldLabel.Position = [60 294 25 22]; + app.BoiEditFieldLabel.Text = 'Boi'; + + % Create OWBoiEditField + app.OWBoiEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWBoiEditField.Position = [100 294 100 22]; + + % Create coEditFieldLabel + app.coEditFieldLabel = uilabel(app.OilWaterTab); + app.coEditFieldLabel.HorizontalAlignment = 'right'; + app.coEditFieldLabel.Position = [61 258 25 22]; + app.coEditFieldLabel.Text = 'co'; + + % Create OWcoEditField + app.OWcoEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWcoEditField.Position = [101 258 100 22]; + + % Create voiEditFieldLabel + app.voiEditFieldLabel = uilabel(app.OilWaterTab); + app.voiEditFieldLabel.HorizontalAlignment = 'right'; + app.voiEditFieldLabel.Position = [60 219 25 22]; + app.voiEditFieldLabel.Text = 'voi'; + + % Create OWvoiEditField + app.OWvoiEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWvoiEditField.Position = [100 219 100 22]; + + % Create cvoEditFieldLabel + app.cvoEditFieldLabel = uilabel(app.OilWaterTab); + app.cvoEditFieldLabel.HorizontalAlignment = 'right'; + app.cvoEditFieldLabel.Position = [56 183 25 22]; + app.cvoEditFieldLabel.Text = 'cvo'; + + % Create OWcvoEditField + app.OWcvoEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWcvoEditField.Position = [96 183 100 22]; + + % Create PprTextAreaLabel_2 + app.PprTextAreaLabel_2 = uilabel(app.OilWaterTab); + app.PprTextAreaLabel_2.HorizontalAlignment = 'right'; + app.PprTextAreaLabel_2.Position = [44 144 25 22]; + app.PprTextAreaLabel_2.Text = 'Ppr'; + + % Create OWPprTextArea + app.OWPprTextArea = uitextarea(app.OilWaterTab); + app.OWPprTextArea.Position = [84 108 150 60]; + + % Create BOTextAreaLabel + app.BOTextAreaLabel = uilabel(app.OilWaterTab); + app.BOTextAreaLabel.HorizontalAlignment = 'right'; + app.BOTextAreaLabel.Position = [60 68 25 22]; + app.BOTextAreaLabel.Text = 'BO'; + + % Create OWBOTextArea + app.OWBOTextArea = uitextarea(app.OilWaterTab); + app.OWBOTextArea.Position = [100 32 150 60]; + + % Create MUOTextAreaLabel + app.MUOTextAreaLabel = uilabel(app.OilWaterTab); + app.MUOTextAreaLabel.HorizontalAlignment = 'right'; + app.MUOTextAreaLabel.Position = [352 464 33 22]; + app.MUOTextAreaLabel.Text = 'MUO'; + + % Create OWMUOTextArea + app.OWMUOTextArea = uitextarea(app.OilWaterTab); + app.OWMUOTextArea.Position = [400 428 150 60]; + + % Create prwEditFieldLabel_2 + app.prwEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.prwEditFieldLabel_2.HorizontalAlignment = 'right'; + app.prwEditFieldLabel_2.Position = [321 338 25 22]; + app.prwEditFieldLabel_2.Text = 'prw'; + + % Create OWprwEditField + app.OWprwEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWprwEditField.Position = [361 338 100 22]; + + % Create BwiEditFieldLabel_2 + app.BwiEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.BwiEditFieldLabel_2.HorizontalAlignment = 'right'; + app.BwiEditFieldLabel_2.Position = [325 290 25 22]; + app.BwiEditFieldLabel_2.Text = 'Bwi'; + + % Create OWBwiEditField + app.OWBwiEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWBwiEditField.Position = [365 290 100 22]; + + % Create cwEditFieldLabel_2 + app.cwEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.cwEditFieldLabel_2.HorizontalAlignment = 'right'; + app.cwEditFieldLabel_2.Position = [336 237 25 22]; + app.cwEditFieldLabel_2.Text = 'cw'; + + % Create OWcwEditField + app.OWcwEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWcwEditField.Position = [376 237 100 22]; + + % Create vwiEditFieldLabel_2 + app.vwiEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.vwiEditFieldLabel_2.HorizontalAlignment = 'right'; + app.vwiEditFieldLabel_2.Position = [332 179 25 22]; + app.vwiEditFieldLabel_2.Text = 'vwi'; + + % Create OWvwiEditField + app.OWvwiEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWvwiEditField.Position = [372 179 100 22]; + + % Create cvwEditFieldLabel_2 + app.cvwEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.cvwEditFieldLabel_2.HorizontalAlignment = 'right'; + app.cvwEditFieldLabel_2.Position = [335 141 26 22]; + app.cvwEditFieldLabel_2.Text = 'cvw'; + + % Create OWcvwEditField + app.OWcvwEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWcvwEditField.Position = [376 141 100 22]; + + % Create ifpcowEditFieldLabel + app.ifpcowEditFieldLabel = uilabel(app.OilWaterTab); + app.ifpcowEditFieldLabel.HorizontalAlignment = 'right'; + app.ifpcowEditFieldLabel.Position = [329 94 39 22]; + app.ifpcowEditFieldLabel.Text = 'ifpcow'; + + % Create OWifpcowEditField + app.OWifpcowEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWifpcowEditField.Position = [383 94 100 22]; + + % Create PRMTextAreaLabel + app.PRMTextAreaLabel = uilabel(app.OilWaterTab); + app.PRMTextAreaLabel.HorizontalAlignment = 'right'; + app.PRMTextAreaLabel.Position = [376 48 32 22]; + app.PRMTextAreaLabel.Text = 'PRM'; + + % Create OWPRMTextArea + app.OWPRMTextArea = uitextarea(app.OilWaterTab); + app.OWPRMTextArea.Position = [423 12 150 60]; + + % Create PRFTextAreaLabel_2 + app.PRFTextAreaLabel_2 = uilabel(app.OilWaterTab); + app.PRFTextAreaLabel_2.HorizontalAlignment = 'right'; + app.PRFTextAreaLabel_2.Position = [674 463 29 22]; + app.PRFTextAreaLabel_2.Text = 'PRF'; + + % Create OWPRFTextArea + app.OWPRFTextArea = uitextarea(app.OilWaterTab); + app.OWPRFTextArea.Position = [718 427 150 60]; + + % Create beta_non_Darcy_flowEditFieldLabel + app.beta_non_Darcy_flowEditFieldLabel = uilabel(app.OilWaterTab); + app.beta_non_Darcy_flowEditFieldLabel.HorizontalAlignment = 'right'; + app.beta_non_Darcy_flowEditFieldLabel.Position = [565 379 121 22]; + app.beta_non_Darcy_flowEditFieldLabel.Text = 'beta_non_Darcy_flow'; + + % Create OWbeta_non_Darcy_flowEditField + app.OWbeta_non_Darcy_flowEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWbeta_non_Darcy_flowEditField.Position = [701 379 100 22]; + + % Create p_grad_thresholdEditFieldLabel_2 + app.p_grad_thresholdEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.p_grad_thresholdEditFieldLabel_2.HorizontalAlignment = 'right'; + app.p_grad_thresholdEditFieldLabel_2.Position = [586 336 98 22]; + app.p_grad_thresholdEditFieldLabel_2.Text = 'p_grad_threshold'; + + % Create OWp_grad_thresholdEditField + app.OWp_grad_thresholdEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWp_grad_thresholdEditField.Position = [699 336 100 22]; + + % Create MultiComponentTab + app.MultiComponentTab = uitab(app.TabGroup2); + app.MultiComponentTab.Title = 'MultiComponent'; + + % Create DsEditFieldLabel + app.DsEditFieldLabel = uilabel(app.MultiComponentTab); + app.DsEditFieldLabel.HorizontalAlignment = 'right'; + app.DsEditFieldLabel.Position = [54 470 25 22]; + app.DsEditFieldLabel.Text = 'Ds'; + + % Create MCDsEditField + app.MCDsEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCDsEditField.Position = [94 470 100 22]; + + % Create DbEditFieldLabel + app.DbEditFieldLabel = uilabel(app.MultiComponentTab); + app.DbEditFieldLabel.HorizontalAlignment = 'right'; + app.DbEditFieldLabel.Position = [67 430 25 22]; + app.DbEditFieldLabel.Text = 'Db'; + + % Create MCDbEditField + app.MCDbEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCDbEditField.Position = [107 430 100 22]; + + % Create c_ca_tableTextAreaLabel + app.c_ca_tableTextAreaLabel = uilabel(app.MultiComponentTab); + app.c_ca_tableTextAreaLabel.HorizontalAlignment = 'right'; + app.c_ca_tableTextAreaLabel.Position = [24 389 63 22]; + app.c_ca_tableTextAreaLabel.Text = 'c_ca_table'; + + % Create MCc_ca_tableTextArea + app.MCc_ca_tableTextArea = uitextarea(app.MultiComponentTab); + app.MCc_ca_tableTextArea.Position = [102 353 150 60]; + + % Create REditFieldLabel + app.REditFieldLabel = uilabel(app.MultiComponentTab); + app.REditFieldLabel.HorizontalAlignment = 'right'; + app.REditFieldLabel.Position = [74 319 25 22]; + app.REditFieldLabel.Text = 'R'; + + % Create MCREditField + app.MCREditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCREditField.Position = [114 319 100 22]; + + % Create VmEditFieldLabel + app.VmEditFieldLabel = uilabel(app.MultiComponentTab); + app.VmEditFieldLabel.HorizontalAlignment = 'right'; + app.VmEditFieldLabel.Position = [72 277 25 22]; + app.VmEditFieldLabel.Text = 'Vm'; + + % Create MCVmEditField + app.MCVmEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCVmEditField.Position = [112 277 100 22]; + + % Create TemperatureEditFieldLabel + app.TemperatureEditFieldLabel = uilabel(app.MultiComponentTab); + app.TemperatureEditFieldLabel.HorizontalAlignment = 'right'; + app.TemperatureEditFieldLabel.Position = [31 240 72 22]; + app.TemperatureEditFieldLabel.Text = 'Temperature'; + + % Create MCTemperatureEditField + app.MCTemperatureEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCTemperatureEditField.Position = [118 240 100 22]; + + % Create cs_NcTextAreaLabel + app.cs_NcTextAreaLabel = uilabel(app.MultiComponentTab); + app.cs_NcTextAreaLabel.HorizontalAlignment = 'right'; + app.cs_NcTextAreaLabel.Position = [39 198 38 22]; + app.cs_NcTextAreaLabel.Text = 'cs_Nc'; + + % Create MCcs_NcTextArea + app.MCcs_NcTextArea = uitextarea(app.MultiComponentTab); + app.MCcs_NcTextArea.Position = [92 162 150 60]; + + % Create kr_nosurfTextAreaLabel + app.kr_nosurfTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_nosurfTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_nosurfTextAreaLabel.Position = [20 128 55 22]; + app.kr_nosurfTextAreaLabel.Text = 'kr_nosurf'; + + % Create MCkr_nosurfTextArea + app.MCkr_nosurfTextArea = uitextarea(app.MultiComponentTab); + app.MCkr_nosurfTextArea.Position = [90 92 150 60]; + + % Create kr_surfTextAreaLabel + app.kr_surfTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_surfTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_surfTextAreaLabel.Position = [36 57 42 22]; + app.kr_surfTextAreaLabel.Text = 'kr_surf'; + + % Create MCkr_surfTextArea + app.MCkr_surfTextArea = uitextarea(app.MultiComponentTab); + app.MCkr_surfTextArea.Position = [93 21 150 60]; + + % Create PCTextAreaLabel + app.PCTextAreaLabel = uilabel(app.MultiComponentTab); + app.PCTextAreaLabel.HorizontalAlignment = 'right'; + app.PCTextAreaLabel.Position = [323 468 25 22]; + app.PCTextAreaLabel.Text = 'PC'; + + % Create MCPCTextArea + app.MCPCTextArea = uitextarea(app.MultiComponentTab); + app.MCPCTextArea.Position = [363 432 150 60]; + + % Create cs_Nc_fractureTextAreaLabel + app.cs_Nc_fractureTextAreaLabel = uilabel(app.MultiComponentTab); + app.cs_Nc_fractureTextAreaLabel.HorizontalAlignment = 'right'; + app.cs_Nc_fractureTextAreaLabel.Position = [257 400 86 22]; + app.cs_Nc_fractureTextAreaLabel.Text = 'cs_Nc_fracture'; + + % Create MCcs_Nc_fractureTextArea + app.MCcs_Nc_fractureTextArea = uitextarea(app.MultiComponentTab); + app.MCcs_Nc_fractureTextArea.Position = [358 364 150 60]; + + % Create kr_nosurf_fractureTextAreaLabel + app.kr_nosurf_fractureTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_nosurf_fractureTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_nosurf_fractureTextAreaLabel.Position = [238 334 102 22]; + app.kr_nosurf_fractureTextAreaLabel.Text = 'kr_nosurf_fracture'; + + % Create MCkr_nosurf_fractureTextArea + app.MCkr_nosurf_fractureTextArea = uitextarea(app.MultiComponentTab); + app.MCkr_nosurf_fractureTextArea.Position = [355 298 150 60]; + + % Create kr_surf_fractureTextAreaLabel + app.kr_surf_fractureTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_surf_fractureTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_surf_fractureTextAreaLabel.Position = [249 267 89 22]; + app.kr_surf_fractureTextAreaLabel.Text = 'kr_surf_fracture'; + + % Create MCkr_surf_fractureTextArea + app.MCkr_surf_fractureTextArea = uitextarea(app.MultiComponentTab); + app.MCkr_surf_fractureTextArea.Position = [353 231 150 60]; + + % Create PC_fractureTextAreaLabel + app.PC_fractureTextAreaLabel = uilabel(app.MultiComponentTab); + app.PC_fractureTextAreaLabel.HorizontalAlignment = 'right'; + app.PC_fractureTextAreaLabel.Position = [265 198 69 22]; + app.PC_fractureTextAreaLabel.Text = 'PC_fracture'; + + % Create MCPC_fractureTextArea + app.MCPC_fractureTextArea = uitextarea(app.MultiComponentTab); + app.MCPC_fractureTextArea.Position = [349 162 150 60]; + + % Create ifpcglEditFieldLabel_2 + app.ifpcglEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.ifpcglEditFieldLabel_2.HorizontalAlignment = 'right'; + app.ifpcglEditFieldLabel_2.Position = [345 132 33 22]; + app.ifpcglEditFieldLabel_2.Text = 'ifpcgl'; + + % Create MCifpcglEditField + app.MCifpcglEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCifpcglEditField.Position = [393 132 100 22]; + + % Create p_grad_thresholdEditFieldLabel_3 + app.p_grad_thresholdEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.p_grad_thresholdEditFieldLabel_3.HorizontalAlignment = 'right'; + app.p_grad_thresholdEditFieldLabel_3.Position = [280 101 98 22]; + app.p_grad_thresholdEditFieldLabel_3.Text = 'p_grad_threshold'; + + % Create MCp_grad_thresholdEditField + app.MCp_grad_thresholdEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCp_grad_thresholdEditField.Position = [393 101 100 22]; + + % Create gas_propVLEditFieldLabel_2 + app.gas_propVLEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.gas_propVLEditFieldLabel_2.HorizontalAlignment = 'right'; + app.gas_propVLEditFieldLabel_2.Position = [307 67 73 22]; + app.gas_propVLEditFieldLabel_2.Text = 'gas_prop.VL'; + + % Create MCgas_propVLEditField + app.MCgas_propVLEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCgas_propVLEditField.Position = [395 67 100 22]; + + % Create gas_propPLEditFieldLabel_2 + app.gas_propPLEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.gas_propPLEditFieldLabel_2.HorizontalAlignment = 'right'; + app.gas_propPLEditFieldLabel_2.Position = [305 33 73 22]; + app.gas_propPLEditFieldLabel_2.Text = 'gas_prop.PL'; + + % Create MCgas_propPLEditField + app.MCgas_propPLEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCgas_propPLEditField.Position = [393 33 100 22]; + + % Create gas_propKnEditFieldLabel_2 + app.gas_propKnEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.gas_propKnEditFieldLabel_2.HorizontalAlignment = 'right'; + app.gas_propKnEditFieldLabel_2.Position = [306 10 73 22]; + app.gas_propKnEditFieldLabel_2.Text = 'gas_prop.Kn'; + + % Create MCgas_propKnEditField + app.MCgas_propKnEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCgas_propKnEditField.Position = [394 10 100 22]; + + % Create stress_factor_fractureEditFieldLabel_2 + app.stress_factor_fractureEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.stress_factor_fractureEditFieldLabel_2.HorizontalAlignment = 'right'; + app.stress_factor_fractureEditFieldLabel_2.Position = [523 470 121 22]; + app.stress_factor_fractureEditFieldLabel_2.Text = 'stress_factor_fracture'; + + % Create MCstress_factor_fractureEditField + app.MCstress_factor_fractureEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCstress_factor_fractureEditField.Position = [659 470 100 22]; + + % Create stress_factor_matrixEditFieldLabel_2 + app.stress_factor_matrixEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.stress_factor_matrixEditFieldLabel_2.HorizontalAlignment = 'right'; + app.stress_factor_matrixEditFieldLabel_2.Position = [534 434 113 22]; + app.stress_factor_matrixEditFieldLabel_2.Text = 'stress_factor_matrix'; + + % Create MCstress_factor_matrixEditField + app.MCstress_factor_matrixEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCstress_factor_matrixEditField.Position = [662 434 100 22]; + + % Create stress_factor_ref_pressureEditFieldLabel_2 + app.stress_factor_ref_pressureEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.stress_factor_ref_pressureEditFieldLabel_2.HorizontalAlignment = 'right'; + app.stress_factor_ref_pressureEditFieldLabel_2.Position = [499 403 148 22]; + app.stress_factor_ref_pressureEditFieldLabel_2.Text = 'stress_factor_ref_pressure'; + + % Create MCstress_factor_ref_pressureEditField + app.MCstress_factor_ref_pressureEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCstress_factor_ref_pressureEditField.Position = [662 403 100 22]; + + % Create beta_non_darcy_flowEditFieldLabel_2 + app.beta_non_darcy_flowEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.beta_non_darcy_flowEditFieldLabel_2.HorizontalAlignment = 'right'; + app.beta_non_darcy_flowEditFieldLabel_2.Position = [525 372 119 22]; + app.beta_non_darcy_flowEditFieldLabel_2.Text = 'beta_non_darcy_flow'; + + % Create MCbeta_non_darcy_flowEditField + app.MCbeta_non_darcy_flowEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCbeta_non_darcy_flowEditField.Position = [659 372 100 22]; + + % Create density_g_scEditFieldLabel_2 + app.density_g_scEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.density_g_scEditFieldLabel_2.HorizontalAlignment = 'right'; + app.density_g_scEditFieldLabel_2.Position = [568 338 75 22]; + app.density_g_scEditFieldLabel_2.Text = 'density_g_sc'; + + % Create MCdensity_g_scEditField + app.MCdensity_g_scEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCdensity_g_scEditField.Position = [658 338 100 22]; + + % Create gas_modelDropDownLabel_2 + app.gas_modelDropDownLabel_2 = uilabel(app.MultiComponentTab); + app.gas_modelDropDownLabel_2.HorizontalAlignment = 'right'; + app.gas_modelDropDownLabel_2.Position = [575 305 64 22]; + app.gas_modelDropDownLabel_2.Text = 'gas_model'; + + % Create MCgas_modelDropDown + app.MCgas_modelDropDown = uidropdown(app.MultiComponentTab); + app.MCgas_modelDropDown.Items = {''}; + app.MCgas_modelDropDown.Position = [654 305 100 22]; + app.MCgas_modelDropDown.Value = ''; + + % Create prgEditFieldLabel_2 + app.prgEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.prgEditFieldLabel_2.HorizontalAlignment = 'right'; + app.prgEditFieldLabel_2.Position = [609 273 25 22]; + app.prgEditFieldLabel_2.Text = 'prg'; + + % Create MCprgEditField + app.MCprgEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCprgEditField.Position = [649 273 100 22]; + + % Create BgiEditFieldLabel_2 + app.BgiEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.BgiEditFieldLabel_2.HorizontalAlignment = 'right'; + app.BgiEditFieldLabel_2.Position = [613 240 25 22]; + app.BgiEditFieldLabel_2.Text = 'Bgi'; + + % Create MCBgiEditField + app.MCBgiEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCBgiEditField.Position = [653 240 100 22]; + + % Create cgEditFieldLabel_2 + app.cgEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.cgEditFieldLabel_2.HorizontalAlignment = 'right'; + app.cgEditFieldLabel_2.Position = [610 208 25 22]; + app.cgEditFieldLabel_2.Text = 'cg'; + + % Create MCcgEditField + app.MCcgEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCcgEditField.Position = [650 208 100 22]; + + % Create vgiEditFieldLabel_2 + app.vgiEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.vgiEditFieldLabel_2.HorizontalAlignment = 'right'; + app.vgiEditFieldLabel_2.Position = [613 177 25 22]; + app.vgiEditFieldLabel_2.Text = 'vgi'; + + % Create MCvgiEditField + app.MCvgiEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCvgiEditField.Position = [653 177 100 22]; + + % Create cvgEditFieldLabel_2 + app.cvgEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.cvgEditFieldLabel_2.HorizontalAlignment = 'right'; + app.cvgEditFieldLabel_2.Position = [610 144 25 22]; + app.cvgEditFieldLabel_2.Text = 'cvg'; + + % Create MCcvgEditField + app.MCcvgEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCcvgEditField.Position = [650 144 100 22]; + + % Create PprTextAreaLabel_3 + app.PprTextAreaLabel_3 = uilabel(app.MultiComponentTab); + app.PprTextAreaLabel_3.HorizontalAlignment = 'right'; + app.PprTextAreaLabel_3.Position = [560 114 25 22]; + app.PprTextAreaLabel_3.Text = 'Ppr'; + + % Create MCPprTextArea + app.MCPprTextArea = uitextarea(app.MultiComponentTab); + app.MCPprTextArea.Position = [600 78 150 60]; + + % Create BGTextAreaLabel_2 + app.BGTextAreaLabel_2 = uilabel(app.MultiComponentTab); + app.BGTextAreaLabel_2.HorizontalAlignment = 'right'; + app.BGTextAreaLabel_2.Position = [559 46 25 22]; + app.BGTextAreaLabel_2.Text = 'BG'; + + % Create MCBGTextArea + app.MCBGTextArea = uitextarea(app.MultiComponentTab); + app.MCBGTextArea.Position = [599 10 150 60]; + + % Create MUGTextAreaLabel_2 + app.MUGTextAreaLabel_2 = uilabel(app.MultiComponentTab); + app.MUGTextAreaLabel_2.HorizontalAlignment = 'right'; + app.MUGTextAreaLabel_2.Position = [823 468 33 22]; + app.MUGTextAreaLabel_2.Text = 'MUG'; + + % Create MCMUGTextArea + app.MCMUGTextArea = uitextarea(app.MultiComponentTab); + app.MCMUGTextArea.Position = [871 432 150 60]; + + % Create density_w_scEditFieldLabel_3 + app.density_w_scEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.density_w_scEditFieldLabel_3.HorizontalAlignment = 'right'; + app.density_w_scEditFieldLabel_3.Position = [821 400 77 22]; + app.density_w_scEditFieldLabel_3.Text = 'density_w_sc'; + + % Create MCdensity_w_scEditField + app.MCdensity_w_scEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCdensity_w_scEditField.Position = [913 400 100 22]; + + % Create prwEditFieldLabel_3 + app.prwEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.prwEditFieldLabel_3.HorizontalAlignment = 'right'; + app.prwEditFieldLabel_3.Position = [867 371 25 22]; + app.prwEditFieldLabel_3.Text = 'prw'; + + % Create MCprwEditField + app.MCprwEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCprwEditField.Position = [907 371 100 22]; + + % Create BwiEditFieldLabel_3 + app.BwiEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.BwiEditFieldLabel_3.HorizontalAlignment = 'right'; + app.BwiEditFieldLabel_3.Position = [873 340 25 22]; + app.BwiEditFieldLabel_3.Text = 'Bwi'; + + % Create MCBwiEditField + app.MCBwiEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCBwiEditField.Position = [913 340 100 22]; + + % Create cwEditFieldLabel_3 + app.cwEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.cwEditFieldLabel_3.HorizontalAlignment = 'right'; + app.cwEditFieldLabel_3.Position = [875 309 25 22]; + app.cwEditFieldLabel_3.Text = 'cw'; + + % Create MCcwEditField + app.MCcwEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCcwEditField.Position = [915 309 100 22]; + + % Create vwiEditFieldLabel_3 + app.vwiEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.vwiEditFieldLabel_3.HorizontalAlignment = 'right'; + app.vwiEditFieldLabel_3.Position = [875 279 25 22]; + app.vwiEditFieldLabel_3.Text = 'vwi'; + + % Create MCvwiEditField + app.MCvwiEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCvwiEditField.Position = [915 279 100 22]; + + % Create cvwEditFieldLabel_3 + app.cvwEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.cvwEditFieldLabel_3.HorizontalAlignment = 'right'; + app.cvwEditFieldLabel_3.Position = [874 246 26 22]; + app.cvwEditFieldLabel_3.Text = 'cvw'; + + % Create MCcvwEditField + app.MCcvwEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCcvwEditField.Position = [915 246 100 22]; + + % Create InitStatusLabel + app.InitStatusLabel = uilabel(app.FlowTab); + app.InitStatusLabel.Position = [87 645 79 22]; + app.InitStatusLabel.Text = 'InitStatus'; + + % Create InitialPressureEditFieldLabel + app.InitialPressureEditFieldLabel = uilabel(app.FlowTab); + app.InitialPressureEditFieldLabel.HorizontalAlignment = 'right'; + app.InitialPressureEditFieldLabel.Position = [58 607 81 22]; + app.InitialPressureEditFieldLabel.Text = 'InitialPressure'; + + % Create InitialPressureEditField + app.InitialPressureEditField = uieditfield(app.FlowTab, 'numeric'); + app.InitialPressureEditField.Position = [154 607 100 22]; + + % Create InitialSwEditFieldLabel + app.InitialSwEditFieldLabel = uilabel(app.FlowTab); + app.InitialSwEditFieldLabel.HorizontalAlignment = 'right'; + app.InitialSwEditFieldLabel.Position = [334 609 50 22]; + app.InitialSwEditFieldLabel.Text = 'InitialSw'; + + % Create InitialSwEditField + app.InitialSwEditField = uieditfield(app.FlowTab, 'numeric'); + app.InitialSwEditField.Position = [399 609 100 22]; + + % Create InitialCsEditFieldLabel + app.InitialCsEditFieldLabel = uilabel(app.FlowTab); + app.InitialCsEditFieldLabel.HorizontalAlignment = 'right'; + app.InitialCsEditFieldLabel.Position = [567 609 48 22]; + app.InitialCsEditFieldLabel.Text = 'InitialCs'; + + % Create InitialCsEditField + app.InitialCsEditField = uieditfield(app.FlowTab, 'numeric'); + app.InitialCsEditField.Position = [630 609 100 22]; + + % Create InitialCbEditFieldLabel + app.InitialCbEditFieldLabel = uilabel(app.FlowTab); + app.InitialCbEditFieldLabel.HorizontalAlignment = 'right'; + app.InitialCbEditFieldLabel.Position = [806 609 48 22]; + app.InitialCbEditFieldLabel.Text = 'InitialCb'; + + % Create InitialCbEditField + app.InitialCbEditField = uieditfield(app.FlowTab, 'numeric'); + app.InitialCbEditField.Position = [869 609 100 22]; + + % Create WellsTab + app.WellsTab = uitab(app.TabGroup); + app.WellsTab.Title = 'Wells'; + + % Create Well1Table + app.Well1Table = uitable(app.WellsTab); + app.Well1Table.ColumnName = {'Well1'}; + app.Well1Table.RowName = {}; + app.Well1Table.Position = [35 475 372 185]; + + % Create FractureWellLocationTable + app.FractureWellLocationTable = uitable(app.WellsTab); + app.FractureWellLocationTable.ColumnName = {'FractureWellLocation'}; + app.FractureWellLocationTable.RowName = {}; + app.FractureWellLocationTable.Position = [42 255 302 185]; + + % Create Well2Table + app.Well2Table = uitable(app.WellsTab); + app.Well2Table.ColumnName = {'Well2'}; + app.Well2Table.RowName = {}; + app.Well2Table.Position = [567 470 302 185]; + + % Create ScheduleTable + app.ScheduleTable = uitable(app.WellsTab); + app.ScheduleTable.ColumnName = {'Schedule'}; + app.ScheduleTable.RowName = {}; + app.ScheduleTable.Position = [567 243 302 185]; + + % Create TimeTextAreaLabel + app.TimeTextAreaLabel = uilabel(app.WellsTab); + app.TimeTextAreaLabel.HorizontalAlignment = 'right'; + app.TimeTextAreaLabel.Position = [70 191 31 22]; + app.TimeTextAreaLabel.Text = 'Time'; + + % Create TimeTextArea + app.TimeTextArea = uitextarea(app.WellsTab); + app.TimeTextArea.Position = [116 155 150 60]; + + % Create DtMinTextAreaLabel + app.DtMinTextAreaLabel = uilabel(app.WellsTab); + app.DtMinTextAreaLabel.HorizontalAlignment = 'right'; + app.DtMinTextAreaLabel.Position = [376 196 36 22]; + app.DtMinTextAreaLabel.Text = 'DtMin'; + + % Create DtMinTextArea + app.DtMinTextArea = uitextarea(app.WellsTab); + app.DtMinTextArea.Position = [427 160 150 60]; + + % Create DtMaxTextAreaLabel + app.DtMaxTextAreaLabel = uilabel(app.WellsTab); + app.DtMaxTextAreaLabel.HorizontalAlignment = 'right'; + app.DtMaxTextAreaLabel.Position = [681 189 40 22]; + app.DtMaxTextAreaLabel.Text = 'DtMax'; + + % Create DtMaxTextArea + app.DtMaxTextArea = uitextarea(app.WellsTab); + app.DtMaxTextArea.Position = [736 153 150 60]; + + % Create SoloverTab + app.SoloverTab = uitab(app.TabGroup); + app.SoloverTab.Title = 'Solover'; + + % Create YitaPEditFieldLabel + app.YitaPEditFieldLabel = uilabel(app.SoloverTab); + app.YitaPEditFieldLabel.HorizontalAlignment = 'right'; + app.YitaPEditFieldLabel.Position = [80 607 33 22]; + app.YitaPEditFieldLabel.Text = 'YitaP'; + + % Create YitaPEditField + app.YitaPEditField = uieditfield(app.SoloverTab, 'numeric'); + app.YitaPEditField.Position = [128 607 100 22]; + + % Create YitaSEditFieldLabel + app.YitaSEditFieldLabel = uilabel(app.SoloverTab); + app.YitaSEditFieldLabel.HorizontalAlignment = 'right'; + app.YitaSEditFieldLabel.Position = [88 542 33 22]; + app.YitaSEditFieldLabel.Text = 'YitaS'; + + % Create YitaSEditField + app.YitaSEditField = uieditfield(app.SoloverTab, 'numeric'); + app.YitaSEditField.Position = [136 542 100 22]; + + % Create OmegaEditFieldLabel + app.OmegaEditFieldLabel = uilabel(app.SoloverTab); + app.OmegaEditFieldLabel.HorizontalAlignment = 'right'; + app.OmegaEditFieldLabel.Position = [78 482 44 22]; + app.OmegaEditFieldLabel.Text = 'Omega'; + + % Create OmegaEditField + app.OmegaEditField = uieditfield(app.SoloverTab, 'numeric'); + app.OmegaEditField.Position = [137 482 100 22]; + + % Create NmaxEditFieldLabel + app.NmaxEditFieldLabel = uilabel(app.SoloverTab); + app.NmaxEditFieldLabel.HorizontalAlignment = 'right'; + app.NmaxEditFieldLabel.Position = [86 418 36 22]; + app.NmaxEditFieldLabel.Text = 'Nmax'; + + % Create NmaxEditField + app.NmaxEditField = uieditfield(app.SoloverTab, 'numeric'); + app.NmaxEditField.Position = [137 418 100 22]; + + % Create EpsAveEditFieldLabel + app.EpsAveEditFieldLabel = uilabel(app.SoloverTab); + app.EpsAveEditFieldLabel.HorizontalAlignment = 'right'; + app.EpsAveEditFieldLabel.Position = [72 349 46 22]; + app.EpsAveEditFieldLabel.Text = 'EpsAve'; + + % Create EpsAveEditField + app.EpsAveEditField = uieditfield(app.SoloverTab, 'numeric'); + app.EpsAveEditField.Position = [133 349 100 22]; + + % Create EpsMaxEditFieldLabel + app.EpsMaxEditFieldLabel = uilabel(app.SoloverTab); + app.EpsMaxEditFieldLabel.HorizontalAlignment = 'right'; + app.EpsMaxEditFieldLabel.Position = [83 271 48 22]; + app.EpsMaxEditFieldLabel.Text = 'EpsMax'; + + % Create EpsMaxEditField + app.EpsMaxEditField = uieditfield(app.SoloverTab, 'numeric'); + app.EpsMaxEditField.Position = [146 271 100 22]; + + % Create RunTab + app.RunTab = uitab(app.TabGroup); + app.RunTab.Title = 'Run'; + + % Create RunCurrentConfigButton + app.RunCurrentConfigButton = uibutton(app.RunTab, 'push'); + app.RunCurrentConfigButton.Position = [89 598 112 23]; + app.RunCurrentConfigButton.Text = 'RunCurrentConfig'; + + % Create RunLogTextAreaLabel + app.RunLogTextAreaLabel = uilabel(app.RunTab); + app.RunLogTextAreaLabel.HorizontalAlignment = 'right'; + app.RunLogTextAreaLabel.Position = [137 324 47 22]; + app.RunLogTextAreaLabel.Text = 'RunLog'; + + % Create RunLogTextArea + app.RunLogTextArea = uitextarea(app.RunTab); + app.RunLogTextArea.Position = [199 288 150 60]; + + % Create RunProgressLabel + app.RunProgressLabel = uilabel(app.RunTab); + app.RunProgressLabel.Position = [135 167 75 22]; + app.RunProgressLabel.Text = 'RunProgress'; + + % Create ResultsTab + app.ResultsTab = uitab(app.TabGroup); + app.ResultsTab.Title = 'Results'; + + % Create ResultAxes + app.ResultAxes = uiaxes(app.ResultsTab); + title(app.ResultAxes, 'Result') + xlabel(app.ResultAxes, 'X') + ylabel(app.ResultAxes, 'Y') + zlabel(app.ResultAxes, 'Z') + app.ResultAxes.Position = [99 342 300 185]; + + % Create ResultSummaryTextAreaLabel + app.ResultSummaryTextAreaLabel = uilabel(app.ResultsTab); + app.ResultSummaryTextAreaLabel.HorizontalAlignment = 'right'; + app.ResultSummaryTextAreaLabel.Position = [28 626 90 22]; + app.ResultSummaryTextAreaLabel.Text = 'ResultSummary'; + + % Create ResultSummaryTextArea + app.ResultSummaryTextArea = uitextarea(app.ResultsTab); + app.ResultSummaryTextArea.Position = [133 590 150 60]; + + % Create ResultTypeDropDownLabel + app.ResultTypeDropDownLabel = uilabel(app.ResultsTab); + app.ResultTypeDropDownLabel.HorizontalAlignment = 'right'; + app.ResultTypeDropDownLabel.Position = [444 609 65 22]; + app.ResultTypeDropDownLabel.Text = 'ResultType'; + + % Create ResultTypeDropDown + app.ResultTypeDropDown = uidropdown(app.ResultsTab); + app.ResultTypeDropDown.Position = [524 609 100 22]; + + % Create PlotResultButton + app.PlotResultButton = uibutton(app.ResultsTab, 'push'); + app.PlotResultButton.Position = [477 559 100 23]; + app.PlotResultButton.Text = 'PlotResult'; + + % Create ResultTab + app.ResultTab = uitable(app.ResultsTab); + app.ResultTab.ColumnName = {'Result'}; + app.ResultTab.RowName = {}; + app.ResultTab.Position = [524 275 302 185]; + + % Create NewConfigButton + app.NewConfigButton = uibutton(app.UIFigure, 'push'); + app.NewConfigButton.Position = [284 774 94 23]; + app.NewConfigButton.Text = 'New Config'; + + % Show the figure after all components are created + app.UIFigure.Visible = 'on'; + end + end + + % App creation and deletion + methods (Access = public) + + % Construct app + function app = EDFM_Simulator_App + + % Create UIFigure and components + createComponents(app) + + % Register the app with App Designer + registerApp(app, app.UIFigure) + + if nargout == 0 + clear app + end + end + + % Code that executes before app deletion + function delete(app) + + % Delete UIFigure when app is deleted + delete(app.UIFigure) + end + end +end \ No newline at end of file diff --git a/gui_support/app/EDFMAppController.m b/gui_support/app/EDFMAppController.m new file mode 100644 index 0000000..74eff1e --- /dev/null +++ b/gui_support/app/EDFMAppController.m @@ -0,0 +1,759 @@ +classdef EDFMAppController < handle + properties (Access = private) + App + Config struct = struct() + Results struct = struct() + ProjectRoot char + end + + methods + function obj = EDFMAppController(app) + obj.App = app; + obj.ProjectRoot = fileparts(fileparts(fileparts(mfilename('fullpath')))); + obj.addSupportPaths(); + end + + function startup(obj) + obj.setDropDownItems('TemplateDropDown', {'case01'}, 'case01'); + obj.setDropDownItems('ResultTypeDropDown', {'Time Steps', 'Newtons vs Time'}, 'Time Steps'); + obj.setDropDownItems('ModelFlagDropDown', {'1'}, '1'); + obj.setDropDownItems('ModelGridModelDropDown', {'1', '2'}, '1'); + obj.setDropDownItems('ModelFlowModelDropDown', {'1', '2', '3'}, '1'); + obj.setDropDownItems('FractureInputStyleDropDown', {'1', '2', '3', '4'}, '1'); + obj.setDropDownItems('GWgas_modelDropDown', {'1', '2'}, '1'); + obj.setDropDownItems('OWoil_modelDropDown', {'1', '2'}, '1'); + obj.setDropDownItems('MCgas_modelDropDown', {'1', '2'}, '1'); + + obj.Results = struct(); + obj.loadTemplate('case01'); + obj.appendLog('Controller startup completed.'); + obj.setStatus('Ready'); + end + + function newConfig(obj) + obj.Config = create_empty_config(); + obj.Results = struct(); + obj.refreshUIFromConfig(); + obj.refreshResults(); + obj.appendLog('Created empty config.'); + obj.setStatus('Empty config'); + end + + function loadTemplate(obj, caseId) + if nargin < 2 || strlength(string(caseId)) == 0 + caseId = 'case01'; + end + obj.Config = load_case_template(caseId); + obj.refreshUIFromConfig(); + obj.refreshResults(); + obj.appendLog(sprintf('Loaded template: %s', string(caseId))); + obj.setStatus(sprintf('Template %s loaded', string(caseId))); + end + + function importConfig(obj) + [fileName, folder] = uigetfile('*.mat', 'Import Config'); + if isequal(fileName, 0) + return; + end + obj.Config = load_config_mat(fullfile(folder, fileName)); + obj.refreshUIFromConfig(); + obj.appendLog(sprintf('Imported config: %s', fullfile(folder, fileName))); + obj.setStatus('Config imported'); + end + + function exportConfig(obj) + obj.pushUIToConfig(); + [fileName, folder] = uiputfile('*.mat', 'Export Config', 'config.mat'); + if isequal(fileName, 0) + return; + end + save_config_mat(obj.Config, fullfile(folder, fileName)); + obj.appendLog(sprintf('Exported config: %s', fullfile(folder, fileName))); + obj.setStatus('Config exported'); + end + + function runCurrentConfig(obj) + obj.pushUIToConfig(); + obj.setStatus('Running'); + obj.setRunProgress('Running...'); + obj.setRunHeader('-', '-', '-'); + obj.appendLog('Run started.'); + drawnow; + + try + logText = evalc('[r, Times, OutputRs, Wellpara, trun] = run_case(obj.Config);'); + obj.Results = struct( ... + 'r', r, ... + 'Times', Times, ... + 'OutputRs', {OutputRs}, ... + 'Wellpara', {Wellpara}, ... + 'trun', trun, ... + 'captured_log', logText); + if ~isempty(strtrim(logText)) + obj.appendLog(logText); + end + obj.refreshResults(); + obj.setRunProgress('Completed'); + obj.setStatus('Run completed'); + catch ME + obj.appendLog(getReport(ME, 'extended', 'hyperlinks', 'off')); + obj.setRunProgress('Failed'); + obj.setStatus('Run failed'); + uialert(obj.App.UIFigure, ME.message, 'Run Failed'); + end + end + + function importResults(obj) + [fileName, folder] = uigetfile('*.mat', 'Import Results'); + if isequal(fileName, 0) + return; + end + obj.Results = load_results_mat(fullfile(folder, fileName)); + obj.refreshResults(); + obj.appendLog(sprintf('Imported results: %s', fullfile(folder, fileName))); + obj.setStatus('Results imported'); + end + + function exportResults(obj) + if isempty(fieldnames(obj.Results)) + uialert(obj.App.UIFigure, 'No results available to export.', 'Export Results'); + return; + end + [fileName, folder] = uiputfile('*.mat', 'Export Results', 'results.mat'); + if isequal(fileName, 0) + return; + end + save_results_mat(obj.Results, fullfile(folder, fileName)); + obj.appendLog(sprintf('Exported results: %s', fullfile(folder, fileName))); + obj.setStatus('Results exported'); + end + + function plotResults(obj) + if isempty(fieldnames(obj.Results)) + obj.refreshResults(); + return; + end + if ~isprop(obj.App, 'ResultAxes') || isempty(obj.App.ResultAxes) + return; + end + + axesHandle = obj.App.ResultAxes; + cla(axesHandle); + plotType = obj.getDropDownValue('ResultTypeDropDown', 'Time Steps'); + + if strcmp(plotType, 'Newtons vs Time') && isfield(obj.Results, 'trun') ... + && isstruct(obj.Results.trun) ... + && isfield(obj.Results.trun, 'Newtons_vs_time') ... + && ~isempty(obj.Results.trun.Newtons_vs_time) + data = obj.Results.trun.Newtons_vs_time; + plot(axesHandle, data(:, 1), data(:, 2), '-o', 'LineWidth', 1.2); + title(axesHandle, 'Newtons vs Time'); + xlabel(axesHandle, 'Time'); + ylabel(axesHandle, 'Newton Count'); + elseif isfield(obj.Results, 'Times') && ~isempty(obj.Results.Times) + times = obj.Results.Times(:); + plot(axesHandle, times, 1:numel(times), '-o', 'LineWidth', 1.2); + title(axesHandle, 'Time Step Index'); + xlabel(axesHandle, 'Time'); + ylabel(axesHandle, 'Step'); + else + title(axesHandle, 'No plottable data'); + end + end + + function syncModelTabs(obj) + gridModel = obj.getNumericDropDownValue('ModelGridModelDropDown', 1); + flowModel = obj.getNumericDropDownValue('ModelFlowModelDropDown', 1); + + if isprop(obj.App, 'TabGroup3') + if gridModel == 2 && isprop(obj.App, 'DPTab') + obj.App.TabGroup3.SelectedTab = obj.App.DPTab; + elseif isprop(obj.App, 'SPTab') + obj.App.TabGroup3.SelectedTab = obj.App.SPTab; + end + end + + if isprop(obj.App, 'TabGroup2') + switch flowModel + case 1 + if isprop(obj.App, 'GasWaterTab') + obj.App.TabGroup2.SelectedTab = obj.App.GasWaterTab; + end + case 2 + if isprop(obj.App, 'OilWaterTab') + obj.App.TabGroup2.SelectedTab = obj.App.OilWaterTab; + end + otherwise + if isprop(obj.App, 'MultiComponentTab') + obj.App.TabGroup2.SelectedTab = obj.App.MultiComponentTab; + end + end + end + + obj.setEditableState('InitialCsEditField', flowModel == 3); + obj.setEditableState('InitialCbEditField', flowModel == 3); + + if isprop(obj.App, 'InitStatusLabel') + switch flowModel + case 1 + obj.App.InitStatusLabel.Text = 'Init: gas-water'; + case 2 + obj.App.InitStatusLabel.Text = 'Init: oil-water'; + otherwise + obj.App.InitStatusLabel.Text = 'Init: multi-component'; + end + end + end + end + + methods (Access = private) + function addSupportPaths(obj) + addpath(fullfile(obj.ProjectRoot, 'gui_support', 'app')); + addpath(fullfile(obj.ProjectRoot, 'gui_support', 'config')); + addpath(fullfile(obj.ProjectRoot, 'gui_support', 'runtime')); + addpath(fullfile(obj.ProjectRoot, 'gui_support', 'results')); + addpath(fullfile(obj.ProjectRoot, 'gui_support', 'templates')); + addpath(genpath(obj.ProjectRoot)); + end + + function refreshUIFromConfig(obj) + if isempty(fieldnames(obj.Config)) + return; + end + c = obj.Config; + + obj.setDropDownValue('ModelFlagDropDown', c.model.modelflag); + obj.setDropDownValue('ModelGridModelDropDown', c.model.grid_model); + obj.setDropDownValue('ModelFlowModelDropDown', c.model.flow_model); + + obj.setTextAreaExpr('GridDxTextArea', c.grid.dx); + obj.setTextAreaExpr('GridDyTextArea', c.grid.dy); + obj.setTextAreaExpr('GridDzTextArea', c.grid.dz); + obj.setTextAreaExpr('GridNTGTextArea', c.grid.NTG); + + obj.setDropDownValue('FractureInputStyleDropDown', c.fracture.input_style); + obj.setTextAreaExpr('FractureInputTextArea', c.fracture.input_content); + obj.setTextAreaExpr('FractureLinesTextArea', c.fracture.fractureLines); + obj.setTextAreaExpr('FractureHeightsTextArea', c.fracture.fractureHeights); + obj.setTextAreaExpr('FractureFlowBarrierFlagsTextArea', c.fracture.flowBarrierFlags); + + obj.setTextAreaExpr('SPBoundaryTextArea', c.discretization.sp.boundary_polygon); + obj.setTextAreaExpr('SPInvalidLayerTextArea', c.discretization.sp.invalid_layer); + obj.setTextAreaExpr('SPMatrixKxTextArea', c.discretization.sp.matrix.kx); + 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.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)); + + obj.setTextAreaExpr('GWPRFTextArea', c.flow.gas_water.fracture_relperm_table); + obj.setTextAreaExpr('GWRPGWTextArea', c.flow.gas_water.matrix_relperm_table); + obj.setTextAreaExpr('OWPRFTextArea', c.flow.oil_water.fracture_relperm_table); + obj.setTextAreaExpr('OWPRMTextArea', c.flow.oil_water.matrix_relperm_table); + + obj.setTextAreaExpr('MCcs_NcTextArea', c.flow.multi_component.cs_Nc); + obj.setTextAreaExpr('MCkr_nosurfTextArea', c.flow.multi_component.kr_nosurf); + obj.setTextAreaExpr('MCkr_surfTextArea', c.flow.multi_component.kr_surf); + obj.setTextAreaExpr('MCPCTextArea', c.flow.multi_component.PC); + obj.setTextAreaExpr('MCcs_Nc_fractureTextArea', c.flow.multi_component.cs_Nc_fracture); + 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('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', c.wells.welloc); + obj.setTableValue('Well2Table', c.wells.well2); + obj.setTableValue('ScheduleTable', c.schedule.well_schedules); + obj.setTextAreaExpr('TimeTextArea', c.schedule.time); + obj.setTextAreaExpr('DtMinTextArea', c.schedule.dtmin); + obj.setTextAreaExpr('DtMaxTextArea', c.schedule.dtmax); + + obj.setNumericFieldValue('YitaPEditField', c.solver.yitap); + obj.setNumericFieldValue('YitaSEditField', c.solver.yitas); + obj.setNumericFieldValue('OmegaEditField', c.solver.omega); + obj.setNumericFieldValue('NmaxEditField', c.solver.Nmax); + obj.setNumericFieldValue('EpsAveEditField', c.solver.epsave); + obj.setNumericFieldValue('EpsMaxEditField', c.solver.epsmax); + + obj.syncModelTabs(); + end + + function pushUIToConfig(obj) + if isempty(fieldnames(obj.Config)) + obj.Config = create_empty_config(); + end + c = obj.Config; + + c.model.modelflag = obj.getNumericDropDownValue('ModelFlagDropDown', c.model.modelflag); + c.model.grid_model = obj.getNumericDropDownValue('ModelGridModelDropDown', c.model.grid_model); + c.model.flow_model = obj.getNumericDropDownValue('ModelFlowModelDropDown', c.model.flow_model); + + c.grid.dx = obj.getTextAreaExpr('GridDxTextArea', c.grid.dx); + c.grid.dy = obj.getTextAreaExpr('GridDyTextArea', c.grid.dy); + c.grid.dz = obj.getTextAreaExpr('GridDzTextArea', c.grid.dz); + c.grid.NTG = obj.getTextAreaExpr('GridNTGTextArea', c.grid.NTG); + c.grid.nx = numel(c.grid.dx); + c.grid.ny = numel(c.grid.dy); + c.grid.nz = numel(c.grid.dz); + + c.fracture.input_style = obj.getNumericDropDownValue('FractureInputStyleDropDown', c.fracture.input_style); + c.fracture.input_content = obj.getTextAreaExpr('FractureInputTextArea', c.fracture.input_content); + c.fracture.fractureLines = obj.getTextAreaExpr('FractureLinesTextArea', c.fracture.fractureLines); + c.fracture.fractureHeights = obj.getTextAreaExpr('FractureHeightsTextArea', c.fracture.fractureHeights); + c.fracture.flowBarrierFlags = obj.getTextAreaExpr('FractureFlowBarrierFlagsTextArea', c.fracture.flowBarrierFlags); + + c.discretization.sp.boundary_polygon = obj.getTextAreaExpr('SPBoundaryTextArea', c.discretization.sp.boundary_polygon); + c.discretization.sp.invalid_layer = obj.getTextAreaExpr('SPInvalidLayerTextArea', c.discretization.sp.invalid_layer); + c.discretization.sp.matrix.kx = obj.getTextAreaExpr('SPMatrixKxTextArea', c.discretization.sp.matrix.kx); + 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.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); + + 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.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.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); + c.flow.multi_component.kr_surf = obj.getTextAreaExpr('MCkr_surfTextArea', c.flow.multi_component.kr_surf); + c.flow.multi_component.PC = obj.getTextAreaExpr('MCPCTextArea', c.flow.multi_component.PC); + c.flow.multi_component.cs_Nc_fracture = obj.getTextAreaExpr('MCcs_Nc_fractureTextArea', c.flow.multi_component.cs_Nc_fracture); + 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.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.wells.well1 = obj.getTableValue('Well1Table', c.wells.well1); + c.wells.welloc = obj.getTableValue('FractureWellLocationTable', c.wells.welloc); + c.wells.num_fracture_wells = numel(c.wells.welloc); + c.wells.well2 = obj.getTableValue('Well2Table', c.wells.well2); + + c.schedule.well_schedules = obj.getTableValue('ScheduleTable', c.schedule.well_schedules); + c.schedule.number_phases = numel(c.schedule.well_schedules); + c.schedule.time = obj.getTextAreaExpr('TimeTextArea', c.schedule.time); + c.schedule.dtmin = obj.getTextAreaExpr('DtMinTextArea', c.schedule.dtmin); + c.schedule.dtmax = obj.getTextAreaExpr('DtMaxTextArea', c.schedule.dtmax); + + c.solver.yitap = obj.getNumericFieldValue('YitaPEditField', c.solver.yitap); + c.solver.yitas = obj.getNumericFieldValue('YitaSEditField', c.solver.yitas); + c.solver.omega = obj.getNumericFieldValue('OmegaEditField', c.solver.omega); + c.solver.Nmax = obj.getNumericFieldValue('NmaxEditField', c.solver.Nmax); + c.solver.epsave = obj.getNumericFieldValue('EpsAveEditField', c.solver.epsave); + c.solver.epsmax = obj.getNumericFieldValue('EpsMaxEditField', c.solver.epsmax); + + obj.Config = c; + obj.syncModelTabs(); + end + + function refreshResults(obj) + summary = {}; + if isempty(fieldnames(obj.Results)) + summary = {'No results loaded.'}; + obj.setRunHeader('-', '-', '-'); + obj.setRunProgress('Idle'); + obj.setResultsTable({}); + if isprop(obj.App, 'ResultAxes') + cla(obj.App.ResultAxes); + title(obj.App.ResultAxes, 'Results'); + end + else + if isfield(obj.Results, 'Times') && ~isempty(obj.Results.Times) + summary{end + 1} = sprintf('Time steps: %d', numel(obj.Results.Times)); %#ok + end + if isfield(obj.Results, 'trun') && isstruct(obj.Results.trun) + if isfield(obj.Results.trun, 'run_time') + summary{end + 1} = sprintf('Run time: %.3f s', obj.Results.trun.run_time); %#ok + end + if isfield(obj.Results.trun, 'Newton_step') + summary{end + 1} = sprintf('Newton steps: %g', obj.Results.trun.Newton_step); %#ok + end + end + if isempty(summary) + summary = {'Results loaded.'}; + end + obj.populateRunHeaderFromResults(); + obj.setResultsTable(obj.buildResultsTableData()); + obj.plotResults(); + end + + if isprop(obj.App, 'ResultSummaryTextArea') + obj.App.ResultSummaryTextArea.Value = summary; + end + end + + function populateRunHeaderFromResults(obj) + stageText = '-'; + timeText = '-'; + dtText = '-'; + if isfield(obj.Results, 'Times') && ~isempty(obj.Results.Times) + stageText = sprintf('%d', numel(obj.Results.Times)); + timeText = obj.valueToShortText(obj.Results.Times(end)); + if numel(obj.Results.Times) >= 2 + dtText = obj.valueToShortText(obj.Results.Times(end) - obj.Results.Times(end - 1)); + end + end + obj.setRunHeader(stageText, timeText, dtText); + end + + function tableData = buildResultsTableData(obj) + tableData = { + 'has_r', isfield(obj.Results, 'r'); + 'num_times', obj.safeLength(obj.Results, 'Times'); + 'num_outputs', obj.safeLength(obj.Results, 'OutputRs'); + 'num_wellpara', obj.safeLength(obj.Results, 'Wellpara') + }; + end + + function n = safeLength(~, s, fieldName) + if isfield(s, fieldName) && ~isempty(s.(fieldName)) + n = numel(s.(fieldName)); + else + n = 0; + end + end + + function setStatus(obj, textValue) + if isprop(obj.App, 'StatusLabel') + obj.App.StatusLabel.Text = ['Status: ', char(string(textValue))]; + end + end + + function appendLog(obj, textValue) + if ~isprop(obj.App, 'RunLogTextArea') + return; + end + newLines = splitlines(string(textValue)); + if isempty(obj.App.RunLogTextArea.Value) + obj.App.RunLogTextArea.Value = cellstr(newLines); + else + current = string(obj.App.RunLogTextArea.Value); + obj.App.RunLogTextArea.Value = cellstr([current; newLines]); + end + drawnow limitrate; + end + + function setRunProgress(obj, textValue) + if isprop(obj.App, 'RunProgressLabel') + obj.App.RunProgressLabel.Text = ['RunProgress: ', char(string(textValue))]; + end + end + + function setRunHeader(obj, stageText, timeText, dtText) + if isprop(obj.App, 'CurrentStageLabel') + obj.App.CurrentStageLabel.Text = ['Stage: ', char(string(stageText))]; + end + if isprop(obj.App, 'CurrentTimeLabel') + obj.App.CurrentTimeLabel.Text = ['Time: ', char(string(timeText))]; + end + if isprop(obj.App, 'CurrentDtLabel') + obj.App.CurrentDtLabel.Text = ['dt: ', char(string(dtText))]; + end + end + + function setResultsTable(obj, data) + if isprop(obj.App, 'ResultTab') + obj.App.ResultTab.Data = data; + end + end + + function setDropDownItems(obj, propName, items, defaultValue) + if ~isprop(obj.App, propName) + return; + end + component = obj.App.(propName); + component.Items = items; + if nargin >= 4 + component.Value = char(string(defaultValue)); + end + end + + function setDropDownValue(obj, propName, value) + if ~isprop(obj.App, propName) + return; + end + component = obj.App.(propName); + stringValue = char(string(value)); + if ~any(strcmp(component.Items, stringValue)) + component.Items = unique([component.Items(:); {stringValue}], 'stable'); + end + component.Value = stringValue; + end + + function value = getDropDownValue(obj, propName, fallback) + if nargin < 3 + fallback = ''; + end + if ~isprop(obj.App, propName) + value = fallback; + return; + end + value = obj.App.(propName).Value; + if isempty(value) + value = fallback; + end + end + + function value = getNumericDropDownValue(obj, propName, fallback) + value = str2double(obj.getDropDownValue(propName, num2str(fallback))); + if isnan(value) + value = fallback; + end + end + + function setNumericFieldValue(obj, propName, value) + if ~isprop(obj.App, propName) + return; + end + obj.App.(propName).Value = obj.firstScalar(value); + end + + function value = getNumericFieldValue(obj, propName, fallback) + if ~isprop(obj.App, propName) + value = fallback; + return; + end + value = obj.App.(propName).Value; + if isempty(value) + value = fallback; + end + end + + function setTextAreaExpr(obj, propName, value) + if ~isprop(obj.App, propName) + return; + end + obj.App.(propName).Value = splitlines(string(obj.valueToExpression(value))); + end + + function value = getTextAreaExpr(obj, propName, fallback) + if ~isprop(obj.App, propName) + value = fallback; + return; + end + textValue = strtrim(strjoin(string(obj.App.(propName).Value), newline)); + if textValue == "" + value = fallback; + return; + end + try + value = eval(char(textValue)); %#ok + catch ME + error('EDFMAppController:ParseError', ... + 'Failed to parse %s. MATLAB expression expected. %s', propName, ME.message); + end + end + + function setTableValue(obj, propName, value) + if ~isprop(obj.App, propName) + return; + end + if isempty(value) + obj.App.(propName).Data = {}; + elseif isnumeric(value) + obj.App.(propName).Data = num2cell(value); + else + obj.App.(propName).Data = value; + end + end + + function value = getTableValue(obj, propName, fallback) + if ~isprop(obj.App, propName) + value = fallback; + return; + end + data = obj.App.(propName).Data; + if isempty(data) + value = fallback; + else + value = data; + end + end + + function setEditableState(obj, propName, isEnabled) + if ~isprop(obj.App, propName) + return; + end + component = obj.App.(propName); + if isprop(component, 'Editable') + component.Editable = matlab.lang.OnOffSwitchState(isEnabled); + end + if isprop(component, 'Enable') + if isEnabled + component.Enable = 'on'; + else + component.Enable = 'off'; + end + end + end + + function value = firstScalar(~, rawValue) + if isempty(rawValue) + value = 0; + elseif isscalar(rawValue) + value = rawValue; + else + value = rawValue(1); + end + end + + function textValue = valueToShortText(~, rawValue) + if isempty(rawValue) + textValue = '-'; + elseif isscalar(rawValue) + textValue = num2str(rawValue); + else + textValue = sprintf('[%s]', strjoin(string(size(rawValue)), 'x')); + end + end + + function textValue = valueToExpression(obj, value) + if isempty(value) + textValue = '[]'; + return; + end + if isnumeric(value) || islogical(value) + textValue = mat2str(value); + return; + end + if ischar(value) + textValue = ['''', strrep(value, '''', ''''''), '''']; + return; + end + if isstring(value) && isscalar(value) + textValue = ['''', strrep(char(value), '''', ''''''), '''']; + return; + end + if iscell(value) + rows = cell(size(value, 1), 1); + for i = 1:size(value, 1) + cols = cell(1, size(value, 2)); + for j = 1:size(value, 2) + cols{j} = obj.valueToExpression(value{i, j}); + end + rows{i} = strjoin(cols, ', '); + end + textValue = ['{', strjoin(rows, [';', newline]), '}']; + return; + end + textValue = strtrim(evalc('disp(value)')); + end + end +end diff --git a/gui_support/app/EDFM_Simulator_App.mlapp b/gui_support/app/EDFM_Simulator_App.mlapp index cbb9179..45cc869 100644 Binary files a/gui_support/app/EDFM_Simulator_App.mlapp and b/gui_support/app/EDFM_Simulator_App.mlapp differ diff --git a/gui_support/app/edfm_simulator_app.txt b/gui_support/app/edfm_simulator_app.txt new file mode 100644 index 0000000..5c03267 --- /dev/null +++ b/gui_support/app/edfm_simulator_app.txt @@ -0,0 +1,2180 @@ +classdef EDFM_Simulator_App < matlab.apps.AppBase + + % Properties that correspond to app components + properties (Access = public) + UIFigure matlab.ui.Figure + NewConfigButton matlab.ui.control.Button + TabGroup matlab.ui.container.TabGroup + ModelTab matlab.ui.container.Tab + ModelFlowModelDropDown matlab.ui.control.DropDown + FlowModelDropDownLabel matlab.ui.control.Label + ModelGridModelDropDown matlab.ui.control.DropDown + GridModelDropDownLabel matlab.ui.control.Label + ModelFlagDropDown matlab.ui.control.DropDown + ModelFlagDropDownLabel matlab.ui.control.Label + GridTab matlab.ui.container.Tab + GridNTGTextArea matlab.ui.control.TextArea + NTGTextAreaLabel matlab.ui.control.Label + GridDzTextArea matlab.ui.control.TextArea + DzTextAreaLabel matlab.ui.control.Label + GridDyTextArea matlab.ui.control.TextArea + DyTextAreaLabel matlab.ui.control.Label + GridDxTextArea matlab.ui.control.TextArea + DxTextAreaLabel matlab.ui.control.Label + FractureTab matlab.ui.container.Tab + FractureFlowBarrierFlagsTextArea matlab.ui.control.TextArea + FlowBarrierFlagsTextAreaLabel matlab.ui.control.Label + FractureHeightsTextArea matlab.ui.control.TextArea + FractureHeightsTextAreaLabel matlab.ui.control.Label + FractureLinesTextArea matlab.ui.control.TextArea + FractureLinesTextAreaLabel matlab.ui.control.Label + FractureInputTextArea matlab.ui.control.TextArea + FractureInputTextAreaLabel matlab.ui.control.Label + FractureInputStyleDropDown matlab.ui.control.DropDown + FractureInputStyleDropDownLabel matlab.ui.control.Label + DiscretizationTab matlab.ui.container.Tab + TabGroup3 matlab.ui.container.TabGroup + SPTab matlab.ui.container.Tab + SPcaEditField matlab.ui.control.NumericEditField + caEditFieldLabel matlab.ui.control.Label + SPcfEditField matlab.ui.control.NumericEditField + cfEditFieldLabel matlab.ui.control.Label + SPRptEditField matlab.ui.control.NumericEditField + RptEditFieldLabel matlab.ui.control.Label + SPStressRefPressureEditField matlab.ui.control.NumericEditField + StressRefPressureEditFieldLabel matlab.ui.control.Label + SPStressMatrixEditField matlab.ui.control.NumericEditField + StressMatrixEditFieldLabel matlab.ui.control.Label + SPStressFractureEditField matlab.ui.control.NumericEditField + StressFractureEditFieldLabel matlab.ui.control.Label + SPFracturePrporEditField matlab.ui.control.NumericEditField + FracturePrporEditFieldLabel matlab.ui.control.Label + SPFractureCporfEditField matlab.ui.control.NumericEditField + FractureCporfEditFieldLabel matlab.ui.control.Label + SPFracturePorfTextArea matlab.ui.control.TextArea + FracturePorfTextAreaLabel matlab.ui.control.Label + SPFractureWfTextArea matlab.ui.control.TextArea + FractureWfTextAreaLabel matlab.ui.control.Label + SPFractureKfTextArea matlab.ui.control.TextArea + FractureKfTextAreaLabel matlab.ui.control.Label + SPRockDensityEditField matlab.ui.control.NumericEditField + RockDensityEditFieldLabel matlab.ui.control.Label + SPMatrixCporEditField matlab.ui.control.NumericEditField + MatrixCporEditFieldLabel matlab.ui.control.Label + SPMatrixPrporEditField matlab.ui.control.NumericEditField + MatrixPrporEditFieldLabel matlab.ui.control.Label + SPMatrixPoriTextArea matlab.ui.control.TextArea + MatrixPoriTextAreaLabel matlab.ui.control.Label + SPMatrixKzTextArea matlab.ui.control.TextArea + MatrixKzTextAreaLabel matlab.ui.control.Label + SPMatrixKyTextArea matlab.ui.control.TextArea + MatrixKyTextAreaLabel matlab.ui.control.Label + SPMatrixKxTextArea matlab.ui.control.TextArea + MatrixKxTextAreaLabel matlab.ui.control.Label + SPInvalidLayerTextArea matlab.ui.control.TextArea + InvalidLayerTextAreaLabel matlab.ui.control.Label + SPBoundaryTextArea matlab.ui.control.TextArea + BoundaryTextAreaLabel matlab.ui.control.Label + DPTab matlab.ui.container.Tab + DPcaEditField matlab.ui.control.NumericEditField + caEditFieldLabel_2 matlab.ui.control.Label + DPcffEditField matlab.ui.control.NumericEditField + cffEditFieldLabel matlab.ui.control.Label + DPRptEditField matlab.ui.control.NumericEditField + RptEditFieldLabel_2 matlab.ui.control.Label + DPstress_factor_ref_pressureEditField matlab.ui.control.NumericEditField + stress_factor_ref_pressureEditFieldLabel matlab.ui.control.Label + DPstress_factor_matrixEditField matlab.ui.control.NumericEditField + stress_factor_matrixEditFieldLabel matlab.ui.control.Label + DPstress_factor_fractureEditField matlab.ui.control.NumericEditField + stress_factor_fractureEditFieldLabel matlab.ui.control.Label + DPcporfEditField matlab.ui.control.NumericEditField + cporfEditFieldLabel matlab.ui.control.Label + DPprporfEditField matlab.ui.control.NumericEditField + prporfEditFieldLabel matlab.ui.control.Label + DPPorfTextArea matlab.ui.control.TextArea + PorfTextAreaLabel matlab.ui.control.Label + DPWfTextArea matlab.ui.control.TextArea + WfTextAreaLabel matlab.ui.control.Label + DPKfTextArea matlab.ui.control.TextArea + KfTextAreaLabel matlab.ui.control.Label + DPcporEditField matlab.ui.control.NumericEditField + cporLabel matlab.ui.control.Label + DPprporEditField matlab.ui.control.NumericEditField + prporEditFieldLabel matlab.ui.control.Label + DPNTGTextArea matlab.ui.control.TextArea + NTGTextArea_2Label matlab.ui.control.Label + DPsigmaTextArea matlab.ui.control.TextArea + sigmaTextAreaLabel matlab.ui.control.Label + DPpori_matrixLayerTextArea matlab.ui.control.TextArea + pori_matrixLayerTextAreaLabel matlab.ui.control.Label + DPkz_matrixLayerTextArea matlab.ui.control.TextArea + kz_matrixLayerTextAreaLabel matlab.ui.control.Label + DPky_matrixLayerTextArea matlab.ui.control.TextArea + ky_matrixLayerTextAreaLabel matlab.ui.control.Label + DPkx_matrixLayerTextArea matlab.ui.control.TextArea + kx_matrixLayerTextAreaLabel matlab.ui.control.Label + DPkzTextArea matlab.ui.control.TextArea + kzTextAreaLabel matlab.ui.control.Label + DPkyTextArea matlab.ui.control.TextArea + kyTextAreaLabel matlab.ui.control.Label + DPkxTextArea matlab.ui.control.TextArea + kxTextAreaLabel matlab.ui.control.Label + FlowTab matlab.ui.container.Tab + InitialCbEditField matlab.ui.control.NumericEditField + InitialCbEditFieldLabel matlab.ui.control.Label + InitialCsEditField matlab.ui.control.NumericEditField + InitialCsEditFieldLabel matlab.ui.control.Label + InitialSwEditField matlab.ui.control.NumericEditField + InitialSwEditFieldLabel matlab.ui.control.Label + InitialPressureEditField matlab.ui.control.NumericEditField + InitialPressureEditFieldLabel matlab.ui.control.Label + InitStatusLabel matlab.ui.control.Label + TabGroup2 matlab.ui.container.TabGroup + GasWaterTab matlab.ui.container.Tab + GWPRFTextArea matlab.ui.control.TextArea + PRFTextAreaLabel matlab.ui.control.Label + GWRPGWTextArea matlab.ui.control.TextArea + RPGWTextAreaLabel matlab.ui.control.Label + GWifpcglEditField matlab.ui.control.NumericEditField + ifpcglEditFieldLabel matlab.ui.control.Label + GWcvwEditField matlab.ui.control.NumericEditField + cvwEditFieldLabel matlab.ui.control.Label + GWvwiEditField matlab.ui.control.NumericEditField + vwiEditFieldLabel matlab.ui.control.Label + GWcwEditField matlab.ui.control.NumericEditField + cwEditFieldLabel matlab.ui.control.Label + GWBwiEditField matlab.ui.control.NumericEditField + BwiEditFieldLabel matlab.ui.control.Label + GWprwEditField matlab.ui.control.NumericEditField + prwEditFieldLabel matlab.ui.control.Label + GWMUGTextArea matlab.ui.control.TextArea + MUGTextAreaLabel matlab.ui.control.Label + GWBGTextArea matlab.ui.control.TextArea + BGTextAreaLabel matlab.ui.control.Label + GWPprTextArea matlab.ui.control.TextArea + PprTextAreaLabel matlab.ui.control.Label + GWcvgEditField matlab.ui.control.NumericEditField + cvgEditFieldLabel matlab.ui.control.Label + GWvgiEditField matlab.ui.control.NumericEditField + vgiEditFieldLabel matlab.ui.control.Label + GWcgEditField matlab.ui.control.NumericEditField + cgEditFieldLabel matlab.ui.control.Label + GWBgiEditField matlab.ui.control.NumericEditField + BgiEditFieldLabel matlab.ui.control.Label + GWprgEditField matlab.ui.control.NumericEditField + prgEditFieldLabel matlab.ui.control.Label + GWgas_modelDropDown matlab.ui.control.DropDown + gas_modelDropDownLabel matlab.ui.control.Label + GWdensity_w_scEditField matlab.ui.control.NumericEditField + density_w_scEditFieldLabel matlab.ui.control.Label + GWdensity_g_scEditField matlab.ui.control.NumericEditField + density_g_scEditFieldLabel matlab.ui.control.Label + GWp_grad_thresholdEditField matlab.ui.control.NumericEditField + p_grad_thresholdEditFieldLabel matlab.ui.control.Label + GWbeta_non_darcy_flowEditField matlab.ui.control.NumericEditField + beta_non_darcy_flowEditFieldLabel matlab.ui.control.Label + GWgas_propKnEditField matlab.ui.control.NumericEditField + gas_propKnEditFieldLabel matlab.ui.control.Label + GWgas_propPLEditField matlab.ui.control.NumericEditField + gas_propPLEditFieldLabel matlab.ui.control.Label + GWgas_propVLEditField matlab.ui.control.NumericEditField + gas_propVLEditFieldLabel matlab.ui.control.Label + OilWaterTab matlab.ui.container.Tab + OWp_grad_thresholdEditField matlab.ui.control.NumericEditField + p_grad_thresholdEditFieldLabel_2 matlab.ui.control.Label + OWbeta_non_Darcy_flowEditField matlab.ui.control.NumericEditField + beta_non_Darcy_flowEditFieldLabel matlab.ui.control.Label + OWPRFTextArea matlab.ui.control.TextArea + PRFTextAreaLabel_2 matlab.ui.control.Label + OWPRMTextArea matlab.ui.control.TextArea + PRMTextAreaLabel matlab.ui.control.Label + OWifpcowEditField matlab.ui.control.NumericEditField + ifpcowEditFieldLabel matlab.ui.control.Label + OWcvwEditField matlab.ui.control.NumericEditField + cvwEditFieldLabel_2 matlab.ui.control.Label + OWvwiEditField matlab.ui.control.NumericEditField + vwiEditFieldLabel_2 matlab.ui.control.Label + OWcwEditField matlab.ui.control.NumericEditField + cwEditFieldLabel_2 matlab.ui.control.Label + OWBwiEditField matlab.ui.control.NumericEditField + BwiEditFieldLabel_2 matlab.ui.control.Label + OWprwEditField matlab.ui.control.NumericEditField + prwEditFieldLabel_2 matlab.ui.control.Label + OWMUOTextArea matlab.ui.control.TextArea + MUOTextAreaLabel matlab.ui.control.Label + OWBOTextArea matlab.ui.control.TextArea + BOTextAreaLabel matlab.ui.control.Label + OWPprTextArea matlab.ui.control.TextArea + PprTextAreaLabel_2 matlab.ui.control.Label + OWcvoEditField matlab.ui.control.NumericEditField + cvoEditFieldLabel matlab.ui.control.Label + OWvoiEditField matlab.ui.control.NumericEditField + voiEditFieldLabel matlab.ui.control.Label + OWcoEditField matlab.ui.control.NumericEditField + coEditFieldLabel matlab.ui.control.Label + OWBoiEditField matlab.ui.control.NumericEditField + BoiEditFieldLabel matlab.ui.control.Label + OWproEditField matlab.ui.control.NumericEditField + proEditFieldLabel matlab.ui.control.Label + OWoil_modelDropDown matlab.ui.control.DropDown + oil_modelDropDownLabel matlab.ui.control.Label + OWdensity_w_scEditField matlab.ui.control.NumericEditField + density_w_scEditFieldLabel_2 matlab.ui.control.Label + OWdensity_o_scEditField matlab.ui.control.NumericEditField + density_o_scEditFieldLabel matlab.ui.control.Label + MultiComponentTab matlab.ui.container.Tab + MCcvwEditField matlab.ui.control.NumericEditField + cvwEditFieldLabel_3 matlab.ui.control.Label + MCvwiEditField matlab.ui.control.NumericEditField + vwiEditFieldLabel_3 matlab.ui.control.Label + MCcwEditField matlab.ui.control.NumericEditField + cwEditFieldLabel_3 matlab.ui.control.Label + MCBwiEditField matlab.ui.control.NumericEditField + BwiEditFieldLabel_3 matlab.ui.control.Label + MCprwEditField matlab.ui.control.NumericEditField + prwEditFieldLabel_3 matlab.ui.control.Label + MCdensity_w_scEditField matlab.ui.control.NumericEditField + density_w_scEditFieldLabel_3 matlab.ui.control.Label + MCMUGTextArea matlab.ui.control.TextArea + MUGTextAreaLabel_2 matlab.ui.control.Label + MCBGTextArea matlab.ui.control.TextArea + BGTextAreaLabel_2 matlab.ui.control.Label + MCPprTextArea matlab.ui.control.TextArea + PprTextAreaLabel_3 matlab.ui.control.Label + MCcvgEditField matlab.ui.control.NumericEditField + cvgEditFieldLabel_2 matlab.ui.control.Label + MCvgiEditField matlab.ui.control.NumericEditField + vgiEditFieldLabel_2 matlab.ui.control.Label + MCcgEditField matlab.ui.control.NumericEditField + cgEditFieldLabel_2 matlab.ui.control.Label + MCBgiEditField matlab.ui.control.NumericEditField + BgiEditFieldLabel_2 matlab.ui.control.Label + MCprgEditField matlab.ui.control.NumericEditField + prgEditFieldLabel_2 matlab.ui.control.Label + MCgas_modelDropDown matlab.ui.control.DropDown + gas_modelDropDownLabel_2 matlab.ui.control.Label + MCdensity_g_scEditField matlab.ui.control.NumericEditField + density_g_scEditFieldLabel_2 matlab.ui.control.Label + MCbeta_non_darcy_flowEditField matlab.ui.control.NumericEditField + beta_non_darcy_flowEditFieldLabel_2 matlab.ui.control.Label + MCstress_factor_ref_pressureEditField matlab.ui.control.NumericEditField + stress_factor_ref_pressureEditFieldLabel_2 matlab.ui.control.Label + MCstress_factor_matrixEditField matlab.ui.control.NumericEditField + stress_factor_matrixEditFieldLabel_2 matlab.ui.control.Label + MCstress_factor_fractureEditField matlab.ui.control.NumericEditField + stress_factor_fractureEditFieldLabel_2 matlab.ui.control.Label + MCgas_propKnEditField matlab.ui.control.NumericEditField + gas_propKnEditFieldLabel_2 matlab.ui.control.Label + MCgas_propPLEditField matlab.ui.control.NumericEditField + gas_propPLEditFieldLabel_2 matlab.ui.control.Label + MCgas_propVLEditField matlab.ui.control.NumericEditField + gas_propVLEditFieldLabel_2 matlab.ui.control.Label + MCp_grad_thresholdEditField matlab.ui.control.NumericEditField + p_grad_thresholdEditFieldLabel_3 matlab.ui.control.Label + MCifpcglEditField matlab.ui.control.NumericEditField + ifpcglEditFieldLabel_2 matlab.ui.control.Label + MCPC_fractureTextArea matlab.ui.control.TextArea + PC_fractureTextAreaLabel matlab.ui.control.Label + MCkr_surf_fractureTextArea matlab.ui.control.TextArea + kr_surf_fractureTextAreaLabel matlab.ui.control.Label + MCkr_nosurf_fractureTextArea matlab.ui.control.TextArea + kr_nosurf_fractureTextAreaLabel matlab.ui.control.Label + MCcs_Nc_fractureTextArea matlab.ui.control.TextArea + cs_Nc_fractureTextAreaLabel matlab.ui.control.Label + MCPCTextArea matlab.ui.control.TextArea + PCTextAreaLabel matlab.ui.control.Label + MCkr_surfTextArea matlab.ui.control.TextArea + kr_surfTextAreaLabel matlab.ui.control.Label + MCkr_nosurfTextArea matlab.ui.control.TextArea + kr_nosurfTextAreaLabel matlab.ui.control.Label + MCcs_NcTextArea matlab.ui.control.TextArea + cs_NcTextAreaLabel matlab.ui.control.Label + MCTemperatureEditField matlab.ui.control.NumericEditField + TemperatureEditFieldLabel matlab.ui.control.Label + MCVmEditField matlab.ui.control.NumericEditField + VmEditFieldLabel matlab.ui.control.Label + MCREditField matlab.ui.control.NumericEditField + REditFieldLabel matlab.ui.control.Label + MCc_ca_tableTextArea matlab.ui.control.TextArea + c_ca_tableTextAreaLabel matlab.ui.control.Label + MCDbEditField matlab.ui.control.NumericEditField + DbEditFieldLabel matlab.ui.control.Label + MCDsEditField matlab.ui.control.NumericEditField + DsEditFieldLabel matlab.ui.control.Label + WellsTab matlab.ui.container.Tab + DtMaxTextArea matlab.ui.control.TextArea + DtMaxTextAreaLabel matlab.ui.control.Label + DtMinTextArea matlab.ui.control.TextArea + DtMinTextAreaLabel matlab.ui.control.Label + TimeTextArea matlab.ui.control.TextArea + TimeTextAreaLabel matlab.ui.control.Label + ScheduleTable matlab.ui.control.Table + Well2Table matlab.ui.control.Table + FractureWellLocationTable matlab.ui.control.Table + Well1Table matlab.ui.control.Table + SoloverTab matlab.ui.container.Tab + EpsMaxEditField matlab.ui.control.NumericEditField + EpsMaxEditFieldLabel matlab.ui.control.Label + EpsAveEditField matlab.ui.control.NumericEditField + EpsAveEditFieldLabel matlab.ui.control.Label + NmaxEditField matlab.ui.control.NumericEditField + NmaxEditFieldLabel matlab.ui.control.Label + OmegaEditField matlab.ui.control.NumericEditField + OmegaEditFieldLabel matlab.ui.control.Label + YitaSEditField matlab.ui.control.NumericEditField + YitaSEditFieldLabel matlab.ui.control.Label + YitaPEditField matlab.ui.control.NumericEditField + YitaPEditFieldLabel matlab.ui.control.Label + RunTab matlab.ui.container.Tab + RunProgressLabel matlab.ui.control.Label + RunLogTextArea matlab.ui.control.TextArea + RunLogTextAreaLabel matlab.ui.control.Label + RunCurrentConfigButton matlab.ui.control.Button + ResultsTab matlab.ui.container.Tab + ResultTab matlab.ui.control.Table + PlotResultButton matlab.ui.control.Button + ResultTypeDropDown matlab.ui.control.DropDown + ResultTypeDropDownLabel matlab.ui.control.Label + ResultSummaryTextArea matlab.ui.control.TextArea + ResultSummaryTextAreaLabel matlab.ui.control.Label + ResultAxes matlab.ui.control.UIAxes + StatusLabel matlab.ui.control.Label + ExportResultButton matlab.ui.control.Button + ImportResultButton matlab.ui.control.Button + RunButton matlab.ui.control.Button + ExportConfigButton matlab.ui.control.Button + ImportConfigButton matlab.ui.control.Button + LoadTemplateButton matlab.ui.control.Button + TemplateDropDown matlab.ui.control.DropDown + end + + properties (Access = private) + Controller EDFMAppController + end + + % Component initialization + methods (Access = private) + + % Create UIFigure and components + function createComponents(app) + + % Create UIFigure and hide until all components are created + app.UIFigure = uifigure('Visible', 'off'); + app.UIFigure.Position = [100 100 1275 807]; + app.UIFigure.Name = 'MATLAB App'; + + % Create TemplateDropDown + app.TemplateDropDown = uidropdown(app.UIFigure); + app.TemplateDropDown.Items = {'', ''}; + app.TemplateDropDown.Position = [18 774 120 22]; + app.TemplateDropDown.Value = ''; + + % Create LoadTemplateButton + app.LoadTemplateButton = uibutton(app.UIFigure, 'push'); + app.LoadTemplateButton.Position = [177 774 94 23]; + app.LoadTemplateButton.Text = 'Load Template'; + + % Create ImportConfigButton + app.ImportConfigButton = uibutton(app.UIFigure, 'push'); + app.ImportConfigButton.Position = [399 774 87 23]; + app.ImportConfigButton.Text = 'Import Config'; + + % Create ExportConfigButton + app.ExportConfigButton = uibutton(app.UIFigure, 'push'); + app.ExportConfigButton.Position = [532 774 88 23]; + app.ExportConfigButton.Text = 'Export Config'; + + % Create RunButton + app.RunButton = uibutton(app.UIFigure, 'push'); + app.RunButton.Position = [648 774 70 23]; + app.RunButton.Text = 'Run'; + + % Create ImportResultButton + app.ImportResultButton = uibutton(app.UIFigure, 'push'); + app.ImportResultButton.Position = [761 774 86 23]; + app.ImportResultButton.Text = 'Import Result'; + + % Create ExportResultButton + app.ExportResultButton = uibutton(app.UIFigure, 'push'); + app.ExportResultButton.Position = [883 774 87 23]; + app.ExportResultButton.Text = 'Export Result'; + + % Create StatusLabel + app.StatusLabel = uilabel(app.UIFigure); + app.StatusLabel.Position = [1196 774 39 22]; + app.StatusLabel.Text = 'Status'; + + % Create TabGroup + app.TabGroup = uitabgroup(app.UIFigure); + app.TabGroup.Position = [8 46 1247 706]; + + % Create ModelTab + app.ModelTab = uitab(app.TabGroup); + app.ModelTab.Title = 'Model'; + + % Create ModelFlagDropDownLabel + app.ModelFlagDropDownLabel = uilabel(app.ModelTab); + app.ModelFlagDropDownLabel.HorizontalAlignment = 'right'; + app.ModelFlagDropDownLabel.Position = [30 609 61 22]; + app.ModelFlagDropDownLabel.Text = 'ModelFlag'; + + % Create ModelFlagDropDown + app.ModelFlagDropDown = uidropdown(app.ModelTab); + app.ModelFlagDropDown.Items = {'1', '', '', ''}; + app.ModelFlagDropDown.Position = [106 609 100 22]; + app.ModelFlagDropDown.Value = ''; + + % Create GridModelDropDownLabel + app.GridModelDropDownLabel = uilabel(app.ModelTab); + app.GridModelDropDownLabel.HorizontalAlignment = 'right'; + app.GridModelDropDownLabel.Position = [31 558 60 22]; + app.GridModelDropDownLabel.Text = 'GridModel'; + + % Create ModelGridModelDropDown + app.ModelGridModelDropDown = uidropdown(app.ModelTab); + app.ModelGridModelDropDown.Items = {'1', '2', '', ''}; + app.ModelGridModelDropDown.Position = [106 558 100 22]; + app.ModelGridModelDropDown.Value = ''; + + % Create FlowModelDropDownLabel + app.FlowModelDropDownLabel = uilabel(app.ModelTab); + app.FlowModelDropDownLabel.HorizontalAlignment = 'right'; + app.FlowModelDropDownLabel.Position = [31 507 63 22]; + app.FlowModelDropDownLabel.Text = 'FlowModel'; + + % Create ModelFlowModelDropDown + app.ModelFlowModelDropDown = uidropdown(app.ModelTab); + app.ModelFlowModelDropDown.Items = {'1', '2', '3'}; + app.ModelFlowModelDropDown.Position = [109 507 100 22]; + app.ModelFlowModelDropDown.Value = '1'; + + % Create GridTab + app.GridTab = uitab(app.TabGroup); + app.GridTab.Title = 'Grid'; + + % Create DxTextAreaLabel + app.DxTextAreaLabel = uilabel(app.GridTab); + app.DxTextAreaLabel.HorizontalAlignment = 'right'; + app.DxTextAreaLabel.Position = [49 643 25 22]; + app.DxTextAreaLabel.Text = 'Dx'; + + % Create GridDxTextArea + app.GridDxTextArea = uitextarea(app.GridTab); + app.GridDxTextArea.Position = [89 607 263 60]; + + % Create DyTextAreaLabel + app.DyTextAreaLabel = uilabel(app.GridTab); + app.DyTextAreaLabel.HorizontalAlignment = 'right'; + app.DyTextAreaLabel.Position = [49 543 25 22]; + app.DyTextAreaLabel.Text = 'Dy'; + + % Create GridDyTextArea + app.GridDyTextArea = uitextarea(app.GridTab); + app.GridDyTextArea.Position = [89 507 263 60]; + + % Create DzTextAreaLabel + app.DzTextAreaLabel = uilabel(app.GridTab); + app.DzTextAreaLabel.HorizontalAlignment = 'right'; + app.DzTextAreaLabel.Position = [49 449 25 22]; + app.DzTextAreaLabel.Text = 'Dz'; + + % Create GridDzTextArea + app.GridDzTextArea = uitextarea(app.GridTab); + app.GridDzTextArea.Position = [89 401 263 72]; + + % Create NTGTextAreaLabel + app.NTGTextAreaLabel = uilabel(app.GridTab); + app.NTGTextAreaLabel.HorizontalAlignment = 'right'; + app.NTGTextAreaLabel.Position = [49 347 30 22]; + app.NTGTextAreaLabel.Text = 'NTG'; + + % Create GridNTGTextArea + app.GridNTGTextArea = uitextarea(app.GridTab); + app.GridNTGTextArea.Position = [94 311 267 60]; + + % Create FractureTab + app.FractureTab = uitab(app.TabGroup); + app.FractureTab.Title = 'Fracture'; + + % Create FractureInputStyleDropDownLabel + app.FractureInputStyleDropDownLabel = uilabel(app.FractureTab); + app.FractureInputStyleDropDownLabel.HorizontalAlignment = 'right'; + app.FractureInputStyleDropDownLabel.Position = [57 622 103 22]; + app.FractureInputStyleDropDownLabel.Text = 'FractureInputStyle'; + + % Create FractureInputStyleDropDown + app.FractureInputStyleDropDown = uidropdown(app.FractureTab); + app.FractureInputStyleDropDown.Items = {''}; + app.FractureInputStyleDropDown.Position = [175 622 147 22]; + app.FractureInputStyleDropDown.Value = ''; + + % Create FractureInputTextAreaLabel + app.FractureInputTextAreaLabel = uilabel(app.FractureTab); + app.FractureInputTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureInputTextAreaLabel.Position = [74 560 76 22]; + app.FractureInputTextAreaLabel.Text = 'FractureInput'; + + % Create FractureInputTextArea + app.FractureInputTextArea = uitextarea(app.FractureTab); + app.FractureInputTextArea.Position = [165 524 150 60]; + + % Create FractureLinesTextAreaLabel + app.FractureLinesTextAreaLabel = uilabel(app.FractureTab); + app.FractureLinesTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureLinesTextAreaLabel.Position = [72 466 78 22]; + app.FractureLinesTextAreaLabel.Text = 'FractureLines'; + + % Create FractureLinesTextArea + app.FractureLinesTextArea = uitextarea(app.FractureTab); + app.FractureLinesTextArea.Position = [165 430 150 60]; + + % Create FractureHeightsTextAreaLabel + app.FractureHeightsTextAreaLabel = uilabel(app.FractureTab); + app.FractureHeightsTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureHeightsTextAreaLabel.Position = [54 378 90 22]; + app.FractureHeightsTextAreaLabel.Text = 'FractureHeights'; + + % Create FractureHeightsTextArea + app.FractureHeightsTextArea = uitextarea(app.FractureTab); + app.FractureHeightsTextArea.Position = [159 342 150 60]; + + % Create FlowBarrierFlagsTextAreaLabel + app.FlowBarrierFlagsTextAreaLabel = uilabel(app.FractureTab); + app.FlowBarrierFlagsTextAreaLabel.HorizontalAlignment = 'right'; + app.FlowBarrierFlagsTextAreaLabel.Position = [48 278 96 22]; + app.FlowBarrierFlagsTextAreaLabel.Text = 'FlowBarrierFlags'; + + % Create FractureFlowBarrierFlagsTextArea + app.FractureFlowBarrierFlagsTextArea = uitextarea(app.FractureTab); + app.FractureFlowBarrierFlagsTextArea.Position = [159 242 150 60]; + + % Create DiscretizationTab + app.DiscretizationTab = uitab(app.TabGroup); + app.DiscretizationTab.Title = 'Discretization'; + + % Create TabGroup3 + app.TabGroup3 = uitabgroup(app.DiscretizationTab); + app.TabGroup3.Position = [48 37 1156 623]; + + % Create SPTab + app.SPTab = uitab(app.TabGroup3); + app.SPTab.Title = 'SP'; + + % Create BoundaryTextAreaLabel + app.BoundaryTextAreaLabel = uilabel(app.SPTab); + app.BoundaryTextAreaLabel.HorizontalAlignment = 'right'; + app.BoundaryTextAreaLabel.Position = [12 541 56 22]; + app.BoundaryTextAreaLabel.Text = 'Boundary'; + + % Create SPBoundaryTextArea + app.SPBoundaryTextArea = uitextarea(app.SPTab); + app.SPBoundaryTextArea.Position = [83 505 150 60]; + + % Create InvalidLayerTextAreaLabel + app.InvalidLayerTextAreaLabel = uilabel(app.SPTab); + app.InvalidLayerTextAreaLabel.HorizontalAlignment = 'right'; + app.InvalidLayerTextAreaLabel.Position = [12 458 70 22]; + app.InvalidLayerTextAreaLabel.Text = 'InvalidLayer'; + + % Create SPInvalidLayerTextArea + app.SPInvalidLayerTextArea = uitextarea(app.SPTab); + app.SPInvalidLayerTextArea.Position = [97 422 150 60]; + + % Create MatrixKxTextAreaLabel + app.MatrixKxTextAreaLabel = uilabel(app.SPTab); + app.MatrixKxTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixKxTextAreaLabel.Position = [266 401 52 22]; + app.MatrixKxTextAreaLabel.Text = 'MatrixKx'; + + % Create SPMatrixKxTextArea + app.SPMatrixKxTextArea = uitextarea(app.SPTab); + app.SPMatrixKxTextArea.Position = [333 365 150 60]; + + % Create MatrixKyTextAreaLabel + app.MatrixKyTextAreaLabel = uilabel(app.SPTab); + app.MatrixKyTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixKyTextAreaLabel.Position = [263 323 52 22]; + app.MatrixKyTextAreaLabel.Text = 'MatrixKy'; + + % Create SPMatrixKyTextArea + app.SPMatrixKyTextArea = uitextarea(app.SPTab); + app.SPMatrixKyTextArea.Position = [330 287 150 60]; + + % Create MatrixKzTextAreaLabel + app.MatrixKzTextAreaLabel = uilabel(app.SPTab); + app.MatrixKzTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixKzTextAreaLabel.Position = [260 228 52 22]; + app.MatrixKzTextAreaLabel.Text = 'MatrixKz'; + + % Create SPMatrixKzTextArea + app.SPMatrixKzTextArea = uitextarea(app.SPTab); + app.SPMatrixKzTextArea.Position = [327 192 150 60]; + + % Create MatrixPoriTextAreaLabel + app.MatrixPoriTextAreaLabel = uilabel(app.SPTab); + app.MatrixPoriTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixPoriTextAreaLabel.Position = [256 128 59 22]; + app.MatrixPoriTextAreaLabel.Text = 'MatrixPori'; + + % Create SPMatrixPoriTextArea + app.SPMatrixPoriTextArea = uitextarea(app.SPTab); + app.SPMatrixPoriTextArea.Position = [330 92 150 60]; + + % Create MatrixPrporEditFieldLabel + app.MatrixPrporEditFieldLabel = uilabel(app.SPTab); + app.MatrixPrporEditFieldLabel.HorizontalAlignment = 'right'; + app.MatrixPrporEditFieldLabel.Position = [289 543 67 22]; + app.MatrixPrporEditFieldLabel.Text = 'MatrixPrpor'; + + % Create SPMatrixPrporEditField + app.SPMatrixPrporEditField = uieditfield(app.SPTab, 'numeric'); + app.SPMatrixPrporEditField.Position = [371 543 100 22]; + + % Create MatrixCporEditFieldLabel + app.MatrixCporEditFieldLabel = uilabel(app.SPTab); + app.MatrixCporEditFieldLabel.HorizontalAlignment = 'right'; + app.MatrixCporEditFieldLabel.Position = [292 479 64 22]; + app.MatrixCporEditFieldLabel.Text = 'MatrixCpor'; + + % Create SPMatrixCporEditField + app.SPMatrixCporEditField = uieditfield(app.SPTab, 'numeric'); + app.SPMatrixCporEditField.Position = [371 479 100 22]; + + % Create RockDensityEditFieldLabel + app.RockDensityEditFieldLabel = uilabel(app.SPTab); + app.RockDensityEditFieldLabel.HorizontalAlignment = 'right'; + app.RockDensityEditFieldLabel.Position = [24 360 72 22]; + app.RockDensityEditFieldLabel.Text = 'RockDensity'; + + % Create SPRockDensityEditField + app.SPRockDensityEditField = uieditfield(app.SPTab, 'numeric'); + app.SPRockDensityEditField.Position = [111 360 100 22]; + + % Create FractureKfTextAreaLabel + app.FractureKfTextAreaLabel = uilabel(app.SPTab); + app.FractureKfTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureKfTextAreaLabel.Position = [540 316 61 22]; + app.FractureKfTextAreaLabel.Text = 'FractureKf'; + + % Create SPFractureKfTextArea + app.SPFractureKfTextArea = uitextarea(app.SPTab); + app.SPFractureKfTextArea.Position = [616 280 150 60]; + + % Create FractureWfTextAreaLabel + app.FractureWfTextAreaLabel = uilabel(app.SPTab); + app.FractureWfTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureWfTextAreaLabel.Position = [530 226 64 22]; + app.FractureWfTextAreaLabel.Text = 'FractureWf'; + + % Create SPFractureWfTextArea + app.SPFractureWfTextArea = uitextarea(app.SPTab); + app.SPFractureWfTextArea.Position = [609 190 150 60]; + + % Create FracturePorfTextAreaLabel + app.FracturePorfTextAreaLabel = uilabel(app.SPTab); + app.FracturePorfTextAreaLabel.HorizontalAlignment = 'right'; + app.FracturePorfTextAreaLabel.Position = [522 131 72 22]; + app.FracturePorfTextAreaLabel.Text = 'FracturePorf'; + + % Create SPFracturePorfTextArea + app.SPFracturePorfTextArea = uitextarea(app.SPTab); + app.SPFracturePorfTextArea.Position = [609 95 150 60]; + + % Create FractureCporfEditFieldLabel + app.FractureCporfEditFieldLabel = uilabel(app.SPTab); + app.FractureCporfEditFieldLabel.HorizontalAlignment = 'right'; + app.FractureCporfEditFieldLabel.Position = [523 479 79 22]; + app.FractureCporfEditFieldLabel.Text = 'FractureCporf'; + + % Create SPFractureCporfEditField + app.SPFractureCporfEditField = uieditfield(app.SPTab, 'numeric'); + app.SPFractureCporfEditField.Position = [617 479 100 22]; + + % Create FracturePrporEditFieldLabel + app.FracturePrporEditFieldLabel = uilabel(app.SPTab); + app.FracturePrporEditFieldLabel.HorizontalAlignment = 'right'; + app.FracturePrporEditFieldLabel.Position = [516 422 79 22]; + app.FracturePrporEditFieldLabel.Text = 'FracturePrpor'; + + % Create SPFracturePrporEditField + app.SPFracturePrporEditField = uieditfield(app.SPTab, 'numeric'); + app.SPFracturePrporEditField.Position = [610 422 100 22]; + + % Create StressFractureEditFieldLabel + app.StressFractureEditFieldLabel = uilabel(app.SPTab); + app.StressFractureEditFieldLabel.HorizontalAlignment = 'right'; + app.StressFractureEditFieldLabel.Position = [849 541 84 22]; + app.StressFractureEditFieldLabel.Text = 'StressFracture'; + + % Create SPStressFractureEditField + app.SPStressFractureEditField = uieditfield(app.SPTab, 'numeric'); + app.SPStressFractureEditField.Position = [948 541 100 22]; + + % Create StressMatrixEditFieldLabel + app.StressMatrixEditFieldLabel = uilabel(app.SPTab); + app.StressMatrixEditFieldLabel.HorizontalAlignment = 'right'; + app.StressMatrixEditFieldLabel.Position = [855 500 72 22]; + app.StressMatrixEditFieldLabel.Text = 'StressMatrix'; + + % Create SPStressMatrixEditField + app.SPStressMatrixEditField = uieditfield(app.SPTab, 'numeric'); + app.SPStressMatrixEditField.Position = [942 500 100 22]; + + % Create StressRefPressureEditFieldLabel + app.StressRefPressureEditFieldLabel = uilabel(app.SPTab); + app.StressRefPressureEditFieldLabel.HorizontalAlignment = 'right'; + app.StressRefPressureEditFieldLabel.Position = [813 445 106 22]; + app.StressRefPressureEditFieldLabel.Text = 'StressRefPressure'; + + % Create SPStressRefPressureEditField + app.SPStressRefPressureEditField = uieditfield(app.SPTab, 'numeric'); + app.SPStressRefPressureEditField.Position = [934 445 100 22]; + + % Create RptEditFieldLabel + app.RptEditFieldLabel = uilabel(app.SPTab); + app.RptEditFieldLabel.HorizontalAlignment = 'right'; + app.RptEditFieldLabel.Position = [879 352 25 22]; + app.RptEditFieldLabel.Text = 'Rpt'; + + % Create SPRptEditField + app.SPRptEditField = uieditfield(app.SPTab, 'numeric'); + app.SPRptEditField.Position = [919 352 100 22]; + + % Create cfEditFieldLabel + app.cfEditFieldLabel = uilabel(app.SPTab); + app.cfEditFieldLabel.HorizontalAlignment = 'right'; + app.cfEditFieldLabel.Position = [894 302 25 22]; + app.cfEditFieldLabel.Text = 'cf'; + + % Create SPcfEditField + app.SPcfEditField = uieditfield(app.SPTab, 'numeric'); + app.SPcfEditField.Position = [934 302 100 22]; + + % Create caEditFieldLabel + app.caEditFieldLabel = uilabel(app.SPTab); + app.caEditFieldLabel.HorizontalAlignment = 'right'; + app.caEditFieldLabel.Position = [902 251 25 22]; + app.caEditFieldLabel.Text = 'ca'; + + % Create SPcaEditField + app.SPcaEditField = uieditfield(app.SPTab, 'numeric'); + app.SPcaEditField.Position = [942 251 100 22]; + + % Create DPTab + app.DPTab = uitab(app.TabGroup3); + app.DPTab.Title = 'DP'; + + % Create kxTextAreaLabel + app.kxTextAreaLabel = uilabel(app.DPTab); + app.kxTextAreaLabel.HorizontalAlignment = 'right'; + app.kxTextAreaLabel.Position = [66 558 25 22]; + app.kxTextAreaLabel.Text = 'kx'; + + % Create DPkxTextArea + app.DPkxTextArea = uitextarea(app.DPTab); + app.DPkxTextArea.Position = [106 522 150 60]; + + % Create kyTextAreaLabel + app.kyTextAreaLabel = uilabel(app.DPTab); + app.kyTextAreaLabel.HorizontalAlignment = 'right'; + app.kyTextAreaLabel.Position = [68 482 25 22]; + app.kyTextAreaLabel.Text = 'ky'; + + % Create DPkyTextArea + app.DPkyTextArea = uitextarea(app.DPTab); + app.DPkyTextArea.Position = [108 446 150 60]; + + % Create kzTextAreaLabel + app.kzTextAreaLabel = uilabel(app.DPTab); + app.kzTextAreaLabel.HorizontalAlignment = 'right'; + app.kzTextAreaLabel.Position = [76 400 25 22]; + app.kzTextAreaLabel.Text = 'kz'; + + % Create DPkzTextArea + app.DPkzTextArea = uitextarea(app.DPTab); + app.DPkzTextArea.Position = [116 364 150 60]; + + % Create kx_matrixLayerTextAreaLabel + app.kx_matrixLayerTextAreaLabel = uilabel(app.DPTab); + app.kx_matrixLayerTextAreaLabel.HorizontalAlignment = 'right'; + app.kx_matrixLayerTextAreaLabel.Position = [32 314 86 22]; + app.kx_matrixLayerTextAreaLabel.Text = 'kx_matrixLayer'; + + % Create DPkx_matrixLayerTextArea + app.DPkx_matrixLayerTextArea = uitextarea(app.DPTab); + app.DPkx_matrixLayerTextArea.Position = [133 278 150 60]; + + % Create ky_matrixLayerTextAreaLabel + app.ky_matrixLayerTextAreaLabel = uilabel(app.DPTab); + app.ky_matrixLayerTextAreaLabel.HorizontalAlignment = 'right'; + app.ky_matrixLayerTextAreaLabel.Position = [27 218 86 22]; + app.ky_matrixLayerTextAreaLabel.Text = 'ky_matrixLayer'; + + % Create DPky_matrixLayerTextArea + app.DPky_matrixLayerTextArea = uitextarea(app.DPTab); + app.DPky_matrixLayerTextArea.Position = [128 182 150 60]; + + % Create kz_matrixLayerTextAreaLabel + app.kz_matrixLayerTextAreaLabel = uilabel(app.DPTab); + app.kz_matrixLayerTextAreaLabel.HorizontalAlignment = 'right'; + app.kz_matrixLayerTextAreaLabel.Position = [15 117 86 22]; + app.kz_matrixLayerTextAreaLabel.Text = 'kz_matrixLayer'; + + % Create DPkz_matrixLayerTextArea + app.DPkz_matrixLayerTextArea = uitextarea(app.DPTab); + app.DPkz_matrixLayerTextArea.Position = [116 81 150 60]; + + % Create pori_matrixLayerTextAreaLabel + app.pori_matrixLayerTextAreaLabel = uilabel(app.DPTab); + app.pori_matrixLayerTextAreaLabel.HorizontalAlignment = 'right'; + app.pori_matrixLayerTextAreaLabel.Position = [-8 47 94 22]; + app.pori_matrixLayerTextAreaLabel.Text = 'pori_matrixLayer'; + + % Create DPpori_matrixLayerTextArea + app.DPpori_matrixLayerTextArea = uitextarea(app.DPTab); + app.DPpori_matrixLayerTextArea.Position = [101 11 150 60]; + + % Create sigmaTextAreaLabel + app.sigmaTextAreaLabel = uilabel(app.DPTab); + app.sigmaTextAreaLabel.HorizontalAlignment = 'right'; + app.sigmaTextAreaLabel.Position = [373 559 37 22]; + app.sigmaTextAreaLabel.Text = 'sigma'; + + % Create DPsigmaTextArea + app.DPsigmaTextArea = uitextarea(app.DPTab); + app.DPsigmaTextArea.Position = [425 523 150 60]; + + % Create NTGTextArea_2Label + app.NTGTextArea_2Label = uilabel(app.DPTab); + app.NTGTextArea_2Label.HorizontalAlignment = 'right'; + app.NTGTextArea_2Label.Position = [376 469 30 22]; + app.NTGTextArea_2Label.Text = 'NTG'; + + % Create DPNTGTextArea + app.DPNTGTextArea = uitextarea(app.DPTab); + app.DPNTGTextArea.Position = [421 433 150 60]; + + % Create prporEditFieldLabel + app.prporEditFieldLabel = uilabel(app.DPTab); + app.prporEditFieldLabel.HorizontalAlignment = 'right'; + app.prporEditFieldLabel.Position = [411 358 33 22]; + app.prporEditFieldLabel.Text = 'prpor'; + + % Create DPprporEditField + app.DPprporEditField = uieditfield(app.DPTab, 'numeric'); + app.DPprporEditField.Position = [459 358 100 22]; + + % Create cporLabel + app.cporLabel = uilabel(app.DPTab); + app.cporLabel.HorizontalAlignment = 'right'; + app.cporLabel.Position = [427 307 28 22]; + app.cporLabel.Text = 'cpor'; + + % Create DPcporEditField + app.DPcporEditField = uieditfield(app.DPTab, 'numeric'); + app.DPcporEditField.Position = [470 307 100 22]; + + % Create KfTextAreaLabel + app.KfTextAreaLabel = uilabel(app.DPTab); + app.KfTextAreaLabel.HorizontalAlignment = 'right'; + app.KfTextAreaLabel.Position = [401 258 25 22]; + app.KfTextAreaLabel.Text = 'Kf'; + + % Create DPKfTextArea + app.DPKfTextArea = uitextarea(app.DPTab); + app.DPKfTextArea.Position = [441 222 150 60]; + + % Create WfTextAreaLabel + app.WfTextAreaLabel = uilabel(app.DPTab); + app.WfTextAreaLabel.HorizontalAlignment = 'right'; + app.WfTextAreaLabel.Position = [394 176 25 22]; + app.WfTextAreaLabel.Text = 'Wf'; + + % Create DPWfTextArea + app.DPWfTextArea = uitextarea(app.DPTab); + app.DPWfTextArea.Position = [434 140 150 60]; + + % Create PorfTextAreaLabel + app.PorfTextAreaLabel = uilabel(app.DPTab); + app.PorfTextAreaLabel.HorizontalAlignment = 'right'; + app.PorfTextAreaLabel.Position = [412 72 27 22]; + app.PorfTextAreaLabel.Text = 'Porf'; + + % Create DPPorfTextArea + app.DPPorfTextArea = uitextarea(app.DPTab); + app.DPPorfTextArea.Position = [454 36 150 60]; + + % Create prporfEditFieldLabel + app.prporfEditFieldLabel = uilabel(app.DPTab); + app.prporfEditFieldLabel.HorizontalAlignment = 'right'; + app.prporfEditFieldLabel.Position = [744 537 36 22]; + app.prporfEditFieldLabel.Text = 'prporf'; + + % Create DPprporfEditField + app.DPprporfEditField = uieditfield(app.DPTab, 'numeric'); + app.DPprporfEditField.Position = [795 537 100 22]; + + % Create cporfEditFieldLabel + app.cporfEditFieldLabel = uilabel(app.DPTab); + app.cporfEditFieldLabel.HorizontalAlignment = 'right'; + app.cporfEditFieldLabel.Position = [748 491 32 22]; + app.cporfEditFieldLabel.Text = 'cporf'; + + % Create DPcporfEditField + app.DPcporfEditField = uieditfield(app.DPTab, 'numeric'); + app.DPcporfEditField.Position = [795 491 100 22]; + + % Create stress_factor_fractureEditFieldLabel + app.stress_factor_fractureEditFieldLabel = uilabel(app.DPTab); + app.stress_factor_fractureEditFieldLabel.HorizontalAlignment = 'right'; + app.stress_factor_fractureEditFieldLabel.Position = [660 424 121 22]; + app.stress_factor_fractureEditFieldLabel.Text = 'stress_factor_fracture'; + + % Create DPstress_factor_fractureEditField + app.DPstress_factor_fractureEditField = uieditfield(app.DPTab, 'numeric'); + app.DPstress_factor_fractureEditField.Position = [796 424 100 22]; + + % Create stress_factor_matrixEditFieldLabel + app.stress_factor_matrixEditFieldLabel = uilabel(app.DPTab); + app.stress_factor_matrixEditFieldLabel.HorizontalAlignment = 'right'; + app.stress_factor_matrixEditFieldLabel.Position = [628 379 113 22]; + app.stress_factor_matrixEditFieldLabel.Text = 'stress_factor_matrix'; + + % Create DPstress_factor_matrixEditField + app.DPstress_factor_matrixEditField = uieditfield(app.DPTab, 'numeric'); + app.DPstress_factor_matrixEditField.Position = [756 379 100 22]; + + % Create stress_factor_ref_pressureEditFieldLabel + app.stress_factor_ref_pressureEditFieldLabel = uilabel(app.DPTab); + app.stress_factor_ref_pressureEditFieldLabel.HorizontalAlignment = 'right'; + app.stress_factor_ref_pressureEditFieldLabel.Position = [604 320 148 22]; + app.stress_factor_ref_pressureEditFieldLabel.Text = 'stress_factor_ref_pressure'; + + % Create DPstress_factor_ref_pressureEditField + app.DPstress_factor_ref_pressureEditField = uieditfield(app.DPTab, 'numeric'); + app.DPstress_factor_ref_pressureEditField.Position = [767 320 100 22]; + + % Create RptEditFieldLabel_2 + app.RptEditFieldLabel_2 = uilabel(app.DPTab); + app.RptEditFieldLabel_2.HorizontalAlignment = 'right'; + app.RptEditFieldLabel_2.Position = [740 251 25 22]; + app.RptEditFieldLabel_2.Text = 'Rpt'; + + % Create DPRptEditField + app.DPRptEditField = uieditfield(app.DPTab, 'numeric'); + app.DPRptEditField.Position = [780 251 100 22]; + + % Create cffEditFieldLabel + app.cffEditFieldLabel = uilabel(app.DPTab); + app.cffEditFieldLabel.HorizontalAlignment = 'right'; + app.cffEditFieldLabel.Position = [733 192 25 22]; + app.cffEditFieldLabel.Text = 'cff'; + + % Create DPcffEditField + app.DPcffEditField = uieditfield(app.DPTab, 'numeric'); + app.DPcffEditField.Position = [773 192 100 22]; + + % Create caEditFieldLabel_2 + app.caEditFieldLabel_2 = uilabel(app.DPTab); + app.caEditFieldLabel_2.HorizontalAlignment = 'right'; + app.caEditFieldLabel_2.Position = [744 123 25 22]; + app.caEditFieldLabel_2.Text = 'ca'; + + % Create DPcaEditField + app.DPcaEditField = uieditfield(app.DPTab, 'numeric'); + app.DPcaEditField.Position = [784 123 100 22]; + + % Create FlowTab + app.FlowTab = uitab(app.TabGroup); + app.FlowTab.Title = 'Flow'; + + % Create TabGroup2 + app.TabGroup2 = uitabgroup(app.FlowTab); + app.TabGroup2.Position = [69 38 1120 529]; + + % Create GasWaterTab + app.GasWaterTab = uitab(app.TabGroup2); + app.GasWaterTab.Title = 'GasWater'; + + % Create gas_propVLEditFieldLabel + app.gas_propVLEditFieldLabel = uilabel(app.GasWaterTab); + app.gas_propVLEditFieldLabel.HorizontalAlignment = 'right'; + app.gas_propVLEditFieldLabel.Position = [61 448 73 22]; + app.gas_propVLEditFieldLabel.Text = 'gas_prop.VL'; + + % Create GWgas_propVLEditField + app.GWgas_propVLEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWgas_propVLEditField.Position = [149 448 100 22]; + + % Create gas_propPLEditFieldLabel + app.gas_propPLEditFieldLabel = uilabel(app.GasWaterTab); + app.gas_propPLEditFieldLabel.HorizontalAlignment = 'right'; + app.gas_propPLEditFieldLabel.Position = [41 407 73 22]; + app.gas_propPLEditFieldLabel.Text = 'gas_prop.PL'; + + % Create GWgas_propPLEditField + app.GWgas_propPLEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWgas_propPLEditField.Position = [129 407 100 22]; + + % Create gas_propKnEditFieldLabel + app.gas_propKnEditFieldLabel = uilabel(app.GasWaterTab); + app.gas_propKnEditFieldLabel.HorizontalAlignment = 'right'; + app.gas_propKnEditFieldLabel.Position = [42 364 73 22]; + app.gas_propKnEditFieldLabel.Text = 'gas_prop.Kn'; + + % Create GWgas_propKnEditField + app.GWgas_propKnEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWgas_propKnEditField.Position = [130 364 100 22]; + + % Create beta_non_darcy_flowEditFieldLabel + app.beta_non_darcy_flowEditFieldLabel = uilabel(app.GasWaterTab); + app.beta_non_darcy_flowEditFieldLabel.HorizontalAlignment = 'right'; + app.beta_non_darcy_flowEditFieldLabel.Position = [14 323 119 22]; + app.beta_non_darcy_flowEditFieldLabel.Text = 'beta_non_darcy_flow'; + + % Create GWbeta_non_darcy_flowEditField + app.GWbeta_non_darcy_flowEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWbeta_non_darcy_flowEditField.Position = [148 323 100 22]; + + % Create p_grad_thresholdEditFieldLabel + app.p_grad_thresholdEditFieldLabel = uilabel(app.GasWaterTab); + app.p_grad_thresholdEditFieldLabel.HorizontalAlignment = 'right'; + app.p_grad_thresholdEditFieldLabel.Position = [19 279 98 22]; + app.p_grad_thresholdEditFieldLabel.Text = 'p_grad_threshold'; + + % Create GWp_grad_thresholdEditField + app.GWp_grad_thresholdEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWp_grad_thresholdEditField.Position = [132 279 100 22]; + + % Create density_g_scEditFieldLabel + app.density_g_scEditFieldLabel = uilabel(app.GasWaterTab); + app.density_g_scEditFieldLabel.HorizontalAlignment = 'right'; + app.density_g_scEditFieldLabel.Position = [36 237 75 22]; + app.density_g_scEditFieldLabel.Text = 'density_g_sc'; + + % Create GWdensity_g_scEditField + app.GWdensity_g_scEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWdensity_g_scEditField.Position = [126 237 100 22]; + + % Create density_w_scEditFieldLabel + app.density_w_scEditFieldLabel = uilabel(app.GasWaterTab); + app.density_w_scEditFieldLabel.HorizontalAlignment = 'right'; + app.density_w_scEditFieldLabel.Position = [25 200 77 22]; + app.density_w_scEditFieldLabel.Text = 'density_w_sc'; + + % Create GWdensity_w_scEditField + app.GWdensity_w_scEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWdensity_w_scEditField.Position = [117 200 100 22]; + + % Create gas_modelDropDownLabel + app.gas_modelDropDownLabel = uilabel(app.GasWaterTab); + app.gas_modelDropDownLabel.HorizontalAlignment = 'right'; + app.gas_modelDropDownLabel.Position = [41 132 64 22]; + app.gas_modelDropDownLabel.Text = 'gas_model'; + + % Create GWgas_modelDropDown + app.GWgas_modelDropDown = uidropdown(app.GasWaterTab); + app.GWgas_modelDropDown.Items = {''}; + app.GWgas_modelDropDown.Position = [120 132 100 22]; + app.GWgas_modelDropDown.Value = ''; + + % Create prgEditFieldLabel + app.prgEditFieldLabel = uilabel(app.GasWaterTab); + app.prgEditFieldLabel.HorizontalAlignment = 'right'; + app.prgEditFieldLabel.Position = [332 448 25 22]; + app.prgEditFieldLabel.Text = 'prg'; + + % Create GWprgEditField + app.GWprgEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWprgEditField.Position = [372 448 100 22]; + + % Create BgiEditFieldLabel + app.BgiEditFieldLabel = uilabel(app.GasWaterTab); + app.BgiEditFieldLabel.HorizontalAlignment = 'right'; + app.BgiEditFieldLabel.Position = [339 407 25 22]; + app.BgiEditFieldLabel.Text = 'Bgi'; + + % Create GWBgiEditField + app.GWBgiEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWBgiEditField.Position = [379 407 100 22]; + + % Create cgEditFieldLabel + app.cgEditFieldLabel = uilabel(app.GasWaterTab); + app.cgEditFieldLabel.HorizontalAlignment = 'right'; + app.cgEditFieldLabel.Position = [338 364 25 22]; + app.cgEditFieldLabel.Text = 'cg'; + + % Create GWcgEditField + app.GWcgEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWcgEditField.Position = [378 364 100 22]; + + % Create vgiEditFieldLabel + app.vgiEditFieldLabel = uilabel(app.GasWaterTab); + app.vgiEditFieldLabel.HorizontalAlignment = 'right'; + app.vgiEditFieldLabel.Position = [345 320 25 22]; + app.vgiEditFieldLabel.Text = 'vgi'; + + % Create GWvgiEditField + app.GWvgiEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWvgiEditField.Position = [385 320 100 22]; + + % Create cvgEditFieldLabel + app.cvgEditFieldLabel = uilabel(app.GasWaterTab); + app.cvgEditFieldLabel.HorizontalAlignment = 'right'; + app.cvgEditFieldLabel.Position = [339 280 25 22]; + app.cvgEditFieldLabel.Text = 'cvg'; + + % Create GWcvgEditField + app.GWcvgEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWcvgEditField.Position = [379 280 100 22]; + + % Create PprTextAreaLabel + app.PprTextAreaLabel = uilabel(app.GasWaterTab); + app.PprTextAreaLabel.HorizontalAlignment = 'right'; + app.PprTextAreaLabel.Position = [330 231 25 22]; + app.PprTextAreaLabel.Text = 'Ppr'; + + % Create GWPprTextArea + app.GWPprTextArea = uitextarea(app.GasWaterTab); + app.GWPprTextArea.Position = [370 195 150 60]; + + % Create BGTextAreaLabel + app.BGTextAreaLabel = uilabel(app.GasWaterTab); + app.BGTextAreaLabel.HorizontalAlignment = 'right'; + app.BGTextAreaLabel.Position = [329 156 25 22]; + app.BGTextAreaLabel.Text = 'BG'; + + % Create GWBGTextArea + app.GWBGTextArea = uitextarea(app.GasWaterTab); + app.GWBGTextArea.Position = [369 120 150 60]; + + % Create MUGTextAreaLabel + app.MUGTextAreaLabel = uilabel(app.GasWaterTab); + app.MUGTextAreaLabel.HorizontalAlignment = 'right'; + app.MUGTextAreaLabel.Position = [329 71 33 22]; + app.MUGTextAreaLabel.Text = 'MUG'; + + % Create GWMUGTextArea + app.GWMUGTextArea = uitextarea(app.GasWaterTab); + app.GWMUGTextArea.Position = [377 35 150 60]; + + % Create prwEditFieldLabel + app.prwEditFieldLabel = uilabel(app.GasWaterTab); + app.prwEditFieldLabel.HorizontalAlignment = 'right'; + app.prwEditFieldLabel.Position = [598 463 25 22]; + app.prwEditFieldLabel.Text = 'prw'; + + % Create GWprwEditField + app.GWprwEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWprwEditField.Position = [638 463 100 22]; + + % Create BwiEditFieldLabel + app.BwiEditFieldLabel = uilabel(app.GasWaterTab); + app.BwiEditFieldLabel.HorizontalAlignment = 'right'; + app.BwiEditFieldLabel.Position = [607 424 25 22]; + app.BwiEditFieldLabel.Text = 'Bwi'; + + % Create GWBwiEditField + app.GWBwiEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWBwiEditField.Position = [647 424 100 22]; + + % Create cwEditFieldLabel + app.cwEditFieldLabel = uilabel(app.GasWaterTab); + app.cwEditFieldLabel.HorizontalAlignment = 'right'; + app.cwEditFieldLabel.Position = [599 388 25 22]; + app.cwEditFieldLabel.Text = 'cw'; + + % Create GWcwEditField + app.GWcwEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWcwEditField.Position = [639 388 100 22]; + + % Create vwiEditFieldLabel + app.vwiEditFieldLabel = uilabel(app.GasWaterTab); + app.vwiEditFieldLabel.HorizontalAlignment = 'right'; + app.vwiEditFieldLabel.Position = [610 353 25 22]; + app.vwiEditFieldLabel.Text = 'vwi'; + + % Create GWvwiEditField + app.GWvwiEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWvwiEditField.Position = [650 353 100 22]; + + % Create cvwEditFieldLabel + app.cvwEditFieldLabel = uilabel(app.GasWaterTab); + app.cvwEditFieldLabel.HorizontalAlignment = 'right'; + app.cvwEditFieldLabel.Position = [619 313 26 22]; + app.cvwEditFieldLabel.Text = 'cvw'; + + % Create GWcvwEditField + app.GWcvwEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWcvwEditField.Position = [660 313 100 22]; + + % Create ifpcglEditFieldLabel + app.ifpcglEditFieldLabel = uilabel(app.GasWaterTab); + app.ifpcglEditFieldLabel.HorizontalAlignment = 'right'; + app.ifpcglEditFieldLabel.Position = [614 273 33 22]; + app.ifpcglEditFieldLabel.Text = 'ifpcgl'; + + % Create GWifpcglEditField + app.GWifpcglEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWifpcglEditField.Position = [662 273 100 22]; + + % Create RPGWTextAreaLabel + app.RPGWTextAreaLabel = uilabel(app.GasWaterTab); + app.RPGWTextAreaLabel.HorizontalAlignment = 'right'; + app.RPGWTextAreaLabel.Position = [586 234 42 22]; + app.RPGWTextAreaLabel.Text = 'RPGW'; + + % Create GWRPGWTextArea + app.GWRPGWTextArea = uitextarea(app.GasWaterTab); + app.GWRPGWTextArea.Position = [643 198 150 60]; + + % Create PRFTextAreaLabel + app.PRFTextAreaLabel = uilabel(app.GasWaterTab); + app.PRFTextAreaLabel.HorizontalAlignment = 'right'; + app.PRFTextAreaLabel.Position = [597 158 29 22]; + app.PRFTextAreaLabel.Text = 'PRF'; + + % Create GWPRFTextArea + app.GWPRFTextArea = uitextarea(app.GasWaterTab); + app.GWPRFTextArea.Position = [641 122 150 60]; + + % Create OilWaterTab + app.OilWaterTab = uitab(app.TabGroup2); + app.OilWaterTab.Title = 'OilWater'; + + % Create density_o_scEditFieldLabel + app.density_o_scEditFieldLabel = uilabel(app.OilWaterTab); + app.density_o_scEditFieldLabel.HorizontalAlignment = 'right'; + app.density_o_scEditFieldLabel.Position = [23 457 75 22]; + app.density_o_scEditFieldLabel.Text = 'density_o_sc'; + + % Create OWdensity_o_scEditField + app.OWdensity_o_scEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWdensity_o_scEditField.Position = [113 457 100 22]; + + % Create density_w_scEditFieldLabel_2 + app.density_w_scEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.density_w_scEditFieldLabel_2.HorizontalAlignment = 'right'; + app.density_w_scEditFieldLabel_2.Position = [18 416 77 22]; + app.density_w_scEditFieldLabel_2.Text = 'density_w_sc'; + + % Create OWdensity_w_scEditField + app.OWdensity_w_scEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWdensity_w_scEditField.Position = [110 416 100 22]; + + % Create oil_modelDropDownLabel + app.oil_modelDropDownLabel = uilabel(app.OilWaterTab); + app.oil_modelDropDownLabel.HorizontalAlignment = 'right'; + app.oil_modelDropDownLabel.Position = [41 367 56 22]; + app.oil_modelDropDownLabel.Text = 'oil_model'; + + % Create OWoil_modelDropDown + app.OWoil_modelDropDown = uidropdown(app.OilWaterTab); + app.OWoil_modelDropDown.Items = {''}; + app.OWoil_modelDropDown.Position = [112 367 100 22]; + app.OWoil_modelDropDown.Value = ''; + + % Create proEditFieldLabel + app.proEditFieldLabel = uilabel(app.OilWaterTab); + app.proEditFieldLabel.HorizontalAlignment = 'right'; + app.proEditFieldLabel.Position = [67 332 25 22]; + app.proEditFieldLabel.Text = 'pro'; + + % Create OWproEditField + app.OWproEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWproEditField.Position = [107 332 100 22]; + + % Create BoiEditFieldLabel + app.BoiEditFieldLabel = uilabel(app.OilWaterTab); + app.BoiEditFieldLabel.HorizontalAlignment = 'right'; + app.BoiEditFieldLabel.Position = [60 294 25 22]; + app.BoiEditFieldLabel.Text = 'Boi'; + + % Create OWBoiEditField + app.OWBoiEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWBoiEditField.Position = [100 294 100 22]; + + % Create coEditFieldLabel + app.coEditFieldLabel = uilabel(app.OilWaterTab); + app.coEditFieldLabel.HorizontalAlignment = 'right'; + app.coEditFieldLabel.Position = [61 258 25 22]; + app.coEditFieldLabel.Text = 'co'; + + % Create OWcoEditField + app.OWcoEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWcoEditField.Position = [101 258 100 22]; + + % Create voiEditFieldLabel + app.voiEditFieldLabel = uilabel(app.OilWaterTab); + app.voiEditFieldLabel.HorizontalAlignment = 'right'; + app.voiEditFieldLabel.Position = [60 219 25 22]; + app.voiEditFieldLabel.Text = 'voi'; + + % Create OWvoiEditField + app.OWvoiEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWvoiEditField.Position = [100 219 100 22]; + + % Create cvoEditFieldLabel + app.cvoEditFieldLabel = uilabel(app.OilWaterTab); + app.cvoEditFieldLabel.HorizontalAlignment = 'right'; + app.cvoEditFieldLabel.Position = [56 183 25 22]; + app.cvoEditFieldLabel.Text = 'cvo'; + + % Create OWcvoEditField + app.OWcvoEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWcvoEditField.Position = [96 183 100 22]; + + % Create PprTextAreaLabel_2 + app.PprTextAreaLabel_2 = uilabel(app.OilWaterTab); + app.PprTextAreaLabel_2.HorizontalAlignment = 'right'; + app.PprTextAreaLabel_2.Position = [44 144 25 22]; + app.PprTextAreaLabel_2.Text = 'Ppr'; + + % Create OWPprTextArea + app.OWPprTextArea = uitextarea(app.OilWaterTab); + app.OWPprTextArea.Position = [84 108 150 60]; + + % Create BOTextAreaLabel + app.BOTextAreaLabel = uilabel(app.OilWaterTab); + app.BOTextAreaLabel.HorizontalAlignment = 'right'; + app.BOTextAreaLabel.Position = [60 68 25 22]; + app.BOTextAreaLabel.Text = 'BO'; + + % Create OWBOTextArea + app.OWBOTextArea = uitextarea(app.OilWaterTab); + app.OWBOTextArea.Position = [100 32 150 60]; + + % Create MUOTextAreaLabel + app.MUOTextAreaLabel = uilabel(app.OilWaterTab); + app.MUOTextAreaLabel.HorizontalAlignment = 'right'; + app.MUOTextAreaLabel.Position = [352 464 33 22]; + app.MUOTextAreaLabel.Text = 'MUO'; + + % Create OWMUOTextArea + app.OWMUOTextArea = uitextarea(app.OilWaterTab); + app.OWMUOTextArea.Position = [400 428 150 60]; + + % Create prwEditFieldLabel_2 + app.prwEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.prwEditFieldLabel_2.HorizontalAlignment = 'right'; + app.prwEditFieldLabel_2.Position = [321 338 25 22]; + app.prwEditFieldLabel_2.Text = 'prw'; + + % Create OWprwEditField + app.OWprwEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWprwEditField.Position = [361 338 100 22]; + + % Create BwiEditFieldLabel_2 + app.BwiEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.BwiEditFieldLabel_2.HorizontalAlignment = 'right'; + app.BwiEditFieldLabel_2.Position = [325 290 25 22]; + app.BwiEditFieldLabel_2.Text = 'Bwi'; + + % Create OWBwiEditField + app.OWBwiEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWBwiEditField.Position = [365 290 100 22]; + + % Create cwEditFieldLabel_2 + app.cwEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.cwEditFieldLabel_2.HorizontalAlignment = 'right'; + app.cwEditFieldLabel_2.Position = [336 237 25 22]; + app.cwEditFieldLabel_2.Text = 'cw'; + + % Create OWcwEditField + app.OWcwEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWcwEditField.Position = [376 237 100 22]; + + % Create vwiEditFieldLabel_2 + app.vwiEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.vwiEditFieldLabel_2.HorizontalAlignment = 'right'; + app.vwiEditFieldLabel_2.Position = [332 179 25 22]; + app.vwiEditFieldLabel_2.Text = 'vwi'; + + % Create OWvwiEditField + app.OWvwiEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWvwiEditField.Position = [372 179 100 22]; + + % Create cvwEditFieldLabel_2 + app.cvwEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.cvwEditFieldLabel_2.HorizontalAlignment = 'right'; + app.cvwEditFieldLabel_2.Position = [335 141 26 22]; + app.cvwEditFieldLabel_2.Text = 'cvw'; + + % Create OWcvwEditField + app.OWcvwEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWcvwEditField.Position = [376 141 100 22]; + + % Create ifpcowEditFieldLabel + app.ifpcowEditFieldLabel = uilabel(app.OilWaterTab); + app.ifpcowEditFieldLabel.HorizontalAlignment = 'right'; + app.ifpcowEditFieldLabel.Position = [329 94 39 22]; + app.ifpcowEditFieldLabel.Text = 'ifpcow'; + + % Create OWifpcowEditField + app.OWifpcowEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWifpcowEditField.Position = [383 94 100 22]; + + % Create PRMTextAreaLabel + app.PRMTextAreaLabel = uilabel(app.OilWaterTab); + app.PRMTextAreaLabel.HorizontalAlignment = 'right'; + app.PRMTextAreaLabel.Position = [376 48 32 22]; + app.PRMTextAreaLabel.Text = 'PRM'; + + % Create OWPRMTextArea + app.OWPRMTextArea = uitextarea(app.OilWaterTab); + app.OWPRMTextArea.Position = [423 12 150 60]; + + % Create PRFTextAreaLabel_2 + app.PRFTextAreaLabel_2 = uilabel(app.OilWaterTab); + app.PRFTextAreaLabel_2.HorizontalAlignment = 'right'; + app.PRFTextAreaLabel_2.Position = [674 463 29 22]; + app.PRFTextAreaLabel_2.Text = 'PRF'; + + % Create OWPRFTextArea + app.OWPRFTextArea = uitextarea(app.OilWaterTab); + app.OWPRFTextArea.Position = [718 427 150 60]; + + % Create beta_non_Darcy_flowEditFieldLabel + app.beta_non_Darcy_flowEditFieldLabel = uilabel(app.OilWaterTab); + app.beta_non_Darcy_flowEditFieldLabel.HorizontalAlignment = 'right'; + app.beta_non_Darcy_flowEditFieldLabel.Position = [565 379 121 22]; + app.beta_non_Darcy_flowEditFieldLabel.Text = 'beta_non_Darcy_flow'; + + % Create OWbeta_non_Darcy_flowEditField + app.OWbeta_non_Darcy_flowEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWbeta_non_Darcy_flowEditField.Position = [701 379 100 22]; + + % Create p_grad_thresholdEditFieldLabel_2 + app.p_grad_thresholdEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.p_grad_thresholdEditFieldLabel_2.HorizontalAlignment = 'right'; + app.p_grad_thresholdEditFieldLabel_2.Position = [586 336 98 22]; + app.p_grad_thresholdEditFieldLabel_2.Text = 'p_grad_threshold'; + + % Create OWp_grad_thresholdEditField + app.OWp_grad_thresholdEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWp_grad_thresholdEditField.Position = [699 336 100 22]; + + % Create MultiComponentTab + app.MultiComponentTab = uitab(app.TabGroup2); + app.MultiComponentTab.Title = 'MultiComponent'; + + % Create DsEditFieldLabel + app.DsEditFieldLabel = uilabel(app.MultiComponentTab); + app.DsEditFieldLabel.HorizontalAlignment = 'right'; + app.DsEditFieldLabel.Position = [54 470 25 22]; + app.DsEditFieldLabel.Text = 'Ds'; + + % Create MCDsEditField + app.MCDsEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCDsEditField.Position = [94 470 100 22]; + + % Create DbEditFieldLabel + app.DbEditFieldLabel = uilabel(app.MultiComponentTab); + app.DbEditFieldLabel.HorizontalAlignment = 'right'; + app.DbEditFieldLabel.Position = [67 430 25 22]; + app.DbEditFieldLabel.Text = 'Db'; + + % Create MCDbEditField + app.MCDbEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCDbEditField.Position = [107 430 100 22]; + + % Create c_ca_tableTextAreaLabel + app.c_ca_tableTextAreaLabel = uilabel(app.MultiComponentTab); + app.c_ca_tableTextAreaLabel.HorizontalAlignment = 'right'; + app.c_ca_tableTextAreaLabel.Position = [24 389 63 22]; + app.c_ca_tableTextAreaLabel.Text = 'c_ca_table'; + + % Create MCc_ca_tableTextArea + app.MCc_ca_tableTextArea = uitextarea(app.MultiComponentTab); + app.MCc_ca_tableTextArea.Position = [102 353 150 60]; + + % Create REditFieldLabel + app.REditFieldLabel = uilabel(app.MultiComponentTab); + app.REditFieldLabel.HorizontalAlignment = 'right'; + app.REditFieldLabel.Position = [74 319 25 22]; + app.REditFieldLabel.Text = 'R'; + + % Create MCREditField + app.MCREditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCREditField.Position = [114 319 100 22]; + + % Create VmEditFieldLabel + app.VmEditFieldLabel = uilabel(app.MultiComponentTab); + app.VmEditFieldLabel.HorizontalAlignment = 'right'; + app.VmEditFieldLabel.Position = [72 277 25 22]; + app.VmEditFieldLabel.Text = 'Vm'; + + % Create MCVmEditField + app.MCVmEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCVmEditField.Position = [112 277 100 22]; + + % Create TemperatureEditFieldLabel + app.TemperatureEditFieldLabel = uilabel(app.MultiComponentTab); + app.TemperatureEditFieldLabel.HorizontalAlignment = 'right'; + app.TemperatureEditFieldLabel.Position = [31 240 72 22]; + app.TemperatureEditFieldLabel.Text = 'Temperature'; + + % Create MCTemperatureEditField + app.MCTemperatureEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCTemperatureEditField.Position = [118 240 100 22]; + + % Create cs_NcTextAreaLabel + app.cs_NcTextAreaLabel = uilabel(app.MultiComponentTab); + app.cs_NcTextAreaLabel.HorizontalAlignment = 'right'; + app.cs_NcTextAreaLabel.Position = [39 198 38 22]; + app.cs_NcTextAreaLabel.Text = 'cs_Nc'; + + % Create MCcs_NcTextArea + app.MCcs_NcTextArea = uitextarea(app.MultiComponentTab); + app.MCcs_NcTextArea.Position = [92 162 150 60]; + + % Create kr_nosurfTextAreaLabel + app.kr_nosurfTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_nosurfTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_nosurfTextAreaLabel.Position = [20 128 55 22]; + app.kr_nosurfTextAreaLabel.Text = 'kr_nosurf'; + + % Create MCkr_nosurfTextArea + app.MCkr_nosurfTextArea = uitextarea(app.MultiComponentTab); + app.MCkr_nosurfTextArea.Position = [90 92 150 60]; + + % Create kr_surfTextAreaLabel + app.kr_surfTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_surfTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_surfTextAreaLabel.Position = [36 57 42 22]; + app.kr_surfTextAreaLabel.Text = 'kr_surf'; + + % Create MCkr_surfTextArea + app.MCkr_surfTextArea = uitextarea(app.MultiComponentTab); + app.MCkr_surfTextArea.Position = [93 21 150 60]; + + % Create PCTextAreaLabel + app.PCTextAreaLabel = uilabel(app.MultiComponentTab); + app.PCTextAreaLabel.HorizontalAlignment = 'right'; + app.PCTextAreaLabel.Position = [323 468 25 22]; + app.PCTextAreaLabel.Text = 'PC'; + + % Create MCPCTextArea + app.MCPCTextArea = uitextarea(app.MultiComponentTab); + app.MCPCTextArea.Position = [363 432 150 60]; + + % Create cs_Nc_fractureTextAreaLabel + app.cs_Nc_fractureTextAreaLabel = uilabel(app.MultiComponentTab); + app.cs_Nc_fractureTextAreaLabel.HorizontalAlignment = 'right'; + app.cs_Nc_fractureTextAreaLabel.Position = [257 400 86 22]; + app.cs_Nc_fractureTextAreaLabel.Text = 'cs_Nc_fracture'; + + % Create MCcs_Nc_fractureTextArea + app.MCcs_Nc_fractureTextArea = uitextarea(app.MultiComponentTab); + app.MCcs_Nc_fractureTextArea.Position = [358 364 150 60]; + + % Create kr_nosurf_fractureTextAreaLabel + app.kr_nosurf_fractureTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_nosurf_fractureTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_nosurf_fractureTextAreaLabel.Position = [238 334 102 22]; + app.kr_nosurf_fractureTextAreaLabel.Text = 'kr_nosurf_fracture'; + + % Create MCkr_nosurf_fractureTextArea + app.MCkr_nosurf_fractureTextArea = uitextarea(app.MultiComponentTab); + app.MCkr_nosurf_fractureTextArea.Position = [355 298 150 60]; + + % Create kr_surf_fractureTextAreaLabel + app.kr_surf_fractureTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_surf_fractureTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_surf_fractureTextAreaLabel.Position = [249 267 89 22]; + app.kr_surf_fractureTextAreaLabel.Text = 'kr_surf_fracture'; + + % Create MCkr_surf_fractureTextArea + app.MCkr_surf_fractureTextArea = uitextarea(app.MultiComponentTab); + app.MCkr_surf_fractureTextArea.Position = [353 231 150 60]; + + % Create PC_fractureTextAreaLabel + app.PC_fractureTextAreaLabel = uilabel(app.MultiComponentTab); + app.PC_fractureTextAreaLabel.HorizontalAlignment = 'right'; + app.PC_fractureTextAreaLabel.Position = [265 198 69 22]; + app.PC_fractureTextAreaLabel.Text = 'PC_fracture'; + + % Create MCPC_fractureTextArea + app.MCPC_fractureTextArea = uitextarea(app.MultiComponentTab); + app.MCPC_fractureTextArea.Position = [349 162 150 60]; + + % Create ifpcglEditFieldLabel_2 + app.ifpcglEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.ifpcglEditFieldLabel_2.HorizontalAlignment = 'right'; + app.ifpcglEditFieldLabel_2.Position = [345 132 33 22]; + app.ifpcglEditFieldLabel_2.Text = 'ifpcgl'; + + % Create MCifpcglEditField + app.MCifpcglEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCifpcglEditField.Position = [393 132 100 22]; + + % Create p_grad_thresholdEditFieldLabel_3 + app.p_grad_thresholdEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.p_grad_thresholdEditFieldLabel_3.HorizontalAlignment = 'right'; + app.p_grad_thresholdEditFieldLabel_3.Position = [280 101 98 22]; + app.p_grad_thresholdEditFieldLabel_3.Text = 'p_grad_threshold'; + + % Create MCp_grad_thresholdEditField + app.MCp_grad_thresholdEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCp_grad_thresholdEditField.Position = [393 101 100 22]; + + % Create gas_propVLEditFieldLabel_2 + app.gas_propVLEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.gas_propVLEditFieldLabel_2.HorizontalAlignment = 'right'; + app.gas_propVLEditFieldLabel_2.Position = [307 67 73 22]; + app.gas_propVLEditFieldLabel_2.Text = 'gas_prop.VL'; + + % Create MCgas_propVLEditField + app.MCgas_propVLEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCgas_propVLEditField.Position = [395 67 100 22]; + + % Create gas_propPLEditFieldLabel_2 + app.gas_propPLEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.gas_propPLEditFieldLabel_2.HorizontalAlignment = 'right'; + app.gas_propPLEditFieldLabel_2.Position = [305 33 73 22]; + app.gas_propPLEditFieldLabel_2.Text = 'gas_prop.PL'; + + % Create MCgas_propPLEditField + app.MCgas_propPLEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCgas_propPLEditField.Position = [393 33 100 22]; + + % Create gas_propKnEditFieldLabel_2 + app.gas_propKnEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.gas_propKnEditFieldLabel_2.HorizontalAlignment = 'right'; + app.gas_propKnEditFieldLabel_2.Position = [306 10 73 22]; + app.gas_propKnEditFieldLabel_2.Text = 'gas_prop.Kn'; + + % Create MCgas_propKnEditField + app.MCgas_propKnEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCgas_propKnEditField.Position = [394 10 100 22]; + + % Create stress_factor_fractureEditFieldLabel_2 + app.stress_factor_fractureEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.stress_factor_fractureEditFieldLabel_2.HorizontalAlignment = 'right'; + app.stress_factor_fractureEditFieldLabel_2.Position = [523 470 121 22]; + app.stress_factor_fractureEditFieldLabel_2.Text = 'stress_factor_fracture'; + + % Create MCstress_factor_fractureEditField + app.MCstress_factor_fractureEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCstress_factor_fractureEditField.Position = [659 470 100 22]; + + % Create stress_factor_matrixEditFieldLabel_2 + app.stress_factor_matrixEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.stress_factor_matrixEditFieldLabel_2.HorizontalAlignment = 'right'; + app.stress_factor_matrixEditFieldLabel_2.Position = [534 434 113 22]; + app.stress_factor_matrixEditFieldLabel_2.Text = 'stress_factor_matrix'; + + % Create MCstress_factor_matrixEditField + app.MCstress_factor_matrixEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCstress_factor_matrixEditField.Position = [662 434 100 22]; + + % Create stress_factor_ref_pressureEditFieldLabel_2 + app.stress_factor_ref_pressureEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.stress_factor_ref_pressureEditFieldLabel_2.HorizontalAlignment = 'right'; + app.stress_factor_ref_pressureEditFieldLabel_2.Position = [499 403 148 22]; + app.stress_factor_ref_pressureEditFieldLabel_2.Text = 'stress_factor_ref_pressure'; + + % Create MCstress_factor_ref_pressureEditField + app.MCstress_factor_ref_pressureEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCstress_factor_ref_pressureEditField.Position = [662 403 100 22]; + + % Create beta_non_darcy_flowEditFieldLabel_2 + app.beta_non_darcy_flowEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.beta_non_darcy_flowEditFieldLabel_2.HorizontalAlignment = 'right'; + app.beta_non_darcy_flowEditFieldLabel_2.Position = [525 372 119 22]; + app.beta_non_darcy_flowEditFieldLabel_2.Text = 'beta_non_darcy_flow'; + + % Create MCbeta_non_darcy_flowEditField + app.MCbeta_non_darcy_flowEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCbeta_non_darcy_flowEditField.Position = [659 372 100 22]; + + % Create density_g_scEditFieldLabel_2 + app.density_g_scEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.density_g_scEditFieldLabel_2.HorizontalAlignment = 'right'; + app.density_g_scEditFieldLabel_2.Position = [568 338 75 22]; + app.density_g_scEditFieldLabel_2.Text = 'density_g_sc'; + + % Create MCdensity_g_scEditField + app.MCdensity_g_scEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCdensity_g_scEditField.Position = [658 338 100 22]; + + % Create gas_modelDropDownLabel_2 + app.gas_modelDropDownLabel_2 = uilabel(app.MultiComponentTab); + app.gas_modelDropDownLabel_2.HorizontalAlignment = 'right'; + app.gas_modelDropDownLabel_2.Position = [575 305 64 22]; + app.gas_modelDropDownLabel_2.Text = 'gas_model'; + + % Create MCgas_modelDropDown + app.MCgas_modelDropDown = uidropdown(app.MultiComponentTab); + app.MCgas_modelDropDown.Items = {''}; + app.MCgas_modelDropDown.Position = [654 305 100 22]; + app.MCgas_modelDropDown.Value = ''; + + % Create prgEditFieldLabel_2 + app.prgEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.prgEditFieldLabel_2.HorizontalAlignment = 'right'; + app.prgEditFieldLabel_2.Position = [609 273 25 22]; + app.prgEditFieldLabel_2.Text = 'prg'; + + % Create MCprgEditField + app.MCprgEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCprgEditField.Position = [649 273 100 22]; + + % Create BgiEditFieldLabel_2 + app.BgiEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.BgiEditFieldLabel_2.HorizontalAlignment = 'right'; + app.BgiEditFieldLabel_2.Position = [613 240 25 22]; + app.BgiEditFieldLabel_2.Text = 'Bgi'; + + % Create MCBgiEditField + app.MCBgiEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCBgiEditField.Position = [653 240 100 22]; + + % Create cgEditFieldLabel_2 + app.cgEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.cgEditFieldLabel_2.HorizontalAlignment = 'right'; + app.cgEditFieldLabel_2.Position = [610 208 25 22]; + app.cgEditFieldLabel_2.Text = 'cg'; + + % Create MCcgEditField + app.MCcgEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCcgEditField.Position = [650 208 100 22]; + + % Create vgiEditFieldLabel_2 + app.vgiEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.vgiEditFieldLabel_2.HorizontalAlignment = 'right'; + app.vgiEditFieldLabel_2.Position = [613 177 25 22]; + app.vgiEditFieldLabel_2.Text = 'vgi'; + + % Create MCvgiEditField + app.MCvgiEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCvgiEditField.Position = [653 177 100 22]; + + % Create cvgEditFieldLabel_2 + app.cvgEditFieldLabel_2 = uilabel(app.MultiComponentTab); + app.cvgEditFieldLabel_2.HorizontalAlignment = 'right'; + app.cvgEditFieldLabel_2.Position = [610 144 25 22]; + app.cvgEditFieldLabel_2.Text = 'cvg'; + + % Create MCcvgEditField + app.MCcvgEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCcvgEditField.Position = [650 144 100 22]; + + % Create PprTextAreaLabel_3 + app.PprTextAreaLabel_3 = uilabel(app.MultiComponentTab); + app.PprTextAreaLabel_3.HorizontalAlignment = 'right'; + app.PprTextAreaLabel_3.Position = [560 114 25 22]; + app.PprTextAreaLabel_3.Text = 'Ppr'; + + % Create MCPprTextArea + app.MCPprTextArea = uitextarea(app.MultiComponentTab); + app.MCPprTextArea.Position = [600 78 150 60]; + + % Create BGTextAreaLabel_2 + app.BGTextAreaLabel_2 = uilabel(app.MultiComponentTab); + app.BGTextAreaLabel_2.HorizontalAlignment = 'right'; + app.BGTextAreaLabel_2.Position = [559 46 25 22]; + app.BGTextAreaLabel_2.Text = 'BG'; + + % Create MCBGTextArea + app.MCBGTextArea = uitextarea(app.MultiComponentTab); + app.MCBGTextArea.Position = [599 10 150 60]; + + % Create MUGTextAreaLabel_2 + app.MUGTextAreaLabel_2 = uilabel(app.MultiComponentTab); + app.MUGTextAreaLabel_2.HorizontalAlignment = 'right'; + app.MUGTextAreaLabel_2.Position = [823 468 33 22]; + app.MUGTextAreaLabel_2.Text = 'MUG'; + + % Create MCMUGTextArea + app.MCMUGTextArea = uitextarea(app.MultiComponentTab); + app.MCMUGTextArea.Position = [871 432 150 60]; + + % Create density_w_scEditFieldLabel_3 + app.density_w_scEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.density_w_scEditFieldLabel_3.HorizontalAlignment = 'right'; + app.density_w_scEditFieldLabel_3.Position = [821 400 77 22]; + app.density_w_scEditFieldLabel_3.Text = 'density_w_sc'; + + % Create MCdensity_w_scEditField + app.MCdensity_w_scEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCdensity_w_scEditField.Position = [913 400 100 22]; + + % Create prwEditFieldLabel_3 + app.prwEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.prwEditFieldLabel_3.HorizontalAlignment = 'right'; + app.prwEditFieldLabel_3.Position = [867 371 25 22]; + app.prwEditFieldLabel_3.Text = 'prw'; + + % Create MCprwEditField + app.MCprwEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCprwEditField.Position = [907 371 100 22]; + + % Create BwiEditFieldLabel_3 + app.BwiEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.BwiEditFieldLabel_3.HorizontalAlignment = 'right'; + app.BwiEditFieldLabel_3.Position = [873 340 25 22]; + app.BwiEditFieldLabel_3.Text = 'Bwi'; + + % Create MCBwiEditField + app.MCBwiEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCBwiEditField.Position = [913 340 100 22]; + + % Create cwEditFieldLabel_3 + app.cwEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.cwEditFieldLabel_3.HorizontalAlignment = 'right'; + app.cwEditFieldLabel_3.Position = [875 309 25 22]; + app.cwEditFieldLabel_3.Text = 'cw'; + + % Create MCcwEditField + app.MCcwEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCcwEditField.Position = [915 309 100 22]; + + % Create vwiEditFieldLabel_3 + app.vwiEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.vwiEditFieldLabel_3.HorizontalAlignment = 'right'; + app.vwiEditFieldLabel_3.Position = [875 279 25 22]; + app.vwiEditFieldLabel_3.Text = 'vwi'; + + % Create MCvwiEditField + app.MCvwiEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCvwiEditField.Position = [915 279 100 22]; + + % Create cvwEditFieldLabel_3 + app.cvwEditFieldLabel_3 = uilabel(app.MultiComponentTab); + app.cvwEditFieldLabel_3.HorizontalAlignment = 'right'; + app.cvwEditFieldLabel_3.Position = [874 246 26 22]; + app.cvwEditFieldLabel_3.Text = 'cvw'; + + % Create MCcvwEditField + app.MCcvwEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCcvwEditField.Position = [915 246 100 22]; + + % Create InitStatusLabel + app.InitStatusLabel = uilabel(app.FlowTab); + app.InitStatusLabel.Position = [87 645 79 22]; + app.InitStatusLabel.Text = 'InitStatus'; + + % Create InitialPressureEditFieldLabel + app.InitialPressureEditFieldLabel = uilabel(app.FlowTab); + app.InitialPressureEditFieldLabel.HorizontalAlignment = 'right'; + app.InitialPressureEditFieldLabel.Position = [58 607 81 22]; + app.InitialPressureEditFieldLabel.Text = 'InitialPressure'; + + % Create InitialPressureEditField + app.InitialPressureEditField = uieditfield(app.FlowTab, 'numeric'); + app.InitialPressureEditField.Position = [154 607 100 22]; + + % Create InitialSwEditFieldLabel + app.InitialSwEditFieldLabel = uilabel(app.FlowTab); + app.InitialSwEditFieldLabel.HorizontalAlignment = 'right'; + app.InitialSwEditFieldLabel.Position = [334 609 50 22]; + app.InitialSwEditFieldLabel.Text = 'InitialSw'; + + % Create InitialSwEditField + app.InitialSwEditField = uieditfield(app.FlowTab, 'numeric'); + app.InitialSwEditField.Position = [399 609 100 22]; + + % Create InitialCsEditFieldLabel + app.InitialCsEditFieldLabel = uilabel(app.FlowTab); + app.InitialCsEditFieldLabel.HorizontalAlignment = 'right'; + app.InitialCsEditFieldLabel.Position = [567 609 48 22]; + app.InitialCsEditFieldLabel.Text = 'InitialCs'; + + % Create InitialCsEditField + app.InitialCsEditField = uieditfield(app.FlowTab, 'numeric'); + app.InitialCsEditField.Position = [630 609 100 22]; + + % Create InitialCbEditFieldLabel + app.InitialCbEditFieldLabel = uilabel(app.FlowTab); + app.InitialCbEditFieldLabel.HorizontalAlignment = 'right'; + app.InitialCbEditFieldLabel.Position = [806 609 48 22]; + app.InitialCbEditFieldLabel.Text = 'InitialCb'; + + % Create InitialCbEditField + app.InitialCbEditField = uieditfield(app.FlowTab, 'numeric'); + app.InitialCbEditField.Position = [869 609 100 22]; + + % Create WellsTab + app.WellsTab = uitab(app.TabGroup); + app.WellsTab.Title = 'Wells'; + + % Create Well1Table + app.Well1Table = uitable(app.WellsTab); + app.Well1Table.ColumnName = {'Well1'}; + app.Well1Table.RowName = {}; + app.Well1Table.Position = [35 475 372 185]; + + % Create FractureWellLocationTable + app.FractureWellLocationTable = uitable(app.WellsTab); + app.FractureWellLocationTable.ColumnName = {'FractureWellLocation'}; + app.FractureWellLocationTable.RowName = {}; + app.FractureWellLocationTable.Position = [42 255 302 185]; + + % Create Well2Table + app.Well2Table = uitable(app.WellsTab); + app.Well2Table.ColumnName = {'Well2'}; + app.Well2Table.RowName = {}; + app.Well2Table.Position = [567 470 302 185]; + + % Create ScheduleTable + app.ScheduleTable = uitable(app.WellsTab); + app.ScheduleTable.ColumnName = {'Schedule'}; + app.ScheduleTable.RowName = {}; + app.ScheduleTable.Position = [567 243 302 185]; + + % Create TimeTextAreaLabel + app.TimeTextAreaLabel = uilabel(app.WellsTab); + app.TimeTextAreaLabel.HorizontalAlignment = 'right'; + app.TimeTextAreaLabel.Position = [70 191 31 22]; + app.TimeTextAreaLabel.Text = 'Time'; + + % Create TimeTextArea + app.TimeTextArea = uitextarea(app.WellsTab); + app.TimeTextArea.Position = [116 155 150 60]; + + % Create DtMinTextAreaLabel + app.DtMinTextAreaLabel = uilabel(app.WellsTab); + app.DtMinTextAreaLabel.HorizontalAlignment = 'right'; + app.DtMinTextAreaLabel.Position = [376 196 36 22]; + app.DtMinTextAreaLabel.Text = 'DtMin'; + + % Create DtMinTextArea + app.DtMinTextArea = uitextarea(app.WellsTab); + app.DtMinTextArea.Position = [427 160 150 60]; + + % Create DtMaxTextAreaLabel + app.DtMaxTextAreaLabel = uilabel(app.WellsTab); + app.DtMaxTextAreaLabel.HorizontalAlignment = 'right'; + app.DtMaxTextAreaLabel.Position = [681 189 40 22]; + app.DtMaxTextAreaLabel.Text = 'DtMax'; + + % Create DtMaxTextArea + app.DtMaxTextArea = uitextarea(app.WellsTab); + app.DtMaxTextArea.Position = [736 153 150 60]; + + % Create SoloverTab + app.SoloverTab = uitab(app.TabGroup); + app.SoloverTab.Title = 'Solover'; + + % Create YitaPEditFieldLabel + app.YitaPEditFieldLabel = uilabel(app.SoloverTab); + app.YitaPEditFieldLabel.HorizontalAlignment = 'right'; + app.YitaPEditFieldLabel.Position = [80 607 33 22]; + app.YitaPEditFieldLabel.Text = 'YitaP'; + + % Create YitaPEditField + app.YitaPEditField = uieditfield(app.SoloverTab, 'numeric'); + app.YitaPEditField.Position = [128 607 100 22]; + + % Create YitaSEditFieldLabel + app.YitaSEditFieldLabel = uilabel(app.SoloverTab); + app.YitaSEditFieldLabel.HorizontalAlignment = 'right'; + app.YitaSEditFieldLabel.Position = [88 542 33 22]; + app.YitaSEditFieldLabel.Text = 'YitaS'; + + % Create YitaSEditField + app.YitaSEditField = uieditfield(app.SoloverTab, 'numeric'); + app.YitaSEditField.Position = [136 542 100 22]; + + % Create OmegaEditFieldLabel + app.OmegaEditFieldLabel = uilabel(app.SoloverTab); + app.OmegaEditFieldLabel.HorizontalAlignment = 'right'; + app.OmegaEditFieldLabel.Position = [78 482 44 22]; + app.OmegaEditFieldLabel.Text = 'Omega'; + + % Create OmegaEditField + app.OmegaEditField = uieditfield(app.SoloverTab, 'numeric'); + app.OmegaEditField.Position = [137 482 100 22]; + + % Create NmaxEditFieldLabel + app.NmaxEditFieldLabel = uilabel(app.SoloverTab); + app.NmaxEditFieldLabel.HorizontalAlignment = 'right'; + app.NmaxEditFieldLabel.Position = [86 418 36 22]; + app.NmaxEditFieldLabel.Text = 'Nmax'; + + % Create NmaxEditField + app.NmaxEditField = uieditfield(app.SoloverTab, 'numeric'); + app.NmaxEditField.Position = [137 418 100 22]; + + % Create EpsAveEditFieldLabel + app.EpsAveEditFieldLabel = uilabel(app.SoloverTab); + app.EpsAveEditFieldLabel.HorizontalAlignment = 'right'; + app.EpsAveEditFieldLabel.Position = [72 349 46 22]; + app.EpsAveEditFieldLabel.Text = 'EpsAve'; + + % Create EpsAveEditField + app.EpsAveEditField = uieditfield(app.SoloverTab, 'numeric'); + app.EpsAveEditField.Position = [133 349 100 22]; + + % Create EpsMaxEditFieldLabel + app.EpsMaxEditFieldLabel = uilabel(app.SoloverTab); + app.EpsMaxEditFieldLabel.HorizontalAlignment = 'right'; + app.EpsMaxEditFieldLabel.Position = [83 271 48 22]; + app.EpsMaxEditFieldLabel.Text = 'EpsMax'; + + % Create EpsMaxEditField + app.EpsMaxEditField = uieditfield(app.SoloverTab, 'numeric'); + app.EpsMaxEditField.Position = [146 271 100 22]; + + % Create RunTab + app.RunTab = uitab(app.TabGroup); + app.RunTab.Title = 'Run'; + + % Create RunCurrentConfigButton + app.RunCurrentConfigButton = uibutton(app.RunTab, 'push'); + app.RunCurrentConfigButton.Position = [89 598 112 23]; + app.RunCurrentConfigButton.Text = 'RunCurrentConfig'; + + % Create RunLogTextAreaLabel + app.RunLogTextAreaLabel = uilabel(app.RunTab); + app.RunLogTextAreaLabel.HorizontalAlignment = 'right'; + app.RunLogTextAreaLabel.Position = [137 324 47 22]; + app.RunLogTextAreaLabel.Text = 'RunLog'; + + % Create RunLogTextArea + app.RunLogTextArea = uitextarea(app.RunTab); + app.RunLogTextArea.Position = [199 288 150 60]; + + % Create RunProgressLabel + app.RunProgressLabel = uilabel(app.RunTab); + app.RunProgressLabel.Position = [135 167 75 22]; + app.RunProgressLabel.Text = 'RunProgress'; + + % Create ResultsTab + app.ResultsTab = uitab(app.TabGroup); + app.ResultsTab.Title = 'Results'; + + % Create ResultAxes + app.ResultAxes = uiaxes(app.ResultsTab); + title(app.ResultAxes, 'Result') + xlabel(app.ResultAxes, 'X') + ylabel(app.ResultAxes, 'Y') + zlabel(app.ResultAxes, 'Z') + app.ResultAxes.Position = [99 342 300 185]; + + % Create ResultSummaryTextAreaLabel + app.ResultSummaryTextAreaLabel = uilabel(app.ResultsTab); + app.ResultSummaryTextAreaLabel.HorizontalAlignment = 'right'; + app.ResultSummaryTextAreaLabel.Position = [28 626 90 22]; + app.ResultSummaryTextAreaLabel.Text = 'ResultSummary'; + + % Create ResultSummaryTextArea + app.ResultSummaryTextArea = uitextarea(app.ResultsTab); + app.ResultSummaryTextArea.Position = [133 590 150 60]; + + % Create ResultTypeDropDownLabel + app.ResultTypeDropDownLabel = uilabel(app.ResultsTab); + app.ResultTypeDropDownLabel.HorizontalAlignment = 'right'; + app.ResultTypeDropDownLabel.Position = [444 609 65 22]; + app.ResultTypeDropDownLabel.Text = 'ResultType'; + + % Create ResultTypeDropDown + app.ResultTypeDropDown = uidropdown(app.ResultsTab); + app.ResultTypeDropDown.Position = [524 609 100 22]; + + % Create PlotResultButton + app.PlotResultButton = uibutton(app.ResultsTab, 'push'); + app.PlotResultButton.Position = [477 559 100 23]; + app.PlotResultButton.Text = 'PlotResult'; + + % Create ResultTab + app.ResultTab = uitable(app.ResultsTab); + app.ResultTab.ColumnName = {'Result'}; + app.ResultTab.RowName = {}; + app.ResultTab.Position = [524 275 302 185]; + + % Create NewConfigButton + app.NewConfigButton = uibutton(app.UIFigure, 'push'); + app.NewConfigButton.Position = [284 774 94 23]; + app.NewConfigButton.Text = 'New Config'; + + app.LoadTemplateButton.ButtonPushedFcn = @(~,~)app.onLoadTemplate(); + app.ImportConfigButton.ButtonPushedFcn = @(~,~)app.onImportConfig(); + app.ExportConfigButton.ButtonPushedFcn = @(~,~)app.onExportConfig(); + app.RunButton.ButtonPushedFcn = @(~,~)app.onRun(); + app.ImportResultButton.ButtonPushedFcn = @(~,~)app.onImportResult(); + app.ExportResultButton.ButtonPushedFcn = @(~,~)app.onExportResult(); + app.NewConfigButton.ButtonPushedFcn = @(~,~)app.onNewConfig(); + app.RunCurrentConfigButton.ButtonPushedFcn = @(~,~)app.onRun(); + app.PlotResultButton.ButtonPushedFcn = @(~,~)app.onPlotResult(); + app.ResultTypeDropDown.ValueChangedFcn = @(~,~)app.onPlotResult(); + app.ModelFlowModelDropDown.ValueChangedFcn = @(~,~)app.onModelChanged(); + app.ModelGridModelDropDown.ValueChangedFcn = @(~,~)app.onModelChanged(); + + % Show the figure after all components are created + app.UIFigure.Visible = 'on'; + end + + function startupApp(app) + app.Controller = EDFMAppController(app); + app.Controller.startup(); + end + + function onNewConfig(app) + app.Controller.newConfig(); + end + + function onLoadTemplate(app) + app.Controller.loadTemplate(app.TemplateDropDown.Value); + end + + function onImportConfig(app) + app.Controller.importConfig(); + end + + function onExportConfig(app) + app.Controller.exportConfig(); + end + + function onRun(app) + app.Controller.runCurrentConfig(); + end + + function onImportResult(app) + app.Controller.importResults(); + end + + function onExportResult(app) + app.Controller.exportResults(); + end + + function onPlotResult(app) + app.Controller.plotResults(); + end + + function onModelChanged(app) + if ~isempty(app.Controller) + app.Controller.syncModelTabs(); + end + end + end + + % App creation and deletion + methods (Access = public) + + % Construct app + function app = EDFM_Simulator_App + + % Create UIFigure and components + createComponents(app) + + % Register the app with App Designer + registerApp(app, app.UIFigure) + + runStartupFcn(app, @(~,~)startupApp(app)); + + if nargout == 0 + clear app + end + end + + % Code that executes before app deletion + function delete(app) + + % Delete UIFigure when app is deleted + delete(app.UIFigure) + end + end +end