diff --git a/src/parameter.cpp b/src/parameter.cpp
new file mode 100644
--- /dev/null
+++ b/src/parameter.cpp
@@ -0,0 +1,1886 @@
+/*
+ *
+ * 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 "parameter.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include "output.h"
+#include "parse.h"
+#include "xmlwrite.h"
+#include "warning.h"
+#include
+
+using namespace std;
+
+static const std::string _module_id("$Id$");
+
+Parameter::Parameter() {
+ arrowcolor = strdup("white");
+ arrowsize = 100;
+ textcolor = strdup("red");
+ cellnumsize = 1;
+ nodenumsize = 1;
+ node_mag = 1.0;
+ outlinewidth = 1.0;
+ cell_outline_color = strdup("forestgreen");
+ resize_stride = 10;
+ T = 1.0;
+ lambda_length = 100.;
+ lambda_celllength = 0.;
+ target_length = 60.;
+ cell_expansion_rate = 1.;
+ cell_div_expansion_rate = 0.;
+ auxin_dependent_growth = true;
+ ode_accuracy = 1e-4;
+ mc_stepsize = 0.4;
+ mc_cell_stepsize = 0.2;
+ energy_threshold = 1000.;
+ bend_lambda = 0.;
+ alignment_lambda = 0.;
+ rel_cell_div_threshold = 2.;
+ rel_perimeter_stiffness = 2;
+ collapse_node_threshold = 0.05;
+ morphogen_div_threshold = 0.2;
+ morphogen_expansion_threshold = 0.01;
+ copy_wall = true;
+ source = 0.;
+ D = new double[15];
+ D[0] = 0.;
+ D[1] = 0.0;
+ D[2] = 0.0;
+ D[3] = 0.;
+ D[4] = 0.;
+ D[5] = 0.;
+ D[6] = 0.;
+ D[7] = 0.;
+ D[8] = 0.;
+ D[9] = 0.;
+ D[10] = 0.;
+ D[11] = 0.;
+ D[12] = 0.;
+ D[13] = 0.;
+ D[14] = 0.;
+ initval = new double[15];
+ initval[0] = 0.;
+ initval[1] = 0.;
+ initval[2] = 0.;
+ initval[3] = 0.;
+ initval[4] = 0.;
+ initval[5] = 0.;
+ initval[6] = 0.;
+ initval[7] = 0.;
+ initval[8] = 0.;
+ initval[9] = 0.;
+ initval[10] = 0.;
+ initval[11] = 0.;
+ initval[12] = 0.;
+ initval[13] = 0.;
+ initval[14] = 0.;
+ k1 = 1.;
+ k2 = 0.3;
+ r = 1.;
+ kr = 1.;
+ km = 1.;
+ Pi_tot = 1.;
+ transport = 0.036;
+ ka = 1;
+ pin_prod = 0.001;
+ pin_prod_in_epidermis = 0.1;
+ pin_breakdown = 0.001;
+ pin_breakdown_internal = 0.001;
+ aux1prod = 0.001;
+ aux1prodmeso = 0.;
+ aux1decay = 0.001;
+ aux1decaymeso = 0.1;
+ aux1transport = 0.036;
+ aux_cons = 0.;
+ aux_breakdown = 0.;
+ kaux1 = 1;
+ kap = 1;
+ leaf_tip_source = 0.001;
+ sam_efflux = 0.0001;
+ sam_auxin = 10.;
+ sam_auxin_breakdown = 0;
+ van3prod = 0.002;
+ van3autokat = 0.1;
+ van3sat = 10;
+ k2van3 = 0.3;
+ dt = 0.1;
+ rd_dt = 1.0;
+ datadir = strdup(".");
+ movie = false;
+ nit = 100000;
+ maxt = 1000.;
+ storage_stride = 10;
+ xml_storage_stride = 500;
+ rseed = -1;
+ constituous_expansion_limit = 16;
+ vessel_inh_level = 1;
+ vessel_expansion_rate = 0.25;
+ d = 0.;
+ e = 0.;
+ f = 0.;
+ c = 0.;
+ mu = 0.;
+ nu = 0.;
+ rho0 = 0.;
+ rho1 = 0.;
+ c0 = 0.;
+ gamma = 0.;
+ eps = 0.;
+ k = new double[15];
+ k[0] = 0.;
+ k[1] = 0.0;
+ k[2] = 0.0;
+ k[3] = 0.;
+ k[4] = 0.;
+ k[5] = 0.;
+ k[6] = 0.;
+ k[7] = 0.;
+ k[8] = 0.;
+ k[9] = 0.;
+ k[10] = 0.;
+ k[11] = 0.;
+ k[12] = 0.;
+ k[13] = 0.;
+ k[14] = 0.;
+ i1 = 0;
+ i2 = 0;
+ i3 = 0;
+ i4 = 0;
+ i5 = 0;
+ s1 = strdup("");
+ s2 = strdup("");
+ s3 = strdup("");
+ b1 = false;
+ b2 = false;
+ b3 = false;
+ b4 = false;
+ dir1 = strdup(".");
+ dir2 = strdup(".");
+}
+
+Parameter::~Parameter() {
+
+ // destruct parameter object
+
+ // free string parameter
+
+ CleanUp();
+
+}
+
+void Parameter::CleanUp(void) {
+ if (arrowcolor)
+ free(arrowcolor);
+ if (textcolor)
+ free(textcolor);
+ if (cell_outline_color)
+ free(cell_outline_color);
+ if (D)
+ free(D);
+ if (initval)
+ free(initval);
+ if (datadir)
+ free(datadir);
+ if (k)
+ free(k);
+ if (s1)
+ free(s1);
+ if (s2)
+ free(s2);
+ if (s3)
+ free(s3);
+ if (dir1)
+ free(dir1);
+ if (dir2)
+ free(dir2);
+
+}
+
+void Parameter::Read(const char *filename) {
+
+ static bool ReadP=false;
+
+ if (ReadP) {
+
+ //throw "Run Time Error in parameter.cpp: Please Read parameter file only once!!";
+ CleanUp();
+
+ } else
+ ReadP=true;
+
+ FILE *fp=OpenReadFile(filename);
+
+
+ arrowcolor = sgetpar(fp, "arrowcolor", "white", true);
+ arrowsize = fgetpar(fp, "arrowsize", 100, true);
+ textcolor = sgetpar(fp, "textcolor", "red", true);
+ cellnumsize = igetpar(fp, "cellnumsize", 1, true);
+ nodenumsize = igetpar(fp, "nodenumsize", 1, true);
+ node_mag = fgetpar(fp, "node_mag", 1.0, true);
+ outlinewidth = fgetpar(fp, "outlinewidth", 1.0, true);
+ cell_outline_color = sgetpar(fp, "cell_outline_color", "forestgreen", true);
+ resize_stride = igetpar(fp, "resize_stride", 10, true);
+ T = fgetpar(fp, "T", 1.0, true);
+ lambda_length = fgetpar(fp, "lambda_length", 100., true);
+ lambda_celllength = fgetpar(fp, "lambda_celllength", 0., true);
+ target_length = fgetpar(fp, "target_length", 60., true);
+ cell_expansion_rate = fgetpar(fp, "cell_expansion_rate", 1., true);
+ cell_div_expansion_rate = fgetpar(fp, "cell_div_expansion_rate", 0., true);
+ auxin_dependent_growth = bgetpar(fp, "auxin_dependent_growth", true, true);
+ ode_accuracy = fgetpar(fp, "ode_accuracy", 1e-4, true);
+ mc_stepsize = fgetpar(fp, "mc_stepsize", 0.4, true);
+ mc_cell_stepsize = fgetpar(fp, "mc_cell_stepsize", 0.2, true);
+ energy_threshold = fgetpar(fp, "energy_threshold", 1000., true);
+ bend_lambda = fgetpar(fp, "bend_lambda", 0., true);
+ alignment_lambda = fgetpar(fp, "alignment_lambda", 0., true);
+ rel_cell_div_threshold = fgetpar(fp, "rel_cell_div_threshold", 2., true);
+ rel_perimeter_stiffness = fgetpar(fp, "rel_perimeter_stiffness", 2, true);
+ collapse_node_threshold = fgetpar(fp, "collapse_node_threshold", 0.05, true);
+ morphogen_div_threshold = fgetpar(fp, "morphogen_div_threshold", 0.2, true);
+ morphogen_expansion_threshold = fgetpar(fp, "morphogen_expansion_threshold", 0.01, true);
+ copy_wall = bgetpar(fp, "copy_wall", true, true);
+ source = fgetpar(fp, "source", 0., true);
+ D = dgetparlist(fp, "D", 15, true);
+ initval = dgetparlist(fp, "initval", 15, true);
+ k1 = fgetpar(fp, "k1", 1., true);
+ k2 = fgetpar(fp, "k2", 0.3, true);
+ r = fgetpar(fp, "r", 1., true);
+ kr = fgetpar(fp, "kr", 1., true);
+ km = fgetpar(fp, "km", 1., true);
+ Pi_tot = fgetpar(fp, "Pi_tot", 1., true);
+ transport = fgetpar(fp, "transport", 0.036, true);
+ ka = fgetpar(fp, "ka", 1, true);
+ pin_prod = fgetpar(fp, "pin_prod", 0.001, true);
+ pin_prod_in_epidermis = fgetpar(fp, "pin_prod_in_epidermis", 0.1, true);
+ pin_breakdown = fgetpar(fp, "pin_breakdown", 0.001, true);
+ pin_breakdown_internal = fgetpar(fp, "pin_breakdown_internal", 0.001, true);
+ aux1prod = fgetpar(fp, "aux1prod", 0.001, true);
+ aux1prodmeso = fgetpar(fp, "aux1prodmeso", 0., true);
+ aux1decay = fgetpar(fp, "aux1decay", 0.001, true);
+ aux1decaymeso = fgetpar(fp, "aux1decaymeso", 0.1, true);
+ aux1transport = fgetpar(fp, "aux1transport", 0.036, true);
+ aux_cons = fgetpar(fp, "aux_cons", 0., true);
+ aux_breakdown = fgetpar(fp, "aux_breakdown", 0., true);
+ kaux1 = fgetpar(fp, "kaux1", 1, true);
+ kap = fgetpar(fp, "kap", 1, true);
+ leaf_tip_source = fgetpar(fp, "leaf_tip_source", 0.001, true);
+ sam_efflux = fgetpar(fp, "sam_efflux", 0.0001, true);
+ sam_auxin = fgetpar(fp, "sam_auxin", 10., true);
+ sam_auxin_breakdown = fgetpar(fp, "sam_auxin_breakdown", 0, true);
+ van3prod = fgetpar(fp, "van3prod", 0.002, true);
+ van3autokat = fgetpar(fp, "van3autokat", 0.1, true);
+ van3sat = fgetpar(fp, "van3sat", 10, true);
+ k2van3 = fgetpar(fp, "k2van3", 0.3, true);
+ dt = fgetpar(fp, "dt", 0.1, true);
+ rd_dt = fgetpar(fp, "rd_dt", 1.0, true);
+ datadir = sgetpar(fp, "datadir", ".", true);
+ if (strcmp(datadir, "."))
+ MakeDir(datadir);
+ movie = bgetpar(fp, "movie", false, true);
+ nit = igetpar(fp, "nit", 100000, true);
+ maxt = fgetpar(fp, "maxt", 1000., true);
+ storage_stride = igetpar(fp, "storage_stride", 10, true);
+ xml_storage_stride = igetpar(fp, "xml_storage_stride", 500, true);
+ rseed = igetpar(fp, "rseed", -1, true);
+ constituous_expansion_limit = igetpar(fp, "constituous_expansion_limit", 16, true);
+ vessel_inh_level = fgetpar(fp, "vessel_inh_level", 1, true);
+ vessel_expansion_rate = fgetpar(fp, "vessel_expansion_rate", 0.25, true);
+ d = fgetpar(fp, "d", 0., true);
+ e = fgetpar(fp, "e", 0., true);
+ f = fgetpar(fp, "f", 0., true);
+ c = fgetpar(fp, "c", 0., true);
+ mu = fgetpar(fp, "mu", 0., true);
+ nu = fgetpar(fp, "nu", 0., true);
+ rho0 = fgetpar(fp, "rho0", 0., true);
+ rho1 = fgetpar(fp, "rho1", 0., true);
+ c0 = fgetpar(fp, "c0", 0., true);
+ gamma = fgetpar(fp, "gamma", 0., true);
+ eps = fgetpar(fp, "eps", 0., true);
+ k = dgetparlist(fp, "k", 15, true);
+ i1 = igetpar(fp, "i1", 0, true);
+ i2 = igetpar(fp, "i2", 0, true);
+ i3 = igetpar(fp, "i3", 0, true);
+ i4 = igetpar(fp, "i4", 0, true);
+ i5 = igetpar(fp, "i5", 0, true);
+ s1 = sgetpar(fp, "s1", "", true);
+ s2 = sgetpar(fp, "s2", "", true);
+ s3 = sgetpar(fp, "s3", "", true);
+ b1 = bgetpar(fp, "b1", false, true);
+ b2 = bgetpar(fp, "b2", false, true);
+ b3 = bgetpar(fp, "b3", false, true);
+ b4 = bgetpar(fp, "b4", false, true);
+ dir1 = sgetpar(fp, "dir1", ".", true);
+ if (strcmp(dir1, "."))
+ MakeDir(dir1);
+ dir2 = sgetpar(fp, "dir2", ".", true);
+ if (strcmp(dir2, "."))
+ MakeDir(dir2);
+
+}
+
+const char *sbool(const bool &p) {
+
+ const char *true_str="true";
+ const char *false_str="false";
+ if (p)
+ return true_str;
+ else
+ return false_str;
+}
+
+void Parameter::Write(ostream &os) const {
+
+
+ if (arrowcolor)
+ os << " arrowcolor = " << arrowcolor << endl;
+ os << " arrowsize = " << arrowsize << endl;
+
+ if (textcolor)
+ os << " textcolor = " << textcolor << endl;
+ os << " cellnumsize = " << cellnumsize << endl;
+ os << " nodenumsize = " << nodenumsize << endl;
+ os << " node_mag = " << node_mag << endl;
+ os << " outlinewidth = " << outlinewidth << endl;
+
+ if (cell_outline_color)
+ os << " cell_outline_color = " << cell_outline_color << endl;
+ os << " resize_stride = " << resize_stride << endl;
+ os << " T = " << T << endl;
+ os << " lambda_length = " << lambda_length << endl;
+ os << " lambda_celllength = " << lambda_celllength << endl;
+ os << " target_length = " << target_length << endl;
+ os << " cell_expansion_rate = " << cell_expansion_rate << endl;
+ os << " cell_div_expansion_rate = " << cell_div_expansion_rate << endl;
+ os << " auxin_dependent_growth = " << sbool(auxin_dependent_growth) << endl;
+ os << " ode_accuracy = " << ode_accuracy << endl;
+ os << " mc_stepsize = " << mc_stepsize << endl;
+ os << " mc_cell_stepsize = " << mc_cell_stepsize << endl;
+ os << " energy_threshold = " << energy_threshold << endl;
+ os << " bend_lambda = " << bend_lambda << endl;
+ os << " alignment_lambda = " << alignment_lambda << endl;
+ os << " rel_cell_div_threshold = " << rel_cell_div_threshold << endl;
+ os << " rel_perimeter_stiffness = " << rel_perimeter_stiffness << endl;
+ os << " collapse_node_threshold = " << collapse_node_threshold << endl;
+ os << " morphogen_div_threshold = " << morphogen_div_threshold << endl;
+ os << " morphogen_expansion_threshold = " << morphogen_expansion_threshold << endl;
+ os << " copy_wall = " << sbool(copy_wall) << endl;
+ os << " source = " << source << endl;
+ os << " D = "<< D[0] << ", " << D[1] << ", " << D[2] << ", " << D[3] << ", " << D[4] << ", " << D[5] << ", " << D[6] << ", " << D[7] << ", " << D[8] << ", " << D[9] << ", " << D[10] << ", " << D[11] << ", " << D[12] << ", " << D[13] << ", " << D[14] << endl;
+ os << " initval = "<< initval[0] << ", " << initval[1] << ", " << initval[2] << ", " << initval[3] << ", " << initval[4] << ", " << initval[5] << ", " << initval[6] << ", " << initval[7] << ", " << initval[8] << ", " << initval[9] << ", " << initval[10] << ", " << initval[11] << ", " << initval[12] << ", " << initval[13] << ", " << initval[14] << endl;
+ os << " k1 = " << k1 << endl;
+ os << " k2 = " << k2 << endl;
+ os << " r = " << r << endl;
+ os << " kr = " << kr << endl;
+ os << " km = " << km << endl;
+ os << " Pi_tot = " << Pi_tot << endl;
+ os << " transport = " << transport << endl;
+ os << " ka = " << ka << endl;
+ os << " pin_prod = " << pin_prod << endl;
+ os << " pin_prod_in_epidermis = " << pin_prod_in_epidermis << endl;
+ os << " pin_breakdown = " << pin_breakdown << endl;
+ os << " pin_breakdown_internal = " << pin_breakdown_internal << endl;
+ os << " aux1prod = " << aux1prod << endl;
+ os << " aux1prodmeso = " << aux1prodmeso << endl;
+ os << " aux1decay = " << aux1decay << endl;
+ os << " aux1decaymeso = " << aux1decaymeso << endl;
+ os << " aux1transport = " << aux1transport << endl;
+ os << " aux_cons = " << aux_cons << endl;
+ os << " aux_breakdown = " << aux_breakdown << endl;
+ os << " kaux1 = " << kaux1 << endl;
+ os << " kap = " << kap << endl;
+ os << " leaf_tip_source = " << leaf_tip_source << endl;
+ os << " sam_efflux = " << sam_efflux << endl;
+ os << " sam_auxin = " << sam_auxin << endl;
+ os << " sam_auxin_breakdown = " << sam_auxin_breakdown << endl;
+ os << " van3prod = " << van3prod << endl;
+ os << " van3autokat = " << van3autokat << endl;
+ os << " van3sat = " << van3sat << endl;
+ os << " k2van3 = " << k2van3 << endl;
+ os << " dt = " << dt << endl;
+ os << " rd_dt = " << rd_dt << endl;
+
+ if (datadir)
+ os << " datadir = " << datadir << endl;
+ os << " movie = " << sbool(movie) << endl;
+ os << " nit = " << nit << endl;
+ os << " maxt = " << maxt << endl;
+ os << " storage_stride = " << storage_stride << endl;
+ os << " xml_storage_stride = " << xml_storage_stride << endl;
+ os << " rseed = " << rseed << endl;
+ os << " constituous_expansion_limit = " << constituous_expansion_limit << endl;
+ os << " vessel_inh_level = " << vessel_inh_level << endl;
+ os << " vessel_expansion_rate = " << vessel_expansion_rate << endl;
+ os << " d = " << d << endl;
+ os << " e = " << e << endl;
+ os << " f = " << f << endl;
+ os << " c = " << c << endl;
+ os << " mu = " << mu << endl;
+ os << " nu = " << nu << endl;
+ os << " rho0 = " << rho0 << endl;
+ os << " rho1 = " << rho1 << endl;
+ os << " c0 = " << c0 << endl;
+ os << " gamma = " << gamma << endl;
+ os << " eps = " << eps << endl;
+ os << " k = "<< k[0] << ", " << k[1] << ", " << k[2] << ", " << k[3] << ", " << k[4] << ", " << k[5] << ", " << k[6] << ", " << k[7] << ", " << k[8] << ", " << k[9] << ", " << k[10] << ", " << k[11] << ", " << k[12] << ", " << k[13] << ", " << k[14] << endl;
+ os << " i1 = " << i1 << endl;
+ os << " i2 = " << i2 << endl;
+ os << " i3 = " << i3 << endl;
+ os << " i4 = " << i4 << endl;
+ os << " i5 = " << i5 << endl;
+
+ if (s1)
+ os << " s1 = " << s1 << endl;
+
+ if (s2)
+ os << " s2 = " << s2 << endl;
+
+ if (s3)
+ os << " s3 = " << s3 << endl;
+ os << " b1 = " << sbool(b1) << endl;
+ os << " b2 = " << sbool(b2) << endl;
+ os << " b3 = " << sbool(b3) << endl;
+ os << " b4 = " << sbool(b4) << endl;
+
+ if (dir1)
+ os << " dir1 = " << dir1 << endl;
+
+ if (dir2)
+ os << " dir2 = " << dir2 << endl;
+}
+void Parameter::XMLAdd(xmlNode *root) const {
+ xmlNode *xmlparameter = xmlNewChild(root, NULL, BAD_CAST "parameter", NULL);
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "arrowcolor" );
+ ostringstream text;
+
+ if (arrowcolor)
+ text << arrowcolor;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "arrowsize" );
+ ostringstream text;
+ text << arrowsize;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "textcolor" );
+ ostringstream text;
+
+ if (textcolor)
+ text << textcolor;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "cellnumsize" );
+ ostringstream text;
+ text << cellnumsize;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "nodenumsize" );
+ ostringstream text;
+ text << nodenumsize;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "node_mag" );
+ ostringstream text;
+ text << node_mag;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "outlinewidth" );
+ ostringstream text;
+ text << outlinewidth;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "cell_outline_color" );
+ ostringstream text;
+
+ if (cell_outline_color)
+ text << cell_outline_color;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "resize_stride" );
+ ostringstream text;
+ text << resize_stride;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "T" );
+ ostringstream text;
+ text << T;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "lambda_length" );
+ ostringstream text;
+ text << lambda_length;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "lambda_celllength" );
+ ostringstream text;
+ text << lambda_celllength;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "target_length" );
+ ostringstream text;
+ text << target_length;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "cell_expansion_rate" );
+ ostringstream text;
+ text << cell_expansion_rate;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "cell_div_expansion_rate" );
+ ostringstream text;
+ text << cell_div_expansion_rate;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "auxin_dependent_growth" );
+ ostringstream text;
+text << sbool(auxin_dependent_growth);
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "ode_accuracy" );
+ ostringstream text;
+ text << ode_accuracy;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "mc_stepsize" );
+ ostringstream text;
+ text << mc_stepsize;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "mc_cell_stepsize" );
+ ostringstream text;
+ text << mc_cell_stepsize;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "energy_threshold" );
+ ostringstream text;
+ text << energy_threshold;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "bend_lambda" );
+ ostringstream text;
+ text << bend_lambda;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "alignment_lambda" );
+ ostringstream text;
+ text << alignment_lambda;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "rel_cell_div_threshold" );
+ ostringstream text;
+ text << rel_cell_div_threshold;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "rel_perimeter_stiffness" );
+ ostringstream text;
+ text << rel_perimeter_stiffness;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "collapse_node_threshold" );
+ ostringstream text;
+ text << collapse_node_threshold;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "morphogen_div_threshold" );
+ ostringstream text;
+ text << morphogen_div_threshold;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "morphogen_expansion_threshold" );
+ ostringstream text;
+ text << morphogen_expansion_threshold;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "copy_wall" );
+ ostringstream text;
+text << sbool(copy_wall);
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "source" );
+ ostringstream text;
+ text << source;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "D" );
+ xmlNode *xmlvalarray = xmlNewChild(xmlpar, NULL, BAD_CAST "valarray", NULL);
+ {
+ ostringstream text;
+ text << D[0];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[1];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[2];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[3];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[4];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[5];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[6];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[7];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[8];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[9];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[10];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[11];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[12];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[13];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << D[14];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "initval" );
+ xmlNode *xmlvalarray = xmlNewChild(xmlpar, NULL, BAD_CAST "valarray", NULL);
+ {
+ ostringstream text;
+ text << initval[0];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[1];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[2];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[3];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[4];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[5];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[6];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[7];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[8];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[9];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[10];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[11];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[12];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[13];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << initval[14];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "k1" );
+ ostringstream text;
+ text << k1;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "k2" );
+ ostringstream text;
+ text << k2;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "r" );
+ ostringstream text;
+ text << r;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "kr" );
+ ostringstream text;
+ text << kr;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "km" );
+ ostringstream text;
+ text << km;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "Pi_tot" );
+ ostringstream text;
+ text << Pi_tot;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "transport" );
+ ostringstream text;
+ text << transport;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "ka" );
+ ostringstream text;
+ text << ka;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "pin_prod" );
+ ostringstream text;
+ text << pin_prod;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "pin_prod_in_epidermis" );
+ ostringstream text;
+ text << pin_prod_in_epidermis;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "pin_breakdown" );
+ ostringstream text;
+ text << pin_breakdown;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "pin_breakdown_internal" );
+ ostringstream text;
+ text << pin_breakdown_internal;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "aux1prod" );
+ ostringstream text;
+ text << aux1prod;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "aux1prodmeso" );
+ ostringstream text;
+ text << aux1prodmeso;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "aux1decay" );
+ ostringstream text;
+ text << aux1decay;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "aux1decaymeso" );
+ ostringstream text;
+ text << aux1decaymeso;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "aux1transport" );
+ ostringstream text;
+ text << aux1transport;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "aux_cons" );
+ ostringstream text;
+ text << aux_cons;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "aux_breakdown" );
+ ostringstream text;
+ text << aux_breakdown;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "kaux1" );
+ ostringstream text;
+ text << kaux1;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "kap" );
+ ostringstream text;
+ text << kap;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "leaf_tip_source" );
+ ostringstream text;
+ text << leaf_tip_source;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "sam_efflux" );
+ ostringstream text;
+ text << sam_efflux;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "sam_auxin" );
+ ostringstream text;
+ text << sam_auxin;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "sam_auxin_breakdown" );
+ ostringstream text;
+ text << sam_auxin_breakdown;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "van3prod" );
+ ostringstream text;
+ text << van3prod;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "van3autokat" );
+ ostringstream text;
+ text << van3autokat;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "van3sat" );
+ ostringstream text;
+ text << van3sat;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "k2van3" );
+ ostringstream text;
+ text << k2van3;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "dt" );
+ ostringstream text;
+ text << dt;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "rd_dt" );
+ ostringstream text;
+ text << rd_dt;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "datadir" );
+ ostringstream text;
+
+ if (datadir)
+ text << datadir;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "movie" );
+ ostringstream text;
+text << sbool(movie);
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "nit" );
+ ostringstream text;
+ text << nit;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "maxt" );
+ ostringstream text;
+ text << maxt;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "storage_stride" );
+ ostringstream text;
+ text << storage_stride;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "xml_storage_stride" );
+ ostringstream text;
+ text << xml_storage_stride;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "rseed" );
+ ostringstream text;
+ text << rseed;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "constituous_expansion_limit" );
+ ostringstream text;
+ text << constituous_expansion_limit;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "vessel_inh_level" );
+ ostringstream text;
+ text << vessel_inh_level;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "vessel_expansion_rate" );
+ ostringstream text;
+ text << vessel_expansion_rate;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "d" );
+ ostringstream text;
+ text << d;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "e" );
+ ostringstream text;
+ text << e;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "f" );
+ ostringstream text;
+ text << f;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "c" );
+ ostringstream text;
+ text << c;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "mu" );
+ ostringstream text;
+ text << mu;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "nu" );
+ ostringstream text;
+ text << nu;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "rho0" );
+ ostringstream text;
+ text << rho0;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "rho1" );
+ ostringstream text;
+ text << rho1;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "c0" );
+ ostringstream text;
+ text << c0;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "gamma" );
+ ostringstream text;
+ text << gamma;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "eps" );
+ ostringstream text;
+ text << eps;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "k" );
+ xmlNode *xmlvalarray = xmlNewChild(xmlpar, NULL, BAD_CAST "valarray", NULL);
+ {
+ ostringstream text;
+ text << k[0];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[1];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[2];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[3];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[4];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[5];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[6];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[7];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[8];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[9];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[10];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[11];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[12];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[13];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+ {
+ ostringstream text;
+ text << k[14];
+ xmlNode *xmlval = xmlNewChild(xmlvalarray, NULL, BAD_CAST "val", NULL);
+ xmlNewProp(xmlval, BAD_CAST "v", BAD_CAST text.str().c_str());
+ }
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "i1" );
+ ostringstream text;
+ text << i1;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "i2" );
+ ostringstream text;
+ text << i2;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "i3" );
+ ostringstream text;
+ text << i3;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "i4" );
+ ostringstream text;
+ text << i4;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "i5" );
+ ostringstream text;
+ text << i5;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "s1" );
+ ostringstream text;
+
+ if (s1)
+ text << s1;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "s2" );
+ ostringstream text;
+
+ if (s2)
+ text << s2;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "s3" );
+ ostringstream text;
+
+ if (s3)
+ text << s3;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "b1" );
+ ostringstream text;
+text << sbool(b1);
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "b2" );
+ ostringstream text;
+text << sbool(b2);
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "b3" );
+ ostringstream text;
+text << sbool(b3);
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "b4" );
+ ostringstream text;
+text << sbool(b4);
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "dir1" );
+ ostringstream text;
+
+ if (dir1)
+ text << dir1;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+{
+ xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
+ xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "dir2" );
+ ostringstream text;
+
+ if (dir2)
+ text << dir2;
+xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
+}
+}
+void Parameter::AssignValToPar(const char *namec, const char *valc) {
+ QLocale standardlocale(QLocale::C);
+ bool ok;
+if (!strcmp(namec, "arrowcolor")) {
+ if (arrowcolor) { free(arrowcolor); }
+ arrowcolor=strdup(valc);
+}
+if (!strcmp(namec, "arrowsize")) {
+ arrowsize = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'arrowsize' from XML file.",valc); }
+}
+if (!strcmp(namec, "textcolor")) {
+ if (textcolor) { free(textcolor); }
+ textcolor=strdup(valc);
+}
+if (!strcmp(namec, "cellnumsize")) {
+ cellnumsize = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'cellnumsize' from XML file.",valc); }
+}
+if (!strcmp(namec, "nodenumsize")) {
+ nodenumsize = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'nodenumsize' from XML file.",valc); }
+}
+if (!strcmp(namec, "node_mag")) {
+ node_mag = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'node_mag' from XML file.",valc); }
+}
+if (!strcmp(namec, "outlinewidth")) {
+ outlinewidth = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'outlinewidth' from XML file.",valc); }
+}
+if (!strcmp(namec, "cell_outline_color")) {
+ if (cell_outline_color) { free(cell_outline_color); }
+ cell_outline_color=strdup(valc);
+}
+if (!strcmp(namec, "resize_stride")) {
+ resize_stride = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'resize_stride' from XML file.",valc); }
+}
+if (!strcmp(namec, "T")) {
+ T = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'T' from XML file.",valc); }
+}
+if (!strcmp(namec, "lambda_length")) {
+ lambda_length = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'lambda_length' from XML file.",valc); }
+}
+if (!strcmp(namec, "lambda_celllength")) {
+ lambda_celllength = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'lambda_celllength' from XML file.",valc); }
+}
+if (!strcmp(namec, "target_length")) {
+ target_length = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'target_length' from XML file.",valc); }
+}
+if (!strcmp(namec, "cell_expansion_rate")) {
+ cell_expansion_rate = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'cell_expansion_rate' from XML file.",valc); }
+}
+if (!strcmp(namec, "cell_div_expansion_rate")) {
+ cell_div_expansion_rate = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'cell_div_expansion_rate' from XML file.",valc); }
+}
+if (!strcmp(namec, "auxin_dependent_growth")) {
+auxin_dependent_growth = strtobool(valc);
+}
+if (!strcmp(namec, "ode_accuracy")) {
+ ode_accuracy = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'ode_accuracy' from XML file.",valc); }
+}
+if (!strcmp(namec, "mc_stepsize")) {
+ mc_stepsize = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'mc_stepsize' from XML file.",valc); }
+}
+if (!strcmp(namec, "mc_cell_stepsize")) {
+ mc_cell_stepsize = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'mc_cell_stepsize' from XML file.",valc); }
+}
+if (!strcmp(namec, "energy_threshold")) {
+ energy_threshold = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'energy_threshold' from XML file.",valc); }
+}
+if (!strcmp(namec, "bend_lambda")) {
+ bend_lambda = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'bend_lambda' from XML file.",valc); }
+}
+if (!strcmp(namec, "alignment_lambda")) {
+ alignment_lambda = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'alignment_lambda' from XML file.",valc); }
+}
+if (!strcmp(namec, "rel_cell_div_threshold")) {
+ rel_cell_div_threshold = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'rel_cell_div_threshold' from XML file.",valc); }
+}
+if (!strcmp(namec, "rel_perimeter_stiffness")) {
+ rel_perimeter_stiffness = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'rel_perimeter_stiffness' from XML file.",valc); }
+}
+if (!strcmp(namec, "collapse_node_threshold")) {
+ collapse_node_threshold = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'collapse_node_threshold' from XML file.",valc); }
+}
+if (!strcmp(namec, "morphogen_div_threshold")) {
+ morphogen_div_threshold = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'morphogen_div_threshold' from XML file.",valc); }
+}
+if (!strcmp(namec, "morphogen_expansion_threshold")) {
+ morphogen_expansion_threshold = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'morphogen_expansion_threshold' from XML file.",valc); }
+}
+if (!strcmp(namec, "copy_wall")) {
+copy_wall = strtobool(valc);
+}
+if (!strcmp(namec, "source")) {
+ source = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'source' from XML file.",valc); }
+}
+if (!strcmp(namec, "k1")) {
+ k1 = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'k1' from XML file.",valc); }
+}
+if (!strcmp(namec, "k2")) {
+ k2 = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'k2' from XML file.",valc); }
+}
+if (!strcmp(namec, "r")) {
+ r = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'r' from XML file.",valc); }
+}
+if (!strcmp(namec, "kr")) {
+ kr = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'kr' from XML file.",valc); }
+}
+if (!strcmp(namec, "km")) {
+ km = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'km' from XML file.",valc); }
+}
+if (!strcmp(namec, "Pi_tot")) {
+ Pi_tot = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'Pi_tot' from XML file.",valc); }
+}
+if (!strcmp(namec, "transport")) {
+ transport = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'transport' from XML file.",valc); }
+}
+if (!strcmp(namec, "ka")) {
+ ka = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'ka' from XML file.",valc); }
+}
+if (!strcmp(namec, "pin_prod")) {
+ pin_prod = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'pin_prod' from XML file.",valc); }
+}
+if (!strcmp(namec, "pin_prod_in_epidermis")) {
+ pin_prod_in_epidermis = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'pin_prod_in_epidermis' from XML file.",valc); }
+}
+if (!strcmp(namec, "pin_breakdown")) {
+ pin_breakdown = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'pin_breakdown' from XML file.",valc); }
+}
+if (!strcmp(namec, "pin_breakdown_internal")) {
+ pin_breakdown_internal = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'pin_breakdown_internal' from XML file.",valc); }
+}
+if (!strcmp(namec, "aux1prod")) {
+ aux1prod = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'aux1prod' from XML file.",valc); }
+}
+if (!strcmp(namec, "aux1prodmeso")) {
+ aux1prodmeso = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'aux1prodmeso' from XML file.",valc); }
+}
+if (!strcmp(namec, "aux1decay")) {
+ aux1decay = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'aux1decay' from XML file.",valc); }
+}
+if (!strcmp(namec, "aux1decaymeso")) {
+ aux1decaymeso = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'aux1decaymeso' from XML file.",valc); }
+}
+if (!strcmp(namec, "aux1transport")) {
+ aux1transport = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'aux1transport' from XML file.",valc); }
+}
+if (!strcmp(namec, "aux_cons")) {
+ aux_cons = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'aux_cons' from XML file.",valc); }
+}
+if (!strcmp(namec, "aux_breakdown")) {
+ aux_breakdown = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'aux_breakdown' from XML file.",valc); }
+}
+if (!strcmp(namec, "kaux1")) {
+ kaux1 = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'kaux1' from XML file.",valc); }
+}
+if (!strcmp(namec, "kap")) {
+ kap = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'kap' from XML file.",valc); }
+}
+if (!strcmp(namec, "leaf_tip_source")) {
+ leaf_tip_source = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'leaf_tip_source' from XML file.",valc); }
+}
+if (!strcmp(namec, "sam_efflux")) {
+ sam_efflux = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'sam_efflux' from XML file.",valc); }
+}
+if (!strcmp(namec, "sam_auxin")) {
+ sam_auxin = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'sam_auxin' from XML file.",valc); }
+}
+if (!strcmp(namec, "sam_auxin_breakdown")) {
+ sam_auxin_breakdown = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'sam_auxin_breakdown' from XML file.",valc); }
+}
+if (!strcmp(namec, "van3prod")) {
+ van3prod = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'van3prod' from XML file.",valc); }
+}
+if (!strcmp(namec, "van3autokat")) {
+ van3autokat = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'van3autokat' from XML file.",valc); }
+}
+if (!strcmp(namec, "van3sat")) {
+ van3sat = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'van3sat' from XML file.",valc); }
+}
+if (!strcmp(namec, "k2van3")) {
+ k2van3 = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'k2van3' from XML file.",valc); }
+}
+if (!strcmp(namec, "dt")) {
+ dt = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'dt' from XML file.",valc); }
+}
+if (!strcmp(namec, "rd_dt")) {
+ rd_dt = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'rd_dt' from XML file.",valc); }
+}
+if (!strcmp(namec, "datadir")) {
+ if (datadir) { free(datadir); }
+ datadir=strdup(valc);
+}
+if (!strcmp(namec, "movie")) {
+movie = strtobool(valc);
+}
+if (!strcmp(namec, "nit")) {
+ nit = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'nit' from XML file.",valc); }
+}
+if (!strcmp(namec, "maxt")) {
+ maxt = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'maxt' from XML file.",valc); }
+}
+if (!strcmp(namec, "storage_stride")) {
+ storage_stride = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'storage_stride' from XML file.",valc); }
+}
+if (!strcmp(namec, "xml_storage_stride")) {
+ xml_storage_stride = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'xml_storage_stride' from XML file.",valc); }
+}
+if (!strcmp(namec, "rseed")) {
+ rseed = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'rseed' from XML file.",valc); }
+}
+if (!strcmp(namec, "constituous_expansion_limit")) {
+ constituous_expansion_limit = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'constituous_expansion_limit' from XML file.",valc); }
+}
+if (!strcmp(namec, "vessel_inh_level")) {
+ vessel_inh_level = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'vessel_inh_level' from XML file.",valc); }
+}
+if (!strcmp(namec, "vessel_expansion_rate")) {
+ vessel_expansion_rate = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'vessel_expansion_rate' from XML file.",valc); }
+}
+if (!strcmp(namec, "d")) {
+ d = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'd' from XML file.",valc); }
+}
+if (!strcmp(namec, "e")) {
+ e = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'e' from XML file.",valc); }
+}
+if (!strcmp(namec, "f")) {
+ f = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'f' from XML file.",valc); }
+}
+if (!strcmp(namec, "c")) {
+ c = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'c' from XML file.",valc); }
+}
+if (!strcmp(namec, "mu")) {
+ mu = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'mu' from XML file.",valc); }
+}
+if (!strcmp(namec, "nu")) {
+ nu = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'nu' from XML file.",valc); }
+}
+if (!strcmp(namec, "rho0")) {
+ rho0 = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'rho0' from XML file.",valc); }
+}
+if (!strcmp(namec, "rho1")) {
+ rho1 = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'rho1' from XML file.",valc); }
+}
+if (!strcmp(namec, "c0")) {
+ c0 = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'c0' from XML file.",valc); }
+}
+if (!strcmp(namec, "gamma")) {
+ gamma = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'gamma' from XML file.",valc); }
+}
+if (!strcmp(namec, "eps")) {
+ eps = standardlocale.toDouble(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'eps' from XML file.",valc); }
+}
+if (!strcmp(namec, "i1")) {
+ i1 = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'i1' from XML file.",valc); }
+}
+if (!strcmp(namec, "i2")) {
+ i2 = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'i2' from XML file.",valc); }
+}
+if (!strcmp(namec, "i3")) {
+ i3 = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'i3' from XML file.",valc); }
+}
+if (!strcmp(namec, "i4")) {
+ i4 = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'i4' from XML file.",valc); }
+}
+if (!strcmp(namec, "i5")) {
+ i5 = standardlocale.toInt(valc, &ok);
+ if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'i5' from XML file.",valc); }
+}
+if (!strcmp(namec, "s1")) {
+ if (s1) { free(s1); }
+ s1=strdup(valc);
+}
+if (!strcmp(namec, "s2")) {
+ if (s2) { free(s2); }
+ s2=strdup(valc);
+}
+if (!strcmp(namec, "s3")) {
+ if (s3) { free(s3); }
+ s3=strdup(valc);
+}
+if (!strcmp(namec, "b1")) {
+b1 = strtobool(valc);
+}
+if (!strcmp(namec, "b2")) {
+b2 = strtobool(valc);
+}
+if (!strcmp(namec, "b3")) {
+b3 = strtobool(valc);
+}
+if (!strcmp(namec, "b4")) {
+b4 = strtobool(valc);
+}
+if (!strcmp(namec, "dir1")) {
+ if (dir1) { free(dir1); }
+ dir1=strdup(valc);
+}
+if (!strcmp(namec, "dir2")) {
+ if (dir2) { free(dir2); }
+ dir2=strdup(valc);
+}
+}
+void Parameter::AssignValArrayToPar(const char *namec, vector valarray) {
+if (!strcmp(namec, "D")) {
+ int i=0;
+ vector::const_iterator v=valarray.begin();
+ while (v!=valarray.end() && i <= 14 ) {
+ D[i++]=*(v++);
+ }
+}
+if (!strcmp(namec, "initval")) {
+ int i=0;
+ vector::const_iterator v=valarray.begin();
+ while (v!=valarray.end() && i <= 14 ) {
+ initval[i++]=*(v++);
+ }
+}
+if (!strcmp(namec, "k")) {
+ int i=0;
+ vector::const_iterator v=valarray.begin();
+ while (v!=valarray.end() && i <= 14 ) {
+ k[i++]=*(v++);
+ }
+}
+}
+
+/* void Parameter::XMLRead(xmlNode *root) {
+
+ xmlNode *cur = root->xmlChildrenNode;
+ while (cur!=NULL) {
+ if ((!xmlStrcmp(cur->name, (const xmlChar *)"parameter"))){
+ xmlNode *par_node = cur->xmlChildrenNode;
+ while (par_node!=NULL) {
+ {
+ if (!xmlStrcmp(par_node->name, (const xmlChar *)"par")) {
+ xmlChar *namec = xmlGetProp(par_node, BAD_CAST "name");
+ xmlChar *valc = xmlGetProp(par_node, BAD_CAST "val");
+ if (valc) {
+ AssignValToPar((const char*)namec,(const char*)valc);
+ } else {
+ // Probably a valarray
+ xmlNode *sub_par_node = par_node->xmlChildrenNode;
+ vector valarray;
+ while (sub_par_node != NULL) {
+ if (!xmlStrcmp(sub_par_node->name, (const xmlChar *)"valarray")) {
+ valarray = XMLIO::XMLReadValArray(sub_par_node);
+ }
+ sub_par_node = sub_par_node->next;
+ }
+ AssignValArrayToPar((const char*)namec, valarray);
+ }
+ }
+ }
+ par_node = par_node->next;
+ }
+
+ }
+ cur=cur->next;
+ }
+
+}*/
+
+ostream &operator<<(ostream &os, Parameter &p) {
+ p.Write(os);
+ return os;
+}
+