Block decomposition failure with change_type() in Dynare 6

Hi Dynare Team
I am running into a block decomposition incompatibility issue when running a toolbox that was made to be used for older versions of Dynare (presumably Dynare 4.x); and I am running Dynare 6. The toolbox uses the change_type() command extensively for calibration purposes.

When running models that use change_type() to flip variables between parameters and endogenous variables (for calibration via homotopy), Dynare 6.x’s preprocessing fails during block decomposition with the following error:

Normalizing the dynamic model...
Normalization failed with cutoff, trying symbolic normalisation...
Could not normalise the dynamic model. Variable [VARIABLE NAME] is not in the maximum cardinality matching.
ERROR: Block decomposition requested but failed.  
  • There appears to be no command-line option to disable block decomposition in Dynare 6.x (unlike block=false in older versions);
  • Setting options_.block = false within the mod file does not affect preprocessing
  • The block decomposition is automatically attempted during pre-processing and cannot be bypassed.

So my questions are:

  1. Is there a way to disable block decomposition during preprocessing in Dynare 6?
  2. Are there known incompatibilities between change_type() and Dynare 6’s block decomposition algorithm?
  3. Would this be considered a regression from earlier Dynare versions, or is this an intentional design change?
  4. Are there recommended workarounds for large multi-country models that rely on change_type() for calibration?

Thanks for your time, and DM me if you have any privacy concerns regarding any of the above!

Dear David,
that looks like a bug. Do you have an example to trigger the issue? The default, starting in Dynare 6, is to always compute the block decomposition of the model. I have never seen that type of error before and would view that as a regression.

1 Like

Unfortunately I can’t share the code, and given the size of the toolbox, creating a minimum working example is a bit of a challenge. However, I can share complete error messages from the MATLAB console.
I’ll send this over a DM.