fix parse bug

This commit is contained in:
xinxiao
2026-03-17 11:05:57 +08:00
parent e58024e08a
commit 9276c1ef32
4 changed files with 149 additions and 9 deletions
+21 -1
View File
@@ -352,6 +352,11 @@ gas_prop = mc.gas_prop;
c1 = 1;
c2 = 8 / 9;
gas_prop.Kn_modified_factor = 1 + 8 * c1 * gas_prop.Kn + 16 * c2 * gas_prop.Kn^2;
if isfield(gas_prop, 'beta_non_darcy_flow') && ~isfield(gas_prop, 'beta_non_Darcy_flow')
gas_prop.beta_non_Darcy_flow = gas_prop.beta_non_darcy_flow;
elseif ~isfield(gas_prop, 'beta_non_Darcy_flow')
gas_prop.beta_non_Darcy_flow = 0;
end
f.Dwsi = mc.density_w_sc;
f.Dgsi = mc.density_g_sc;
@@ -371,7 +376,7 @@ f.chemistry_potential = f.chemistry_cof * log(f.x_total);
pressure0 = expand_initial_value(initial_config.pressure, total_cells);
sw0 = expand_initial_value(initial_config.sw, total_cells);
cs0 = expand_initial_value(initial_config.cs, total_cells);
cb0 = expand_initial_value(initial_config.cb, total_cells);
cb0 = expand_initial_value(sanitize_positive_initial_value(initial_config.cb, 50.0), total_cells);
state0 = initialRS(pressure0, sw0, cs0, cb0);
end
@@ -383,6 +388,21 @@ else
end
end
function value = sanitize_positive_initial_value(raw_value, fallback)
if isempty(raw_value)
value = fallback;
return;
end
value = raw_value;
invalid_mask = ~isfinite(value) | value <= 0;
if all(invalid_mask(:))
value = fallback;
elseif any(invalid_mask(:))
value(invalid_mask) = fallback;
end
end
function value = default_if_empty(s, field_name, fallback)
if isfield(s, field_name) && ~isempty(s.(field_name))
value = s.(field_name);