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
        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
        FractureInputTextArea          matlab.ui.control.TextArea
        FractureInputTextAreaLabel     matlab.ui.control.Label
        DiscretizationTab              matlab.ui.container.Tab
        CommonCporEditField            matlab.ui.control.NumericEditField
        CommonCporLabel                matlab.ui.control.Label
        CommonPrporEditField           matlab.ui.control.NumericEditField
        CommonPrporLabel               matlab.ui.control.Label
        CommonCaEditField              matlab.ui.control.NumericEditField
        CommonCaLabel                  matlab.ui.control.Label
        CommonCfEditField              matlab.ui.control.NumericEditField
        CommonCfLabel                  matlab.ui.control.Label
        CommonRptEditField             matlab.ui.control.NumericEditField
        CommonRptLabel                 matlab.ui.control.Label
        CommonStressRefPressureEditField  matlab.ui.control.NumericEditField
        CommonStressRefPressureLabel   matlab.ui.control.Label
        CommonStressMatrixEditField    matlab.ui.control.NumericEditField
        CommonStressMatrixLabel        matlab.ui.control.Label
        CommonStressFractureEditField  matlab.ui.control.NumericEditField
        CommonStressFractureLabel      matlab.ui.control.Label
        CommonPrporfEditField          matlab.ui.control.NumericEditField
        CommonPrporfLabel              matlab.ui.control.Label
        CommonCporfEditField           matlab.ui.control.NumericEditField
        CommonCporfLabel               matlab.ui.control.Label
        CommonPorfTextArea             matlab.ui.control.TextArea
        CommonPorfLabel                matlab.ui.control.Label
        CommonWfTextArea               matlab.ui.control.TextArea
        CommonWfLabel                  matlab.ui.control.Label
        CommonKfTextArea               matlab.ui.control.TextArea
        CommonKfLabel                  matlab.ui.control.Label
        TabGroup3                      matlab.ui.container.TabGroup
        SPTab                          matlab.ui.container.Tab
        SPRockDensityEditField         matlab.ui.control.NumericEditField
        RockDensityEditFieldLabel      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
        DPShapeFactorTextArea          matlab.ui.control.TextArea
        sigmaTextAreaLabel             matlab.ui.control.Label
        DPMatrixLayerPoriTextArea      matlab.ui.control.TextArea
        pori_matrixLayerTextAreaLabel  matlab.ui.control.Label
        DPMatrixLayerKzTextArea        matlab.ui.control.TextArea
        kz_matrixLayerTextAreaLabel    matlab.ui.control.Label
        DPMatrixLayerKyTextArea        matlab.ui.control.TextArea
        ky_matrixLayerTextAreaLabel    matlab.ui.control.Label
        DPMatrixLayerKxTextArea        matlab.ui.control.TextArea
        kx_matrixLayerTextAreaLabel    matlab.ui.control.Label
        DPFractureLayerKzTextArea      matlab.ui.control.TextArea
        kzTextAreaLabel                matlab.ui.control.Label
        DPFractureLayerKyTextArea      matlab.ui.control.TextArea
        kyTextAreaLabel                matlab.ui.control.Label
        DPFractureLayerKxTextArea      matlab.ui.control.TextArea
        kxTextAreaLabel                matlab.ui.control.Label
        FlowTab                        matlab.ui.container.Tab
        FlowCommonGasBetaNonDarcyEditField  matlab.ui.control.NumericEditField
        GasBetaNonDarcyLabel           matlab.ui.control.Label
        FlowCommonGasKnEditField       matlab.ui.control.NumericEditField
        GasKnLabel                     matlab.ui.control.Label
        FlowCommonGasPLEditField       matlab.ui.control.NumericEditField
        GasPLLabel                     matlab.ui.control.Label
        FlowCommonGasVLEditField       matlab.ui.control.NumericEditField
        GasVLLabel                     matlab.ui.control.Label
        FlowCommonGasCvgEditField      matlab.ui.control.NumericEditField
        GasCvgLabel                    matlab.ui.control.Label
        FlowCommonGasVgiEditField      matlab.ui.control.NumericEditField
        GasVgiLabel                    matlab.ui.control.Label
        FlowCommonGasCgEditField       matlab.ui.control.NumericEditField
        GasCgLabel                     matlab.ui.control.Label
        FlowCommonGasBgiEditField      matlab.ui.control.NumericEditField
        GasBgiLabel                    matlab.ui.control.Label
        FlowCommonGasPrgEditField      matlab.ui.control.NumericEditField
        GasPrgLabel                    matlab.ui.control.Label
        FlowCommonDensityGScEditField  matlab.ui.control.NumericEditField
        DensityGScLabel                matlab.ui.control.Label
        WaterLabel                     matlab.ui.control.Label
        FlowCommonPGradThresholdEditField  matlab.ui.control.NumericEditField
        PGradThresholdLabel            matlab.ui.control.Label
        FlowCommonCvwEditField         matlab.ui.control.NumericEditField
        CvwLabel                       matlab.ui.control.Label
        FlowCommonVwiEditField         matlab.ui.control.NumericEditField
        VwiLabel                       matlab.ui.control.Label
        FlowCommonCwEditField          matlab.ui.control.NumericEditField
        CwLabel                        matlab.ui.control.Label
        FlowCommonBwiEditField         matlab.ui.control.NumericEditField
        BwiLabel                       matlab.ui.control.Label
        FlowCommonPrwEditField         matlab.ui.control.NumericEditField
        PrwLabel                       matlab.ui.control.Label
        GasLabel                       matlab.ui.control.Label
        FlowCommonDensityWScEditField  matlab.ui.control.NumericEditField
        DensityWScLabel                matlab.ui.control.Label
        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
        OilWaterTab                    matlab.ui.container.Tab
        OWoil_modelDropDown            matlab.ui.control.DropDown
        oil_modelLabel                 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
        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
        OWdensity_o_scEditField        matlab.ui.control.NumericEditField
        density_o_scEditFieldLabel     matlab.ui.control.Label
        MultiComponentTab              matlab.ui.container.Tab
        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
        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
        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
        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
        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

        % Callback function
        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 GridModelDropDownLabel
            app.GridModelDropDownLabel = uilabel(app.ModelTab);
            app.GridModelDropDownLabel.HorizontalAlignment = 'right';
            app.GridModelDropDownLabel.Position = [62 630 60 22];
            app.GridModelDropDownLabel.Text = 'GridModel';

            % Create ModelGridModelDropDown
            app.ModelGridModelDropDown = uidropdown(app.ModelTab);
            app.ModelGridModelDropDown.Items = {'1', '2', '', ''};
            app.ModelGridModelDropDown.Position = [137 630 100 22];
            app.ModelGridModelDropDown.Value = '';

            % Create FlowModelDropDownLabel
            app.FlowModelDropDownLabel = uilabel(app.ModelTab);
            app.FlowModelDropDownLabel.HorizontalAlignment = 'right';
            app.FlowModelDropDownLabel.Position = [67 566 63 22];
            app.FlowModelDropDownLabel.Text = 'FlowModel';

            % Create ModelFlowModelDropDown
            app.ModelFlowModelDropDown = uidropdown(app.ModelTab);
            app.ModelFlowModelDropDown.Items = {'1', '2', '3'};
            app.ModelFlowModelDropDown.Position = [145 566 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 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 DiscretizationTab
            app.DiscretizationTab = uitab(app.TabGroup);
            app.DiscretizationTab.Title = 'Discretization';

            % Create TabGroup3
            app.TabGroup3 = uitabgroup(app.DiscretizationTab);
            app.TabGroup3.Position = [48 37 1156 430];

            % 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 360 56 22];
            app.BoundaryTextAreaLabel.Text = 'Boundary';

            % Create SPBoundaryTextArea
            app.SPBoundaryTextArea = uitextarea(app.SPTab);
            app.SPBoundaryTextArea.Position = [101 307 150 77];

            % Create InvalidLayerTextAreaLabel
            app.InvalidLayerTextAreaLabel = uilabel(app.SPTab);
            app.InvalidLayerTextAreaLabel.HorizontalAlignment = 'right';
            app.InvalidLayerTextAreaLabel.Position = [19 265 70 22];
            app.InvalidLayerTextAreaLabel.Text = 'InvalidLayer';

            % Create SPInvalidLayerTextArea
            app.SPInvalidLayerTextArea = uitextarea(app.SPTab);
            app.SPInvalidLayerTextArea.Position = [104 211 150 78];

            % Create MatrixKxTextAreaLabel
            app.MatrixKxTextAreaLabel = uilabel(app.SPTab);
            app.MatrixKxTextAreaLabel.HorizontalAlignment = 'right';
            app.MatrixKxTextAreaLabel.Position = [301 355 52 22];
            app.MatrixKxTextAreaLabel.Text = 'MatrixKx';

            % Create SPMatrixKxTextArea
            app.SPMatrixKxTextArea = uitextarea(app.SPTab);
            app.SPMatrixKxTextArea.Position = [368 319 150 60];

            % Create MatrixKyTextAreaLabel
            app.MatrixKyTextAreaLabel = uilabel(app.SPTab);
            app.MatrixKyTextAreaLabel.HorizontalAlignment = 'right';
            app.MatrixKyTextAreaLabel.Position = [302 259 52 22];
            app.MatrixKyTextAreaLabel.Text = 'MatrixKy';

            % Create SPMatrixKyTextArea
            app.SPMatrixKyTextArea = uitextarea(app.SPTab);
            app.SPMatrixKyTextArea.Position = [369 223 150 60];

            % Create MatrixKzTextAreaLabel
            app.MatrixKzTextAreaLabel = uilabel(app.SPTab);
            app.MatrixKzTextAreaLabel.HorizontalAlignment = 'right';
            app.MatrixKzTextAreaLabel.Position = [301 157 52 22];
            app.MatrixKzTextAreaLabel.Text = 'MatrixKz';

            % Create SPMatrixKzTextArea
            app.SPMatrixKzTextArea = uitextarea(app.SPTab);
            app.SPMatrixKzTextArea.Position = [368 121 150 60];

            % Create MatrixPoriTextAreaLabel
            app.MatrixPoriTextAreaLabel = uilabel(app.SPTab);
            app.MatrixPoriTextAreaLabel.HorizontalAlignment = 'right';
            app.MatrixPoriTextAreaLabel.Position = [294 51 59 22];
            app.MatrixPoriTextAreaLabel.Text = 'MatrixPori';

            % Create SPMatrixPoriTextArea
            app.SPMatrixPoriTextArea = uitextarea(app.SPTab);
            app.SPMatrixPoriTextArea.Position = [368 15 150 60];

            % Create RockDensityEditFieldLabel
            app.RockDensityEditFieldLabel = uilabel(app.SPTab);
            app.RockDensityEditFieldLabel.HorizontalAlignment = 'right';
            app.RockDensityEditFieldLabel.Position = [16 165 72 22];
            app.RockDensityEditFieldLabel.Text = 'RockDensity';

            % Create SPRockDensityEditField
            app.SPRockDensityEditField = uieditfield(app.SPTab, 'numeric');
            app.SPRockDensityEditField.Position = [103 165 144 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 365 25 22];
            app.kxTextAreaLabel.Text = 'kx';

            % Create DPFractureLayerKxTextArea
            app.DPFractureLayerKxTextArea = uitextarea(app.DPTab);
            app.DPFractureLayerKxTextArea.Position = [106 329 150 60];

            % Create kyTextAreaLabel
            app.kyTextAreaLabel = uilabel(app.DPTab);
            app.kyTextAreaLabel.HorizontalAlignment = 'right';
            app.kyTextAreaLabel.Position = [68 289 25 22];
            app.kyTextAreaLabel.Text = 'ky';

            % Create DPFractureLayerKyTextArea
            app.DPFractureLayerKyTextArea = uitextarea(app.DPTab);
            app.DPFractureLayerKyTextArea.Position = [108 253 150 60];

            % Create kzTextAreaLabel
            app.kzTextAreaLabel = uilabel(app.DPTab);
            app.kzTextAreaLabel.HorizontalAlignment = 'right';
            app.kzTextAreaLabel.Position = [76 207 25 22];
            app.kzTextAreaLabel.Text = 'kz';

            % Create DPFractureLayerKzTextArea
            app.DPFractureLayerKzTextArea = uitextarea(app.DPTab);
            app.DPFractureLayerKzTextArea.Position = [116 171 150 60];

            % Create kx_matrixLayerTextAreaLabel
            app.kx_matrixLayerTextAreaLabel = uilabel(app.DPTab);
            app.kx_matrixLayerTextAreaLabel.HorizontalAlignment = 'right';
            app.kx_matrixLayerTextAreaLabel.Position = [701 190 86 22];
            app.kx_matrixLayerTextAreaLabel.Text = 'kx_matrixLayer';

            % Create DPMatrixLayerKxTextArea
            app.DPMatrixLayerKxTextArea = uitextarea(app.DPTab);
            app.DPMatrixLayerKxTextArea.Position = [802 154 150 60];

            % Create ky_matrixLayerTextAreaLabel
            app.ky_matrixLayerTextAreaLabel = uilabel(app.DPTab);
            app.ky_matrixLayerTextAreaLabel.HorizontalAlignment = 'right';
            app.ky_matrixLayerTextAreaLabel.Position = [341 173 86 22];
            app.ky_matrixLayerTextAreaLabel.Text = 'ky_matrixLayer';

            % Create DPMatrixLayerKyTextArea
            app.DPMatrixLayerKyTextArea = uitextarea(app.DPTab);
            app.DPMatrixLayerKyTextArea.Position = [442 137 150 60];

            % Create kz_matrixLayerTextAreaLabel
            app.kz_matrixLayerTextAreaLabel = uilabel(app.DPTab);
            app.kz_matrixLayerTextAreaLabel.HorizontalAlignment = 'right';
            app.kz_matrixLayerTextAreaLabel.Position = [349 260 86 22];
            app.kz_matrixLayerTextAreaLabel.Text = 'kz_matrixLayer';

            % Create DPMatrixLayerKzTextArea
            app.DPMatrixLayerKzTextArea = uitextarea(app.DPTab);
            app.DPMatrixLayerKzTextArea.Position = [450 224 150 60];

            % Create pori_matrixLayerTextAreaLabel
            app.pori_matrixLayerTextAreaLabel = uilabel(app.DPTab);
            app.pori_matrixLayerTextAreaLabel.HorizontalAlignment = 'right';
            app.pori_matrixLayerTextAreaLabel.Position = [618 283 94 22];
            app.pori_matrixLayerTextAreaLabel.Text = 'pori_matrixLayer';

            % Create DPMatrixLayerPoriTextArea
            app.DPMatrixLayerPoriTextArea = uitextarea(app.DPTab);
            app.DPMatrixLayerPoriTextArea.Position = [727 247 150 60];

            % Create sigmaTextAreaLabel
            app.sigmaTextAreaLabel = uilabel(app.DPTab);
            app.sigmaTextAreaLabel.HorizontalAlignment = 'right';
            app.sigmaTextAreaLabel.Position = [373 366 37 22];
            app.sigmaTextAreaLabel.Text = 'sigma';

            % Create DPShapeFactorTextArea
            app.DPShapeFactorTextArea = uitextarea(app.DPTab);
            app.DPShapeFactorTextArea.Position = [425 330 150 60];

            % Create CommonKfLabel
            app.CommonKfLabel = uilabel(app.DiscretizationTab);
            app.CommonKfLabel.HorizontalAlignment = 'right';
            app.CommonKfLabel.Position = [83 655 65 22];
            app.CommonKfLabel.Text = 'CommonKf';

            % Create CommonKfTextArea
            app.CommonKfTextArea = uitextarea(app.DiscretizationTab);
            app.CommonKfTextArea.Position = [163 619 150 60];

            % Create CommonWfLabel
            app.CommonWfLabel = uilabel(app.DiscretizationTab);
            app.CommonWfLabel.HorizontalAlignment = 'right';
            app.CommonWfLabel.Position = [333 653 68 22];
            app.CommonWfLabel.Text = 'CommonWf';

            % Create CommonWfTextArea
            app.CommonWfTextArea = uitextarea(app.DiscretizationTab);
            app.CommonWfTextArea.Position = [416 617 150 60];

            % Create CommonPorfLabel
            app.CommonPorfLabel = uilabel(app.DiscretizationTab);
            app.CommonPorfLabel.HorizontalAlignment = 'right';
            app.CommonPorfLabel.Position = [594 655 76 22];
            app.CommonPorfLabel.Text = 'CommonPorf';

            % Create CommonPorfTextArea
            app.CommonPorfTextArea = uitextarea(app.DiscretizationTab);
            app.CommonPorfTextArea.Position = [685 619 150 60];

            % Create CommonCporfLabel
            app.CommonCporfLabel = uilabel(app.DiscretizationTab);
            app.CommonCporfLabel.HorizontalAlignment = 'right';
            app.CommonCporfLabel.Position = [844 651 83 22];
            app.CommonCporfLabel.Text = 'CommonCporf';

            % Create CommonCporfEditField
            app.CommonCporfEditField = uieditfield(app.DiscretizationTab, 'numeric');
            app.CommonCporfEditField.Position = [942 651 142 22];

            % Create CommonPrporfLabel
            app.CommonPrporfLabel = uilabel(app.DiscretizationTab);
            app.CommonPrporfLabel.HorizontalAlignment = 'right';
            app.CommonPrporfLabel.Position = [843 622 86 22];
            app.CommonPrporfLabel.Text = 'CommonPrporf';

            % Create CommonPrporfEditField
            app.CommonPrporfEditField = uieditfield(app.DiscretizationTab, 'numeric');
            app.CommonPrporfEditField.Position = [944 622 140 22];

            % Create CommonStressFractureLabel
            app.CommonStressFractureLabel = uilabel(app.DiscretizationTab);
            app.CommonStressFractureLabel.HorizontalAlignment = 'right';
            app.CommonStressFractureLabel.Position = [19 588 132 22];
            app.CommonStressFractureLabel.Text = 'CommonStressFracture';

            % Create CommonStressFractureEditField
            app.CommonStressFractureEditField = uieditfield(app.DiscretizationTab, 'numeric');
            app.CommonStressFractureEditField.Position = [166 588 138 22];

            % Create CommonStressMatrixLabel
            app.CommonStressMatrixLabel = uilabel(app.DiscretizationTab);
            app.CommonStressMatrixLabel.HorizontalAlignment = 'right';
            app.CommonStressMatrixLabel.Position = [326 580 120 22];
            app.CommonStressMatrixLabel.Text = 'CommonStressMatrix';

            % Create CommonStressMatrixEditField
            app.CommonStressMatrixEditField = uieditfield(app.DiscretizationTab, 'numeric');
            app.CommonStressMatrixEditField.Position = [461 580 142 22];

            % Create CommonStressRefPressureLabel
            app.CommonStressRefPressureLabel = uilabel(app.DiscretizationTab);
            app.CommonStressRefPressureLabel.HorizontalAlignment = 'right';
            app.CommonStressRefPressureLabel.Position = [666 580 154 22];
            app.CommonStressRefPressureLabel.Text = 'CommonStressRefPressure';

            % Create CommonStressRefPressureEditField
            app.CommonStressRefPressureEditField = uieditfield(app.DiscretizationTab, 'numeric');
            app.CommonStressRefPressureEditField.Position = [835 580 129 22];

            % Create CommonRptLabel
            app.CommonRptLabel = uilabel(app.DiscretizationTab);
            app.CommonRptLabel.HorizontalAlignment = 'right';
            app.CommonRptLabel.Position = [53 542 72 22];
            app.CommonRptLabel.Text = 'CommonRpt';

            % Create CommonRptEditField
            app.CommonRptEditField = uieditfield(app.DiscretizationTab, 'numeric');
            app.CommonRptEditField.Position = [140 542 170 22];

            % Create CommonCfLabel
            app.CommonCfLabel = uilabel(app.DiscretizationTab);
            app.CommonCfLabel.HorizontalAlignment = 'right';
            app.CommonCfLabel.Position = [317 545 66 22];
            app.CommonCfLabel.Text = 'CommonCf';

            % Create CommonCfEditField
            app.CommonCfEditField = uieditfield(app.DiscretizationTab, 'numeric');
            app.CommonCfEditField.Position = [398 545 172 22];

            % Create CommonCaLabel
            app.CommonCaLabel = uilabel(app.DiscretizationTab);
            app.CommonCaLabel.HorizontalAlignment = 'right';
            app.CommonCaLabel.Position = [691 542 69 22];
            app.CommonCaLabel.Text = 'CommonCa';

            % Create CommonCaEditField
            app.CommonCaEditField = uieditfield(app.DiscretizationTab, 'numeric');
            app.CommonCaEditField.Position = [775 542 165 22];

            % Create CommonPrporLabel
            app.CommonPrporLabel = uilabel(app.DiscretizationTab);
            app.CommonPrporLabel.HorizontalAlignment = 'right';
            app.CommonPrporLabel.Position = [58 503 83 22];
            app.CommonPrporLabel.Text = 'CommonPrpor';

            % Create CommonPrporEditField
            app.CommonPrporEditField = uieditfield(app.DiscretizationTab, 'numeric');
            app.CommonPrporEditField.Position = [156 503 148 22];

            % Create CommonCporLabel
            app.CommonCporLabel = uilabel(app.DiscretizationTab);
            app.CommonCporLabel.HorizontalAlignment = 'right';
            app.CommonCporLabel.Position = [325 502 80 22];
            app.CommonCporLabel.Text = 'CommonCpor';

            % Create CommonCporEditField
            app.CommonCporEditField = uieditfield(app.DiscretizationTab, 'numeric');
            app.CommonCporEditField.Position = [420 502 150 22];

            % Create FlowTab
            app.FlowTab = uitab(app.TabGroup);
            app.FlowTab.Title = 'Flow';

            % Create TabGroup2
            app.TabGroup2 = uitabgroup(app.FlowTab);
            app.TabGroup2.Position = [54 12 1120 267];

            % Create GasWaterTab
            app.GasWaterTab = uitab(app.TabGroup2);
            app.GasWaterTab.Title = 'GasWater';

            % Create ifpcglEditFieldLabel
            app.ifpcglEditFieldLabel = uilabel(app.GasWaterTab);
            app.ifpcglEditFieldLabel.HorizontalAlignment = 'right';
            app.ifpcglEditFieldLabel.Position = [37 197 33 22];
            app.ifpcglEditFieldLabel.Text = 'ifpcgl';

            % Create GWifpcglEditField
            app.GWifpcglEditField = uieditfield(app.GasWaterTab, 'numeric');
            app.GWifpcglEditField.Position = [85 197 100 22];

            % Create RPGWTextAreaLabel
            app.RPGWTextAreaLabel = uilabel(app.GasWaterTab);
            app.RPGWTextAreaLabel.HorizontalAlignment = 'right';
            app.RPGWTextAreaLabel.Position = [21 148 42 22];
            app.RPGWTextAreaLabel.Text = 'RPGW';

            % Create GWRPGWTextArea
            app.GWRPGWTextArea = uitextarea(app.GasWaterTab);
            app.GWRPGWTextArea.Position = [78 112 150 60];

            % Create PRFTextAreaLabel
            app.PRFTextAreaLabel = uilabel(app.GasWaterTab);
            app.PRFTextAreaLabel.HorizontalAlignment = 'right';
            app.PRFTextAreaLabel.Position = [43 71 29 22];
            app.PRFTextAreaLabel.Text = 'PRF';

            % Create GWPRFTextArea
            app.GWPRFTextArea = uitextarea(app.GasWaterTab);
            app.GWPRFTextArea.Position = [87 35 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 = [242 199 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 = [332 199 100 22];

            % Create proEditFieldLabel
            app.proEditFieldLabel = uilabel(app.OilWaterTab);
            app.proEditFieldLabel.HorizontalAlignment = 'right';
            app.proEditFieldLabel.Position = [255 168 25 22];
            app.proEditFieldLabel.Text = 'pro';

            % Create OWproEditField
            app.OWproEditField = uieditfield(app.OilWaterTab, 'numeric');
            app.OWproEditField.Position = [295 168 100 22];

            % Create BoiEditFieldLabel
            app.BoiEditFieldLabel = uilabel(app.OilWaterTab);
            app.BoiEditFieldLabel.HorizontalAlignment = 'right';
            app.BoiEditFieldLabel.Position = [254 132 25 22];
            app.BoiEditFieldLabel.Text = 'Boi';

            % Create OWBoiEditField
            app.OWBoiEditField = uieditfield(app.OilWaterTab, 'numeric');
            app.OWBoiEditField.Position = [294 132 112 22];

            % Create coEditFieldLabel
            app.coEditFieldLabel = uilabel(app.OilWaterTab);
            app.coEditFieldLabel.HorizontalAlignment = 'right';
            app.coEditFieldLabel.Position = [248 94 25 22];
            app.coEditFieldLabel.Text = 'co';

            % Create OWcoEditField
            app.OWcoEditField = uieditfield(app.OilWaterTab, 'numeric');
            app.OWcoEditField.Position = [288 94 111 22];

            % Create voiEditFieldLabel
            app.voiEditFieldLabel = uilabel(app.OilWaterTab);
            app.voiEditFieldLabel.HorizontalAlignment = 'right';
            app.voiEditFieldLabel.Position = [266 60 25 22];
            app.voiEditFieldLabel.Text = 'voi';

            % Create OWvoiEditField
            app.OWvoiEditField = uieditfield(app.OilWaterTab, 'numeric');
            app.OWvoiEditField.Position = [306 60 110 22];

            % Create cvoEditFieldLabel
            app.cvoEditFieldLabel = uilabel(app.OilWaterTab);
            app.cvoEditFieldLabel.HorizontalAlignment = 'right';
            app.cvoEditFieldLabel.Position = [462 194 25 22];
            app.cvoEditFieldLabel.Text = 'cvo';

            % Create OWcvoEditField
            app.OWcvoEditField = uieditfield(app.OilWaterTab, 'numeric');
            app.OWcvoEditField.Position = [502 194 112 22];

            % Create ifpcowEditFieldLabel
            app.ifpcowEditFieldLabel = uilabel(app.OilWaterTab);
            app.ifpcowEditFieldLabel.HorizontalAlignment = 'right';
            app.ifpcowEditFieldLabel.Position = [27 123 39 22];
            app.ifpcowEditFieldLabel.Text = 'ifpcow';

            % Create OWifpcowEditField
            app.OWifpcowEditField = uieditfield(app.OilWaterTab, 'numeric');
            app.OWifpcowEditField.Position = [81 123 120 22];

            % Create PRMTextAreaLabel
            app.PRMTextAreaLabel = uilabel(app.OilWaterTab);
            app.PRMTextAreaLabel.HorizontalAlignment = 'right';
            app.PRMTextAreaLabel.Position = [470 148 32 22];
            app.PRMTextAreaLabel.Text = 'PRM';

            % Create OWPRMTextArea
            app.OWPRMTextArea = uitextarea(app.OilWaterTab);
            app.OWPRMTextArea.Position = [508 112 150 60];

            % Create PRFTextAreaLabel_2
            app.PRFTextAreaLabel_2 = uilabel(app.OilWaterTab);
            app.PRFTextAreaLabel_2.HorizontalAlignment = 'right';
            app.PRFTextAreaLabel_2.Position = [18 82 29 22];
            app.PRFTextAreaLabel_2.Text = 'PRF';

            % Create OWPRFTextArea
            app.OWPRFTextArea = uitextarea(app.OilWaterTab);
            app.OWPRFTextArea.Position = [62 46 150 60];

            % Create oil_modelLabel
            app.oil_modelLabel = uilabel(app.OilWaterTab);
            app.oil_modelLabel.HorizontalAlignment = 'right';
            app.oil_modelLabel.Position = [50 205 56 22];
            app.oil_modelLabel.Text = 'oil_model';

            % Create OWoil_modelDropDown
            app.OWoil_modelDropDown = uidropdown(app.OilWaterTab);
            app.OWoil_modelDropDown.Items = {''};
            app.OWoil_modelDropDown.Position = [121 205 100 22];
            app.OWoil_modelDropDown.Value = '';

            % Create MultiComponentTab
            app.MultiComponentTab = uitab(app.TabGroup2);
            app.MultiComponentTab.Title = 'MultiComponent';

            % Create cs_NcTextAreaLabel
            app.cs_NcTextAreaLabel = uilabel(app.MultiComponentTab);
            app.cs_NcTextAreaLabel.HorizontalAlignment = 'right';
            app.cs_NcTextAreaLabel.Position = [16 191 38 22];
            app.cs_NcTextAreaLabel.Text = 'cs_Nc';

            % Create MCcs_NcTextArea
            app.MCcs_NcTextArea = uitextarea(app.MultiComponentTab);
            app.MCcs_NcTextArea.Position = [68 156 150 60];

            % Create kr_nosurfTextAreaLabel
            app.kr_nosurfTextAreaLabel = uilabel(app.MultiComponentTab);
            app.kr_nosurfTextAreaLabel.HorizontalAlignment = 'right';
            app.kr_nosurfTextAreaLabel.Position = [17 121 55 22];
            app.kr_nosurfTextAreaLabel.Text = 'kr_nosurf';

            % Create MCkr_nosurfTextArea
            app.MCkr_nosurfTextArea = uitextarea(app.MultiComponentTab);
            app.MCkr_nosurfTextArea.Position = [86 86 150 60];

            % Create kr_surfTextAreaLabel
            app.kr_surfTextAreaLabel = uilabel(app.MultiComponentTab);
            app.kr_surfTextAreaLabel.HorizontalAlignment = 'right';
            app.kr_surfTextAreaLabel.Position = [11 44 42 22];
            app.kr_surfTextAreaLabel.Text = 'kr_surf';

            % Create MCkr_surfTextArea
            app.MCkr_surfTextArea = uitextarea(app.MultiComponentTab);
            app.MCkr_surfTextArea.Position = [67 9 150 60];

            % Create PCTextAreaLabel
            app.PCTextAreaLabel = uilabel(app.MultiComponentTab);
            app.PCTextAreaLabel.HorizontalAlignment = 'right';
            app.PCTextAreaLabel.Position = [863 189 25 22];
            app.PCTextAreaLabel.Text = 'PC';

            % Create MCPCTextArea
            app.MCPCTextArea = uitextarea(app.MultiComponentTab);
            app.MCPCTextArea.Position = [903 153 150 60];

            % Create cs_Nc_fractureTextAreaLabel
            app.cs_Nc_fractureTextAreaLabel = uilabel(app.MultiComponentTab);
            app.cs_Nc_fractureTextAreaLabel.HorizontalAlignment = 'right';
            app.cs_Nc_fractureTextAreaLabel.Position = [258 213 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 = [359 183 150 54];

            % Create kr_nosurf_fractureTextAreaLabel
            app.kr_nosurf_fractureTextAreaLabel = uilabel(app.MultiComponentTab);
            app.kr_nosurf_fractureTextAreaLabel.HorizontalAlignment = 'right';
            app.kr_nosurf_fractureTextAreaLabel.Position = [244 157 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 = [361 126 150 55];

            % Create kr_surf_fractureTextAreaLabel
            app.kr_surf_fractureTextAreaLabel = uilabel(app.MultiComponentTab);
            app.kr_surf_fractureTextAreaLabel.HorizontalAlignment = 'right';
            app.kr_surf_fractureTextAreaLabel.Position = [254 94 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 = [358 66 150 52];

            % Create PC_fractureTextAreaLabel
            app.PC_fractureTextAreaLabel = uilabel(app.MultiComponentTab);
            app.PC_fractureTextAreaLabel.HorizontalAlignment = 'right';
            app.PC_fractureTextAreaLabel.Position = [271 33 69 22];
            app.PC_fractureTextAreaLabel.Text = 'PC_fracture';

            % Create MCPC_fractureTextArea
            app.MCPC_fractureTextArea = uitextarea(app.MultiComponentTab);
            app.MCPC_fractureTextArea.Position = [355 5 150 52];

            % Create ifpcglEditFieldLabel_2
            app.ifpcglEditFieldLabel_2 = uilabel(app.MultiComponentTab);
            app.ifpcglEditFieldLabel_2.HorizontalAlignment = 'right';
            app.ifpcglEditFieldLabel_2.Position = [314 -25 33 22];
            app.ifpcglEditFieldLabel_2.Text = 'ifpcgl';

            % Create MCifpcglEditField
            app.MCifpcglEditField = uieditfield(app.MultiComponentTab, 'numeric');
            app.MCifpcglEditField.Position = [362 -25 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 = [541 197 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 = [677 197 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 = [554 168 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 = [682 168 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 = [514 142 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 = [677 142 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 DensityWScLabel
            app.DensityWScLabel = uilabel(app.FlowTab);
            app.DensityWScLabel.HorizontalAlignment = 'right';
            app.DensityWScLabel.Position = [40 529 70 22];
            app.DensityWScLabel.Text = 'DensityWSc';

            % Create FlowCommonDensityWScEditField
            app.FlowCommonDensityWScEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonDensityWScEditField.Position = [125 529 100 22];

            % Create GasLabel
            app.GasLabel = uilabel(app.FlowTab);
            app.GasLabel.Position = [84 503 27 22];
            app.GasLabel.Text = 'Gas';

            % Create PrwLabel
            app.PrwLabel = uilabel(app.FlowTab);
            app.PrwLabel.HorizontalAlignment = 'right';
            app.PrwLabel.Position = [247 531 26 22];
            app.PrwLabel.Text = 'Prw';

            % Create FlowCommonPrwEditField
            app.FlowCommonPrwEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonPrwEditField.Position = [288 531 100 22];

            % Create BwiLabel
            app.BwiLabel = uilabel(app.FlowTab);
            app.BwiLabel.HorizontalAlignment = 'right';
            app.BwiLabel.Position = [423 529 25 22];
            app.BwiLabel.Text = 'Bwi';

            % Create FlowCommonBwiEditField
            app.FlowCommonBwiEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonBwiEditField.Position = [463 529 100 22];

            % Create CwLabel
            app.CwLabel = uilabel(app.FlowTab);
            app.CwLabel.HorizontalAlignment = 'right';
            app.CwLabel.Position = [582 529 25 22];
            app.CwLabel.Text = 'Cw';

            % Create FlowCommonCwEditField
            app.FlowCommonCwEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonCwEditField.Position = [622 529 100 22];

            % Create VwiLabel
            app.VwiLabel = uilabel(app.FlowTab);
            app.VwiLabel.HorizontalAlignment = 'right';
            app.VwiLabel.Position = [737 529 25 22];
            app.VwiLabel.Text = 'Vwi';

            % Create FlowCommonVwiEditField
            app.FlowCommonVwiEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonVwiEditField.Position = [777 529 100 22];

            % Create CvwLabel
            app.CvwLabel = uilabel(app.FlowTab);
            app.CvwLabel.HorizontalAlignment = 'right';
            app.CvwLabel.Position = [896 529 28 22];
            app.CvwLabel.Text = 'Cvw';

            % Create FlowCommonCvwEditField
            app.FlowCommonCvwEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonCvwEditField.Position = [939 529 100 22];

            % Create PGradThresholdLabel
            app.PGradThresholdLabel = uilabel(app.FlowTab);
            app.PGradThresholdLabel.HorizontalAlignment = 'right';
            app.PGradThresholdLabel.Position = [1037 529 93 22];
            app.PGradThresholdLabel.Text = 'PGradThreshold';

            % Create FlowCommonPGradThresholdEditField
            app.FlowCommonPGradThresholdEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonPGradThresholdEditField.Position = [1145 529 100 22];

            % Create WaterLabel
            app.WaterLabel = uilabel(app.FlowTab);
            app.WaterLabel.Position = [78 565 37 22];
            app.WaterLabel.Text = 'Water';

            % Create DensityGScLabel
            app.DensityGScLabel = uilabel(app.FlowTab);
            app.DensityGScLabel.HorizontalAlignment = 'right';
            app.DensityGScLabel.Position = [38 476 68 22];
            app.DensityGScLabel.Text = 'DensityGSc';

            % Create FlowCommonDensityGScEditField
            app.FlowCommonDensityGScEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonDensityGScEditField.Position = [121 476 100 22];

            % Create GasPrgLabel
            app.GasPrgLabel = uilabel(app.FlowTab);
            app.GasPrgLabel.HorizontalAlignment = 'right';
            app.GasPrgLabel.Position = [244 476 46 22];
            app.GasPrgLabel.Text = 'GasPrg';

            % Create FlowCommonGasPrgEditField
            app.FlowCommonGasPrgEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonGasPrgEditField.Position = [305 476 100 22];

            % Create GasBgiLabel
            app.GasBgiLabel = uilabel(app.FlowTab);
            app.GasBgiLabel.HorizontalAlignment = 'right';
            app.GasBgiLabel.Position = [418 476 44 22];
            app.GasBgiLabel.Text = 'GasBgi';

            % Create FlowCommonGasBgiEditField
            app.FlowCommonGasBgiEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonGasBgiEditField.Position = [477 476 100 22];

            % Create GasCgLabel
            app.GasCgLabel = uilabel(app.FlowTab);
            app.GasCgLabel.HorizontalAlignment = 'right';
            app.GasCgLabel.Position = [604 476 42 22];
            app.GasCgLabel.Text = 'GasCg';

            % Create FlowCommonGasCgEditField
            app.FlowCommonGasCgEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonGasCgEditField.Position = [661 476 100 22];

            % Create GasVgiLabel
            app.GasVgiLabel = uilabel(app.FlowTab);
            app.GasVgiLabel.HorizontalAlignment = 'right';
            app.GasVgiLabel.Position = [787 476 44 22];
            app.GasVgiLabel.Text = 'GasVgi';

            % Create FlowCommonGasVgiEditField
            app.FlowCommonGasVgiEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonGasVgiEditField.Position = [846 476 100 22];

            % Create GasCvgLabel
            app.GasCvgLabel = uilabel(app.FlowTab);
            app.GasCvgLabel.HorizontalAlignment = 'right';
            app.GasCvgLabel.Position = [964 476 48 22];
            app.GasCvgLabel.Text = 'GasCvg';

            % Create FlowCommonGasCvgEditField
            app.FlowCommonGasCvgEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonGasCvgEditField.Position = [1027 476 100 22];

            % Create GasVLLabel
            app.GasVLLabel = uilabel(app.FlowTab);
            app.GasVLLabel.HorizontalAlignment = 'right';
            app.GasVLLabel.Position = [55 442 42 22];
            app.GasVLLabel.Text = 'GasVL';

            % Create FlowCommonGasVLEditField
            app.FlowCommonGasVLEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonGasVLEditField.Position = [112 442 100 22];

            % Create GasPLLabel
            app.GasPLLabel = uilabel(app.FlowTab);
            app.GasPLLabel.HorizontalAlignment = 'right';
            app.GasPLLabel.Position = [246 442 42 22];
            app.GasPLLabel.Text = 'GasPL';

            % Create FlowCommonGasPLEditField
            app.FlowCommonGasPLEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonGasPLEditField.Position = [303 442 100 22];

            % Create GasKnLabel
            app.GasKnLabel = uilabel(app.FlowTab);
            app.GasKnLabel.HorizontalAlignment = 'right';
            app.GasKnLabel.Position = [431 434 42 22];
            app.GasKnLabel.Text = 'GasKn';

            % Create FlowCommonGasKnEditField
            app.FlowCommonGasKnEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonGasKnEditField.Position = [488 434 100 22];

            % Create GasBetaNonDarcyLabel
            app.GasBetaNonDarcyLabel = uilabel(app.FlowTab);
            app.GasBetaNonDarcyLabel.HorizontalAlignment = 'right';
            app.GasBetaNonDarcyLabel.Position = [623 426 105 22];
            app.GasBetaNonDarcyLabel.Text = 'GasBetaNonDarcy';

            % Create FlowCommonGasBetaNonDarcyEditField
            app.FlowCommonGasBetaNonDarcyEditField = uieditfield(app.FlowTab, 'numeric');
            app.FlowCommonGasBetaNonDarcyEditField.Position = [743 426 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 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 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