# HG changeset patch # User Michael Guravage # Date 2011-08-26 15:56:01 # Node ID 854077b2d7cc749acc124541ed5a6163dd07d088 # Parent c0082ca197fb5a8762017dcf21762091fd9a99cb Added first tissue growth protocol: The expanding cell. -- user: Michael Guravage branch 'default' added src/protocols/MyGrowthModel/Makefile added src/protocols/MyGrowthModel/mygrowthmodel.cpp added src/protocols/MyGrowthModel/mygrowthmodel.h added src/protocols/MyGrowthModel/mygrowthmodel.pro changed src/protocols/Makefile diff --git a/src/protocols/Makefile b/src/protocols/Makefile --- a/src/protocols/Makefile +++ b/src/protocols/Makefile @@ -9,7 +9,8 @@ ifeq ($(MAKE),) endif PROTOCOLS=\ - MyEmptyModel + MyEmptyModel\ + MyGrowthModel all: @for p in $(PROTOCOLS); do $(MAKE) -C $$p; done; diff --git a/src/protocols/MyGrowthModel/Makefile b/src/protocols/MyGrowthModel/Makefile new file mode 100644 --- /dev/null +++ b/src/protocols/MyGrowthModel/Makefile @@ -0,0 +1,30 @@ +# Set an environment varible $(MAKE) to the name of the make command +# on your machine, e.g. 'make' on UNIX and 'mingw32-make' on windows. +# Fallback default is UNIX make. + +ifeq ($(MAKE),) + MAKE=make +endif + +# Ditto for QMAKE +ifeq ($(QMAKE),) + QMAKE=qmake +endif + +all: mygrowthmodel + +mygrowthmodel: Makefile.mygrowthmodel + $(MAKE) -f Makefile.mygrowthmodel + +Makefile.mygrowthmodel: mygrowthmodel.pro + $(QMAKE) -o $@ $< + +clean: + $(MAKE) -f Makefile.mygrowthmodel clean +ifeq ($(MAKE),make) + touch mygrowthmodel.pro +else + copy /b mygrowthmodel.pro +,, +endif + +# finis diff --git a/src/protocols/MyGrowthModel/mygrowthmodel.cpp b/src/protocols/MyGrowthModel/mygrowthmodel.cpp new file mode 100644 --- /dev/null +++ b/src/protocols/MyGrowthModel/mygrowthmodel.cpp @@ -0,0 +1,71 @@ +/* + * + * This file is part of the Virtual Leaf. + * + * The Virtual Leaf is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * 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 . + * + * Copyright 2010 Roeland Merks. + * + */ + +#include +#include +#include +#include "simplugin.h" +#include "parameter.h" +#include "wallbase.h" +#include "cellbase.h" +#include "mygrowthmodel.h" +#include "pi.h" +#include "random.h" + +QString Mygrowthmodel::ModelID(void) { + // specify the name of your model here + return QString( "Expanding cell model" ); +} + +// return the number of chemicals your model uses +int Mygrowthmodel::NChem(void) { return 0; } + +// To be executed after cell division +void Mygrowthmodel::OnDivide(ParentInfo *parent_info, CellBase *daughter1, CellBase *daughter2) { + // rules to be executed after cell division go here + // (e.g., cell differentiation rules) +} + +void Mygrowthmodel::SetCellColor(CellBase *c, QColor *color) { + // add cell coloring rules here +} + +void Mygrowthmodel::CellHouseKeeping(CellBase *c) { + // add cell behavioral rules here + + c->EnlargeTargetArea(par->cell_expansion_rate); +} + +void Mygrowthmodel::CelltoCellTransport(Wall *w, double *dchem_c1, double *dchem_c2) { + // add biochemical transport rules here +} + +void Mygrowthmodel::WallDynamics(Wall *w, double *dw1, double *dw2) { + // add biochemical networks for reactions occuring at walls here +} + +void Mygrowthmodel::CellDynamics(CellBase *c, double *dchem) { + // add biochemical networks for intracellular reactions here +} + +Q_EXPORT_PLUGIN2(mygrowthmodel, Mygrowthmodel) + +// finis diff --git a/src/protocols/MyGrowthModel/mygrowthmodel.h b/src/protocols/MyGrowthModel/mygrowthmodel.h new file mode 100644 --- /dev/null +++ b/src/protocols/MyGrowthModel/mygrowthmodel.h @@ -0,0 +1,57 @@ +/* + * + * This file is part of the Virtual Leaf. + * + * The Virtual Leaf is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * 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 . + * + * Copyright 2010 Roeland Merks. + * + */ + +#include +#include +#include +#include "simplugin.h" + +class Mygrowthmodel : public QObject, SimPluginInterface { + Q_OBJECT + Q_INTERFACES(SimPluginInterface); + + public: + virtual QString ModelID(void); + + // Executed after the cellular mechanics steps have equillibrized + virtual void CellHouseKeeping (CellBase *c); + + // Differential equations describing transport of chemicals from cell to cell + virtual void CelltoCellTransport(Wall *w, double *dchem_c1, double *dchem_c2); + + // Differential equations describing chemical reactions taking place at or near the cell walls + // (e.g. PIN accumulation) + virtual void WallDynamics(Wall *w, double *dw1, double *dw2); + + // Differential equations describing chemical reactions inside the cells + virtual void CellDynamics(CellBase *c, double *dchem); + + // To be executed after a cell division + virtual void OnDivide(ParentInfo *parent_info, CellBase *daughter1, CellBase *daughter2); + + // To be executed for coloring a cell + virtual void SetCellColor(CellBase *c, QColor *color); + + // Return number of chemicals + virtual int NChem(void); +}; + +// finis diff --git a/src/protocols/MyGrowthModel/mygrowthmodel.pro b/src/protocols/MyGrowthModel/mygrowthmodel.pro new file mode 100644 --- /dev/null +++ b/src/protocols/MyGrowthModel/mygrowthmodel.pro @@ -0,0 +1,63 @@ +# +# $Id$ +# +# This file is part of the Virtual Leaf. +# +# The Virtual Leaf is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# 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 . +# +# Copyright 2010 Roeland Merks. +# + + +TARGET = mygrowthmodel +VLEAFHOME = ../../.. + +CONFIG += release +CONFIG -= debug +CONFIG += plugin + +BINDIR = $${VLEAFHOME}/bin +LIBDIR = $${VLEAFHOME}/lib +INCDIR = $${VLEAFHOME}/src +DEFINES = QTGRAPHICS # VLEAFPLUGIN +DESTDIR = $${BINDIR}/models +HEADERS = $${TARGET}.h $${INCDIR}/simplugin.h +INCLUDEPATH += $${INCDIR} + +QMAKE_CXXFLAGS += -fexceptions #-I$${INCDIR} +QMAKE_CXXFLAGS += -Wno-write-strings +QMAKE_CXXFLAGS += -Wno-unused-parameter +QMAKE_CXXFLAGS_DEBUG += -g3 +QMAKE_CXXFLAGS_DEBUG += -DQDEBUG +QT += qt3support +SOURCES = $${TARGET}.cpp +TEMPLATE = lib + +unix { + LIBS += -L$${LIBDIR} -lvleaf + QMAKE_CXXFLAGS += -fPIC -I/usr/include/libxml2 + QMAKE_LFLAGS += -fPIC +} + +win32 { + LIBXML2DIR = $${LIBDIR}\libxml2 + LIBICONVDIR = $${LIBDIR}\libiconv + LIBZDIR = $${LIBDIR}\libz + LIBS += -L$${LIBDIR} -lvleaf + QMAKE_CXXFLAGS += -DLIBXML_STATIC + QMAKE_CXXFLAGS += -I$${LIBXML2DIR}\include -I$${LIBICONVDIR}\include -I$${LIBZDIR}\include + +} + +# finish