Block decomposition: make mfs=1 the default

NB: mfs=3 is nevertheless used when “block” option has not been used, and the
model is purely backward/forward or static, for solve_algo={12,14}.
master
Sébastien Villemot 2023-01-25 18:37:37 +01:00
parent dc966014a3
commit 389a2647d3
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
2 changed files with 5 additions and 2 deletions

View File

@ -2137,10 +2137,13 @@ DynamicModel::computingPass(int derivsOrder, int paramsDerivsOrder, const eval_c
if (paramsDerivsOrder > 0 && !no_tmp_terms)
computeParamsDerivativesTemporaryTerms();
/* Change block decomposition settings when the “block” keyword has not been
used and the model is purely backward/forward or static. This is meant to
be used with solve_algo={12,14}. */
if (!block && (max_endo_lag == 0 || max_endo_lead == 0))
{
time_recursive_block_decomposition = true;
mfs = 3; // FIXME: remove this line when mfs=3 becomes the global default
mfs = 3; // Typically useful for equations of the form log(x)=RHS
}
computingPassBlock(eval_context, no_tmp_terms);
if (block_decomposed)

View File

@ -599,7 +599,7 @@ public:
//! Absolute value under which a number is considered to be zero
double cutoff{1e-15};
// Setting for minimum feedback set computation (see the reference manual)
int mfs{0};
int mfs{1};
//! Declare a node as an equation of the model; also give its line number
void addEquation(expr_t eq, optional<int> lineno);
//! Declare a node as an equation of the model, also giving its tags