优化点1,2.
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
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
|
||||
Reference in New Issue
Block a user