11 #ifndef DYNAMX_PROCESS_MORPHOGENS_HPP
12 #define DYNAMX_PROCESS_MORPHOGENS_HPP
41 CellData() : ProdA(true), ProdH(true), A(0), H(0), dA(0), dH(0) {}
45 if(ProdA == other.
ProdA and ProdH == other.
ProdH
46 and A == other.
A and H == other.
H
47 and dA == other.
dA and dH == other.
dH)
72 :
mgx::
Solver(m, C, method,variables,stepSize), cellAttr(cAttr) {}
74 std::vector<double> getValues(
const cell& c);
75 bool setValues(
const cell& c,
const std::vector<double> &values);
76 std::vector<double> getDerivatives(
const cell& c);
77 void updateDerivatives(
const cell& c);
79 void setValues(
const cell& c, std::vector<double> values);
88 pAMax, pAViewMax, pHProd, pHAProd, pHDecay, pHDiff, pHMax,
pSolvingMethod, pNumParms };
94 void calcDerivatives(
const cell& c);
97 bool initialize(QStringList &parms, QWidget* parent = 0);
100 void processParms(
const QStringList &parms);
103 bool step(
const QStringList &parms);
106 bool step(
const QStringList &parms,
Subdivide *sDiv);
109 bool rewind(QStringList &parms, QWidget *parent);
118 QString
description()
const {
return "Meinhardt-style activator-inhibitor system"; }
122 QVector <QString> vec(pNumParms);
124 vec[pDrawSteps] =
"DrawSteps";
125 vec[pStatStep] =
"StatStep";
127 vec[pAProd] =
"AProd";
128 vec[pAAProd] =
"AAProd";
129 vec[pADecay] =
"ADecay";
130 vec[pADiff] =
"ADiff";
131 vec[pANoise] =
"ANoise";
133 vec[pAViewMax] =
"AViewMax";
134 vec[pHProd] =
"HProd";
135 vec[pHAProd] =
"HAProd";
136 vec[pHDecay] =
"HDecay";
137 vec[pHDiff] =
"HDiff";
139 vec[pSolvingMethod] =
"Forward Euler";
145 QVector <QString> vec(pNumParms);
147 vec[pDrawSteps] =
"Simulation steps between drawing";
148 vec[pStatStep] =
"Time between statistics reporting, 0 = none";
149 vec[pDt] =
"Step duration";
150 vec[pAProd] =
"Activator default production";
151 vec[pAAProd] =
"Activator production, self enhanced";
152 vec[pADecay] =
"Activator decay";
153 vec[pADiff] =
"Activator diffusion";
154 vec[pANoise] =
"Activator noise";
155 vec[pAMax] =
"Activator max concentration";
156 vec[pAViewMax] =
"Activator max for viewing";
157 vec[pHProd] =
"Inhibitor default production";
158 vec[pHAProd] =
"Inhibitor production, self enhanced";
159 vec[pHDecay] =
"Inhibitor decay";
160 vec[pHDiff] =
"Inhibitor diffusion";
161 vec[pHMax] =
"Inhibitor max concentration";
162 vec[pSolvingMethod] =
"ODE Solving Method (Euler or Backward Euler)";
168 QVector <QString> vec(pNumParms);
170 vec[pDrawSteps] =
"10";
171 vec[pStatStep] =
"1.0";
174 vec[pAAProd] =
"100";
176 vec[pADiff] =
"0.01";
177 vec[pANoise] =
"0.1";
178 vec[pAMax] =
"20000";
179 vec[pAViewMax] =
"25";
181 vec[pHAProd] =
"500";
184 vec[pHMax] =
"20000";
185 vec[pSolvingMethod] =
"Yes";
194 map[pSolvingMethod] = booleanChoice();
199 QIcon
icon()
const {
return QIcon(
":/images/MeinhardtAI.png"); }