svZeroDSolver
Loading...
Searching...
No Matches
StrainDependentActiveStress Class Reference

Strain-dependent active stress model from [1]. More...

#include <ActiveStress.h>

Inheritance diagram for StrainDependentActiveStress:
[legend]

Public Member Functions

int num_extra_vars () const override
 Number of internal variables this model owns beyond ChamberSphere's fixed 5 (radius, velo, stress, tau, volume).
std::list< std::string > extra_var_names () const override
 Names of this model's extra internal variables, in registration order (appended immediately after "volume").
int num_extra_equations () const override
 Number of equations this model owns beyond ChamberSphere's fixed 6 core equations. Every ActiveStress supplies at least the equation defining $\tau$.
ActivationSignalType required_signal_type () const override
 Type of activation signal this active stress model needs.
void update_constant (SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids) override
 Constant (time- and solution-independent) contributions.
void update_time (SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids, double activation_signal) override
 Time-dependent contributions.
void update_solution (SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &y, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &dy, double radius0, double activation_signal) override
 Solution-dependent contributions.
Public Member Functions inherited from ActiveStress
 ActiveStress (const std::vector< std::pair< std::string, InputParameter > > &props)
 Construct an ActiveStress model.
Public Member Functions inherited from ParameterHolder
 ParameterHolder (const std::vector< std::pair< std::string, InputParameter > > &props)
 Construct a ParameterHolder.
void set_param (const std::string &name, double value)
 Set a scalar parameter value by name.
void set_param_vector (const std::string &name, const std::vector< double > &value)
 Set a vector-valued parameter value by name.
virtual void finalize ()
 Called once after all parameters have been read from the input file (e.g. by the loader).

Additional Inherited Members

Static Public Member Functions inherited from ActiveStress
static std::unique_ptr< ActiveStress > create (const std::string &type_str)
 Factory: create an active stress model from a type string.
Public Attributes inherited from ParameterHolder
const std::vector< std::pair< std::string, InputParameter > > input_param_properties
 Properties of the input parameters for this component [(name, InputParameter), ...].
Static Public Attributes inherited from ActiveStress
static constexpr int RADIUS_VAR
 Radius position within ChamberSphere's own global_var_ids array.
static constexpr int VELO_VAR
static constexpr int STRESS_VAR
static constexpr int TAU_VAR
static constexpr int VOLUME_VAR
 Volume position within ChamberSphere's own global_var_ids array.
static constexpr int NUM_CORE_VARS
static constexpr int NUM_CORE_EQNS
Protected Attributes inherited from ParameterHolder
std::map< std::string, double > params_
 Map of scalar parameter names to their values.
std::map< std::string, std::vector< double > > params_vec_
 Map of vector-valued parameter names to their values.

Detailed Description

Strain-dependent active stress model from [1].

Owns 5 extra equations and 4 extra variables ( $e_c, \tau_c, k_c,
\omega$, in that order):

\‍[\tau = E_s \frac{e_{1D} - e_c}{(1 + 2 e_c)^2}
\‍]

with $e_{1D}$ the strain in fiber direction (a function of the chamber's radius), and evolution equations

\‍[\dot{\omega} = \frac{1}{\alpha_r}(m_0 - \omega)
\‍]

\‍[\dot{e}_c = \frac{1}{\mu}\left(E_s \frac{(e_{1D} - e_c)(1 + 2 e_{1D})}
{(1 + 2 e_c)^3} - \tau_c\right)
\‍]

\‍[\dot{k}_c = -(|u|_+ + \omega |u|_- + \alpha |\dot{e}_c|) k_c + n_0 k_0 |u|_+
\‍]

\‍[\dot{\tau}_c = -(|u|_+ + \omega |u|_- + \alpha |\dot{e}_c|) \tau_c + n_0
\sigma_0 |u|_+ + k_c \dot{e}_c
\‍]

where $n_0$ (activation strain-dependence) and $m_0$ (relaxation strain-dependence) are piecewise-linear functions of $e_c$, given as break point tables (n0_e_c/n0_values and m0_e_c/m0_values) and evaluated with linear_interpolate, and $u(t)$ is a reaction-rate signal supplied by the chamber's ActivationFunction (e.g. PiecewiseRateActivation).

Parameters: E_s, mu, alpha_r, alpha, k_0, sigma_0, n0_e_c, n0_values, m0_e_c, m0_values

Member Function Documentation

◆ extra_var_names()

std::list< std::string > StrainDependentActiveStress::extra_var_names ( ) const
inlineoverridevirtual

Names of this model's extra internal variables, in registration order (appended immediately after "volume").

Returns
List of extra internal variable names

Reimplemented from ActiveStress.

◆ num_extra_equations()

int StrainDependentActiveStress::num_extra_equations ( ) const
inlineoverridevirtual

Number of equations this model owns beyond ChamberSphere's fixed 6 core equations. Every ActiveStress supplies at least the equation defining $\tau$.

Returns
Number of extra equations

Implements ActiveStress.

◆ num_extra_vars()

int StrainDependentActiveStress::num_extra_vars ( ) const
inlineoverridevirtual

Number of internal variables this model owns beyond ChamberSphere's fixed 5 (radius, velo, stress, tau, volume).

Returns
Number of extra internal variables

Reimplemented from ActiveStress.

◆ required_signal_type()

ActivationSignalType StrainDependentActiveStress::required_signal_type ( ) const
inlineoverridevirtual

Type of activation signal this active stress model needs.

Checked against the chamber's ActivationFunction::signal_type in ChamberSphere::setup_dofs to catch mismatched pairings (e.g. strain_dependent active stress with a normalized activation function).

Returns
The required ActivationSignalType

Implements ActiveStress.

◆ update_constant()

void StrainDependentActiveStress::update_constant ( SparseSystem & system,
const std::vector< int > & global_eqn_ids,
const std::vector< int > & global_var_ids )
overridevirtual

Constant (time- and solution-independent) contributions.

Parameters
systemSystem to update contributions at
global_eqn_idsChamberSphere's global equation indices
global_var_idsChamberSphere's global variable indices

Reimplemented from ActiveStress.

◆ update_solution()

void StrainDependentActiveStress::update_solution ( SparseSystem & system,
const std::vector< int > & global_eqn_ids,
const std::vector< int > & global_var_ids,
const Eigen::Matrix< double, Eigen::Dynamic, 1 > & y,
const Eigen::Matrix< double, Eigen::Dynamic, 1 > & dy,
double radius0,
double activation_signal )
overridevirtual

Solution-dependent contributions.

Parameters
systemSystem to update contributions at
global_eqn_idsChamberSphere's global equation indices
global_var_idsChamberSphere's global variable indices
yCurrent solution
dyCurrent derivative of the solution
radius0Reference radius $r_0$ of the chamber
activation_signalThe chamber's ActivationFunction evaluated at the current time

Implements ActiveStress.

◆ update_time()

void StrainDependentActiveStress::update_time ( SparseSystem & system,
const std::vector< int > & global_eqn_ids,
const std::vector< int > & global_var_ids,
double activation_signal )
overridevirtual

Time-dependent contributions.

Parameters
systemSystem to update contributions at
global_eqn_idsChamberSphere's global equation indices
global_var_idsChamberSphere's global variable indices
activation_signalThe chamber's ActivationFunction evaluated at the current time

Reimplemented from ActiveStress.


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