From 3bc4823c9e67e75b5156b7b9c406b727c8f9fc6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org> Date: Thu, 6 Jun 2024 10:48:12 +0200 Subject: [PATCH] Suppress error messages of k_order_perturbation MEX when options_.verbosity=0 --- matlab/stochastic_solver/k_order_pert.m | 4 +++- .../k_order_perturbation/k_order_perturbation.cc | 14 +++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/matlab/stochastic_solver/k_order_pert.m b/matlab/stochastic_solver/k_order_pert.m index 41ea2df57b..a7428128c6 100644 --- a/matlab/stochastic_solver/k_order_pert.m +++ b/matlab/stochastic_solver/k_order_pert.m @@ -43,7 +43,9 @@ end try [dynpp_derivs, dyn_derivs] = k_order_perturbation(dr,M_,options_); catch ME - disp(ME.message) + if options_.verbosity > 0 + disp(ME.message) + end info(1)=9; return end diff --git a/mex/sources/k_order_perturbation/k_order_perturbation.cc b/mex/sources/k_order_perturbation/k_order_perturbation.cc index 90ee33610b..9cf3232792 100644 --- a/mex/sources/k_order_perturbation/k_order_perturbation.cc +++ b/mex/sources/k_order_perturbation/k_order_perturbation.cc @@ -131,6 +131,11 @@ extern "C" mexErrMsgTxt("options_.pruning should be a logical scalar"); bool pruning = static_cast<bool>(mxGetScalar(pruning_mx)); + const mxArray* verbosity_mx = mxGetField(options_mx, 0, "verbosity"); + if (!(verbosity_mx && mxIsScalar(verbosity_mx) && mxIsNumeric(verbosity_mx))) + mexErrMsgTxt("options_.verbosity should be a numeric scalar"); + int verbosity {static_cast<int>(mxGetScalar(verbosity_mx))}; + // Extract various fields from M_ const mxArray* fname_mx = mxGetField(M_mx, 0, "fname"); if (!(fname_mx && mxIsChar(fname_mx) && mxGetM(fname_mx) == 1)) @@ -356,18 +361,21 @@ extern "C" } catch (const KordException& e) { - e.print(); + if (verbosity > 0) + e.print(); mexErrMsgTxt( ("dynare:k_order_perturbation: Caught Kord exception: " + e.get_message()).c_str()); } catch (const TLException& e) { - e.print(); + if (verbosity > 0) + e.print(); mexErrMsgTxt("dynare:k_order_perturbation: Caught TL exception"); } catch (SylvException& e) { - e.printMessage(); + if (verbosity > 0) + e.printMessage(); mexErrMsgTxt("dynare:k_order_perturbation: Caught Sylv exception"); } catch (const DynareException& e) -- GitLab