svMultiPhysics
Loading...
Searching...
No Matches
ActiveStressUniformSteady.h
1// SPDX-FileCopyrightText: Copyright (c) Stanford University, The Regents of the
2// University of California, and others. SPDX-License-Identifier: BSD-3-Clause
3
4#ifndef ACTIVE_STRESS_UNIFORM_STEADY_H
5#define ACTIVE_STRESS_UNIFORM_STEADY_H
6
7#include "ActiveStress.h"
8
9/**
10 * @brief Uniform and steady active stress model.
11 *
12 * Defines an active tension that is constant in space and time, i.e.
13 * @f[
14 * \Tact(t, \calcium, \fiberstretch, \fiberstretchrate, \astressstate) = g\;,
15 * @f]
16 * where @f$g@f$ is a user-defined constant value.
17 */
19public:
20 /// Model label.
21 static inline const std::string label = "UniformSteady";
22
23 /// Model parameters class.
25 public:
27 constexpr bool required = true;
28
29 add_parameter("Value", 0.0, required);
30 }
31 };
32
33 /**
34 * @brief Constructor.
35 */
37 : ActiveStress(/* n_states = */ 0,
38 /* needs_fiber_stretch = */ false,
39 /* needs_fiber_stretch_rate = */ false) {}
40
41 /**
42 * @brief Construct an instance of model parameters.
43 */
44 virtual std::unique_ptr<ActiveStressModelParameters>
45 get_parameters() const override {
46 return std::make_unique<Parameters>();
47 }
48
49protected:
50 /**
51 * @brief Read model parameters from a parameter object.
52 */
54 const ActiveStressModelParameters &params) override;
55
56 /**
57 * @brief Distribute model parameters to all parallel processes.
58 */
59 virtual void distribute_model_specific_parameters(const CmMod &cm_mod,
60 const cmType &cm) override;
61
62 /**
63 * @brief Initialize the state vector for a single node.
64 *
65 * This model has no states, so this function does nothing.
66 */
67 virtual void init_local(Vector<double> &state) const override {}
68
69 /**
70 * @brief Advance in time for a single node.
71 *
72 * This model has no states, so this function does nothing.
73 */
74 virtual void advance_time_step_local(const double t, const double dt,
75 const double calcium,
76 const double fiber_stretch,
77 const double fiber_stretch_rate,
78 Vector<double> &state) const override {}
79
80 /**
81 * @brief Compute the active tension for a single node.
82 */
83 virtual double
85 const double fiber_stretch) const override {
86 return value;
87 }
88
89 /// Active tension value.
90 double value;
91};
92
93#endif
Abstract active stress class.
Definition ActiveStress.h:100
Parameters for a generic active stress model.
Definition Parameters.h:1444
void add_parameter(const std::string &label, double default_value, bool required)
Add a new parameter to this object.
Definition Parameters.h:1490
Model parameters class.
Definition ActiveStressUniformSteady.h:24
Uniform and steady active stress model.
Definition ActiveStressUniformSteady.h:18
static const std::string label
Model label.
Definition ActiveStressUniformSteady.h:21
virtual double compute_active_tension_local(const Vector< double > &state, const double fiber_stretch) const override
Compute the active tension for a single node.
Definition ActiveStressUniformSteady.h:84
virtual void init_local(Vector< double > &state) const override
Initialize the state vector for a single node.
Definition ActiveStressUniformSteady.h:67
virtual void read_model_specific_parameters(const ActiveStressModelParameters &params) override
Read model parameters from a parameter object.
Definition ActiveStressUniformSteady.cpp:6
virtual void distribute_model_specific_parameters(const CmMod &cm_mod, const cmType &cm) override
Distribute model parameters to all parallel processes.
Definition ActiveStressUniformSteady.cpp:11
virtual std::unique_ptr< ActiveStressModelParameters > get_parameters() const override
Construct an instance of model parameters.
Definition ActiveStressUniformSteady.h:45
ActiveStressUniformSteady()
Constructor.
Definition ActiveStressUniformSteady.h:36
virtual void advance_time_step_local(const double t, const double dt, const double calcium, const double fiber_stretch, const double fiber_stretch_rate, Vector< double > &state) const override
Advance in time for a single node.
Definition ActiveStressUniformSteady.h:74
double value
Active tension value.
Definition ActiveStressUniformSteady.h:90
The CmMod class duplicates the data structures in the Fortran CMMOD module defined in COMU....
Definition CmMod.h:36
The Vector template class is used for storing int and double data.
Definition Vector.h:26
The cmType class stores data and defines methods used for mpi communication.
Definition CmMod.h:56