7#ifndef FRICTIONQPOTSPRINGBLOCK_PARTICLES_H
8#define FRICTIONQPOTSPRINGBLOCK_PARTICLES_H
15#include <GMatTensor/version.h>
36 return GMatTensor::version_dependencies();
45 return GMatTensor::version_compiler();
118 const std::array<size_t, 1>&
shape,
120 const std::string& distribution,
121 const std::vector<double>& parameters,
122 double offset = -100.0,
126 std::array<size_t, 1>{nchunk},
127 xt::eval(seed + xt::arange<uint64_t>(
shape[0])),
128 xt::eval(xt::zeros<uint64_t>(
shape)),
129 detail::string_to_distribution(distribution),
131 prrng::alignment( 2, 30, 6,
false)
163 detail::Cuspy<Generator>,
166 detail::RandomNormalForcing<1>,
190 uint64_t seed_forcing,
193 const std::array<size_t, 1>&
shape,
195 const std::string& distribution,
196 const std::vector<double>& parameters,
197 double offset = -100.0,
201 std::array<size_t, 1>{nchunk},
202 xt::eval(seed + xt::arange<uint64_t>(
shape[0])),
203 xt::eval(xt::zeros<uint64_t>(
shape)),
204 detail::string_to_distribution(distribution),
206 prrng::alignment( 2, 30, 6,
false)
212 m_gen.generators().shape(), mean, stddev, seed_forcing, dinc_init, dinc
250 const std::array<size_t, 1>&
shape,
252 const std::string& distribution,
253 const std::vector<double>& parameters,
254 double offset = -100.0,
258 std::array<size_t, 1>{nchunk},
259 xt::eval(seed + xt::arange<uint64_t>(
shape[0])),
260 xt::eval(xt::zeros<uint64_t>(
shape)),
261 detail::string_to_distribution(distribution),
263 prrng::alignment( 2, 30, 6,
false)
291 const std::array<size_t, 1>&
shape,
293 const std::string& distribution,
294 const std::vector<double>& parameters,
295 double offset = -100.0,
299 std::array<size_t, 1>{nchunk},
300 xt::eval(seed + xt::arange<uint64_t>(
shape[0])),
301 xt::eval(xt::zeros<uint64_t>(
shape)),
302 detail::string_to_distribution(distribution),
304 prrng::alignment( 2, 30, 6,
false)
System in which the effect of temperature in mimicked by random forcing.
detail::Cuspy< Generator > m_pot
Class to get the forces from the local potential energy landscape.
detail::RandomNormalForcing< 1 > m_ext
Add extra random force to the residual.
System_Cuspy_RandomForcing(double m, double eta, double mu, double k_frame, double dt, double mean, double stddev, uint64_t seed_forcing, const array_type::tensor< ptrdiff_t, 1 > &dinc_init, const array_type::tensor< ptrdiff_t, 1 > &dinc, const std::array< size_t, 1 > &shape, uint64_t seed, const std::string &distribution, const std::vector< double > ¶meters, double offset=-100.0, size_t nchunk=5000)
Generator m_gen
Pointer to chunk of yield 'positions' (automatically updated if needed)
Standard system with a cuspy potential energy landscape.
Generator m_gen
Pointer to chunk of yield 'positions' (automatically updated if needed)
System_Cuspy(double m, double eta, double mu, double k_frame, double dt, const std::array< size_t, 1 > &shape, uint64_t seed, const std::string &distribution, const std::vector< double > ¶meters, double offset=-100.0, size_t nchunk=5000)
detail::Cuspy< Generator > m_pot
Class to get the forces from the local potential energy landscape.
Same as System_Cuspy() but with a semi-smooth potential.
System_SemiSmooth(double m, double eta, double mu, double kappa, double k_frame, double dt, const std::array< size_t, 1 > &shape, uint64_t seed, const std::string &distribution, const std::vector< double > ¶meters, double offset=-100.0, size_t nchunk=5000)
Generator m_gen
Pointer to chunk of yield 'positions' (automatically updated if needed)
detail::SemiSmooth< Generator > m_pot
Class to get the forces from the local potential energy landscape.
Same as System_Cuspy() but with a smooth potential.
detail::Smooth< Generator > m_pot
Class to get the forces from the local potential energy landscape.
System_Smooth(double m, double eta, double mu, double k_frame, double dt, const std::array< size_t, 1 > &shape, uint64_t seed, const std::string &distribution, const std::vector< double > ¶meters, double offset=-100.0, size_t nchunk=5000)
Generator m_gen
Pointer to chunk of yield 'positions' (automatically updated if needed)
A piece-wise quadratic local potential energy.
Each particle experiences a random force representing the effect of temperature.
A potential energy landscape of each particle that is piecewise smooth.
A potential energy landscape of each particle that is smooth.
System in generic number of dimensions.
const auto & shape() const
Shape of the system.
double eventDrivenStep(double eps, bool kick, int direction=1)
Make event driven step.
auto m() const
The mass of each particle (parameter).
size_t quasistaticActivityFirst() const
Increment with the first plastic event.
auto mu() const
The curvature of each well (parameter).
auto eta() const
The damping coefficient (parameter).
size_t quasistaticActivityLast() const
Increment with the last plastic event.
void initSystem(double m, double eta, double k_frame, double mu, double dt, detail::Cuspy< Generator > *potential, Generator *chunk, void *interactions=nullptr, void *external=nullptr)
Initialise the system.
auto k_frame() const
The stiffness of the loading frame (parameter).
auto dt() const
The time step (parameter).
prrng::pcg32_tensor_cumsum< array_type::tensor< double, 2 >, array_type::tensor< ptrdiff_t, 1 >, 1 > Generator
Chunked storage of the cumulative sum of random numbers, used in all classes.
std::vector< std::string > version_compiler()
Return information on the compiler, platform, C++ standard, and the compilation data.
std::vector< std::string > version_dependencies()
Return versions of this library and of all of its dependencies.
xt::xarray< T > array
Arbitrary rank array.
Tensor products / operations.