VPTissue Reference Manual
wall_chemistry/Basic.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 "Basic.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)
33 {
34 }
35 
37  : Basic()
38 {
39  Initialize(cd);
40 }
41 
42 void Basic::Initialize(const CoreData& cd)
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 }
53 
54 void Basic::operator()(Wall* w, double* dw1, double* dw2)
55 {
56  // add biochemical networks for reactions occurring at walls here
57  dw1[0] = 0.;
58  dw2[0] = 0.; // chemical 0 unused in walls
59  dw1[1] = PINflux(w->GetC1(), w->GetC2(), w);
60  dw2[1] = PINflux(w->GetC2(), w->GetC1(), w);
61 }
62 
63 double Basic::PINflux(Cell* this_cell, Cell* adjacent_cell, Wall* w)
64 {
65  // PIN1 localization at wall
66  // Note: chemical 0 is Auxin (intracellular storage only)
67  // PIN1 is Chemical 1 (both in walls and intracellular storage)
69  // Note that Pij is measured in term of concentration (mol/L)
70  // Pi in terms of quantity (mol)
71  // Equations as in Merks et al., Trends in Plant Science 2007
72 
73  // calculate PIN translocation rate from cell to membrane
74  double const adj_auxin = adjacent_cell->GetChemical(0);
75  double const receptor = adj_auxin * m_r / (m_kr + adj_auxin);
76 
77  // pick the correct side of the Wall
78  double pin_atwall;
79  if (w->GetC1() == this_cell) {
80  pin_atwall = w->GetTransporters1(1);
81  } else {
82  pin_atwall = w->GetTransporters2(1);
83  }
84 
85  // note: pin_flux is net flux from endosome to wall
86  double const chem = this_cell->GetChemical(1);
87  double const pin_flux = m_k1 * chem * receptor / (m_km + chem) - m_k2 * pin_atwall;
88  return pin_flux;
89 }
90 
91 } // namespace
92 } // 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 from ptree.
Namespace for components of the Default model group.
Interface for Cell.
Basic WallChemistry component.
A cell wall, runs between cell corner points and consists of wall elements.
Definition: Wall.h:48
Basic approach with PINflux to wall chemistry.
Interface for Wall.
void operator()(Wall *w, double *dw1, double *dw2)
Execute.