CMSlv

From ASCEND
Revision as of 13:56, 13 May 2010 by UploadBot (talk | contribs) (Restored page from Google Cache, uploaded by John Pye)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
NLA
QRSlv
CMSlv
IPSlv
Opt
NLP
CONOPT
IPOPT
TRON
MINOS
NGSlv
OptSQP
DAE/ODE
IDA
LSODE
DOPRI5
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 &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