VPTissue Reference Manual
wall_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/Cell.h"
23 #include "bio/Wall.h"
24 
25 namespace SimPT_Default {
26 namespace WallChemistry {
27 
28 using namespace std;
29 using namespace boost::property_tree;
30 
32  : m_k1(0.0), m_k2(0.0), m_km(0.0), m_kr(0.0), m_r(0.0), m_sam_auxin(0.0)
33 {
34 }
35 
37  : AuxinGrowth()
38 {
39  Initialize(cd);
40 }
41 
43 {
44  m_cd = cd;
45  auto& p = m_cd.m_parameters;
46 
47  m_k1 = p->get<double>("auxin_transport.k1");
48  m_k2 = p->get<double>("auxin_transport.k2");
49  m_km = p->get<double>("auxin_transport.km");
50  m_kr = p->get<double>("auxin_transport.kr");
51  m_r = p->get<double>("auxin_transport.r");
52  m_sam_auxin = p->get<double>("auxin_transport.sam_auxin");
53 }
54 
55 void AuxinGrowth::operator()(Wall* w, double* dw1, double* dw2)
56 {
57  // Cells polarize available PIN1 to Shoot Apical Meristem
58  if (w->GetC2()->IsBoundaryPolygon()) {
59  if (w->IsAuxinSink()) {
60  dw1[0] = 0.;
61  dw2[0] = 0.;
62 
63  // assume high auxin concentration in SAM, to convince PIN1 to polarize to it
64  // exocytosis regulated
65  double const chem = w->GetC1()->GetChemical(1);
66  double const receptor = m_sam_auxin * m_r / (m_kr + m_sam_auxin);
67  dw1[1] = m_k1 * chem * receptor / (m_km + chem)
68  - m_k2 * w->GetTransporters1(1);
69  dw2[1] = 0.;
70  } else {
71  dw1[0] = dw2[0] = dw1[1] = dw2[1];
72  }
73  return;
74  }
75 
76  if (w->GetC1()->IsBoundaryPolygon()) {
77  if (w->IsAuxinSink()) {
78  dw1[0] = 0.;
79  dw2[0] = 0.;
80 
81  // assume high auxin concentration in SAM, to convince PIN1 to polarize to it
82  // exocytosis regulated
83  double const chem = w->GetC2()->GetChemical(1);
84  double const receptor = m_sam_auxin * m_r / (m_kr + m_sam_auxin);
85  dw1[1] = 0.;
86  dw2[1] = m_k1 * chem * receptor / (m_km + chem)
87  - m_k2 * w->GetTransporters2(1);
88  } else {
89  dw1[0] = dw2[0] = dw1[1] = dw2[1];
90  }
91  return;
92  }
93 
94  // PIN1 localization at wall 1
95  // Chemical 0 is Auxin (intracellular storage only)
96  // Chemical 1 is PIN1 (walls and intracellular storage)
98  // Note: Pij measured in terms of concentration (mol/L); Pi in terms of quantity (mol)
99 
100  // normal cell -- exocytosis regulated
101  double const auxin2 = w->GetC2()->GetChemical(0);
102  double const chem_1_1 = w->GetC1()->GetChemical(1);
103  double const receptor1 = auxin2 * m_r / (m_kr + auxin2);
104  double const dPijdt1 = m_k1 * chem_1_1 * receptor1 / (m_km + chem_1_1)
105  - m_k2 * w->GetTransporters1(1);
106 
107  // normal cell -- exocytosis regulated
108  double const auxin1 = w->GetC1()->GetChemical(0);
109  double const chem_2_1 = w->GetC2()->GetChemical(1);
110  double const receptor2 = auxin1 * m_r / (m_kr + auxin1);
111  double const dPijdt2 = m_k1 * chem_2_1 * receptor2 / (m_km + chem_2_1)
112  - m_k2 * w->GetTransporters2(1);
113 
114  // PIN1 of neighboring vascular cell inhibits PIN1 endocytosis
115  dw1[0] = 0.;
116  dw2[0] = 0.;
117  dw1[1] = dPijdt1;
118  dw2[1] = dPijdt2;
119 }
120 
121 } // namespace
122 } // namespace
Core data with mesh, parameters, random engine and time data.
Definition: CoreData.h:38
STL namespace.
void operator()(Wall *w, double *dw1, double *dw2)
Execute.
Implements wall chemistry for the AuxinGrowth model.
Namespace for components of the Default model group.
Interface for Cell.
void Initialize(const CoreData &cd)
Initialize from ptree.
WallChemistry for AuxinGrowth model.
A cell wall, runs between cell corner points and consists of wall elements.
Definition: Wall.h:48
Interface for Wall.