54 lines
1.6 KiB
Matlab
54 lines
1.6 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);
|
|
|
|
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
|