|
const auto & | chunk () const |
| Chunk of (cumulative sum of) random numbers.
|
|
auto | size () const |
| Number of particles.
|
|
const auto & | shape () const |
| Shape of the system.
|
|
auto | dt () const |
| The time step (parameter).
|
|
auto | mu () const |
| The curvature of each well (parameter).
|
|
auto | eta () const |
| The damping coefficient (parameter).
|
|
auto | m () const |
| The mass of each particle (parameter).
|
|
auto | k_frame () const |
| The stiffness of the loading frame (parameter).
|
|
const auto & | external () const |
| Class that generates and external force that is add to the residual force.
|
|
void | set_t (double arg) |
| Set time.
|
|
void | set_inc (ptrdiff_t arg) |
| Set increment number.
|
|
void | set_u_frame (double arg) |
| Set position of the load frame.
|
|
double | u_frame () const |
| Position of the load frame.
|
|
void | set_u (const array_type::tensor< double, rank > &arg) |
| Set the slip ('position') of each particle.
|
|
void | set_v (const array_type::tensor< double, rank > &arg) |
| Set the velocity of each particle (the first time derivative of the slip).
|
|
void | set_a (const array_type::tensor< double, rank > &arg) |
| Set the acceleration of each particle (the second time derivative of the slip).
|
|
void | refresh () |
| Recompute all forces.
|
|
const auto & | u () const |
| Slip ('position') of each particle.
|
|
const auto & | v () const |
| Velocity of each particle.
|
|
const auto & | a () const |
| Acceleration of each particle.
|
|
const auto & | f () const |
| Resultant force acting on each particle.
|
|
const auto & | f_potential () const |
| Force associated to potentials acting on each particle.
|
|
const auto & | f_frame () const |
| Force associated to the load frame acting on each particle.
|
|
const auto & | f_interactions () const |
| Force associated to interactions between particles.
|
|
const auto & | f_damping () const |
| Force associated to damping on each particle.
|
|
auto | t () const |
| The time.
|
|
auto | inc () const |
| The increment number.
|
|
double | temperature () const |
| The instantaneous temperature.
|
|
double | residual () const |
| Residual.
|
|
void | quench () |
| Set velocities and accelerations to zero.
|
|
void | timeStep () |
| Effectuate one time step using the velocity Verlet algorithm.
|
|
void | timeSteps (size_t n) |
| Make a number of time steps, see timeStep().
|
|
size_t | timeStepsUntilEvent (double tol=1e-5, size_t niter_tol=10, size_t max_iter=1e9) |
| Perform a series of time-steps until the next plastic event, or equilibrium.
|
|
void | flowSteps (size_t n, double v_frame) |
| Make a number of steps with the frame moving at a constant velocity.
|
|
size_t | minimise (double tol=1e-5, size_t niter_tol=10, size_t max_iter=1e9, bool time_activity=false, bool max_iter_is_error=true) |
| Minimise energy: run timeStep() until a mechanical equilibrium has been reached.
|
|
size_t | quasistaticActivityFirst () const |
| Increment with the first plastic event.
|
|
size_t | quasistaticActivityLast () const |
| Increment with the last plastic event.
|
|
size_t | minimise_truncate (array_type::tensor< ptrdiff_t, rank > i_n, size_t A_truncate=0, size_t S_truncate=0, double tol=1e-5, size_t niter_tol=10, size_t max_iter=1e9, bool time_activity=true, bool max_iter_is_error=true) |
| Minimise energy: run timeStep() until a mechanical equilibrium has been reached.
|
|
double | maxUniformDisplacement (int direction) |
| Find maximum particle displacement for which the system is linear and uniform.
|
|
double | eventDrivenStep (double eps, bool kick, int direction=1) |
| Make event driven step.
|
|
void | trigger (size_t p, double eps, int direction=1) |
| Trigger a specific particle.
|
|
void | advanceToFixedForce (double f_frame, bool allow_plastic=false) |
| Change the position of the particles and of the loading frame such that the mean of f_frame() is equal to a target value, and mechanical equilibrium is maintained.
|
|
|
size_type | m_N |
| Number of particles.
|
|
array_type::tensor< double, rank > | m_f |
| Resultant force acting on each particle.
|
|
array_type::tensor< double, rank > | m_f_thermal |
| Force due to thermal fluctuations.
|
|
array_type::tensor< double, rank > | m_f_potential |
| Force associated to potentials acting on each particle.
|
|
array_type::tensor< double, rank > | m_f_interactions |
| Force associated to interactions between particles.
|
|
array_type::tensor< double, rank > | m_f_frame |
| Force associated to the load frame acting on each particle.
|
|
array_type::tensor< double, rank > | m_f_damping |
| Force associated to damping on each particle.
|
|
array_type::tensor< double, rank > | m_u |
| Slip ('position') of each particle.
|
|
array_type::tensor< double, rank > | m_v |
| Velocity of each particle.
|
|
array_type::tensor< double, rank > | m_a |
| Acceleration of each particle.
|
|
array_type::tensor< double, rank > | m_v_n |
| Temporary for integration.
|
|
array_type::tensor< double, rank > | m_a_n |
| Temporary for integration.
|
|
ptrdiff_t | m_inc = 0 |
| The increment number.
|
|
ptrdiff_t | m_qs_inc_first = 0 |
| Increment with the first plastic event.
|
|
ptrdiff_t | m_qs_inc_last = 0 |
| Increment with the last plastic event.
|
|
double | m_dt |
| Time step.
|
|
double | m_eta |
| Damping constant (same for all particles).
|
|
double | m_m |
| Mass (same for all particles).
|
|
double | m_inv_m |
| == 1 / m_m
|
|
double | m_mu |
| Curvature of the potentials.
|
|
double | m_k_frame |
| Stiffness of the load fame (same for all particles).
|
|
double | m_u_frame = 0.0 |
| Position of the load frame.
|
|
Potential * | m_potential |
| Class to get the forces from the local potential energy landscape.
|
|
Generator * | m_chunk |
| Pointer to chunk of yield 'positions' (automatically updated if needed)
|
|
Interactions * | m_interactions |
| Class to get the forces from particle interaction.
|
|
External * | m_external |
| Add an (time dependent) externally defined force to the residual.
|
|
template<size_t rank, class Potential, class Generator, class Interactions = void, class External = void, class Minimisation = void>
class FrictionQPotSpringBlock::detail::System< rank, Potential, Generator, Interactions, External, Minimisation >
System in generic number of dimensions.
Internally, everything is kept up-to-date by calling:
- updated_u() every time #m_u is updated
- updated_v() every time #m_v is updated
- updated_inc() every time #m_inc is updated
In addition refresh() can be called to update everything.
The suggested usage for deriving classes is to:
- do the same, or
- only use set_u(), set_v(), set_inc() to update #m_u, #m_v, and #m_inc
- Template Parameters
-
rank | Rank of the system. |
Potential | Potential forces (called from updated_u()). |
Generator | Generator to compute disorder for potential forces. |
Interactions | Interactions forces (called from updated_u()). |
External | External forces (called from updated_inc()). |
Definition at line 1053 of file detail.h.
template<size_t rank, class Potential , class Generator , class Interactions = void, class External = void, class Minimisation = void>
Advance the system uniformly.
- All particle move by the same amount.
- The frame moves proportionally such that equilibrium is maintained (the change in
f_potential
is compensated by the change in f_frame
).
Thereby:
\( \Delta f^\mathrm{potential}_i = \mu \Delta u_i \)
\( \Delta f^\mathrm{frame} = k (\Delta u^\mathrm{frame} - \Delta u_i) \)
Setting \( \Delta f^\mathrm{potential}_i = \Delta f^\mathrm{frame} \) gives:
- Given \( \Delta u_i \) one finds: \( \Delta u^\mathrm{frame} = (k + \mu) / k \Delta u_i \).
- Given \( \Delta u^\mathrm{frame} \) one finds: \( \Delta u_i = k / (k + \mu) \Delta u^\mathrm{frame} \).
- Parameters
-
du | Displacement. |
input_is_frame | If true : du \( = \Delta u^\mathrm{frame} \), if false : du \( = \Delta u_i \), |
- Returns
du
for the particles in input_is_frame == true
, otherwise du
of the frame.
Definition at line 2027 of file detail.h.