30 namespace TimeEvolver {
34 using boost::property_tree::ptree;
43 assert( cd.
Check() &&
"CoreData not ok.");
45 auto& p = m_cd.m_parameters;
47 m_mc_abs_tolerance = p->get<
double>(
"cell_mechanics.mc_abs_tolerance");
48 m_mc_cell_step_size = p->get<
double>(
"cell_mechanics.mc_cell_stepsize");
49 m_mc_step_size = p->get<
double>(
"cell_mechanics.mc_stepsize");
50 m_mc_sweep_limit = p->get<
double>(
"cell_mechanics.mc_sweep_limit");
51 m_mc_temperature = p->get<
double>(
"cell_mechanics.mc_temperature");
54 std::tuple<SimTimingTraits::CumulativeTimings, bool>
VLeaf::operator()(
double time_slice, SimPhase)
67 bool is_stationary =
false;
68 unsigned int sweep_count = 0U;
79 const auto info = node_mover.
SweepOverNodes(m_mc_step_size, m_mc_temperature);
81 const double dh = info.down_dh + info.up_dh;
85 go_on = !( (-dh) < m_mc_abs_tolerance );
87 }
while (go_on && sweep_count < m_mc_sweep_limit);
92 Stopclock chrono_hk(
"housekeeping",
true);
97 cell_housekeeper.
Exec();
105 auto tup = transporter(time_slice);
109 return make_tuple(timings, is_stationary);
void Initialize(const CoreData &cd)
Initialize or re-initialize.
void Initialize(const CoreData &cd)
Initializes based on values in property tree.
Interface for CellHousekeeper.
Core data with mesh, parameters, random engine and time data.
Interface for CellDivider.
Time evolution of reaction, diffusion and active transport process.
unsigned int DivideCells()
Execute cell divisions.
Class for handling maintenance of cell mechanics (cell housekeeping).
std::string GetName() const
Return name of this stopwatch.
VLeaf(const CoreData &cd)
Initializing constructor.
MetropolisInfo SweepOverNodes(double step_size, double temperature)
Sweep over all nodes, do metropolis move for each of them.
Cell mechanics by displacement and insertion of nodes.
Namespace for components of the Default model group.
Utility class to record durations in a cumulative manner.
Time evolver for diffusion and active transport.
void Initialize(const CoreData &cd)
Initializes.
std::tuple< SimTimingTraits::CumulativeTimings, bool > operator()(double time_slice, SimPhase phase=SimPhase::NONE)
Take a time step.
Class for handling cell division.
Insertion of nodes in existing edges (contributes to the cell mechanics).
T::duration Get() const
Returns the accumulated value without altering the stopwatch state.
void Initialize(const CoreData &cd)
Initializes based on values in property tree.
unsigned int InsertNodes()
Insert nodes in those edges that have been stretched.
boost::property_tree::ptree Exec() const
Housekeeping rules.
Provides a stopwatch interface to time: it accumulates time between start/stop pairs.
Interface for NodeInserter.
Interface for time evolver of Merks et al.
void Record(const std::string &name, const std::chrono::duration< R, P > &duration)
Record the duration for the given name.
bool Check() const
Verify all pointers non-null.
Namespace for clock and timekeeping related classes.