Changeset - ce40edbe6273
[Not reviewed]
Michael Guravage - 14 years ago 2011-08-26 19:12:49
michael.guravage@cwi.nl
Added fourth reaction-diffusion protocol: Prevent vascular cells from expanding.

--
user: Michael Guravage <michael.guravage@cwi.nl>
branch 'default'
changed src/protocols/MyDiffusionModel/mydiffusionmodel.cpp
1 file changed with 5 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/protocols/MyDiffusionModel/mydiffusionmodel.cpp
Show inline comments
 
@@ -10,72 +10,75 @@
 
 *  The Virtual Leaf is distributed in the hope that it will be useful,
 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
 *  GNU General Public License for more details.
 
 *
 
 *  You should have received a copy of the GNU General Public License
 
 *  along with the Virtual Leaf.  If not, see <http://www.gnu.org/licenses/>.
 
 *
 
 *  Copyright 2010 Roeland Merks.
 
 *
 
 */
 

	
 
#include <QObject>
 
#include <QtGui>
 
#include <QDebug>
 

	
 
#include "simplugin.h"
 
#include "parameter.h"
 
#include "wallbase.h"
 
#include "cellbase.h"
 
#include "mydiffusionmodel.h"
 

	
 
QString Mydiffusionmodel::ModelID(void) {
 
  // specify the name of your model here
 
  return QString( "Diffusion in a growing domain" );
 
  return QString( "Prevent vascular cells from expanding" );
 
}
 

	
 
// return the number of chemicals your model uses
 
int Mydiffusionmodel::NChem(void) { return 4; }
 

	
 
// To be executed after cell division
 
void Mydiffusionmodel::OnDivide(ParentInfo *parent_info, CellBase *daughter1, CellBase *daughter2) {
 
  // rules to be executed after cell division go here
 
  // (e.g., cell differentiation rules)
 
}
 

	
 
void Mydiffusionmodel::SetCellColor(CellBase *c, QColor *color) { 
 
  // add cell coloring rules here
 
  double red=c->Chemical(1)/(1.+c->Chemical(1));
 
  double green=c->Chemical(0)/(1.+c->Chemical(0));
 
  double blue=c->Chemical(3)/(1.+c->Chemical(3));
 
  color->setRgbF(red,green,blue);
 
}
 

	
 
void Mydiffusionmodel::CellHouseKeeping(CellBase *c) {
 
  // add cell behavioral rules here
 

	
 
  c->EnlargeTargetArea(par->cell_expansion_rate);
 
  if (c->Chemical(0) < 0.5){
 
    c->EnlargeTargetArea(par->cell_expansion_rate);
 
  }
 

	
 
  
 
  if(c->Area() > 2*c->BaseArea()){
 
    c->Divide();
 
  }
 
}
 

	
 
void Mydiffusionmodel::CelltoCellTransport(Wall *w, double *dchem_c1, double *dchem_c2) {
 
  // add biochemical transport rules here
 

	
 
  // Passive fluxes (Fick's law)
 
  for (int c=0;c<NChem();c++) {
 
    if (w->C1()->BoundaryPolP() || w->C2()->BoundaryPolP()) return;
 
    double phi = w->Length() * ( par->D[c] ) * ( w->C2()->Chemical(c) - w->C1()->Chemical(c) );
 
    dchem_c1[c] += phi;
 
    dchem_c2[c] -= phi;
 
  }
 
}
 

	
 
void Mydiffusionmodel::WallDynamics(Wall *w, double *dw1, double *dw2) {
 
  // add biochemical networks for reactions occuring at walls here
 
}
 

	
 
void Mydiffusionmodel::CellDynamics(CellBase *c, double *dchem) {
 
  // add biochemical networks for intracellular reactions here
0 comments (0 inline, 0 general)