Chaste Release::3.1
CellMLToSharedLibraryConverter Class Reference

#include <CellMLToSharedLibraryConverter.hpp>

Collaboration diagram for CellMLToSharedLibraryConverter:

List of all members.

Public Member Functions

 CellMLToSharedLibraryConverter (bool preserveGeneratedSources=false, std::string component="heart")
DynamicCellModelLoaderPtr Convert (const FileFinder &rFilePath, bool isCollective=true)

Static Public Member Functions

static void CreateOptionsFile (const OutputFileHandler &rHandler, const std::string &rModelName, const std::vector< std::string > &rArgs, const std::string &rExtraXml="")

Private Member Functions

void ConvertCellmlToSo (const std::string &rCellmlFullPath, const std::string &rCellmlFolder, const std::string &rModelLeafName)

Private Attributes

bool mPreserveGeneratedSources
std::string mComponentName

Detailed Description

This class encapsulates all the complexity needed to generate a loadable module from a CellML file.

Definition at line 50 of file CellMLToSharedLibraryConverter.hpp.


Constructor & Destructor Documentation

CellMLToSharedLibraryConverter::CellMLToSharedLibraryConverter ( bool  preserveGeneratedSources = false,
std::string  component = "heart" 
)

Create a converter.

Parameters:
preserveGeneratedSourceswhether to save copies of generated C++ source files in the directory containing the .cellml file.
componentthe name of the Chaste component (or project) in which to build the loadable module (if required). Allows projects to have specialised base classes for dynamically loaded cell models.

Definition at line 51 of file CellMLToSharedLibraryConverter.cpp.


Member Function Documentation

DynamicCellModelLoaderPtr CellMLToSharedLibraryConverter::Convert ( const FileFinder rFilePath,
bool  isCollective = true 
)

Get a loadable module from the given file, and return a loader for it. The file can be a .so, in which case there isn't much to do, just create the loader. The interesting case comes when it is a .cellml file. If the file has any other extension, an exception is thrown.

Parameters:
rFilePaththe model to load
isCollectivewhether this method is being called collectively. If it is not, then we require the .so to already exist, rather than trying to avoid race conditions.
Note:
If you do not pass isCollective=false, must be called collectively.

Definition at line 58 of file CellMLToSharedLibraryConverter.cpp.

References RelativeTo::Absolute, ConvertCellmlToSo(), EXCEPTION, FileFinder::Exists(), FileFinder::GetAbsolutePath(), DynamicModelLoaderRegistry::GetLoader(), DynamicModelLoaderRegistry::Instance(), and FileFinder::IsNewerThan().

Referenced by HeartConfigRelatedCellFactory< SPACE_DIM >::LoadDynamicModel().

void CellMLToSharedLibraryConverter::ConvertCellmlToSo ( const std::string &  rCellmlFullPath,
const std::string &  rCellmlFolder,
const std::string &  rModelLeafName 
) [private]

Helper method performing the actual conversion of a .cellml file to a .so.

Note:
Must be called collectively.
Parameters:
rCellmlFullPathfull path to the .cellml file
rCellmlFolderfolder containing the CellML file, with trailing slash
rModelLeafNameleaf name of the CellML file, minus extension (but including the .)

Definition at line 109 of file CellMLToSharedLibraryConverter.cpp.

References RelativeTo::Absolute, PetscTools::AmMaster(), ChasteBuildDirName(), ChasteBuildRootDir(), ChasteBuildType(), RelativeTo::ChasteSourceRoot, EXCEPT_IF_NOT, EXCEPTION, FileFinder::Exists(), EXPECT0, FileFinder::GetAbsolutePath(), Exception::GetMessage(), IGNORE_RET, FileFinder::IsDir(), mComponentName, mPreserveGeneratedSources, and PetscTools::ReplicateException().

Referenced by Convert().

void CellMLToSharedLibraryConverter::CreateOptionsFile ( const OutputFileHandler rHandler,
const std::string &  rModelName,
const std::vector< std::string > &  rArgs,
const std::string &  rExtraXml = "" 
) [static]

Create a PyCml options file for the given model.

Parameters:
rHandlerwhere to create the file
rModelNamebase name of the model file (which will be "rModelName.cellml")
rArgsextra command-line arguments for the model conversion
rExtraXmlany extra XML to go in the config file (e.g. LT settings)

Definition at line 197 of file CellMLToSharedLibraryConverter.cpp.

References PetscTools::AmMaster(), PetscTools::Barrier(), and OutputFileHandler::OpenOutputFile().


Member Data Documentation

Which component to build the loadable module in.

Definition at line 112 of file CellMLToSharedLibraryConverter.hpp.

Referenced by ConvertCellmlToSo().

Whether to save copies of generated C++ source files.

Definition at line 109 of file CellMLToSharedLibraryConverter.hpp.

Referenced by ConvertCellmlToSo().


The documentation for this class was generated from the following files: