Thermal Engineering Systems in Python (TESPy). This package provides a powerful simulation toolkit for thermodynamic modeling of thermal engineering plants such as power plants, heat pumps or refrigeration machines.
The general approach for this would be the following:
Directly mark specified variables as solved, and such variables, that can be calculated from combination of specifications.
Based on that, every sub-Jacobian of the components, connections, buses etc. will get some kind of duplication (bad in principle, but there will be a way), where it is indicated, which derivatives are constant and which not.
The derived system Jacobian (with the constants and non-constants) allows to simplify the variable space based on the constant relationships.
These two steps could in principle be repeated until there is nothing remaining to eliminate
Independent of that, an automatic analysis should be carried out in the preprocessing, which determines, which "subsystems" of the Jacobian are fully determined, and which ones are not. This should allow to give hints to the user, what variables are already determined, which ones are not and which ones are potentially also over-determined.
The general approach for this would be the following: