CMSlv
| NLA |
|---|
| QRSlv |
| CMSlv |
| IPSlv |
| NLP |
| CONOPT |
| IPOPT |
| TRON |
| MINOS |
| Opt |
| NGSlv |
| DAE/ODE |
| IDA |
| LSODE |
| DOPRI5 |
| RADAU5 |
| LA |
| Linsolqr |
| Linsol |
| LP |
| MakeMPS |
| Logic |
| LRSlv |
This is the conditional modelling solver implemented by Vicente Rico-Ramirez<a href="#_note-0" title="">[1]</a>. Currently this solver is fully operational -- it solves the sample models given in Vicente's thesis, and these have been incorporated in the the TestSuite. You need to have CONOPT installed before CMSlv will work; it's used as part of the boundary-crossing algorithm.
Example
Here is an extract of a full example called models/linmassbal.a4c:
(* Boundaries *) CONDITIONAL cond1: Fmain <= B[1]; cond2: Fmain >= B[2]; END CONDITIONAL; bol1 == SATISFIED(cond1,1e-08{lb_mole/hour}); bol2 == SATISFIED(cond2,1e-08{lb_mole/hour}); (* Variant Equations *) eq1a: Fsub1 = a[1] * Fmain; eq1b: Fsub2 = b[1] * Fmain; eq2a: Fsub1 = a[2] * Fmain; eq2b: Fsub2 = b[2] * Fmain; eq3a: Fsub1 = a[3] * Fmain; eq3b: Fsub2 = b[3] * Fmain; (* Disjunctive Statements *) WHEN (bol1,bol2) CASE TRUE,FALSE: USE eq1a; USE eq1b; CASE FALSE,FALSE: USE eq2a; USE eq2b; CASE FALSE,TRUE: USE eq3a; USE eq3b; END WHEN;