# HG changeset patch # User Michael Guravage # Date 2011-08-26 15:44:39 # Node ID c0082ca197fb5a8762017dcf21762091fd9a99cb # Parent 25054d6d05c9e963bb893fbd440d02018ef4bedc Added first protocol. -- user: Michael Guravage branch 'default' added src/protocols/Makefile added src/protocols/MyEmptyModel/Makefile added src/protocols/MyEmptyModel/myemptymodel.cpp added src/protocols/MyEmptyModel/myemptymodel.h added src/protocols/MyEmptyModel/myemptymodel.pro diff --git a/src/protocols/Makefile b/src/protocols/Makefile new file mode 100644 --- /dev/null +++ b/src/protocols/Makefile @@ -0,0 +1,20 @@ +# $Id$ + +# 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 + +PROTOCOLS=\ + MyEmptyModel + +all: + @for p in $(PROTOCOLS); do $(MAKE) -C $$p; done; + +clean: + @for p in $(PROTOCOLS); do $(MAKE) -C $$p clean; done; + +# finis diff --git a/src/protocols/MyEmptyModel/Makefile b/src/protocols/MyEmptyModel/Makefile new file mode 100644 --- /dev/null +++ b/src/protocols/MyEmptyModel/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: myemptymodel + +myemptymodel: Makefile.myemptymodel + $(MAKE) -f Makefile.myemptymodel + +Makefile.myemptymodel: myemptymodel.pro + $(QMAKE) -o $@ $< + +clean: + $(MAKE) -f Makefile.myemptymodel clean +ifeq ($(MAKE),make) + touch myemptymodel.pro +else + copy /b myemptymodel.pro +,, +endif + +# finis diff --git a/src/protocols/MyEmptyModel/myemptymodel.cpp b/src/protocols/MyEmptyModel/myemptymodel.cpp new file mode 100644 --- /dev/null +++ b/src/protocols/MyEmptyModel/myemptymodel.cpp @@ -0,0 +1,67 @@ +/* + * + * 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 "myemptymodel.h" + +QString Myemptymodel::ModelID(void) { + // specify the name of your model here + return QString( "First Vleaf model" ); +} + +// return the number of chemicals your model uses +int Myemptymodel::NChem(void) { return 0; } + +// To be executed after cell division +void Myemptymodel::OnDivide(ParentInfo *parent_info, CellBase *daughter1, CellBase *daughter2) { + // rules to be executed after cell division go here + // (e.g., cell differentiation rules) +} + +void Myemptymodel::SetCellColor(CellBase *c, QColor *color) { + // add cell coloring rules here +} + +void Myemptymodel::CellHouseKeeping(CellBase *c) { + // add cell behavioral rules here +} + +void Myemptymodel::CelltoCellTransport(Wall *w, double *dchem_c1, double *dchem_c2) { + // add biochemical transport rules here +} + +void Myemptymodel::WallDynamics(Wall *w, double *dw1, double *dw2) { + // add biochemical networks for reactions occuring at walls here +} + +void Myemptymodel::CellDynamics(CellBase *c, double *dchem) { + // add biochemical networks for intracellular reactions here +} + +Q_EXPORT_PLUGIN2(myemptymodel, Myemptymodel) + +// finis diff --git a/src/protocols/MyEmptyModel/myemptymodel.h b/src/protocols/MyEmptyModel/myemptymodel.h new file mode 100644 --- /dev/null +++ b/src/protocols/MyEmptyModel/myemptymodel.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 Myemptymodel : 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/MyEmptyModel/myemptymodel.pro b/src/protocols/MyEmptyModel/myemptymodel.pro new file mode 100644 --- /dev/null +++ b/src/protocols/MyEmptyModel/myemptymodel.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 = myemptymodel +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