25#include "neml2/models/StateRate.h"
26#include "neml2/tensors/SSR4.h"
38 options.
doc() =
"Calculate the first order discrete time derivative of a state variable as \\f$ "
39 "\\dot{s} = \\frac{s-s_n}{t-t_n} \\f$, where \\f$ s \\f$ is the state variable, "
40 "and \\f$ t \\f$ is time.";
43 options.
set(
"state").doc() =
"The state variable to take time derivative with";
46 options.
set(
"time").doc() =
"Time";
54 _s(declare_input_variable<T>(options.get<
VariableName>(
"state").on(
"state"))),
55 _sn(declare_input_variable<T>(options.get<
VariableName>(
"state").on(
"old_state"))),
57 _tn(declare_input_variable<
Scalar>(options.get<
VariableName>(
"time").on(
"old_forces"))),
58 _ds_dt(declare_output_variable<T>(
59 options.get<
VariableName>(
"state").with_suffix(
"_rate").on(
"state")))
75 auto I = T::identity_map(options());
79 _ds_dt.d(_s) =
I /
dt;
80 _ds_dt.d(_sn) = -
I /
dt;
81 _ds_dt.d(_t) = -
ds /
dt /
dt;
82 _ds_dt.d(_tn) =
ds /
dt /
dt;
87 _ds_dt.d(_s, _t) = -
I /
dt /
dt;
88 _ds_dt.d(_s, _tn) =
I /
dt /
dt;
90 _ds_dt.d(_sn, _t) =
I /
dt /
dt;
91 _ds_dt.d(_sn, _tn) = -
I /
dt /
dt;
93 _ds_dt.d(_t, _s) = -
I /
dt /
dt;
94 _ds_dt.d(_t, _sn) =
I /
dt /
dt;
95 _ds_dt.d(_t, _t) = 2 *
ds /
dt /
dt /
dt;
96 _ds_dt.d(_t, _tn) = -2 *
ds /
dt /
dt /
dt;
98 _ds_dt.d(_tn, _s) =
I /
dt /
dt;
99 _ds_dt.d(_tn, _sn) = -
I /
dt /
dt;
100 _ds_dt.d(_tn, _t) = -2 *
ds /
dt /
dt /
dt;
101 _ds_dt.d(_tn, _tn) = 2 *
ds /
dt /
dt /
dt;
The wrapper (decorator) for cross-referencing unresolved values at parse time.
Definition CrossRef.h:52
The accessor containing all the information needed to access an item in a LabeledAxis.
Definition LabeledAxisAccessor.h:44
The base class for all constitutive models.
Definition Model.h:53
static OptionSet expected_options()
Definition Model.cxx:33
A custom map-like data structure. The keys are strings, and the values can be nonhomogeneously typed.
Definition OptionSet.h:59
const std::string & doc() const
A readonly reference to the option set's docstring.
Definition OptionSet.h:91
T & set(const std::string &)
Definition OptionSet.h:436
The (logical) scalar.
Definition Scalar.h:38
static OptionSet expected_options()
Definition StateRate.cxx:35
StateRate(const OptionSet &options)
Definition StateRate.cxx:52
void set_value(bool out, bool dout_din, bool d2out_din2) override
The map between input -> output, and optionally its derivatives.
Definition StateRate.cxx:65
Definition CrossRef.cxx:32
LabeledAxisAccessor VariableName
Definition Variable.h:35