62 string annot = *(x->name());
63 map<string, FunctionAnnotation::type>::const_iterator itf =
_annotations.find(annot);
67 if (x->hasModification() && (x->modification()->modificationType() ==
MODEQUAL)) {
68 AST_Expression mod = x->modification()->getAsEqual()->exp();
69 switch (itf->second) {
72 _include = mod->getAsString()->str();
82 string l = mod->getAsString()->str();
84 }
else if (mod->expressionType() ==
EXPBRACE) {
85 AST_ExpressionList el = mod->getAsBrace()->arguments();
86 AST_ExpressionListIterator eli;
122 _solverString(
"LIQSS2"),
123 _commInterval(
"CI_Step"),
131 _scheduler(
"ST_Binary"),
132 _storeData(
"SD_Memory"),
141 _partition_method_string(
"Scotch"),
146 _dtSynchString(
"SD_DT_Asynchronous"),
153 _BDFPartitionDepth(),
225 AST_ArgumentList al = x->arguments();
226 AST_ArgumentListIterator it;
230 insert(a->getAsModification());
237 if (arg->hasModification()) {
238 AST_Modification m = arg->modification();
239 if (m->modificationType() ==
MODEQUAL) {
251 string annot = *(x->name());
252 map<string, ModelAnnotation::type>::const_iterator itf =
_annotations.find(annot);
256 switch (itf->second) {
258 if (x->hasModification()) {
259 AST_Modification mod = x->modification();
260 if (mod->modificationType() ==
MODCLASS) {
261 AST_Modification_Class mc = mod->getAsClass();
262 AST_ArgumentListIterator it;
263 foreach (it, mc->arguments()) {
301 if (x->expressionType() ==
EXPBRACE) {
302 AST_Expression_Brace b = x->getAsBrace();
303 AST_ExpressionList el = b->arguments();
304 AST_ExpressionListIterator it;
311 AST_ExpressionList pair_exp = out->expressionList();
312 if (pair_exp->size() != 2) {
316 AST_ExpressionListIterator pair_exp_it;
319 foreach (pair_exp_it, pair_exp) {
327 for (
int i = 0; i < size.
integer(); i++) {
328 l->push_back(av.real());
332 l->push_back(av.real());
343 if (x->expressionType() ==
EXPBRACE) {
344 AST_Expression_Brace b = x->getAsBrace();
345 AST_ExpressionList el = b->arguments();
346 AST_ExpressionListIterator it;
349 l->push_back(av.str());
353 l->push_back(av.str());
359 if (x->expressionType() ==
EXPBRACE) {
360 AST_Expression_Brace b = x->getAsBrace();
361 AST_ExpressionList el = b->arguments();
362 AST_ExpressionListIterator it;
371 if (!s.compare(
"SD_DT_Fixed")) {
373 }
else if (!s.compare(
"SD_DT_Asynchronous")) {
381 if (!s.compare(
"QSS")) {
385 }
else if (!s.compare(
"CQSS")) {
389 }
else if (!s.compare(
"LIQSS")) {
393 }
else if (!s.compare(
"QSS2")) {
397 }
else if (!s.compare(
"LIQSS2")) {
401 }
else if (!s.compare(
"LIQSS_BDF")) {
405 }
else if (!s.compare(
"QSS3")) {
409 }
else if (!s.compare(
"LIQSS3")) {
413 }
else if (!s.compare(
"DASSL")) {
417 }
else if (!s.compare(
"DOPRI")) {
421 }
else if (!s.compare(
"CVODE_BDF")) {
425 }
else if (!s.compare(
"IDA")) {
429 }
else if (!s.compare(
"CVODE_AM")) {
433 }
else if (!s.compare(
"QSS4")) {
437 }
else if (!s.compare(
"mLIQSS")) {
441 }
else if (!s.compare(
"mLIQSS2")) {
458 map<string, ModelAnnotation::type>::const_iterator itf =
_annotations.find(annot);
465 av = ea.apply(x->exp());
467 switch (itf->second) {
515 _jacobian = (
"Sparse" == av.str() ? 0 : 1);
519 if (av.integer() == 0) {
535 if (av.integer() == 0) {
729 _tokens.emplace_back(
"QSS");
730 _tokens.emplace_back(
"CQSS");
731 _tokens.emplace_back(
"QSS2");
732 _tokens.emplace_back(
"QSS3");
733 _tokens.emplace_back(
"LIQSS");
734 _tokens.emplace_back(
"LIQSS2");
735 _tokens.emplace_back(
"LIQSS_BDF");
736 _tokens.emplace_back(
"LIQSS3");
737 _tokens.emplace_back(
"QSS4");
738 _tokens.emplace_back(
"mLIQSS");
739 _tokens.emplace_back(
"mLIQSS2");
740 _tokens.emplace_back(
"DASSL");
741 _tokens.emplace_back(
"DOPRI");
742 _tokens.emplace_back(
"CVODE_AM");
743 _tokens.emplace_back(
"IDA");
744 _tokens.emplace_back(
"CVODE_BDF");
745 _tokens.emplace_back(
"ST_Linear");
746 _tokens.emplace_back(
"ST_Binary");
747 _tokens.emplace_back(
"ST_Random");
748 _tokens.emplace_back(
"CI_Step");
749 _tokens.emplace_back(
"CI_Dense");
750 _tokens.emplace_back(
"CI_Sampled");
751 _tokens.emplace_back(
"SD_File");
752 _tokens.emplace_back(
"SD_Memory");
753 _tokens.emplace_back(
"Metis");
754 _tokens.emplace_back(
"HMetis");
755 _tokens.emplace_back(
"Scotch");
756 _tokens.emplace_back(
"Patoh");
757 _tokens.emplace_back(
"KaHIP");
758 _tokens.emplace_back(
"Manual");
759 _tokens.emplace_back(
"SD_DT_Fixed");
760 _tokens.emplace_back(
"Sparse");
761 _tokens.emplace_back(
"Dense");
762 _tokens.emplace_back(
"SD_DT_Asynchronous");
768 switch (e->expressionType()) {
770 av.setStr(e->getAsString()->print());
771 av.setPlainStr(e->getAsString()->str());
774 AST_Expression_ComponentReference cr = e->getAsComponentReference();
775 string name = cr->name();
778 if (vi->isConstant()) {
779 av.setInteger(vi->value());
788 av.setInteger(e->getAsInteger()->val());
789 av.setReal(e->getAsInteger()->val());
792 av.setReal(e->getAsReal()->val());
793 av.setInteger(
static_cast<int>(e->getAsReal()->val()));
796 if (e->getAsBoolean()->value()) {
803 AnnotationValue a =
apply(e->getAsBooleanNot()->exp());
804 if (a.integer() == 1) {
828 auto av = AnnotationValue();
831 setBoolean(e1.integer() || e2.integer(), &av);
837 setBoolean((e1.integer() < e2.integer()) || (e1.real() < e2.real()), &av);
840 setBoolean((e1.integer() <= e2.integer()) || (e1.real() <= e2.real()), &av);
843 setBoolean((e1.integer() > e2.integer()) || (e1.real() > e2.real()), &av);
846 setBoolean((e1.integer() >= e2.integer()) || (e1.real() >= e2.real()), &av);
849 setBoolean((e1.integer() != e2.integer()) || (e1.real() != e2.real()), &av);
852 setBoolean((e1.integer() == e2.integer()) || (e1.real() == e2.real()), &av);
855 av.setInteger(e1.integer() + e2.integer());
856 av.setReal(e1.real() + e2.real());
859 av.setInteger(e1.integer() - e2.integer());
860 av.setReal(e1.real() - e2.real());
863 if (e2.integer() != 0) {
864 av.setInteger(e1.integer() / e2.integer());
866 if (e2.real() != 0) {
867 av.setReal(e1.real() / e2.real());
871 av.setInteger(e1.integer() * e2.integer());
872 av.setReal(e1.real() * e2.real());
883 av.setInteger(-1 * av.integer());
884 av.setReal(-1 * av.real());