function config = create_empty_config() %CREATE_EMPTY_CONFIG Create a unified GUI/runtime config skeleton. config = struct(); config.meta = struct( ... 'case_name', '', ... 'case_id', '', ... 'description', '', ... 'source_case_folder', '', ... 'created_from_template', '', ... 'version', '0.1'); config.model = struct( ... 'grid_model', 1, ... 'flow_model', 1); config.grid = struct( ... 'dx', [], ... 'dy', [], ... 'dz', [], ... 'nx', 0, ... 'ny', 0, ... 'nz', 0, ... 'NTG', [], ... 'coordinates', [], ... 'nodes', [], ... 'nP', 0, ... 'nmc', 0, ... 'dxv', [], ... 'dyv', [], ... 'dzv', [], ... 'zm', [], ... 'vm', [], ... 'xrao', [], ... 'yrao', [], ... 'zrao', [], ... 'cell_mid_coords', []); config.fracture = struct( ... 'input_content', {{}}, ... 'f', [], ... 'fellip', [], ... 'frac_information', [], ... 'nf', 0); config.discretization = struct( ... 'mode', 1, ... 'use_operator', true, ... 'sp', struct( ... 'boundary_polygon', [], ... 'invalid_layer', [], ... 'valid_grids', [], ... 'matrix', struct( ... 'kx', [], ... 'ky', [], ... 'kz', [], ... 'pori', [], ... 'prpor', 20, ... 'cpor', 1.0e-5, ... 'rock_density', 2700), ... 'fracture', struct( ... 'Kf', [], ... 'Wf', [], ... 'Porf', [], ... 'prporf', 20, ... 'cporf', 1.0e-5), ... 'stress', struct( ... 'fracture_factor', 0, ... 'matrix_factor', 0, ... 'ref_pressure', 20, ... 'Rpt', 0, ... 'cf', 0, ... 'ca', 0)), ... 'dp', struct( ... 'valid_grids', [], ... 'NTG', [], ... 'prpor', 20, ... 'cpor', 1.0e-5, ... 'rock_density', 2700, ... 'fracture_layer', struct( ... 'kx', [], ... 'ky', [], ... 'kz', [], ... 'pori', []), ... 'matrix_layer', struct( ... 'kx', [], ... 'ky', [], ... 'kz', [], ... 'pori', []), ... 'shape_factor', [], ... 'fracture', struct( ... 'Kf', [], ... 'Wf', [], ... 'Porf', [], ... 'prporf', 20, ... 'cporf', 1.0e-5), ... 'stress', struct( ... 'fracture_factor', 0, ... 'matrix_factor', 0, ... 'ref_pressure', 20), ... 'Rpt', 0, ... 'cf', 0, ... 'ca', 0), ... 'notes', ''); config.flow = struct( ... 'gas_water', struct( ... 'gas_prop', struct( ... 'VL', 0, ... 'PL', 0, ... 'Kn', 0, ... 'Kn_modified_factor', 1, ... 'beta_non_darcy_flow', 0), ... 'p_grad_threshold', 0, ... 'density_g_sc', 0, ... 'density_w_sc', 1000, ... 'gas_model', 1, ... 'prg', [], ... 'Bgi', [], ... 'cg', [], ... 'vgi', [], ... 'cvg', [], ... 'Ppr', [], ... 'BG', [], ... 'MUG', [], ... 'prw', [], ... 'Bwi', [], ... 'cw', [], ... 'vwi', [], ... 'cvw', [], ... 'ifpcgl', 0, ... 'matrix_relperm_table', [], ... 'fracture_relperm_table', []), ... 'oil_water', struct( ... 'density_o_sc', 0, ... 'density_w_sc', 1000, ... 'oil_model', 1, ... 'pro', [], ... 'Boi', [], ... 'co', [], ... 'voi', [], ... 'cvo', [], ... 'Ppr', [], ... 'BO', [], ... 'MUO', [], ... 'prw', [], ... 'Bwi', [], ... 'cw', [], ... 'vwi', [], ... 'cvw', [], ... 'ifpcow', 0, ... 'matrix_relperm_table', [], ... 'fracture_relperm_table', [], ... 'beta_non_darcy_flow', 0, ... 'p_grad_threshold', 0), ... 'multi_component', struct( ... 'Ds', [], ... 'Db', [], ... 'c_ca_table', [], ... 'cs_data', [], ... 'cb_data', [], ... 'csa_data', [], ... 'cba_data', [], ... 'R', [], ... 'Vm', [], ... 'Temperature', [], ... 'chemistry_cof', [], ... 'x_matrix', 0.9, ... 'x_fracture', 1.0, ... 'cs_Nc', [], ... 'Nc_nosurf', [], ... 'Nc_surf', [], ... 'kr_nosurf', [], ... 'kr_surf', [], ... 'PC', [], ... 'cs_Nc_fracture', [], ... 'kr_nosurf_fracture', [], ... 'kr_surf_fracture', [], ... 'PC_fracture', [], ... 'ifpcgl', 0, ... 'p_grad_threshold', 0, ... 'gas_prop', struct( ... 'VL', 0, ... 'PL', 0, ... 'Kn', 0, ... 'Kn_modified_factor', 1, ... 'stress_factor_fracture', 0, ... 'stress_factor_matrix', 0, ... 'stress_factor_ref_pressure', 20, ... 'beta_non_darcy_flow', 0), ... 'density_g_sc', 0, ... 'density_w_sc', 1000, ... 'gas_model', 1, ... 'prg', [], ... 'Bgi', [], ... 'cg', [], ... 'vgi', [], ... 'cvg', [], ... 'Ppr', [], ... 'BG', [], ... 'MUG', [], ... 'prw', [], ... 'Bwi', [], ... 'cw', [], ... 'vwi', [], ... 'cvw', [], ... 'number_state_variables', 4)); config.initial = struct( ... 'pressure', [], ... 'sw', [], ... 'cs', [], ... 'cb', []); config.wells = struct( ... 'well1', {{}}, ... 'num_fracture_wells', 0, ... 'welloc', {{}}, ... 'perfnum', {{}}, ... 'well2', {{}}, ... 'Wellc', []); config.schedule = struct( ... 'number_phases', 0, ... 'well_schedules', {{}}, ... 'time', [], ... 'dtmax', [], ... 'dtmin', []); config.solver = struct( ... 'yitap', 5, ... 'yitas', 0.04, ... 'omega', 0.5, ... 'Nmax', 50, ... 'epsave', 1e-6, ... 'epsmax', 1e-6); config.output = struct( ... 'save_input_path', '', ... 'save_result_path', '', ... 'result_name', '', ... 'plot_requests', {{}});