1 #ifndef CELL_DIVIDER_H_INCLUDED
2 #define CELL_DIVIDER_H_INCLUDED
43 using boost::property_tree::ptree;
96 void AddSharedWallNodes(std::array<std::array<double, 3>, 2>& new_node_vector,
97 std::array<Node*, 2>& new_node_index,
98 std::vector<Node*>& parent_nodes, std::vector<Node*>& daughter_nodes);
101 void AddSplitWalls(
Cell* this_cell,
Cell* neighbor_cell,
int i,
102 std::array<Node*, 2>& new_node_index,
103 std::array<Wall*, 4>& div_wall, std::array<double, 2>& orig_length,
104 std::array<double, 2>& orig_rest_length,
105 std::array<double, 2>& orig_rest_length_init);
108 void ComputeIntersection(
Cell* cell, std::vector<Node*> intersect_indexes,
109 const std::array<double, 3>& from,
const std::array<double, 3>& to,
110 std::array<std::array<double, 3>, 2>& new_node_vector,
111 std::array<Node*, 2>& new_node_index, std::array<int, 2>& new_node_flag,
112 std::array<Edge, 2>& divided_edges);
115 Node* InsertNewNodeAtIntersect(
Cell* this_cell,
Cell* neighbor_cell,
116 std::array<double, 3> node_vec,
const Edge& intrsct_edge);
119 Cell* SplitCell(
Cell* this_cell, std::vector<Node*> intersect_indexes,
120 const std::array<double, 3>& from,
const std::array<double, 3>& to);
126 double m_collapse_node_threshold;
129 std::string m_model_name;
130 double m_target_node_distance;
131 std::function<double()> m_uniform_generator;
136 #endif // end_of_include_guard
Core data with mesh, parameters, random engine and time data.
A cell contains walls and nodes.
Core data used during model execution.
std::function< std::tuple< bool, bool, std::array< double, 3 >>(Cell *)> CellSplitComponent
CellSplit component interface.
Interface of Model Components.
unsigned int DivideCells()
Execute cell divisions.
std::list< Cell * > GeometricSplitCell(Cell *cell, Node *node1, Node *node2)
A geometric split of cell (see tissue editor's EditableMesh class).
std::function< void(Cell *, Cell *)> CellDaughtersComponent
CellDaughters component interface.
Namespace for the core simulator.
An Edge connects two nodes and is ambidextrous.
Class for handling cell division.
void Initialize(Mesh *mesh)
Initializes based on the values of a given mesh.
CellDivider(const CoreData &cd)
Constructor initializes with CoreData.
Structure of cells; key data structure.
void DivideOverAxis(Cell *cell, const std::array< double, 3 > &axis)
Divide cell over a pre-defined axis (only when this object has been initialized with core data)...