Block (without bytecode): avoid silent failures in some corner cases

Either ensure that oo_.determinstic_simulation.status is set, or really error out.
trustregion
Sébastien Villemot 2022-03-23 17:33:05 +01:00
parent dd1ec10ec8
commit 4da9d1e718
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
2 changed files with 18 additions and 9 deletions

View File

@ -143,6 +143,14 @@ for it_=start:incr:finish
if verbose
disp('The singularity of the jacobian matrix could not be corrected')
end
if is_dynamic
oo_.deterministic_simulation.status = false;
oo_.deterministic_simulation.error = max_res;
oo_.deterministic_simulation.iterations = iter;
oo_.deterministic_simulation.block(Block_Num).status = false;% Convergency failed.
oo_.deterministic_simulation.block(Block_Num).error = max_res;
oo_.deterministic_simulation.block(Block_Num).iterations = iter;
end
info = -Block_Num*10;
return
end
@ -275,16 +283,11 @@ for it_=start:incr:finish
end
end
else
if verbose
disp('unknown option : ')
if is_dynamic
disp(['options_.stack_solve_algo = ' num2str(stack_solve_algo) ' not implemented'])
else
disp(['options_.solve_algo = ' num2str(options.solve_algo) ' not implemented'])
end
if is_dynamic
error(['options_.stack_solve_algo = ' num2str(stack_solve_algo) ' not implemented'])
else
error(['options_.solve_algo = ' num2str(options.solve_algo) ' not implemented'])
end
info = -Block_Num*10;
return
end
iter=iter+1;
max_resa = max_res;

View File

@ -136,6 +136,12 @@ while ~(cvg || iter>maxit_)
continue
else
disp('The singularity of the jacobian matrix could not be corrected');
oo.deterministic_simulation.status = false;
oo.deterministic_simulation.error = max_res;
oo.deterministic_simulation.iterations = iter;
oo.deterministic_simulation.block(Block_Num).status = false;% Convergency failed.
oo.deterministic_simulation.block(Block_Num).error = max_res;
oo.deterministic_simulation.block(Block_Num).iterations = iter;
return
end
end