1 #ifndef CModelGenerator_H_
2 #define CModelGenerator_H_
5 #include "rrCompiledModelGenerator.h"
6 #include "rrModelSharedLibrary.h"
7 #include "rrCodeBuilder.h"
8 #include "rrCCompiler.h"
23 CModelGenerator(
const std::string& tempFolder,
const std::string& supportCodeFolder,
const std::string& compiler);
26 virtual ExecutableModel *createModel(
const std::string& sbml, uint options);
28 virtual bool setTemporaryDirectory(
const std::string& path);
33 virtual std::string getTemporaryDirectory();
45 virtual bool setCompiler(
const std::string& compiler);
50 std::string getHeaderCode();
51 std::string getSourceCode();
52 std::string getSourceCodeFileName();
60 ExecutableModel *createModel(
const std::string& sbml, ls::LibStructural *ls,
61 bool forceReCompile,
bool computeAndAssignConsevationLaws);
66 std::string mHeaderCodeFileName;
67 std::string mSourceCodeFileName;
69 std::string mCurrentSBML;
78 std::string mTempFileFolder;
80 bool generateModelCode(
const std::string& sbml,
const std::string& modelName,
bool computeAndAssignConsevationLaws);
82 static Mutex mCompileMutex;
86 bool compileCurrentModel();
92 std::string getHeaderCodeFileName();
93 bool saveSourceCodeToFolder(
const std::string& folder,
const std::string& baseName);
97 std::string convertUserFunctionExpression(
const std::string& equation);
98 std::string convertCompartmentToC(
const std::string& compartmentName);
99 std::string convertSpeciesToBc(
const std::string& speciesName);
100 std::string convertSpeciesToY(
const std::string& speciesName);
106 std::string convertSymbolToC(
const std::string& compartmentName);
107 std::string convertSymbolToGP(
const std::string& parameterName);
109 void substituteEquation(
const std::string& reactionName,
Scanner& s,
CodeBuilder& sb);
110 void substituteWords(
const std::string& reactionName,
bool bFixAmounts,
Scanner& s,
CodeBuilder& sb);
111 void substituteToken(
const std::string& reactionName,
bool bFixAmounts,
Scanner& s,
CodeBuilder& sb);
112 std::string findSymbol(
const std::string& varName);
114 void writeComputeAllRatesOfChange(
CodeBuilder& sb,
const int& numIndependentSpecies,
const int& numDependentSpecies, DoubleMatrix& L0);
115 void writeComputeConservedTotals(
CodeBuilder& sb,
const int& numFloatingSpecies,
const int& numDependentSpecies);
116 void writeUpdateDependentSpecies(
CodeBuilder& sb,
const int& numIndependentSpecies,
const int& numDependentSpecies, DoubleMatrix& L0);
118 void writeResetEvents(
CodeBuilder& sb,
const int& numEvents);
122 void writeConvertToConcentrations(
CodeBuilder& sb);
128 void writeEvalInitialAssignments(
CodeBuilder& sb,
const int& numReactions);
129 int writeComputeRules(
CodeBuilder& sb,
const int& numReactions);
130 void writeComputeReactionRates(
CodeBuilder& sb,
const int& numReactions);
131 void writeEvalEvents(
CodeBuilder& sb,
const int& numEvents,
const int& numFloatingSpecies);
132 void writeEvalModel(
CodeBuilder& sb,
const int& numReactions,
const int& numIndependentSpecies,
const int& numFloatingSpecies,
const int& numOfRules);
133 void writeEventAssignments(
CodeBuilder& sb,
const int& numReactions,
const int& numEvents);
134 void writeSetParameterValues(
CodeBuilder& sb,
const int& numReactions);
137 void writeSetInitialConditions(
CodeBuilder& sb,
const int& numFloatingSpecies);
141 int readFloatingSpecies();
146 std::string generateModelCode(
const std::string& sbmlStr,
const bool& _computeAndAssignConsevationLaws);
150 std::string generateModelCode(
const std::string& sbmlStr, LibStructural *ls,
NOMSupport *nom,
151 const bool& _computeAndAssignConsevationLaws =
false);
153 static bool loadSBMLIntoNOM(
NOMSupport &nom,
const std::string& sbml);
compiler class for the C based model system.
Definition: rrCCompiler.h:18
Generate executable SBML models by generating and compiling C source code into shared libraries with ...
Definition: rrCModelGenerator.h:20
Definition: rrCodeBuilder.h:9
Both compiled model generators (C and CSharp) share a lot of functionality, so implement that here.
Definition: rrCompiledModelGenerator.h:32
interface to manipulate 'compiler' settings.
Definition: rrCompiler.h:26
Base class for all code generation systems; allows compiling and evaluating the model.
Definition: rrExecutableModel.h:118
Access an actual compiled shared library (.so, .dll or .dylib) that was compiled by a ModelGenerator ...
Definition: rrModelSharedLibrary.h:22
Methods to query various information from an SBML document.
Definition: rrNOMSupport.h:41
Definition: rrScanner.h:36
C_DECL_SPEC int rrcCallConv getNumberOfFloatingSpecies(RRHandle handle)
Returns the number of floating species in the model.
C_DECL_SPEC bool rrcCallConv setCompiler(RRHandle handle, const char *fNameWithPath)
Set the path and filename to the compiler to be used by roadrunner.
C_DECL_SPEC char *rrcCallConv getCompiler(RRHandle handle)
Get the name of the compiler currently being used by roadrunner.