Files
3D_EDFM_SIM-X/gui_support/config/normalize_config.m
T
2026-04-02 19:50:41 +08:00

56 lines
1.7 KiB
Matlab

function config = normalize_config(config)
%NORMALIZE_CONFIG Normalize legacy GUI/runtime config to the current schema.
if nargin == 0 || isempty(config)
config = create_empty_config();
return;
end
defaults = create_empty_config();
config = merge_struct_defaults(config, defaults);
config.model.grid_model = first_nonempty_scalar(config.model.grid_model, 1);
config.model.flow_model = first_nonempty_scalar(config.model.flow_model, 1);
config.flow.gas_water.gas_model = 1;
config.flow.multi_component.gas_model = 1;
legacy_model_fields = {'modelflag'};
legacy_fracture_fields = {'input_style', 'fractureLines', 'fractureHeights', 'flowBarrierFlags'};
for i = 1:numel(legacy_model_fields)
field_name = legacy_model_fields{i};
if isfield(config.model, field_name)
config.model = rmfield(config.model, field_name);
end
end
for i = 1:numel(legacy_fracture_fields)
field_name = legacy_fracture_fields{i};
if isfield(config.fracture, field_name)
config.fracture = rmfield(config.fracture, field_name);
end
end
end
function s = merge_struct_defaults(s, defaults)
default_fields = fieldnames(defaults);
for i = 1:numel(default_fields)
field_name = default_fields{i};
if ~isfield(s, field_name) || isempty(s.(field_name))
s.(field_name) = defaults.(field_name);
elseif isstruct(defaults.(field_name)) && isstruct(s.(field_name))
s.(field_name) = merge_struct_defaults(s.(field_name), defaults.(field_name));
end
end
end
function value = first_nonempty_scalar(raw_value, fallback)
if isempty(raw_value)
value = fallback;
elseif isscalar(raw_value)
value = raw_value;
else
value = raw_value(1);
end
end