1 #ifndef MODEL_COMPONENT_ABSTRACT_FACTORY_H_INCLUDED
2 #define MODEL_COMPONENT_ABSTRACT_FACTORY_H_INCLUDED
34 using boost::property_tree::ptree;
78 virtual std::vector<std::string>
ListCellChemistry()
const {
return std::vector<std::string>(); }
81 virtual std::vector<std::string>
ListCellColor()
const {
return std::vector<std::string>(); }
84 virtual std::vector<std::string>
ListCellDaughters()
const {
return std::vector<std::string>(); }
87 virtual std::vector<std::string>
ListCellHousekeep()
const {
return std::vector<std::string>(); }
90 virtual std::vector<std::string>
ListCellSplit()
const {
return std::vector<std::string>(); }
99 virtual std::vector<std::string>
ListHamiltonian()
const {
return std::vector<std::string>(); }
102 virtual std::vector<std::string>
ListMoveGenerator()
const {
return std::vector<std::string>(); }
105 virtual std::vector<std::string>
ListTimeEvolver()
const {
return std::vector<std::string>(); }
108 virtual std::vector<std::string>
ListWallChemistry()
const {
return std::vector<std::string>(); }
114 return CreateCellChemistry(cd);
119 const std::string& select,
const boost::property_tree::ptree& pt,
CellColorTag)
const
121 return CreateCellColor(select, pt);
127 return CreateCellDaughters(cd);
133 return CreateCellHousekeep(cd);
139 return CreateCellSplit(cd);
145 return CreateCellToCellTransport(cd);
151 return CreateDeltaHamiltonian(cd);
157 return CreateHamiltonian(cd);
163 return CreateMoveGenerator(cd);
169 return CreateTimeEvolver(cd);
175 return CreateWallChemistry(cd);
182 return ListCellChemistry();
188 return ListCellColor();
194 return ListCellDaughters();
200 return ListCellHousekeep();
206 return ListCellSplit();
212 return ListCellToCellTransport();
218 return ListDeltaHamiltonian();
224 return ListHamiltonian();
230 return ListMoveGenerator();
236 return ListTimeEvolver();
242 return ListWallChemistry();
248 #endif // end_of_include_guard
virtual HamiltonianComponent CreateHamiltonian(const CoreData &) const
Create a component for Hamitonian.
virtual std::vector< std::string > List(CellSplitTag) const
Utility method with tag forwarding for use in templates.
virtual CellToCellTransportComponent Create(const CoreData &cd, CellToCellTransportTag) const
Utility method with tag forwarding for use in templates.
std::function< double(Cell *)> HamiltonianComponent
Hamiltonian component interface.
std::function< double(const NeighborNodes &, Node *, std::array< double, 3 >)> DeltaHamiltonianComponent
DeltaHamiltonian component interface.
Core data with mesh, parameters, random engine and time data.
virtual MoveGeneratorComponent CreateMoveGenerator(const CoreData &) const
Create a component for MoveGenerator.
virtual HamiltonianComponent Create(const CoreData &cd, HamiltonianTag) const
Utility method with tag forwarding for use in templates.
virtual DeltaHamiltonianComponent Create(const CoreData &cd, DeltaHamiltonianTag) const
Utility method with tag forwarding for use in templates.
virtual std::vector< std::string > List(MoveGeneratorTag) const
Utility method with tag forwarding for use in templates.
virtual std::vector< std::string > ListHamiltonian() const
List components for Hamiltonian.
std::function< std::tuple< bool, bool, std::array< double, 3 >>(Cell *)> CellSplitComponent
CellSplit component interface.
std::function< std::array< double, 3 >()> MoveGeneratorComponent
MoveGenerator component interface.
Interface of Model Components.
virtual std::vector< std::string > List(CellChemistryTag) const
Utility method with tag forwarding for use in templates.
Interface for ComponentFactory.
virtual std::vector< std::string > List(DeltaHamiltonianTag) const
Utility method with tag forwarding for use in templates.
std::function< void(Cell *, Cell *)> CellDaughtersComponent
CellDaughters component interface.
Namespace for the core simulator.
virtual CellHousekeepComponent CreateCellHousekeep(const CoreData &) const
Create a component for CellHouseKeep.
virtual std::vector< std::string > List(WallChemistryTag) const
Utility method with tag forwarding for use in templates.
virtual CellColorComponent CreateCellColor(const string &, const ptree &) const
Create a component for CellColor.
virtual std::vector< std::string > List(CellColorTag) const
Utility method with tag forwarding for use in templates.
virtual CellDaughtersComponent Create(const CoreData &cd, CellDaughtersTag) const
Utility method with tag forwarding for use in templates.
virtual std::vector< std::string > List(TimeEvolverTag) const
Utility method with tag forwarding for use in templates.
virtual CellSplitComponent Create(const CoreData &cd, CellSplitTag) const
Utility method with tag forwarding for use in templates.
virtual std::vector< std::string > List(CellHousekeepTag) const
Utility method with tag forwarding or use in templates.
virtual std::vector< std::string > ListCellColor() const
List components for CellColor.
virtual CellDaughtersComponent CreateCellDaughters(const CoreData &) const
Create a component for CellDaughters.
virtual std::vector< std::string > ListWallChemistry() const
List components for WallChemistry.
virtual std::vector< std::string > ListCellSplit() const
List components for CellSplit.
virtual std::vector< std::string > List(CellDaughtersTag) const
Utility method with tag forwarding for use in templates.
virtual CellChemistryComponent Create(const CoreData &cd, CellChemistryTag) const
Utility method with tag forwarding for use in templates.
std::function< void(Cell *, double *)> CellChemistryComponent
CellChemistry component interface.
std::function< void(Cell *)> CellHousekeepComponent
CellHousekeep component interface.
virtual CellToCellTransportComponent CreateCellToCellTransport(const CoreData &) const
Create a component for ReactionTransport.
virtual std::vector< std::string > ListCellToCellTransport() const
List components for CellToCellTransport.
virtual std::vector< std::string > ListCellChemistry() const
List components for CellChemistry.
virtual std::vector< std::string > ListCellDaughters() const
List components for CellDaughters.
virtual WallChemistryComponent Create(const CoreData &cd, WallChemistryTag) const
Utility method with tag forwarding for use in templates.
virtual DeltaHamiltonianComponent CreateDeltaHamiltonian(const CoreData &) const
Create a component for DeltaHamitonian.
std::function< void(Wall *, double *, double *)> WallChemistryComponent
Wall chemistry component interface.
virtual WallChemistryComponent CreateWallChemistry(const CoreData &) const
Create a component for WallChemistry.
virtual CellChemistryComponent CreateCellChemistry(const CoreData &) const
Create a component for CellChemistry.
virtual std::vector< std::string > ListMoveGenerator() const
List components for MoveGenrator.
virtual std::vector< std::string > ListTimeEvolver() const
List components for TimeEvolver.
virtual std::vector< std::string > ListCellHousekeep() const
List components for CellHouseKeep.
std::function< std::array< double, 3 >(Cell *)> CellColorComponent
CellColor component interface.
virtual CellColorComponent Create(const std::string &select, const boost::property_tree::ptree &pt, CellColorTag) const
Utility method with tag forwarding for use in templates.
std::function< std::tuple< SimTimingTraits::CumulativeTimings, bool >(double, SimPhase)> TimeEvolverComponent
Time Evolver component interface.
virtual std::vector< std::string > List(HamiltonianTag) const
Utility method with tag forwarding for use in templates.
virtual CellHousekeepComponent Create(const CoreData &cd, CellHousekeepTag) const
Utility method with tag forwarding or use in templates.
virtual CellSplitComponent CreateCellSplit(const CoreData &) const
Create a component for CellSplit.
virtual MoveGeneratorComponent Create(const CoreData &cd, MoveGeneratorTag) const
Utility method with tag forwarding for use in templates.
virtual TimeEvolverComponent CreateTimeEvolver(const CoreData &) const
Create a component for TimeEvolver.
std::function< void(Wall *, double *, double *)> CellToCellTransportComponent
CellToCellTransport component interface.
virtual std::vector< std::string > List(CellToCellTransportTag) const
Utility method with tag forwarding for use in templates.
virtual TimeEvolverComponent Create(const CoreData &cd, TimeEvolverTag) const
Utility method with tag forwarding for use in templates.
virtual std::vector< std::string > ListDeltaHamiltonian() const
List components for DeltaHamiltonian.