Block Triangularization Initializer

Block Triangularization Initializer#

The Block Triangularization initializer is a general purpose Initializer that can be applied to any model type. It applies the Pyomo incidence analysis toolbox to attempt to decompose the model into the maximum set of smaller sub-problems that can be solved sequentially using a block traingularization transformation. These sub-problems can then be solved by applying either a simple Newton solver (for 1x1 blocks, i.e., one variable and constraint) or a user selected solver for NxN blocks. The Block Triangularization initializer also inherently handles plug-ins, as these are decomposed as part of the overall model structure.

This approach is often faster and more reliable than heuristic methods, however it may struggle to decompose problems involving tightly coupled systems of equations such as column models, counter-current flow and vapor-liquid equilibrium.

The BlockTraingulariaztionInitializer` is the default Initializer assigned to all IDAES property packages (via model.default_initializer unless this is overwritten by the model developer.

BlockTriangularizationInitializer Class#

class idaes.core.initialization.block_triangularization.BlockTriangularizationInitializer(**kwargs)[source]#

Block Triangularization based Initializer object.

This Initializer should be suitable for most models, but may struggle to initialize tightly coupled systems of equations.

This Initializer uses the common workflow defined in InitializerBase and calls the Pyomo solve_strongly_connected_components function to initialize the model.

constraint_tolerance

Tolerance for checking constraint convergence

output_level

Set output level for logging messages

block_solver

Solver to use for NxN blocks

block_solver_options

Dict of options to use to set solver.options.

block_solver_call_options

Dict of arguments to be passed as part of the solver.solve call, such as tee=True/

calculate_variable_options

Dict of options to pass to calc_var_kwds argument in solve_strongly_connected_components method.

initialize(model, initial_guesses=None, json_file=None, output_level=None, exclude_unused_vars=False)#

Execute full initialization routine.

Parameters:
  • model (Block) – Pyomo model to be initialized.

  • initial_guesses (dict) – dict of initial guesses to load.

  • json_file (str) – file name of json file to load initial guesses from as str.

  • output_level – (optional) output level to use during initialization run (overrides global setting).

  • exclude_unused_vars (bool) – whether to ignore unused variables when doing post-initialization checks.

Note - can only provide one of initial_guesses or json_file.

Returns:

InitializationStatus Enum

Parameters:
  • model (Block) –

  • initial_guesses (dict) –

  • json_file (str) –

  • exclude_unused_vars (bool) –

precheck(model)[source]#

Check for perfect matching in model.

If this fails, it indicates a structural singularity in the model.