CMSlv: Difference between revisions

From ASCEND
Jump to navigation Jump to search
No edit summary
No edit summary
Line 50: Line 50:
<references/>
<references/>


[[Category:Solvers]]
[[Category:NLA Solvers]]
[[Category:Stubs]]

Revision as of 22:23, 14 December 2010

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[1]. 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 &lt;= B[1];

      cond2: Fmain &gt;= 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;

References