VPTissue Reference Manual
cell_housekeep/Auxin.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2011-2016 Universiteit Antwerpen
3  *
4  * Licensed under the EUPL, Version 1.1 or as soon they will be approved by
5  * the European Commission - subsequent versions of the EUPL (the "Licence");
6  * You may not use this work except in compliance with the Licence.
7  * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl5
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the Licence is distributed on an "AS IS" basis,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the Licence for the specific language governing
13  * permissions and limitations under the Licence.
14  */
20 #include "Auxin.h"
21 
22 #include <cmath>
23 #include "bio/Cell.h"
24 #include "bio/Mesh.h"
25 
26 namespace SimPT_Default {
27 namespace CellHousekeep {
28 
29 using namespace std;
30 using namespace boost::property_tree;
31 
33 {
34  Initialize(cd);
35 }
36 
37 void Auxin::Initialize(const CoreData& cd)
38 {
39  m_cd = cd;
40  auto& p = m_cd.m_parameters;
41 
42  m_cell_base_area = p->get<double>("cell_mechanics.base_area");
43  m_cell_expansion_rate = p->get<double>("cell_mechanics.cell_expansion_rate");
44  m_division_ratio = p->get<double>("cell_mechanics.division_ratio");
45  m_elastic_modulus = p->get<double>("cell_mechanics.elastic_modulus");
46  m_response_time = p->get<double>("cell_mechanics.response_time");
47  m_time_step = p->get<double>("model.time_step");
48  m_viscosity_const = p->get<double>("cell_mechanics.viscosity_const");
49 
50  m_area_incr = m_cell_expansion_rate * m_time_step;
51  m_div_area = m_division_ratio * m_cell_base_area;
52 }
53 
55 {
56  const string ham_select = m_cd.m_parameters->get<string>("model.mc_hamiltonian");
57 
58  const double chem = cell->GetChemical(0);
59  const double t_area = cell->GetTargetArea();
60  const double t_length = cell->GetTargetLength();
61 
62  const double update_t_area = t_area + chem / (1. + chem) * m_area_incr;
63  const double update_t_length = t_length * sqrt(update_t_area / t_area);
64 
65  cell->SetTargetArea(update_t_area);
66  cell->SetTargetLength(update_t_length);
67 
68  if (ham_select == "ElasticWall") {
69  // Update the rest length of wall
70  // TODO: 1.50 (maximal extension) and 1.25 (irreversible extension) are hidden parameters
71  for (list<Wall*>::iterator i = cell->GetWalls().begin(); i != cell->GetWalls().end(); ++i) {
72  Wall* w = *i;
73  if (w->GetLength() > 1.50 * w->GetRestLength()) {
74  // Irreversible extension
75  w->SetRestLength(w->GetLength() / 1.25);
76  }
77  }
78  }
79 
80  if (ham_select == "Maxwell") {
81  // Update the solute of cell and the rest length of wall
82  const double solute = m_viscosity_const * sqrt(cell->GetArea());
83  const double update_solute = solute - (solute - cell->GetSolute()) * exp(-0.1 * m_time_step/m_response_time);
84  cell->SetSolute(update_solute);
85 
86  for (list<Wall*>::iterator i = cell->GetWalls().begin(); i != cell->GetWalls().end(); ++i) {
87  Wall* w = *i;
88 
89  const double update_rest_length = w->GetLength()
90  - (w->GetLength() - w->GetRestLength())
91  * exp(-0.01 * m_elastic_modulus * m_time_step / m_viscosity_const);
92  w->SetRestLength(update_rest_length);
93  }
94  }
95 }
96 
97 } // namespace
98 } // namespace
Core data with mesh, parameters, random engine and time data.
Definition: CoreData.h:38
STL namespace.
A cell contains walls and nodes.
Definition: Cell.h:48
void Initialize(const CoreData &cd)
Initialize or re-initialize.
Auxin(const CoreData &cd)
Initializing constructor.
const std::list< Wall * > & GetWalls() const
Access the cell's walls.
Definition: Cell.h:88
CellHousekeep::Auxin header file.
Namespace for components of the Default model group.
Interface for Cell.
double GetLength() const
Returns (and calculates, if length marked as dirty) the length along all nodes.
Definition: Wall.cpp:97
double GetArea() const
Return the area of the cell.
Definition: Cell.cpp:178
A cell wall, runs between cell corner points and consists of wall elements.
Definition: Wall.h:48
Interface for Mesh.