25 #include <trng/uniform01_dist.hpp>
43 const trng::uniform01_dist<double> dist;
44 m_uniform_generator = m_cd.m_random_engine->GetGenerator(dist);
46 const auto& p = m_cd.m_parameters;
47 m_ga_threshold = p->get<
double>(
"wortel.ga_threshold");
48 m_shy2_threshold = p->get<
double>(
"wortel.shy2_threshold");
51 m_fixed_division_axis = p->get<
bool>(
"cell_mechanics.fixed_division_axis",
false);
58 const double chem2 = cell->GetChemical(2);
59 const double chem3 = cell->GetChemical(3);
60 const int celltype = cell->GetCellType();
61 const double a_area = cell->
GetArea();
62 bool must_divide =
false;
64 double time_now = m_cd.m_time_data->m_sim_time;
65 double time_start = 0;
67 if (cell->GetBoundaryType() == BoundaryType::None) {
68 double CCnoise = 1 + (m_uniform_generator() - 0.5) / 5;
71 if ( (( chem2 / a_area ) < m_shy2_threshold) && (( chem3 / a_area ) >= m_ga_threshold)) {
72 if ( ( celltype > 2 && celltype < 8 ) && ( a_area >= ( 200. * CCnoise) )
74 && ( ( time_now - time_start ) >= 40. ) ) {
77 if ( celltype != 0 && ( celltype > 7 || celltype < 3 ) && ( a_area >= ( 400.* CCnoise) )
79 && ( ( time_now - time_start ) >= 40.) ) {
86 return std::make_tuple(must_divide,
true, array<double, 3> {{1.0, 0.0, 0.0}});
Core data with mesh, parameters, random engine and time data.
A cell contains walls and nodes.
std::tuple< bool, bool, std::array< double, 3 > > operator()(Cell *cell)
Execute.
Interface of RandomEngine.
Namespace for components of the Default model group.
int GetIndex() const
Return the index.
void Initialize(const CoreData &cd)
Initialize or re-initialize.
Wortel(const CoreData &cd)
Initializing constructor.
double GetArea() const
Return the area of the cell.
CellSplit for Wortel model.