28 namespace CellHousekeep {
41 auto& p = m_cd.m_parameters;
43 m_cell_base_area = p->get<
double>(
"cell_mechanics.base_area");
44 m_cell_expansion_rate = p->get<
double>(
"cell_mechanics.cell_expansion_rate");
45 m_division_ratio = p->get<
double>(
"cell_mechanics.division_ratio");
46 m_elastic_modulus = p->get<
double>(
"cell_mechanics.elastic_modulus");
47 m_response_time = p->get<
double>(
"cell_mechanics.response_time");
48 m_time_step = p->get<
double>(
"model.time_step");
49 m_viscosity_const = p->get<
double>(
"cell_mechanics.viscosity_const");
51 m_area_incr = m_cell_expansion_rate * m_time_step;
52 m_div_area = m_division_ratio * m_cell_base_area;
57 const string ham_select = m_cd.m_parameters->get<
string>(
"model.mc_hamiltonian");
59 const double t_area = cell->GetTargetArea();
60 const double t_length = cell->GetTargetLength();
61 const bool first_cell = (m_cd.m_mesh->GetCells().size() == 1);
63 const double update_t_area
64 = (first_cell) ? t_area + m_area_incr : t_area + cell->GetChemical(0) * m_area_incr;
65 const double update_t_length
66 = 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);
Core data with mesh, parameters, random engine and time data.
A cell contains walls and nodes.
void operator()(Cell *cell)
Execute.
const std::list< Wall * > & GetWalls() const
Access the cell's walls.
BasicAuxin(const CoreData &cd)
Initializing constructor.
void Initialize(const CoreData &cd)
Initialize or re-initialize.
Namespace for components of the Default model group.
CellHousekeep::BasicAuxin header file.
double GetLength() const
Returns (and calculates, if length marked as dirty) the length along all nodes.
double GetArea() const
Return the area of the cell.
A cell wall, runs between cell corner points and consists of wall elements.