diff --git a/core functions/气水两相流部分代码/mainRS_MB_gas_water_flow.m b/core functions/气水两相流部分代码/mainRS_MB_gas_water_flow.m index 76dceab..ea5eb30 100644 --- a/core functions/气水两相流部分代码/mainRS_MB_gas_water_flow.m +++ b/core functions/气水两相流部分代码/mainRS_MB_gas_water_flow.m @@ -130,6 +130,7 @@ while t < tend if dt >= dtmax(k) dt = dtmax(k); end + emit_progress(w, sprintf('Progress: %.4f / %.4f day', t, sum(time)), count, t, dt); if i ~= Nmax % waitbar(t / tend); % disp(t); @@ -147,7 +148,21 @@ trun.leqs_solve_time=leqs_solve_time; trun.total_simulation_time = etime(clock,t_start); trun.Newton_step=Newton_step; trun.Newtons_vs_time=Newtons_vs_time; +emit_progress(w, 'Calculation completed', count, t, dt); fprintf('计算完成'); % close(h0); +end +function emit_progress(w, message, step, time_value, dt_value) +if ~isfield(w, 'progress_callback') || isempty(w.progress_callback) + return; +end +meta = struct( ... + 'step', step, ... + 'time', time_value, ... + 'dt', dt_value, ... + 'status', 'Running...'); + +feval(w.progress_callback, message, meta); +end diff --git a/core functions/油水两相流部分代码/mainRS_MB_oil_water_flow.m b/core functions/油水两相流部分代码/mainRS_MB_oil_water_flow.m index 5ee8e8d..b68aa1c 100644 --- a/core functions/油水两相流部分代码/mainRS_MB_oil_water_flow.m +++ b/core functions/油水两相流部分代码/mainRS_MB_oil_water_flow.m @@ -130,6 +130,7 @@ while t < tend if dt >= dtmax(k) dt = dtmax(k); end + emit_progress(w, sprintf('Progress: %.4f / %.4f day', t, sum(time)), count, t, dt); if i ~= Nmax % waitbar(t / tend); % disp(t); @@ -147,7 +148,21 @@ trun.leqs_solve_time=leqs_solve_time; trun.total_simulation_time = etime(clock,t_start); trun.Newton_step=Newton_step; trun.Newtons_vs_time=Newtons_vs_time; +emit_progress(w, 'Calculation completed', count, t, dt); fprintf('计算完成'); % close(h0); +end +function emit_progress(w, message, step, time_value, dt_value) +if ~isfield(w, 'progress_callback') || isempty(w.progress_callback) + return; +end +meta = struct( ... + 'step', step, ... + 'time', time_value, ... + 'dt', dt_value, ... + 'status', 'Running...'); + +feval(w.progress_callback, message, meta); +end diff --git a/core functions/程序整合及组分流部分代码/mainRS_MB_2026.m b/core functions/程序整合及组分流部分代码/mainRS_MB_2026.m index f75540f..1a629ed 100644 --- a/core functions/程序整合及组分流部分代码/mainRS_MB_2026.m +++ b/core functions/程序整合及组分流部分代码/mainRS_MB_2026.m @@ -142,6 +142,7 @@ for k = 1:size(well_schedules,1) if dt >= dtmax(k) dt = dtmax(k); end + emit_progress(w, sprintf('Progress: %.4f / %.4f day', t, sum(time)), count, t, dt); if i ~= Nmax % waitbar(t / tend); % disp(t); @@ -159,7 +160,21 @@ trun.leqs_solve_time=leqs_solve_time; trun.total_simulation_time = etime(clock,t_start); trun.Newton_step=Newton_step; trun.Newtons_vs_time=Newtons_vs_time; +emit_progress(w, 'Calculation completed', count, t, dt); fprintf('计算完成'); % close(h0); +end +function emit_progress(w, message, step, time_value, dt_value) +if ~isfield(w, 'progress_callback') || isempty(w.progress_callback) + return; +end +meta = struct( ... + 'step', step, ... + 'time', time_value, ... + 'dt', dt_value, ... + 'status', 'Running...'); + +feval(w.progress_callback, message, meta); +end diff --git a/core functions/程序整合及组分流部分代码/solver_NR.m b/core functions/程序整合及组分流部分代码/solver_NR.m index d06438b..59a79ae 100644 --- a/core functions/程序整合及组分流部分代码/solver_NR.m +++ b/core functions/程序整合及组分流部分代码/solver_NR.m @@ -1,4 +1,8 @@ -function [Times, OutputRs, Wellpara, trun] = solver_NR(r, flow_model, f, os, state0, yitap,yitas,omega,Nmax,epsave,epsmax,dtmin,dtmax,Wellc,time,well_schedules) +function [Times, OutputRs, Wellpara, trun] = solver_NR(r, flow_model, f, os, state0, yitap,yitas,omega,Nmax,epsave,epsmax,dtmin,dtmax,Wellc,time,well_schedules, progress_callback) +if nargin < 17 + progress_callback = []; +end + w.yitap = yitap; w.yitas = yitas; w.omega = omega; @@ -12,6 +16,7 @@ w.dtmax = dtmax; w.Wellc = Wellc; w.time = time; w.well_schedules = well_schedules; +w.progress_callback = progress_callback; %% 计算 if r.modelflag==1 || r.modelflag==4 || r.modelflag==5 if flow_model == 1 @@ -25,4 +30,4 @@ if r.modelflag==1 || r.modelflag==4 || r.modelflag==5 end % [Times, OutputRs, Wellpara, trun] = mainRS_MB_2014(r, f, os, w, state0); end -end \ No newline at end of file +end diff --git a/edfm_GUI.zip b/edfm_GUI.zip deleted file mode 100644 index 5663956..0000000 Binary files a/edfm_GUI.zip and /dev/null differ diff --git a/gui_support/app/EDFMAppController.m b/gui_support/app/EDFMAppController.m index 8a97c96..bb8cbd8 100644 --- a/gui_support/app/EDFMAppController.m +++ b/gui_support/app/EDFMAppController.m @@ -88,21 +88,20 @@ classdef EDFMAppController < handle drawnow; try - logText = evalc('[r, Times, OutputRs, Wellpara, trun] = run_case(obj.Config);'); + progress_callback = @(message, meta) obj.onRunProgress(message, meta); + [r, Times, OutputRs, Wellpara, trun] = run_case(obj.Config, progress_callback); obj.Results = struct( ... 'r', r, ... 'Times', Times, ... 'OutputRs', {OutputRs}, ... 'Wellpara', {Wellpara}, ... 'trun', trun, ... - 'captured_log', logText); - if ~isempty(strtrim(logText)) - obj.appendLog(logText); - end + 'captured_log', ''); obj.refreshResults(); if strlength(obj.CurrentPlotAction) ~= 0 obj.refreshCasePlotControls(obj.CurrentPlotAction); end + obj.appendLog('Run completed.'); obj.setRunProgress('Completed'); obj.setStatus('Run completed'); catch ME @@ -690,6 +689,35 @@ classdef EDFMAppController < handle drawnow limitrate; end + function onRunProgress(obj, message, meta) + if nargin < 3 || ~isstruct(meta) + meta = struct(); + end + + if nargin >= 2 && strlength(strtrim(string(message))) ~= 0 + obj.appendLog(message); + end + + if isfield(meta, 'status') && ~isempty(meta.status) + obj.setRunProgress(meta.status); + end + + if isfield(meta, 'step') || isfield(meta, 'time') || isfield(meta, 'dt') + stageText = obj.getMetaText(meta, 'step', '-'); + timeText = obj.getMetaText(meta, 'time', '-'); + dtText = obj.getMetaText(meta, 'dt', '-'); + obj.setRunHeader(stageText, timeText, dtText); + end + end + + function textValue = getMetaText(obj, meta, fieldName, fallback) + if isfield(meta, fieldName) && ~isempty(meta.(fieldName)) + textValue = obj.valueToShortText(meta.(fieldName)); + else + textValue = fallback; + end + end + function setRunProgress(obj, textValue) if isprop(obj.App, 'RunProgressLabel') obj.App.RunProgressLabel.Text = ['RunProgress: ', char(string(textValue))]; diff --git a/gui_support/app/EDFM_Simulator_App.mlapp b/gui_support/app/EDFM_Simulator_App.mlapp index ec3615c..5ca2557 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/context.txt b/gui_support/app/context.txt new file mode 100644 index 0000000..fc4042e --- /dev/null +++ b/gui_support/app/context.txt @@ -0,0 +1,2505 @@ +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 + ScheduleLabel matlab.ui.control.Label + WellLocationLabel matlab.ui.control.Label + Well2Label matlab.ui.control.Label + Well1Label matlab.ui.control.Label + ScheduleTimeConfigLabel matlab.ui.control.Label + AddFracLocRowButton matlab.ui.control.Button + DeleteFracLocRowButton matlab.ui.control.Button + DeleteScheduleRowButton matlab.ui.control.Button + AddScheduleRowButton matlab.ui.control.Button + AddWell2RowButton matlab.ui.control.Button + DeleteWell2RowButton matlab.ui.control.Button + DeleteWell1RowButton matlab.ui.control.Button + AddWell1RowButton matlab.ui.control.Button + 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 + SolverRunTab 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 + RunProgressLabel matlab.ui.control.Label + RunLogTextArea matlab.ui.control.TextArea + RunLogTextAreaLabel matlab.ui.control.Label + ResultsTab matlab.ui.container.Tab + ResultSummaryTextArea matlab.ui.control.TextArea + ResultSummaryTextAreaLabel matlab.ui.control.Label + PlotTimeStepValueLabel matlab.ui.control.Label + PlotTimeStepSlider matlab.ui.control.Slider + PlotWellDropDown matlab.ui.control.DropDown + PlotWellDropDownLabel matlab.ui.control.Label + PlotMetricDropDown matlab.ui.control.DropDown + PlotMetricDropDownLabel matlab.ui.control.Label + PlotPropertyDropDown matlab.ui.control.DropDown + PlotPropertyDropDownLabel matlab.ui.control.Label + PlotLayerDropDown matlab.ui.control.DropDown + PlotLayerDropDownLabel matlab.ui.control.Label + PlotWellResponseButton matlab.ui.control.Button + PlotSPDPButton matlab.ui.control.Button + PlotPermButton matlab.ui.control.Button + Plot3DDistributionButton matlab.ui.control.Button + Plot2DLayerButton matlab.ui.control.Button + ResultTab matlab.ui.control.Table + Button matlab.ui.control.Button + ResultTypeDropDown matlab.ui.control.DropDown + 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 = public) + Controller EDFMAppController % Description + end + + methods (Access = public) + % + function startupApp(app) + app.Controller = EDFMAppController(app); + app.Controller.startup(); + end + end + + + % Callbacks that handle component events + methods (Access = private) + + % Code that executes after component creation + function startupFcn(app) + app.Controller = EDFMAppController(app); + app.Controller.startup(); + end + + % Button pushed function: NewConfigButton + function onNewConfig(app, event) + app.Controller.newConfig(); + end + + % Button pushed function: LoadTemplateButton + function onLoadTemplate(app, event) + app.Controller.loadTemplate(app.TemplateDropDown.Value) + end + + % Button pushed function: ImportConfigButton + function onImportConfig(app, event) + app.Controller.importConfig(); + end + + % Button pushed function: ExportConfigButton + function onExportConfig(app, event) + app.Controller.exportConfig(); + end + + % Button pushed function: RunButton + function onRun(app, event) + app.Controller.runCurrentConfig(); + end + + % Button pushed function: ImportResultButton + function onImportResult(app, event) + app.Controller.importResults(); + end + + % Button pushed function: ExportResultButton + function onExportResult(app, event) + app.Controller.exportResults(); + end + + % Button pushed function: Button + function onPlotResult(app, event) + app.Controller.plotResults(); + end + + % Button pushed function: PlotWellResponseButton + function PlotWellResponseButtonPushed(app, event) + % app.Controller.runCasePlot('plot_well_response'); + app.Controller.activateCasePlot('plot_well_response'); + end + + % Button pushed function: Plot2DLayerButton + function Plot2DLayerButtonPushed(app, event) + % app.Controller.runCasePlot('plot_2d_layer'); + app.Controller.activateCasePlot('plot_2d_layer'); + end + + % Button pushed function: Plot3DDistributionButton + function Plot3DDistributionButtonPushed(app, event) + % app.Controller.runCasePlot('plot_3d_distribution'); + app.Controller.runCasePlot('plot_3d_distribution'); + end + + % Button pushed function: PlotPermButton + function PlotPermButtonPushed(app, event) + % app.Controller.runCasePlot('plot_perm'); + app.Controller.runCasePlot('plot_perm'); + end + + % Button pushed function: PlotSPDPButton + function PlotSPDPButtonPushed(app, event) + % app.Controller.runCasePlot('plot_sp_dp'); + app.Controller.runCasePlot('plot_sp_dp'); + end + + % Value changed function: PlotLayerDropDown + function PlotLayerDropDownValueChanged(app, event) + value = app.PlotLayerDropDown.Value; + app.Controller.onPlotOptionChanged(); + end + + % Value changed function: PlotPropertyDropDown + function PlotPropertyDropDownValueChanged(app, event) + value = app.PlotPropertyDropDown.Value; + app.Controller.onPlotOptionChanged(); + end + + % Value changed function: PlotWellDropDown + function PlotWellDropDownValueChanged(app, event) + value = app.PlotWellDropDown.Value; + app.Controller.onPlotOptionChanged(); + end + + % Value changed function: PlotMetricDropDown + function PlotMetricDropDownValueChanged(app, event) + value = app.PlotMetricDropDown.Value; + app.Controller.onPlotOptionChanged(); + end + + % Value changed function: PlotTimeStepSlider + function PlotTimeStepSliderValueChanged(app, event) + value = app.PlotTimeStepSlider.Value; + app.Controller.onPlotOptionChanged(); + end + + % Button pushed function: AddWell1RowButton + function AddWell1RowButtonPushed(app, event) + app.Controller.addTableRow('Well1Table'); + end + + % Button pushed function: DeleteWell1RowButton + function DeleteWell1RowButtonPushed(app, event) + app.Controller.deleteSelectedTableRow('Well1Table'); + end + + % Button pushed function: AddWell2RowButton + function AddWell2RowButtonPushed(app, event) + app.Controller.addTableRow('Well2Table'); + end + + % Button pushed function: DeleteWell2RowButton + function DeleteWell2RowButtonPushed(app, event) + app.Controller.deleteSelectedTableRow('Well2Table'); + end + + % Button pushed function: AddFracLocRowButton + function AddFracLocRowButtonPushed(app, event) + app.Controller.addTableRow('FractureWellLocationTable'); + end + + % Button pushed function: DeleteFracLocRowButton + function DeleteFracLocRowButtonPushed(app, event) + app.Controller.deleteSelectedTableRow('FractureWellLocationTable'); + end + + % Button pushed function: AddScheduleRowButton + function AddScheduleRowButtonPushed(app, event) + app.Controller.addTableRow('ScheduleTable'); + end + + % Button pushed function: DeleteScheduleRowButton + function DeleteScheduleRowButtonPushed(app, event) + app.Controller.deleteSelectedTableRow('ScheduleTable'); + end + + % Cell selection callback: Well1Table + function Well1TableCellSelection(app, event) + indices = event.Indices; + app.Controller.onTableSelectionChanged('Well1Table', event.Indices); + end + + % Cell selection callback: Well2Table + function Well2TableCellSelection(app, event) + indices = event.Indices; + app.Controller.onTableSelectionChanged('Well2Table', event.Indices); + end + + % Cell selection callback: FractureWellLocationTable + function FractureWellLocationTableCellSelection(app, event) + indices = event.Indices; + app.Controller.onTableSelectionChanged('FractureWellLocationTable', event.Indices); + end + + % Cell selection callback: ScheduleTable + function ScheduleTableCellSelection(app, event) + indices = event.Indices; + app.Controller.onTableSelectionChanged('ScheduleTable', event.Indices); + end + 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.ButtonPushedFcn = createCallbackFcn(app, @onLoadTemplate, true); + app.LoadTemplateButton.Position = [177 774 94 23]; + app.LoadTemplateButton.Text = 'Load Template'; + + % Create ImportConfigButton + app.ImportConfigButton = uibutton(app.UIFigure, 'push'); + app.ImportConfigButton.ButtonPushedFcn = createCallbackFcn(app, @onImportConfig, true); + app.ImportConfigButton.Position = [405 774 87 23]; + app.ImportConfigButton.Text = 'Import Config'; + + % Create ExportConfigButton + app.ExportConfigButton = uibutton(app.UIFigure, 'push'); + app.ExportConfigButton.ButtonPushedFcn = createCallbackFcn(app, @onExportConfig, true); + app.ExportConfigButton.Position = [524 774 88 23]; + app.ExportConfigButton.Text = 'Export Config'; + + % Create RunButton + app.RunButton = uibutton(app.UIFigure, 'push'); + app.RunButton.ButtonPushedFcn = createCallbackFcn(app, @onRun, true); + app.RunButton.Position = [642 774 70 23]; + app.RunButton.Text = 'Run'; + + % Create ImportResultButton + app.ImportResultButton = uibutton(app.UIFigure, 'push'); + app.ImportResultButton.ButtonPushedFcn = createCallbackFcn(app, @onImportResult, true); + app.ImportResultButton.Position = [754 774 86 23]; + app.ImportResultButton.Text = 'Import Result'; + + % Create ExportResultButton + app.ExportResultButton = uibutton(app.UIFigure, 'push'); + app.ExportResultButton.ButtonPushedFcn = createCallbackFcn(app, @onExportResult, true); + app.ExportResultButton.Position = [875 774 87 23]; + app.ExportResultButton.Text = 'Export Result'; + + % Create StatusLabel + app.StatusLabel = uilabel(app.UIFigure); + app.StatusLabel.Position = [984 774 251 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 = [66 614 61 22]; + app.ModelFlagDropDownLabel.Text = 'ModelFlag'; + + % Create ModelFlagDropDown + app.ModelFlagDropDown = uidropdown(app.ModelTab); + app.ModelFlagDropDown.Items = {'1', '', '', ''}; + app.ModelFlagDropDown.Position = [142 614 100 22]; + app.ModelFlagDropDown.Value = ''; + + % Create GridModelDropDownLabel + app.GridModelDropDownLabel = uilabel(app.ModelTab); + app.GridModelDropDownLabel.HorizontalAlignment = 'right'; + app.GridModelDropDownLabel.Position = [67 552 60 22]; + app.GridModelDropDownLabel.Text = 'GridModel'; + + % Create ModelGridModelDropDown + app.ModelGridModelDropDown = uidropdown(app.ModelTab); + app.ModelGridModelDropDown.Items = {'1', '2', '', ''}; + app.ModelGridModelDropDown.Position = [142 552 100 22]; + app.ModelGridModelDropDown.Value = ''; + + % Create FlowModelDropDownLabel + app.FlowModelDropDownLabel = uilabel(app.ModelTab); + app.FlowModelDropDownLabel.HorizontalAlignment = 'right'; + app.FlowModelDropDownLabel.Position = [66 488 63 22]; + app.FlowModelDropDownLabel.Text = 'FlowModel'; + + % Create ModelFlowModelDropDown + app.ModelFlowModelDropDown = uidropdown(app.ModelTab); + app.ModelFlowModelDropDown.Items = {'1', '2', '3'}; + app.ModelFlowModelDropDown.Position = [144 488 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 566 263 101]; + + % Create DyTextAreaLabel + app.DyTextAreaLabel = uilabel(app.GridTab); + app.DyTextAreaLabel.HorizontalAlignment = 'right'; + app.DyTextAreaLabel.Position = [49 529 25 22]; + app.DyTextAreaLabel.Text = 'Dy'; + + % Create GridDyTextArea + app.GridDyTextArea = uitextarea(app.GridTab); + app.GridDyTextArea.Position = [89 455 263 98]; + + % Create DzTextAreaLabel + app.DzTextAreaLabel = uilabel(app.GridTab); + app.DzTextAreaLabel.HorizontalAlignment = 'right'; + app.DzTextAreaLabel.Position = [52 400 25 22]; + app.DzTextAreaLabel.Text = 'Dz'; + + % Create GridDzTextArea + app.GridDzTextArea = uitextarea(app.GridTab); + app.GridDzTextArea.Position = [92 300 263 124]; + + % Create NTGTextAreaLabel + app.NTGTextAreaLabel = uilabel(app.GridTab); + app.NTGTextAreaLabel.HorizontalAlignment = 'right'; + app.NTGTextAreaLabel.Position = [48 231 30 22]; + app.NTGTextAreaLabel.Text = 'NTG'; + + % Create GridNTGTextArea + app.GridNTGTextArea = uitextarea(app.GridTab); + app.GridNTGTextArea.Position = [93 147 267 108]; + + % 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 = [48 622 103 22]; + app.FractureInputStyleDropDownLabel.Text = 'FractureInputStyle'; + + % Create FractureInputStyleDropDown + app.FractureInputStyleDropDown = uidropdown(app.FractureTab); + app.FractureInputStyleDropDown.Items = {''}; + app.FractureInputStyleDropDown.Position = [166 622 218 22]; + app.FractureInputStyleDropDown.Value = ''; + + % Create FractureInputTextAreaLabel + app.FractureInputTextAreaLabel = uilabel(app.FractureTab); + app.FractureInputTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureInputTextAreaLabel.Position = [59 571 76 22]; + app.FractureInputTextAreaLabel.Text = 'FractureInput'; + + % Create FractureInputTextArea + app.FractureInputTextArea = uitextarea(app.FractureTab); + app.FractureInputTextArea.Position = [150 497 241 98]; + + % Create FractureLinesTextAreaLabel + app.FractureLinesTextAreaLabel = uilabel(app.FractureTab); + app.FractureLinesTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureLinesTextAreaLabel.Position = [62 448 78 22]; + app.FractureLinesTextAreaLabel.Text = 'FractureLines'; + + % Create FractureLinesTextArea + app.FractureLinesTextArea = uitextarea(app.FractureTab); + app.FractureLinesTextArea.Position = [155 353 237 119]; + + % Create FractureHeightsTextAreaLabel + app.FractureHeightsTextAreaLabel = uilabel(app.FractureTab); + app.FractureHeightsTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureHeightsTextAreaLabel.Position = [52 316 90 22]; + app.FractureHeightsTextAreaLabel.Text = 'FractureHeights'; + + % Create FractureHeightsTextArea + app.FractureHeightsTextArea = uitextarea(app.FractureTab); + app.FractureHeightsTextArea.Position = [157 254 234 86]; + + % Create FlowBarrierFlagsTextAreaLabel + app.FlowBarrierFlagsTextAreaLabel = uilabel(app.FractureTab); + app.FlowBarrierFlagsTextAreaLabel.HorizontalAlignment = 'right'; + app.FlowBarrierFlagsTextAreaLabel.Position = [50 215 96 22]; + app.FlowBarrierFlagsTextAreaLabel.Text = 'FlowBarrierFlags'; + + % Create FractureFlowBarrierFlagsTextArea + app.FractureFlowBarrierFlagsTextArea = uitextarea(app.FractureTab); + app.FractureFlowBarrierFlagsTextArea.Position = [161 158 234 81]; + + % 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 = [30 553 56 22]; + app.BoundaryTextAreaLabel.Text = 'Boundary'; + + % Create SPBoundaryTextArea + app.SPBoundaryTextArea = uitextarea(app.SPTab); + app.SPBoundaryTextArea.Position = [101 500 150 77]; + + % Create InvalidLayerTextAreaLabel + app.InvalidLayerTextAreaLabel = uilabel(app.SPTab); + app.InvalidLayerTextAreaLabel.HorizontalAlignment = 'right'; + app.InvalidLayerTextAreaLabel.Position = [19 458 70 22]; + app.InvalidLayerTextAreaLabel.Text = 'InvalidLayer'; + + % Create SPInvalidLayerTextArea + app.SPInvalidLayerTextArea = uitextarea(app.SPTab); + app.SPInvalidLayerTextArea.Position = [104 404 150 78]; + + % Create MatrixKxTextAreaLabel + app.MatrixKxTextAreaLabel = uilabel(app.SPTab); + app.MatrixKxTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixKxTextAreaLabel.Position = [301 548 52 22]; + app.MatrixKxTextAreaLabel.Text = 'MatrixKx'; + + % Create SPMatrixKxTextArea + app.SPMatrixKxTextArea = uitextarea(app.SPTab); + app.SPMatrixKxTextArea.Position = [368 512 150 60]; + + % Create MatrixKyTextAreaLabel + app.MatrixKyTextAreaLabel = uilabel(app.SPTab); + app.MatrixKyTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixKyTextAreaLabel.Position = [302 452 52 22]; + app.MatrixKyTextAreaLabel.Text = 'MatrixKy'; + + % Create SPMatrixKyTextArea + app.SPMatrixKyTextArea = uitextarea(app.SPTab); + app.SPMatrixKyTextArea.Position = [369 416 150 60]; + + % Create MatrixKzTextAreaLabel + app.MatrixKzTextAreaLabel = uilabel(app.SPTab); + app.MatrixKzTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixKzTextAreaLabel.Position = [301 350 52 22]; + app.MatrixKzTextAreaLabel.Text = 'MatrixKz'; + + % Create SPMatrixKzTextArea + app.SPMatrixKzTextArea = uitextarea(app.SPTab); + app.SPMatrixKzTextArea.Position = [368 314 150 60]; + + % Create MatrixPoriTextAreaLabel + app.MatrixPoriTextAreaLabel = uilabel(app.SPTab); + app.MatrixPoriTextAreaLabel.HorizontalAlignment = 'right'; + app.MatrixPoriTextAreaLabel.Position = [294 244 59 22]; + app.MatrixPoriTextAreaLabel.Text = 'MatrixPori'; + + % Create SPMatrixPoriTextArea + app.SPMatrixPoriTextArea = uitextarea(app.SPTab); + app.SPMatrixPoriTextArea.Position = [368 208 150 60]; + + % Create MatrixPrporEditFieldLabel + app.MatrixPrporEditFieldLabel = uilabel(app.SPTab); + app.MatrixPrporEditFieldLabel.HorizontalAlignment = 'right'; + app.MatrixPrporEditFieldLabel.Position = [17 310 67 22]; + app.MatrixPrporEditFieldLabel.Text = 'MatrixPrpor'; + + % Create SPMatrixPrporEditField + app.SPMatrixPrporEditField = uieditfield(app.SPTab, 'numeric'); + app.SPMatrixPrporEditField.Position = [99 310 148 22]; + + % Create MatrixCporEditFieldLabel + app.MatrixCporEditFieldLabel = uilabel(app.SPTab); + app.MatrixCporEditFieldLabel.HorizontalAlignment = 'right'; + app.MatrixCporEditFieldLabel.Position = [18 263 64 22]; + app.MatrixCporEditFieldLabel.Text = 'MatrixCpor'; + + % Create SPMatrixCporEditField + app.SPMatrixCporEditField = uieditfield(app.SPTab, 'numeric'); + app.SPMatrixCporEditField.Position = [97 263 150 22]; + + % Create RockDensityEditFieldLabel + app.RockDensityEditFieldLabel = uilabel(app.SPTab); + app.RockDensityEditFieldLabel.HorizontalAlignment = 'right'; + app.RockDensityEditFieldLabel.Position = [16 358 72 22]; + app.RockDensityEditFieldLabel.Text = 'RockDensity'; + + % Create SPRockDensityEditField + app.SPRockDensityEditField = uieditfield(app.SPTab, 'numeric'); + app.SPRockDensityEditField.Position = [103 358 144 22]; + + % Create FractureKfTextAreaLabel + app.FractureKfTextAreaLabel = uilabel(app.SPTab); + app.FractureKfTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureKfTextAreaLabel.Position = [289 146 61 22]; + app.FractureKfTextAreaLabel.Text = 'FractureKf'; + + % Create SPFractureKfTextArea + app.SPFractureKfTextArea = uitextarea(app.SPTab); + app.SPFractureKfTextArea.Position = [365 110 150 60]; + + % Create FractureWfTextAreaLabel + app.FractureWfTextAreaLabel = uilabel(app.SPTab); + app.FractureWfTextAreaLabel.HorizontalAlignment = 'right'; + app.FractureWfTextAreaLabel.Position = [601 549 64 22]; + app.FractureWfTextAreaLabel.Text = 'FractureWf'; + + % Create SPFractureWfTextArea + app.SPFractureWfTextArea = uitextarea(app.SPTab); + app.SPFractureWfTextArea.Position = [680 513 150 60]; + + % Create FracturePorfTextAreaLabel + app.FracturePorfTextAreaLabel = uilabel(app.SPTab); + app.FracturePorfTextAreaLabel.HorizontalAlignment = 'right'; + app.FracturePorfTextAreaLabel.Position = [601 452 72 22]; + app.FracturePorfTextAreaLabel.Text = 'FracturePorf'; + + % Create SPFracturePorfTextArea + app.SPFracturePorfTextArea = uitextarea(app.SPTab); + app.SPFracturePorfTextArea.Position = [688 416 150 60]; + + % Create FractureCporfEditFieldLabel + app.FractureCporfEditFieldLabel = uilabel(app.SPTab); + app.FractureCporfEditFieldLabel.HorizontalAlignment = 'right'; + app.FractureCporfEditFieldLabel.Position = [11 213 79 22]; + app.FractureCporfEditFieldLabel.Text = 'FractureCporf'; + + % Create SPFractureCporfEditField + app.SPFractureCporfEditField = uieditfield(app.SPTab, 'numeric'); + app.SPFractureCporfEditField.Position = [105 213 142 22]; + + % Create FracturePrporEditFieldLabel + app.FracturePrporEditFieldLabel = uilabel(app.SPTab); + app.FracturePrporEditFieldLabel.HorizontalAlignment = 'right'; + app.FracturePrporEditFieldLabel.Position = [12 171 79 22]; + app.FracturePrporEditFieldLabel.Text = 'FracturePrpor'; + + % Create SPFracturePrporEditField + app.SPFracturePrporEditField = uieditfield(app.SPTab, 'numeric'); + app.SPFracturePrporEditField.Position = [106 171 140 22]; + + % Create StressFractureEditFieldLabel + app.StressFractureEditFieldLabel = uilabel(app.SPTab); + app.StressFractureEditFieldLabel.HorizontalAlignment = 'right'; + app.StressFractureEditFieldLabel.Position = [10 123 84 22]; + app.StressFractureEditFieldLabel.Text = 'StressFracture'; + + % Create SPStressFractureEditField + app.SPStressFractureEditField = uieditfield(app.SPTab, 'numeric'); + app.SPStressFractureEditField.Position = [109 123 138 22]; + + % Create StressMatrixEditFieldLabel + app.StressMatrixEditFieldLabel = uilabel(app.SPTab); + app.StressMatrixEditFieldLabel.HorizontalAlignment = 'right'; + app.StressMatrixEditFieldLabel.Position = [17 81 72 22]; + app.StressMatrixEditFieldLabel.Text = 'StressMatrix'; + + % Create SPStressMatrixEditField + app.SPStressMatrixEditField = uieditfield(app.SPTab, 'numeric'); + app.SPStressMatrixEditField.Position = [104 81 142 22]; + + % Create StressRefPressureEditFieldLabel + app.StressRefPressureEditFieldLabel = uilabel(app.SPTab); + app.StressRefPressureEditFieldLabel.HorizontalAlignment = 'right'; + app.StressRefPressureEditFieldLabel.Position = [-5 41 106 22]; + app.StressRefPressureEditFieldLabel.Text = 'StressRefPressure'; + + % Create SPStressRefPressureEditField + app.SPStressRefPressureEditField = uieditfield(app.SPTab, 'numeric'); + app.SPStressRefPressureEditField.Position = [116 41 129 22]; + + % Create RptEditFieldLabel + app.RptEditFieldLabel = uilabel(app.SPTab); + app.RptEditFieldLabel.HorizontalAlignment = 'right'; + app.RptEditFieldLabel.Position = [621 354 25 22]; + app.RptEditFieldLabel.Text = 'Rpt'; + + % Create SPRptEditField + app.SPRptEditField = uieditfield(app.SPTab, 'numeric'); + app.SPRptEditField.Position = [661 354 170 22]; + + % Create cfEditFieldLabel + app.cfEditFieldLabel = uilabel(app.SPTab); + app.cfEditFieldLabel.HorizontalAlignment = 'right'; + app.cfEditFieldLabel.Position = [619 303 25 22]; + app.cfEditFieldLabel.Text = 'cf'; + + % Create SPcfEditField + app.SPcfEditField = uieditfield(app.SPTab, 'numeric'); + app.SPcfEditField.Position = [659 303 172 22]; + + % Create caEditFieldLabel + app.caEditFieldLabel = uilabel(app.SPTab); + app.caEditFieldLabel.HorizontalAlignment = 'right'; + app.caEditFieldLabel.Position = [621 244 25 22]; + app.caEditFieldLabel.Text = 'ca'; + + % Create SPcaEditField + app.SPcaEditField = uieditfield(app.SPTab, 'numeric'); + app.SPcaEditField.Position = [661 244 165 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 = [39 448 73 22]; + app.gas_propVLEditFieldLabel.Text = 'gas_prop.VL'; + + % Create GWgas_propVLEditField + app.GWgas_propVLEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWgas_propVLEditField.Position = [127 448 122 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 119 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 118 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 112 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 119 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 128 22]; + + % Create gas_modelDropDownLabel + app.gas_modelDropDownLabel = uilabel(app.GasWaterTab); + app.gas_modelDropDownLabel.HorizontalAlignment = 'right'; + app.gas_modelDropDownLabel.Position = [41 156 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 156 125 22]; + app.GWgas_modelDropDown.Value = ''; + + % Create prgEditFieldLabel + app.prgEditFieldLabel = uilabel(app.GasWaterTab); + app.prgEditFieldLabel.HorizontalAlignment = 'right'; + app.prgEditFieldLabel.Position = [68 99 25 22]; + app.prgEditFieldLabel.Text = 'prg'; + + % Create GWprgEditField + app.GWprgEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWprgEditField.Position = [108 99 137 22]; + + % Create BgiEditFieldLabel + app.BgiEditFieldLabel = uilabel(app.GasWaterTab); + app.BgiEditFieldLabel.HorizontalAlignment = 'right'; + app.BgiEditFieldLabel.Position = [67 57 25 22]; + app.BgiEditFieldLabel.Text = 'Bgi'; + + % Create GWBgiEditField + app.GWBgiEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWBgiEditField.Position = [107 57 134 22]; + + % Create cgEditFieldLabel + app.cgEditFieldLabel = uilabel(app.GasWaterTab); + app.cgEditFieldLabel.HorizontalAlignment = 'right'; + app.cgEditFieldLabel.Position = [66 10 25 22]; + app.cgEditFieldLabel.Text = 'cg'; + + % Create GWcgEditField + app.GWcgEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWcgEditField.Position = [106 10 137 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 134 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 141 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 = [323 66 33 22]; + app.MUGTextAreaLabel.Text = 'MUG'; + + % Create GWMUGTextArea + app.GWMUGTextArea = uitextarea(app.GasWaterTab); + app.GWMUGTextArea.Position = [371 30 150 60]; + + % Create prwEditFieldLabel + app.prwEditFieldLabel = uilabel(app.GasWaterTab); + app.prwEditFieldLabel.HorizontalAlignment = 'right'; + app.prwEditFieldLabel.Position = [344 444 25 22]; + app.prwEditFieldLabel.Text = 'prw'; + + % Create GWprwEditField + app.GWprwEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWprwEditField.Position = [384 444 135 22]; + + % Create BwiEditFieldLabel + app.BwiEditFieldLabel = uilabel(app.GasWaterTab); + app.BwiEditFieldLabel.HorizontalAlignment = 'right'; + app.BwiEditFieldLabel.Position = [348 403 25 22]; + app.BwiEditFieldLabel.Text = 'Bwi'; + + % Create GWBwiEditField + app.GWBwiEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWBwiEditField.Position = [388 403 136 22]; + + % Create cwEditFieldLabel + app.cwEditFieldLabel = uilabel(app.GasWaterTab); + app.cwEditFieldLabel.HorizontalAlignment = 'right'; + app.cwEditFieldLabel.Position = [349 363 25 22]; + app.cwEditFieldLabel.Text = 'cw'; + + % Create GWcwEditField + app.GWcwEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWcwEditField.Position = [389 363 130 22]; + + % Create vwiEditFieldLabel + app.vwiEditFieldLabel = uilabel(app.GasWaterTab); + app.vwiEditFieldLabel.HorizontalAlignment = 'right'; + app.vwiEditFieldLabel.Position = [605 448 25 22]; + app.vwiEditFieldLabel.Text = 'vwi'; + + % Create GWvwiEditField + app.GWvwiEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWvwiEditField.Position = [645 448 100 22]; + + % Create cvwEditFieldLabel + app.cvwEditFieldLabel = uilabel(app.GasWaterTab); + app.cvwEditFieldLabel.HorizontalAlignment = 'right'; + app.cvwEditFieldLabel.Position = [603 399 26 22]; + app.cvwEditFieldLabel.Text = 'cvw'; + + % Create GWcvwEditField + app.GWcvwEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWcvwEditField.Position = [644 399 100 22]; + + % Create ifpcglEditFieldLabel + app.ifpcglEditFieldLabel = uilabel(app.GasWaterTab); + app.ifpcglEditFieldLabel.HorizontalAlignment = 'right'; + app.ifpcglEditFieldLabel.Position = [596 353 33 22]; + app.ifpcglEditFieldLabel.Text = 'ifpcgl'; + + % Create GWifpcglEditField + app.GWifpcglEditField = uieditfield(app.GasWaterTab, 'numeric'); + app.GWifpcglEditField.Position = [644 353 100 22]; + + % Create RPGWTextAreaLabel + app.RPGWTextAreaLabel = uilabel(app.GasWaterTab); + app.RPGWTextAreaLabel.HorizontalAlignment = 'right'; + app.RPGWTextAreaLabel.Position = [590 304 42 22]; + app.RPGWTextAreaLabel.Text = 'RPGW'; + + % Create GWRPGWTextArea + app.GWRPGWTextArea = uitextarea(app.GasWaterTab); + app.GWRPGWTextArea.Position = [647 268 150 60]; + + % Create PRFTextAreaLabel + app.PRFTextAreaLabel = uilabel(app.GasWaterTab); + app.PRFTextAreaLabel.HorizontalAlignment = 'right'; + app.PRFTextAreaLabel.Position = [603 223 29 22]; + app.PRFTextAreaLabel.Text = 'PRF'; + + % Create GWPRFTextArea + app.GWPRFTextArea = uitextarea(app.GasWaterTab); + app.GWPRFTextArea.Position = [647 187 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 = [69 330 25 22]; + app.proEditFieldLabel.Text = 'pro'; + + % Create OWproEditField + app.OWproEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWproEditField.Position = [109 330 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 112 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 111 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 110 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 112 22]; + + % Create PprTextAreaLabel_2 + app.PprTextAreaLabel_2 = uilabel(app.OilWaterTab); + app.PprTextAreaLabel_2.HorizontalAlignment = 'right'; + app.PprTextAreaLabel_2.Position = [20 143 25 22]; + app.PprTextAreaLabel_2.Text = 'Ppr'; + + % Create OWPprTextArea + app.OWPprTextArea = uitextarea(app.OilWaterTab); + app.OWPprTextArea.Position = [60 107 150 60]; + + % Create BOTextAreaLabel + app.BOTextAreaLabel = uilabel(app.OilWaterTab); + app.BOTextAreaLabel.HorizontalAlignment = 'right'; + app.BOTextAreaLabel.Position = [20 57 25 22]; + app.BOTextAreaLabel.Text = 'BO'; + + % Create OWBOTextArea + app.OWBOTextArea = uitextarea(app.OilWaterTab); + app.OWBOTextArea.Position = [60 21 150 60]; + + % Create MUOTextAreaLabel + app.MUOTextAreaLabel = uilabel(app.OilWaterTab); + app.MUOTextAreaLabel.HorizontalAlignment = 'right'; + app.MUOTextAreaLabel.Position = [303 464 33 22]; + app.MUOTextAreaLabel.Text = 'MUO'; + + % Create OWMUOTextArea + app.OWMUOTextArea = uitextarea(app.OilWaterTab); + app.OWMUOTextArea.Position = [351 428 150 60]; + + % Create prwEditFieldLabel_2 + app.prwEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.prwEditFieldLabel_2.HorizontalAlignment = 'right'; + app.prwEditFieldLabel_2.Position = [325 383 25 22]; + app.prwEditFieldLabel_2.Text = 'prw'; + + % Create OWprwEditField + app.OWprwEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWprwEditField.Position = [365 383 136 22]; + + % Create BwiEditFieldLabel_2 + app.BwiEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.BwiEditFieldLabel_2.HorizontalAlignment = 'right'; + app.BwiEditFieldLabel_2.Position = [328 336 25 22]; + app.BwiEditFieldLabel_2.Text = 'Bwi'; + + % Create OWBwiEditField + app.OWBwiEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWBwiEditField.Position = [368 336 133 22]; + + % Create cwEditFieldLabel_2 + app.cwEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.cwEditFieldLabel_2.HorizontalAlignment = 'right'; + app.cwEditFieldLabel_2.Position = [325 286 25 22]; + app.cwEditFieldLabel_2.Text = 'cw'; + + % Create OWcwEditField + app.OWcwEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWcwEditField.Position = [365 286 133 22]; + + % Create vwiEditFieldLabel_2 + app.vwiEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.vwiEditFieldLabel_2.HorizontalAlignment = 'right'; + app.vwiEditFieldLabel_2.Position = [325 236 25 22]; + app.vwiEditFieldLabel_2.Text = 'vwi'; + + % Create OWvwiEditField + app.OWvwiEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWvwiEditField.Position = [365 236 132 22]; + + % Create cvwEditFieldLabel_2 + app.cvwEditFieldLabel_2 = uilabel(app.OilWaterTab); + app.cvwEditFieldLabel_2.HorizontalAlignment = 'right'; + app.cvwEditFieldLabel_2.Position = [325 187 26 22]; + app.cvwEditFieldLabel_2.Text = 'cvw'; + + % Create OWcvwEditField + app.OWcvwEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWcvwEditField.Position = [366 187 129 22]; + + % Create ifpcowEditFieldLabel + app.ifpcowEditFieldLabel = uilabel(app.OilWaterTab); + app.ifpcowEditFieldLabel.HorizontalAlignment = 'right'; + app.ifpcowEditFieldLabel.Position = [324 139 39 22]; + app.ifpcowEditFieldLabel.Text = 'ifpcow'; + + % Create OWifpcowEditField + app.OWifpcowEditField = uieditfield(app.OilWaterTab, 'numeric'); + app.OWifpcowEditField.Position = [378 139 120 22]; + + % Create PRMTextAreaLabel + app.PRMTextAreaLabel = uilabel(app.OilWaterTab); + app.PRMTextAreaLabel.HorizontalAlignment = 'right'; + app.PRMTextAreaLabel.Position = [305 76 32 22]; + app.PRMTextAreaLabel.Text = 'PRM'; + + % Create OWPRMTextArea + app.OWPRMTextArea = uitextarea(app.OilWaterTab); + app.OWPRMTextArea.Position = [352 40 150 60]; + + % Create PRFTextAreaLabel_2 + app.PRFTextAreaLabel_2 = uilabel(app.OilWaterTab); + app.PRFTextAreaLabel_2.HorizontalAlignment = 'right'; + app.PRFTextAreaLabel_2.Position = [603 469 29 22]; + app.PRFTextAreaLabel_2.Text = 'PRF'; + + % Create OWPRFTextArea + app.OWPRFTextArea = uitextarea(app.OilWaterTab); + app.OWPRFTextArea.Position = [647 433 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 136 22]; + + % Create DbEditFieldLabel + app.DbEditFieldLabel = uilabel(app.MultiComponentTab); + app.DbEditFieldLabel.HorizontalAlignment = 'right'; + app.DbEditFieldLabel.Position = [48 430 25 22]; + app.DbEditFieldLabel.Text = 'Db'; + + % Create MCDbEditField + app.MCDbEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCDbEditField.Position = [88 430 138 22]; + + % Create c_ca_tableTextAreaLabel + app.c_ca_tableTextAreaLabel = uilabel(app.MultiComponentTab); + app.c_ca_tableTextAreaLabel.HorizontalAlignment = 'right'; + app.c_ca_tableTextAreaLabel.Position = [-2 386 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 = [76 350 150 60]; + + % Create REditFieldLabel + app.REditFieldLabel = uilabel(app.MultiComponentTab); + app.REditFieldLabel.HorizontalAlignment = 'right'; + app.REditFieldLabel.Position = [44 312 25 22]; + app.REditFieldLabel.Text = 'R'; + + % Create MCREditField + app.MCREditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCREditField.Position = [84 312 139 22]; + + % Create VmEditFieldLabel + app.VmEditFieldLabel = uilabel(app.MultiComponentTab); + app.VmEditFieldLabel.HorizontalAlignment = 'right'; + app.VmEditFieldLabel.Position = [45 277 25 22]; + app.VmEditFieldLabel.Text = 'Vm'; + + % Create MCVmEditField + app.MCVmEditField = uieditfield(app.MultiComponentTab, 'numeric'); + app.MCVmEditField.Position = [85 277 138 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 = [16 198 38 22]; + app.cs_NcTextAreaLabel.Text = 'cs_Nc'; + + % Create MCcs_NcTextArea + app.MCcs_NcTextArea = uitextarea(app.MultiComponentTab); + app.MCcs_NcTextArea.Position = [69 162 150 60]; + + % Create kr_nosurfTextAreaLabel + app.kr_nosurfTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_nosurfTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_nosurfTextAreaLabel.Position = [2 127 55 22]; + app.kr_nosurfTextAreaLabel.Text = 'kr_nosurf'; + + % Create MCkr_nosurfTextArea + app.MCkr_nosurfTextArea = uitextarea(app.MultiComponentTab); + app.MCkr_nosurfTextArea.Position = [72 91 150 60]; + + % Create kr_surfTextAreaLabel + app.kr_surfTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_surfTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_surfTextAreaLabel.Position = [16 55 42 22]; + app.kr_surfTextAreaLabel.Text = 'kr_surf'; + + % Create MCkr_surfTextArea + app.MCkr_surfTextArea = uitextarea(app.MultiComponentTab); + app.MCkr_surfTextArea.Position = [73 19 150 60]; + + % Create PCTextAreaLabel + app.PCTextAreaLabel = uilabel(app.MultiComponentTab); + app.PCTextAreaLabel.HorizontalAlignment = 'right'; + app.PCTextAreaLabel.Position = [304 468 25 22]; + app.PCTextAreaLabel.Text = 'PC'; + + % Create MCPCTextArea + app.MCPCTextArea = uitextarea(app.MultiComponentTab); + app.MCPCTextArea.Position = [344 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 = [244 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 = [345 370 150 54]; + + % Create kr_nosurf_fractureTextAreaLabel + app.kr_nosurf_fractureTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_nosurf_fractureTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_nosurf_fractureTextAreaLabel.Position = [229 336 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 = [346 305 150 55]; + + % Create kr_surf_fractureTextAreaLabel + app.kr_surf_fractureTextAreaLabel = uilabel(app.MultiComponentTab); + app.kr_surf_fractureTextAreaLabel.HorizontalAlignment = 'right'; + app.kr_surf_fractureTextAreaLabel.Position = [241 270 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 = [345 242 150 52]; + + % Create PC_fractureTextAreaLabel + app.PC_fractureTextAreaLabel = uilabel(app.MultiComponentTab); + app.PC_fractureTextAreaLabel.HorizontalAlignment = 'right'; + app.PC_fractureTextAreaLabel.Position = [260 204 69 22]; + app.PC_fractureTextAreaLabel.Text = 'PC_fracture'; + + % Create MCPC_fractureTextArea + app.MCPC_fractureTextArea = uitextarea(app.MultiComponentTab); + app.MCPC_fractureTextArea.Position = [344 176 150 52]; + + % 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 = [565 109 25 22]; + app.PprTextAreaLabel_3.Text = 'Ppr'; + + % Create MCPprTextArea + app.MCPprTextArea = uitextarea(app.MultiComponentTab); + app.MCPprTextArea.Position = [605 73 150 60]; + + % Create BGTextAreaLabel_2 + app.BGTextAreaLabel_2 = uilabel(app.MultiComponentTab); + app.BGTextAreaLabel_2.HorizontalAlignment = 'right'; + app.BGTextAreaLabel_2.Position = [569 42 25 22]; + app.BGTextAreaLabel_2.Text = 'BG'; + + % Create MCBGTextArea + app.MCBGTextArea = uitextarea(app.MultiComponentTab); + app.MCBGTextArea.Position = [609 6 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 167 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.ColumnEditable = true; + app.Well1Table.CellSelectionCallback = createCallbackFcn(app, @Well1TableCellSelection, true); + app.Well1Table.Position = [35 475 372 182]; + + % Create FractureWellLocationTable + app.FractureWellLocationTable = uitable(app.WellsTab); + app.FractureWellLocationTable.ColumnName = {'FractureWellLocation'}; + app.FractureWellLocationTable.RowName = {}; + app.FractureWellLocationTable.ColumnEditable = true; + app.FractureWellLocationTable.CellSelectionCallback = createCallbackFcn(app, @FractureWellLocationTableCellSelection, true); + app.FractureWellLocationTable.Position = [44 179 366 185]; + + % Create Well2Table + app.Well2Table = uitable(app.WellsTab); + app.Well2Table.ColumnName = {'Well2'}; + app.Well2Table.RowName = {}; + app.Well2Table.ColumnEditable = true; + app.Well2Table.CellSelectionCallback = createCallbackFcn(app, @Well2TableCellSelection, true); + app.Well2Table.Position = [552 472 594 185]; + + % Create ScheduleTable + app.ScheduleTable = uitable(app.WellsTab); + app.ScheduleTable.ColumnName = {'Schedule'}; + app.ScheduleTable.RowName = {}; + app.ScheduleTable.ColumnEditable = true; + app.ScheduleTable.CellSelectionCallback = createCallbackFcn(app, @ScheduleTableCellSelection, true); + app.ScheduleTable.Position = [552 176 362 185]; + + % Create TimeTextAreaLabel + app.TimeTextAreaLabel = uilabel(app.WellsTab); + app.TimeTextAreaLabel.HorizontalAlignment = 'right'; + app.TimeTextAreaLabel.Position = [949 288 31 22]; + app.TimeTextAreaLabel.Text = 'Time'; + + % Create TimeTextArea + app.TimeTextArea = uitextarea(app.WellsTab); + app.TimeTextArea.Position = [995 288 181 22]; + + % Create DtMinTextAreaLabel + app.DtMinTextAreaLabel = uilabel(app.WellsTab); + app.DtMinTextAreaLabel.HorizontalAlignment = 'right'; + app.DtMinTextAreaLabel.Position = [943 240 36 22]; + app.DtMinTextAreaLabel.Text = 'DtMin'; + + % Create DtMinTextArea + app.DtMinTextArea = uitextarea(app.WellsTab); + app.DtMinTextArea.Position = [994 240 182 22]; + + % Create DtMaxTextAreaLabel + app.DtMaxTextAreaLabel = uilabel(app.WellsTab); + app.DtMaxTextAreaLabel.HorizontalAlignment = 'right'; + app.DtMaxTextAreaLabel.Position = [944 184 40 22]; + app.DtMaxTextAreaLabel.Text = 'DtMax'; + + % Create DtMaxTextArea + app.DtMaxTextArea = uitextarea(app.WellsTab); + app.DtMaxTextArea.Position = [999 183 182 24]; + + % Create AddWell1RowButton + app.AddWell1RowButton = uibutton(app.WellsTab, 'push'); + app.AddWell1RowButton.ButtonPushedFcn = createCallbackFcn(app, @AddWell1RowButtonPushed, true); + app.AddWell1RowButton.Position = [136 420 100 23]; + app.AddWell1RowButton.Text = 'AddWell1Row'; + + % Create DeleteWell1RowButton + app.DeleteWell1RowButton = uibutton(app.WellsTab, 'push'); + app.DeleteWell1RowButton.ButtonPushedFcn = createCallbackFcn(app, @DeleteWell1RowButtonPushed, true); + app.DeleteWell1RowButton.Position = [301 418 103 23]; + app.DeleteWell1RowButton.Text = 'DeleteWell1Row'; + + % Create DeleteWell2RowButton + app.DeleteWell2RowButton = uibutton(app.WellsTab, 'push'); + app.DeleteWell2RowButton.ButtonPushedFcn = createCallbackFcn(app, @DeleteWell2RowButtonPushed, true); + app.DeleteWell2RowButton.Position = [931 421 103 23]; + app.DeleteWell2RowButton.Text = 'DeleteWell2Row'; + + % Create AddWell2RowButton + app.AddWell2RowButton = uibutton(app.WellsTab, 'push'); + app.AddWell2RowButton.ButtonPushedFcn = createCallbackFcn(app, @AddWell2RowButtonPushed, true); + app.AddWell2RowButton.Position = [705 423 100 23]; + app.AddWell2RowButton.Text = 'AddWell2Row'; + + % Create AddScheduleRowButton + app.AddScheduleRowButton = uibutton(app.WellsTab, 'push'); + app.AddScheduleRowButton.ButtonPushedFcn = createCallbackFcn(app, @AddScheduleRowButtonPushed, true); + app.AddScheduleRowButton.Position = [649 123 110 23]; + app.AddScheduleRowButton.Text = 'AddScheduleRow'; + + % Create DeleteScheduleRowButton + app.DeleteScheduleRowButton = uibutton(app.WellsTab, 'push'); + app.DeleteScheduleRowButton.ButtonPushedFcn = createCallbackFcn(app, @DeleteScheduleRowButtonPushed, true); + app.DeleteScheduleRowButton.Position = [790 123 124 23]; + app.DeleteScheduleRowButton.Text = 'DeleteScheduleRow'; + + % Create DeleteFracLocRowButton + app.DeleteFracLocRowButton = uibutton(app.WellsTab, 'push'); + app.DeleteFracLocRowButton.ButtonPushedFcn = createCallbackFcn(app, @DeleteFracLocRowButtonPushed, true); + app.DeleteFracLocRowButton.Position = [288 123 117 23]; + app.DeleteFracLocRowButton.Text = 'DeleteFracLocRow'; + + % Create AddFracLocRowButton + app.AddFracLocRowButton = uibutton(app.WellsTab, 'push'); + app.AddFracLocRowButton.ButtonPushedFcn = createCallbackFcn(app, @AddFracLocRowButtonPushed, true); + app.AddFracLocRowButton.Position = [149 123 104 23]; + app.AddFracLocRowButton.Text = 'AddFracLocRow'; + + % Create ScheduleTimeConfigLabel + app.ScheduleTimeConfigLabel = uilabel(app.WellsTab); + app.ScheduleTimeConfigLabel.Position = [1003 331 131 30]; + app.ScheduleTimeConfigLabel.Text = 'Schedule Time Config'; + + % Create Well1Label + app.Well1Label = uilabel(app.WellsTab); + app.Well1Label.Position = [41 422 35 22]; + app.Well1Label.Text = 'Well1'; + + % Create Well2Label + app.Well2Label = uilabel(app.WellsTab); + app.Well2Label.Position = [560 424 35 22]; + app.Well2Label.Text = 'Well2'; + + % Create WellLocationLabel + app.WellLocationLabel = uilabel(app.WellsTab); + app.WellLocationLabel.Position = [48 125 73 22]; + app.WellLocationLabel.Text = 'WellLocation'; + + % Create ScheduleLabel + app.ScheduleLabel = uilabel(app.WellsTab); + app.ScheduleLabel.Position = [555 127 55 22]; + app.ScheduleLabel.Text = 'Schedule'; + + % Create SoloverTab + app.SoloverTab = uitab(app.TabGroup); + app.SoloverTab.Title = 'Solover'; + + % Create SolverRunTab + app.SolverRunTab = uitab(app.TabGroup); + app.SolverRunTab.Title = 'Solver&Run'; + + % Create RunLogTextAreaLabel + app.RunLogTextAreaLabel = uilabel(app.SolverRunTab); + app.RunLogTextAreaLabel.HorizontalAlignment = 'right'; + app.RunLogTextAreaLabel.Position = [263 571 47 22]; + app.RunLogTextAreaLabel.Text = 'RunLog'; + + % Create RunLogTextArea + app.RunLogTextArea = uitextarea(app.SolverRunTab); + app.RunLogTextArea.Position = [325 150 899 445]; + + % Create RunProgressLabel + app.RunProgressLabel = uilabel(app.SolverRunTab); + app.RunProgressLabel.Position = [313 624 209 22]; + app.RunProgressLabel.Text = 'RunProgress'; + + % Create YitaPEditFieldLabel + app.YitaPEditFieldLabel = uilabel(app.SolverRunTab); + app.YitaPEditFieldLabel.HorizontalAlignment = 'right'; + app.YitaPEditFieldLabel.Position = [59 565 33 22]; + app.YitaPEditFieldLabel.Text = 'YitaP'; + + % Create YitaPEditField + app.YitaPEditField = uieditfield(app.SolverRunTab, 'numeric'); + app.YitaPEditField.Position = [113 565 100 22]; + + % Create YitaSEditFieldLabel + app.YitaSEditFieldLabel = uilabel(app.SolverRunTab); + app.YitaSEditFieldLabel.HorizontalAlignment = 'right'; + app.YitaSEditFieldLabel.Position = [57 515 33 22]; + app.YitaSEditFieldLabel.Text = 'YitaS'; + + % Create YitaSEditField + app.YitaSEditField = uieditfield(app.SolverRunTab, 'numeric'); + app.YitaSEditField.Position = [113 515 100 22]; + + % Create OmegaEditFieldLabel + app.OmegaEditFieldLabel = uilabel(app.SolverRunTab); + app.OmegaEditFieldLabel.HorizontalAlignment = 'right'; + app.OmegaEditFieldLabel.Position = [53 471 44 22]; + app.OmegaEditFieldLabel.Text = 'Omega'; + + % Create OmegaEditField + app.OmegaEditField = uieditfield(app.SolverRunTab, 'numeric'); + app.OmegaEditField.Position = [113 471 100 22]; + + % Create NmaxEditFieldLabel + app.NmaxEditFieldLabel = uilabel(app.SolverRunTab); + app.NmaxEditFieldLabel.HorizontalAlignment = 'right'; + app.NmaxEditFieldLabel.Position = [53 417 36 22]; + app.NmaxEditFieldLabel.Text = 'Nmax'; + + % Create NmaxEditField + app.NmaxEditField = uieditfield(app.SolverRunTab, 'numeric'); + app.NmaxEditField.Position = [113 418 100 22]; + + % Create EpsAveEditFieldLabel + app.EpsAveEditFieldLabel = uilabel(app.SolverRunTab); + app.EpsAveEditFieldLabel.HorizontalAlignment = 'right'; + app.EpsAveEditFieldLabel.Position = [49 365 46 22]; + app.EpsAveEditFieldLabel.Text = 'EpsAve'; + + % Create EpsAveEditField + app.EpsAveEditField = uieditfield(app.SolverRunTab, 'numeric'); + app.EpsAveEditField.Position = [113 361 100 22]; + + % Create EpsMaxEditFieldLabel + app.EpsMaxEditFieldLabel = uilabel(app.SolverRunTab); + app.EpsMaxEditFieldLabel.HorizontalAlignment = 'right'; + app.EpsMaxEditFieldLabel.Position = [49 308 48 22]; + app.EpsMaxEditFieldLabel.Text = 'EpsMax'; + + % Create EpsMaxEditField + app.EpsMaxEditField = uieditfield(app.SolverRunTab, 'numeric'); + app.EpsMaxEditField.Position = [113 308 100 22]; + + % 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 = [217 22 987 585]; + + % Create ResultTypeDropDown + app.ResultTypeDropDown = uidropdown(app.ResultsTab); + app.ResultTypeDropDown.Position = [1236 1 10 22]; + + % Create Button + app.Button = uibutton(app.ResultsTab, 'push'); + app.Button.ButtonPushedFcn = createCallbackFcn(app, @onPlotResult, true); + app.Button.Position = [1239 1 10 15]; + app.Button.Text = ''; + + % Create ResultTab + app.ResultTab = uitable(app.ResultsTab); + app.ResultTab.ColumnName = {'Result'}; + app.ResultTab.RowName = {}; + app.ResultTab.Position = [1235 36 12 13]; + + % Create Plot2DLayerButton + app.Plot2DLayerButton = uibutton(app.ResultsTab, 'push'); + app.Plot2DLayerButton.ButtonPushedFcn = createCallbackFcn(app, @Plot2DLayerButtonPushed, true); + app.Plot2DLayerButton.Position = [55 445 111 23]; + app.Plot2DLayerButton.Text = 'Plot2DLayer'; + + % Create Plot3DDistributionButton + app.Plot3DDistributionButton = uibutton(app.ResultsTab, 'push'); + app.Plot3DDistributionButton.ButtonPushedFcn = createCallbackFcn(app, @Plot3DDistributionButtonPushed, true); + app.Plot3DDistributionButton.Position = [49 379 115 23]; + app.Plot3DDistributionButton.Text = 'Plot3DDistribution'; + + % Create PlotPermButton + app.PlotPermButton = uibutton(app.ResultsTab, 'push'); + app.PlotPermButton.ButtonPushedFcn = createCallbackFcn(app, @PlotPermButtonPushed, true); + app.PlotPermButton.Position = [52 329 111 23]; + app.PlotPermButton.Text = 'PlotPerm'; + + % Create PlotSPDPButton + app.PlotSPDPButton = uibutton(app.ResultsTab, 'push'); + app.PlotSPDPButton.ButtonPushedFcn = createCallbackFcn(app, @PlotSPDPButtonPushed, true); + app.PlotSPDPButton.Position = [47 278 116 23]; + app.PlotSPDPButton.Text = 'PlotSPDP'; + + % Create PlotWellResponseButton + app.PlotWellResponseButton = uibutton(app.ResultsTab, 'push'); + app.PlotWellResponseButton.ButtonPushedFcn = createCallbackFcn(app, @PlotWellResponseButtonPushed, true); + app.PlotWellResponseButton.Position = [50 502 117 23]; + app.PlotWellResponseButton.Text = 'PlotWellResponse'; + + % Create PlotLayerDropDownLabel + app.PlotLayerDropDownLabel = uilabel(app.ResultsTab); + app.PlotLayerDropDownLabel.HorizontalAlignment = 'right'; + app.PlotLayerDropDownLabel.Position = [15 224 56 22]; + app.PlotLayerDropDownLabel.Text = 'PlotLayer'; + + % Create PlotLayerDropDown + app.PlotLayerDropDown = uidropdown(app.ResultsTab); + app.PlotLayerDropDown.Items = {''}; + app.PlotLayerDropDown.ValueChangedFcn = createCallbackFcn(app, @PlotLayerDropDownValueChanged, true); + app.PlotLayerDropDown.Position = [86 224 78 22]; + app.PlotLayerDropDown.Value = ''; + + % Create PlotPropertyDropDownLabel + app.PlotPropertyDropDownLabel = uilabel(app.ResultsTab); + app.PlotPropertyDropDownLabel.HorizontalAlignment = 'right'; + app.PlotPropertyDropDownLabel.Position = [8 182 71 22]; + app.PlotPropertyDropDownLabel.Text = 'PlotProperty'; + + % Create PlotPropertyDropDown + app.PlotPropertyDropDown = uidropdown(app.ResultsTab); + app.PlotPropertyDropDown.Items = {''}; + app.PlotPropertyDropDown.ValueChangedFcn = createCallbackFcn(app, @PlotPropertyDropDownValueChanged, true); + app.PlotPropertyDropDown.Position = [94 182 68 22]; + app.PlotPropertyDropDown.Value = ''; + + % Create PlotMetricDropDownLabel + app.PlotMetricDropDownLabel = uilabel(app.ResultsTab); + app.PlotMetricDropDownLabel.HorizontalAlignment = 'right'; + app.PlotMetricDropDownLabel.Position = [5 97 58 22]; + app.PlotMetricDropDownLabel.Text = 'PlotMetric'; + + % Create PlotMetricDropDown + app.PlotMetricDropDown = uidropdown(app.ResultsTab); + app.PlotMetricDropDown.Items = {''}; + app.PlotMetricDropDown.ValueChangedFcn = createCallbackFcn(app, @PlotMetricDropDownValueChanged, true); + app.PlotMetricDropDown.Position = [78 97 86 22]; + app.PlotMetricDropDown.Value = ''; + + % Create PlotWellDropDownLabel + app.PlotWellDropDownLabel = uilabel(app.ResultsTab); + app.PlotWellDropDownLabel.HorizontalAlignment = 'right'; + app.PlotWellDropDownLabel.Position = [12 139 49 22]; + app.PlotWellDropDownLabel.Text = 'PlotWell'; + + % Create PlotWellDropDown + app.PlotWellDropDown = uidropdown(app.ResultsTab); + app.PlotWellDropDown.Items = {''}; + app.PlotWellDropDown.ValueChangedFcn = createCallbackFcn(app, @PlotWellDropDownValueChanged, true); + app.PlotWellDropDown.Position = [76 139 87 22]; + app.PlotWellDropDown.Value = ''; + + % Create PlotTimeStepSlider + app.PlotTimeStepSlider = uislider(app.ResultsTab); + app.PlotTimeStepSlider.ValueChangedFcn = createCallbackFcn(app, @PlotTimeStepSliderValueChanged, true); + app.PlotTimeStepSlider.Position = [15 578 150 3]; + + % Create PlotTimeStepValueLabel + app.PlotTimeStepValueLabel = uilabel(app.ResultsTab); + app.PlotTimeStepValueLabel.Position = [54 609 106 22]; + app.PlotTimeStepValueLabel.Text = 'PlotTimeStepValue'; + + % Create ResultSummaryTextAreaLabel + app.ResultSummaryTextAreaLabel = uilabel(app.ResultsTab); + app.ResultSummaryTextAreaLabel.HorizontalAlignment = 'right'; + app.ResultSummaryTextAreaLabel.Position = [312 625 90 21]; + app.ResultSummaryTextAreaLabel.Text = 'ResultSummary'; + + % Create ResultSummaryTextArea + app.ResultSummaryTextArea = uitextarea(app.ResultsTab); + app.ResultSummaryTextArea.Position = [460 619 636 44]; + + % Create NewConfigButton + app.NewConfigButton = uibutton(app.UIFigure, 'push'); + app.NewConfigButton.ButtonPushedFcn = createCallbackFcn(app, @onNewConfig, true); + app.NewConfigButton.Position = [292 773 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) + + % Execute the startup function + runStartupFcn(app, @startupFcn) + + 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/results/render_case_plot_in_axes.m b/gui_support/results/render_case_plot_in_axes.m index a32aa4f..166b21f 100644 --- a/gui_support/results/render_case_plot_in_axes.m +++ b/gui_support/results/render_case_plot_in_axes.m @@ -10,7 +10,7 @@ arguments end action_id = lower(string(action_id)); -cla(ax); +reset_plot_axes(ax); switch action_id case "plot_well_response" @@ -35,6 +35,7 @@ wellpara = results.Wellpara; well_index = get_option(options, 'well_index', 1); metric = upper(string(get_option(options, 'metric', "BHP"))); +view(ax, 2); set(ax, 'XScale', 'linear', 'YScale', 'linear'); if isempty(wellpara) @@ -122,6 +123,7 @@ for i = 1:nx * ny end fill(ax, x, y, dis, 'EdgeColor', 'interp'); +view(ax, 2); axis(ax, 'equal'); axis(ax, 'tight'); colormap(ax, jet); @@ -201,6 +203,7 @@ for i = 1:nx * ny end fill(ax, x, y, dis, 'EdgeColor', 'interp'); +view(ax, 2); axis(ax, 'equal'); axis(ax, 'tight'); colormap(ax, jet); @@ -259,3 +262,26 @@ else value = fallback; end end + +function reset_plot_axes(ax) +cla(ax); +hold(ax, 'off'); +grid(ax, 'off'); +view(ax, 2); +colorbar(ax, 'off'); + +set(ax, ... + 'XScale', 'linear', ... + 'YScale', 'linear', ... + 'ZScale', 'linear', ... + 'XLimMode', 'auto', ... + 'YLimMode', 'auto', ... + 'ZLimMode', 'auto', ... + 'CLimMode', 'auto', ... + 'DataAspectRatioMode', 'auto', ... + 'PlotBoxAspectRatioMode', 'auto', ... + 'CameraPositionMode', 'auto', ... + 'CameraTargetMode', 'auto', ... + 'CameraUpVectorMode', 'auto', ... + 'CameraViewAngleMode', 'auto'); +end diff --git a/gui_support/runtime/run_case.m b/gui_support/runtime/run_case.m index 0a0bc58..e0adfb3 100644 --- a/gui_support/runtime/run_case.m +++ b/gui_support/runtime/run_case.m @@ -1,4 +1,4 @@ -function [r, Times, OutputRs, Wellpara, trun] = run_case(config) +function [r, Times, OutputRs, Wellpara, trun] = run_case(config, progress_callback) %RUN_CASE Execute a simulation from unified config. % % This is the first migration step from hard-coded main1.m scripts toward a @@ -8,6 +8,7 @@ function [r, Times, OutputRs, Wellpara, trun] = run_case(config) arguments config (1,1) struct + progress_callback = [] end project_root = fileparts(fileparts(fileparts(mfilename('fullpath')))); @@ -81,7 +82,8 @@ Wellc = handle_well1_well2(well1, well2, welloc, r); config.schedule.dtmax, ... Wellc, ... config.schedule.time, ... - config.schedule.well_schedules); + config.schedule.well_schedules, ... + progress_callback); trun.run_time = toc(overall_tic); end