26 #include <boost/property_tree/ptree.hpp>
30 namespace CellHousekeep {
43 auto& p = m_cd.m_parameters;
45 m_cell_base_area = p->get<
double>(
"cell_mechanics.base_area");
46 m_cell_expansion_rate = p->get<
double>(
"cell_mechanics.cell_expansion_rate");
47 m_division_ratio = p->get<
double>(
"cell_mechanics.division_ratio");
48 m_elastic_modulus = p->get<
double>(
"cell_mechanics.elastic_modulus");
49 m_fixed_division_axis = p->get<
bool>(
"cell_mechanics.fixed_division_axis");
50 m_response_time = p->get<
double>(
"cell_mechanics.response_time");
51 m_time_step = p->get<
double>(
"model.time_step");
52 m_viscosity_const = p->get<
double>(
"cell_mechanics.viscosity_const");
54 m_area_incr = m_cell_expansion_rate * m_time_step;
55 m_div_area = m_division_ratio * m_cell_base_area;
60 const string ham_select = m_cd.m_parameters->get<
string>(
"model.mc_hamiltonian");
62 const double t_area = cell->GetTargetArea();
63 const double t_length = cell->GetTargetLength();
65 const double update_t_area = t_area + m_area_incr;
66 const double update_t_length = t_length * sqrt(update_t_area / t_area);
68 cell->SetTargetArea(update_t_area);
69 cell->SetTargetLength(update_t_length);
71 if (ham_select ==
"ElasticWall") {
74 for (list<Wall*>::iterator i = cell->
GetWalls().begin(); i != cell->
GetWalls().end(); ++i) {
76 if (w->
GetLength() > 1.50 * w->GetRestLength()) {
83 if (ham_select ==
"Maxwell") {
85 const double solute = m_viscosity_const * sqrt(cell->
GetArea());
86 const double update_solute = solute - (solute - cell->GetSolute()) * exp(-0.1 * m_time_step/m_response_time);
87 cell->SetSolute(update_solute);
89 for (list<Wall*>::iterator i = cell->
GetWalls().begin(); i != cell->
GetWalls().end(); ++i) {
92 const double update_rest_length = w->
GetLength()
94 * exp(-0.01 * m_elastic_modulus * m_time_step / m_viscosity_const);
95 w->SetRestLength(update_rest_length);
void Initialize(const CoreData &cd)
Initialize or re-initialize.
Geometric(const CoreData &cd)
Initializing constructor.
Core data with mesh, parameters, random engine and time data.
A cell contains walls and nodes.
Core data used during model execution.
const std::list< Wall * > & GetWalls() const
Access the cell's walls.
Namespace for components of the Default model group.
void operator()(Cell *cell)
Execute.
double GetLength() const
Returns (and calculates, if length marked as dirty) the length along all nodes.
CellHousekeep for Geometric model.
double GetArea() const
Return the area of the cell.
A cell wall, runs between cell corner points and consists of wall elements.