GooseEPM v0.11.0
Loading...
Searching...
No Matches
GooseEPM::SystemStressControl< Dim > Class Template Reference

System for which the average stress is fixed. More...

#include <GooseEPM/System.h>

Inheritance diagram for GooseEPM::SystemStressControl< Dim >:
GooseEPM::SystemBase< Dim, detail::FixStress, void, void >

Public Member Functions

 SystemStressControl (const array_type::tensor< double, Dim > &propagator, const std::vector< array_type::tensor< ptrdiff_t, 1 > > &distances, const array_type::tensor< double, Dim > &sigmay_mean, const array_type::tensor< double, Dim > &sigmay_std, uint64_t seed, double failure_rate=1, double alpha=1.5, bool random_stress=true)
 

Detailed Description

template<size_t Dim>
class GooseEPM::SystemStressControl< Dim >

System for which the average stress is fixed.

Failure rules

  • The distance to yielding locally is \( x_i = (\sigma_y)_i - | \sigma_i | \) for each block \( i \). The dynamics use \( x_i \) to determine which block fails, see below.
  • If a block \( f \) fails it looses its stress (+ a small random fluctuation): \( \Delta \sigma_f = \sigma_f + \mathcal{N}(0, 0.01) \).

Failure

If a block \( f \) fails:

  1. The block looses stress: \( \sigma_f (t + \tau) = \sigma_f (t) - \Delta \sigma_f \) (see above).
  2. The stress in surrounding blocks is changed according to the propagator: \( \sigma (\vec{r}_f + \Delta \vec{r}, t + \tau) = \sigma (\vec{r}_f + \Delta \vec{r}, t) + G(\Delta \vec{r}) \Delta \sigma_f \), with \( \vec{r}_f \) is the position of the failing block and \( \Delta \vec{r} \neq \vec{0} \) the distance to it. Note: the propagator is modified internally, see below.
  3. The plastic strain of the block is increased by: \( \varepsilon^p_f (t + \tau) = \varepsilon^p_f (t) + \Delta \sigma_f / \mu \), where \( \mu \equiv 1 \) is the shear modulus.
Note
In practice the stress of the failing and surrounding blocks is updated in a single step: \( \sigma (\vec{r}_f + \Delta \vec{r}, t + \tau) = \sigma (\vec{r}_f + \Delta \vec{r}, t) + G(\Delta \vec{r}) \Delta \sigma_f \), with \( G(\Delta \vec{r} = \vec{0}) \equiv -1 \). This requirement is enforced internally upon construction.

Dynamics

Which block fails is determined based on the 'temperature', as follows:

Dimension

The dimensionality of the system is the template parameter Dim. In the Python API the system is pre-compiled in all available dimensions. For example:

 // C++
 GooseEPM::SystemStressControl<2> system(...);

 # Python
 system = GooseEPM.SystemStressControl2(...)

Initialisation

By default the stress is chosen randomly (from normal distribution with mean 0 and standard deviation 0.1) according to compatibility, and the system is relaxed to being stable. For customisation you can (in Python code):

 system = System(..., random_stress=False)
 system.sigma = ...
 ...

Since initialisation can be a expensive, you can also use the above to re-use the same initial stress distribution in multiple simulations.

Fixing the average stress

To set the average stress, use set_sigmabar().

Note
To run using a fixed stress, the propagator \( G \) must follow \( \sum\limits_{i = 1}^N G_i = 0 \) (while it is internally required that \( G(\Delta \vec{r} = \vec{0]) = -1 \)). These requirements of the propagator are enforced internally upon construction.

Definition at line 1642 of file System.h.

Constructor & Destructor Documentation

◆ SystemStressControl()

template<size_t Dim>
GooseEPM::SystemStressControl< Dim >::SystemStressControl ( const array_type::tensor< double, Dim > &  propagator,
const std::vector< array_type::tensor< ptrdiff_t, 1 > > &  distances,
const array_type::tensor< double, Dim > &  sigmay_mean,
const array_type::tensor< double, Dim > &  sigmay_std,
uint64_t  seed,
double  failure_rate = 1,
double  alpha = 1.5,
bool  random_stress = true 
)
inline

Parameters
propagatorThe propagator [shape].
distancesThe distance of each row, column, ... of the propagator [shape(0), ...].
sigmay_meanMean yield stress for every block [shape].
sigmay_stdStandard deviation of the yield stress for every block [shape].
seedSeed of the random number generator.
failure_rateFailure rate \( f_0 \).
alphaExponent characterising the shape of the potential.
random_stressInitialise the stress: random, zero mean, no unstable blocks.

Definition at line 1650 of file System.h.


The documentation for this class was generated from the following file: