Checking models

Jump to: navigation, search
This article is incomplete or needs expanding. Please help out by adding your comments.

ASCEND includes a number of features for checking that a model is correctly written. Currently the following checks are performed.

Instance check

Firstly, the model's instance tree is checked for integrity. Instances are checked for being of the correct type, un-executed statements are searched for, correct parent-child relationships are verified and Cliques are checked for containing items of identical type. The function RecursiveCheckInstance in ascend/compiler/check.c does the hard work for this one.

Degrees of freedom check

The degrees of freedom check tests to see if a model is underspecified (too many unknown variables, not enough equations) or overspecified (too many equations, not enough free variables), or structurally singular. The code in the file ascend/solver/slvDOF.c, together with the functions mtx_output_assign and mtx_symbolic_rank from ascend/linear/mtx_perms.c do this work.

A structurally singular system is one which has the variables and equations arranged in such a way that it is impossible to develop a strategy for solving them.