diff --git a/matlab/stochastic_solver/k_order_pert.m b/matlab/stochastic_solver/k_order_pert.m index 41ea2df57bcfc7034592cfddf3362d7e6b29c512..a7428128c65d22c3e76b2525132bdcfcf44b9d4f 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 90ee33610b0a75fa3f033e934092b31a481eb2ad..9cf3232792536325a07453374ba3b7f9585dd2b6 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)