8 #ifndef RRCOMPILEDMODELGENERATOR_H_
9 #define RRCOMPILEDMODELGENERATOR_H_
12 #include "rrModelSharedLibrary.h"
13 #include "rrCodeBuilder.h"
14 #include "rrScanner.h"
15 #include "rrNOMSupport.h"
17 #include "rrModelSymbols.h"
18 #include "rr-libstruct/lsMatrix.h"
19 #include "rr-libstruct/lsLibStructural.h"
37 std::string substituteTerms(
const std::string& reactionName,
const std::string& inputEquation,
bool bFixAmounts);
38 std::string substituteTerms(
const int& numReactions,
const std::string& reactionName,
const std::string& equation);
40 virtual std::string convertUserFunctionExpression(
const std::string& equation) = 0;
41 virtual void substituteEquation(
const std::string& reactionName,
Scanner& s,
CodeBuilder& sb) = 0;
42 virtual void substituteWords(
const std::string& reactionName,
bool bFixAmounts,
Scanner& s,
CodeBuilder& sb) = 0;
43 virtual void substituteToken(
const std::string& reactionName,
bool bFixAmounts,
Scanner& s,
CodeBuilder& sb) = 0;
44 virtual std::string findSymbol(
const std::string& varName) = 0;
45 virtual void writeComputeAllRatesOfChange(
CodeBuilder& sb,
const int& numIndependentSpecies,
46 const int& numDependentSpecies, ls::DoubleMatrix& L0) = 0;
48 virtual void writeComputeConservedTotals(
CodeBuilder& sb,
const int& numFloatingSpecies,
49 const int& numDependentSpecies) = 0;
51 virtual void writeUpdateDependentSpecies(
CodeBuilder& sb,
const int& numIndependentSpecies,
52 const int& numDependentSpecies, ls::DoubleMatrix& L0) = 0;
54 virtual void writeUserDefinedFunctions(
CodeBuilder& sb) = 0;
55 virtual void writeResetEvents(
CodeBuilder& sb,
const int& numEvents) = 0;
56 virtual void writeSetConcentration(
CodeBuilder& sb) = 0;
57 virtual void writeGetConcentration(
CodeBuilder& sb) = 0;
58 virtual void writeConvertToAmounts(
CodeBuilder& sb) = 0;
59 virtual void writeConvertToConcentrations(
CodeBuilder& sb) = 0;
62 virtual void writeOutVariables(
CodeBuilder& sb) = 0;
64 virtual void writeTestConstraints(
CodeBuilder& sb) = 0;
65 virtual void writeEvalInitialAssignments(
CodeBuilder& sb,
const int& numReactions) = 0;
66 virtual int writeComputeRules(
CodeBuilder& sb,
const int& numReactions) = 0;
67 virtual void writeComputeReactionRates(
CodeBuilder& sb,
const int& numReactions) = 0;
68 virtual void writeEvalEvents(
CodeBuilder& sb,
const int& numEvents,
const int& numFloatingSpecies) = 0;
69 virtual void writeEvalModel(
CodeBuilder& sb,
const int& numReactions,
const int& numIndependentSpecies,
const int& numFloatingSpecies,
const int& numOfRules) = 0;
70 virtual void writeEventAssignments(
CodeBuilder& sb,
const int& numReactions,
const int& numEvents) = 0;
71 virtual void writeSetParameterValues(
CodeBuilder& sb,
const int& numReactions) = 0;
72 virtual void writeSetCompartmentVolumes(
CodeBuilder& sb) = 0;
73 virtual void writeSetBoundaryConditions(
CodeBuilder& sb) = 0;
74 virtual void writeSetInitialConditions(
CodeBuilder& sb,
const int& numFloatingSpecies) = 0;
75 virtual std::string convertCompartmentToC(
const std::string& compartmentName) = 0;
76 virtual std::string convertSpeciesToBc(
const std::string& speciesName) = 0;
77 virtual std::string convertSpeciesToY(
const std::string& speciesName) = 0;
78 virtual std::string convertSymbolToC(
const std::string& compartmentName) = 0;
79 virtual std::string convertSymbolToGP(
const std::string& parameterName) = 0;
83 int numAdditionalRates();
99 bool mComputeAndAssignConsevationLaws;
101 const std::string mFixAmountCompartments;
113 static ASTNode* cleanEquation(ASTNode* ast);
114 static std::string cleanEquation(
const std::string& equation);
116 ls::DoubleMatrix* initializeL0(
int& nrRows,
int& nrCols);
117 bool expressionContainsSymbol(ASTNode* ast,
const std::string& symbol);
118 bool expressionContainsSymbol(
const std::string& expression,
const std::string& symbol);
119 const Symbol* getSpecies(
const std::string&
id);
120 int readGlobalParameters();
121 void readLocalParameters(
const int& numReactions, std::vector<int>& localParameterDimensions,
int& totalLocalParmeters);
122 int readCompartments();
124 std::string writeDouble(
const double& value,
const std::string& format =
"%G");
Definition: rrCodeBuilder.h:9
Both compiled model generators (C and CSharp) share a lot of functionality, so implement that here.
Definition: rrCompiledModelGenerator.h:32
NOMSupport * mNOM
Object that provide some wrappers and new "NOM" functions.
Definition: rrCompiledModelGenerator.h:97
ModelSymbols ms
hold all the symbolic (AKA metadata) information in the model The idea is that all the memebers of th...
Definition: rrCompiledModelGenerator.h:133
ls::LibStructural * mLibStruct
Refernce to libstruct library this are set by createModel, and for the time being remain after create...
Definition: rrCompiledModelGenerator.h:90
Definition: rrModelSymbols.h:20
Methods to query various information from an SBML document.
Definition: rrNOMSupport.h:41
Definition: rrScanner.h:36
Definition: rrStringList.h:19
An SBML species definition.
Definition: rrSymbol.h:18
C_DECL_SPEC bool rrcCallConv reset(RRHandle handle)
Resets all variables of the model to their current initial values. Does not change the parameters.
C_DECL_SPEC char *rrcCallConv getInfo(RRHandle handle)
Retrieve info about current state of roadrunner, e.g. loaded model, conservationAnalysis etc.