VPTissue Reference Manual
cell_chemistry/AuxinGrowth.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 "AuxinGrowth.h"
21 
22 #include "bio/BoundaryType.h"
23 #include "bio/Cell.h"
24 #include "bio/CellAttributes.h"
25 #include "bio/ReduceCellWalls.h"
26 #include "bio/Wall.h"
27 #include "bio/WallAttributes.h"
28 #include "sim/CoreData.h"
29 
30 using namespace std;
31 using boost::property_tree::ptree;
32 
33 namespace SimPT_Default {
34 namespace CellChemistry {
35 
36 AuxinGrowth::AuxinGrowth(const CoreData& cd)
37 {
38  Initialize(cd);
39 }
40 
41 void AuxinGrowth::Initialize(const CoreData& cd)
42 {
43  m_cd = cd;
44  const auto& p = m_cd.m_parameters->get_child("auxin_transport");
45 
46  m_aux_breakdown = p.get<double>("aux_breakdown");
47  m_aux_cons = p.get<double>("aux_cons");
48  m_k1 = p.get<double>("k1");
49  m_k2 = p.get<double>("k2");
50  m_km = p.get<double>("km");
51  m_kr = p.get<double>("kr");
52  m_pin_breakdown = p.get<double>("pin_breakdown");
53  m_pin_production = p.get<double>("pin_production");
54  m_pin_production_in_epidermis = p.get<double>("pin_production_in_epidermis");
55  m_r = p.get<double>("r");
56  m_sam_auxin = p.get<double>("sam_auxin");
57  m_sam_auxin_breakdown = p.get<double>("sam_auxin_breakdown");
58 }
59 
60 void AuxinGrowth::operator()(Cell* cell, double* dchem)
61 {
62  using std::placeholders::_1;
63  using std::placeholders::_2;
64  using std::placeholders::_3;
65 
66  // Note: Pi and Pij measured in numbers of molecules, not concentrations
67 
68  double const sum_Pij = cell->GetSumTransporters(1);
69  double const chem = cell->GetChemical(0);
70  double dPidt = 0.;
71 
72  // exocytosis regulated:
73  function<double(Cell*, Cell*, Wall*)> f
74  = bind(&AuxinGrowth::Complex_PijAj, this, _1, _2, _3);
75  dPidt = -m_k1 * ReduceCellWalls<double>(cell, f) + m_k2 * sum_Pij;
76 
77  // production of PIN depends on auxin concentration
78  dPidt += (cell->HasBoundaryWall() ? m_pin_production_in_epidermis : m_pin_production) * chem
79  - cell->GetChemical(1) * m_pin_breakdown;
80 
81  // no PIN production in SAM
82  if (cell->GetBoundaryType() == BoundaryType::SAM) {
83  dchem[1] = 0.;
84  dchem[0] = -m_sam_auxin_breakdown * chem;
85  } else {
86  dchem[1] = dPidt;
87  // source of auxin
88  dchem[0] = m_aux_cons - m_aux_breakdown * chem;
89  }
90 }
91 
92 double AuxinGrowth::Complex_PijAj(Cell* here, Cell* nb, Wall* w)
93 {
94  // gives the amount of complex "auxinreceptor-Pin1" at the wall (at QSS)
95  double const nb_aux =
96  (nb->IsBoundaryPolygon() && w->IsAuxinSink()) ? m_sam_auxin : nb->GetChemical(0);
97  double const receptor = nb_aux * m_r / (m_kr + nb_aux);
98  double const chem = here->GetChemical(1);
99 
100  return chem * receptor / (m_km + chem);
101 }
102 
103 } // namespace
104 } // 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
Core data used during model execution.
CellChemistry for AuxinGrowth model.
Namespace for components of the Default model group.
Interface for Cell.
Interface for WallAttributes.
BoundaryType enumeration class.
Interface/Implementation for ReduceCellWalls.
Interface for CellAttributes.
double GetSumTransporters(unsigned int ch) const
Sum transporters at this cell's side of the walls.
Definition: Cell.cpp:233
A cell wall, runs between cell corner points and consists of wall elements.
Definition: Wall.h:48
Interface for Wall.