Parent class of slip rules, mapping from resolved shear and internal state to slip rates.
More...
Parent class of slip rules, mapping from resolved shear and internal state to slip rates.
|
| SlipRule (const OptionSet &options) |
|
| Model (const OptionSet &options) |
| Construct a new Model object.
|
|
virtual void | diagnose (std::vector< Diagnosis > &) const override |
| Check for common problems.
|
|
void | diagnose_nl_sys (std::vector< Diagnosis > &diagnoses) const |
| Additional diagnostics for a nonlinear system.
|
|
virtual bool | is_nonlinear_system () const |
| Whether this model defines one or more nonlinear equations to be solved.
|
|
std::tuple< const Tensor &, const Tensor &, const Tensor &, const Tensor &, const Tensor & > | get_system_matrices () const |
| Get assembled system.
|
|
virtual void | reinit (const Tensor &tensor, int deriv_order) |
| Allocate storage and setup views for all the variables of this model and recursively all of the sub-models. See the other overload for detailed description.
|
|
virtual void | reinit (TensorShapeRef batch_shape={}, int deriv_order=0, const torch::Device &device=default_device(), const torch::Dtype &dtype=default_dtype()) |
| Allocate storage and setup views for all the variables of this model and recursively all of the sub-models.
|
|
const std::vector< Model * > & | registered_models () const |
| The models that may be used during the evaluation of this model.
|
|
Model * | registered_model (const std::string &name) const |
| Get a registered model by its name.
|
|
virtual std::set< VariableName > | consumed_items () const override |
| The variables that this model depends on.
|
|
virtual std::set< VariableName > | provided_items () const override |
| The variables that this model defines as part of its output.
|
|
virtual bool | is_AD_enabled () const override |
| Whether AD is enabled.
|
|
bool | using_AD_1st_derivative () const |
| Whether this model is using AD to get 1st derivatives.
|
|
bool | using_AD_2nd_derivative () const |
| Whether this model is using AD to get 2nd derivatives.
|
|
void | use_AD_derivatives (bool first=true, bool second=true) |
| Tell this model to use AD to get derivatives.
|
|
void | prepare () |
| Prepare for evaluation.
|
|
virtual void | value () |
| Evalute the model.
|
|
virtual void | value_and_dvalue () |
| Evalute the model and compute its derivative.
|
|
virtual void | dvalue () |
| Evalute the derivative.
|
|
virtual void | value_and_dvalue_and_d2value () |
| Evalute the model and compute its first and second derivatives.
|
|
virtual void | d2value () |
| Evalute the second derivatives.
|
|
virtual void | dvalue_and_d2value () |
| Evalute the first and second derivatives.
|
|
virtual LabeledVector | value (const LabeledVector &in) |
| Convenient shortcut to construct and return the model value.
|
|
virtual std::tuple< LabeledVector, LabeledMatrix > | value_and_dvalue (const LabeledVector &in) |
| Convenient shortcut to construct and return the model value and its derivative.
|
|
virtual LabeledMatrix | dvalue (const LabeledVector &in) |
| Convenient shortcut to construct and return the derivative.
|
|
virtual std::tuple< LabeledVector, LabeledMatrix, LabeledTensor3D > | value_and_dvalue_and_d2value (const LabeledVector &in) |
| Convenient shortcut to construct and return the model's value, first and second derivative.
|
|
virtual LabeledTensor3D | d2value (const LabeledVector &in) |
| Convenient shortcut to construct and return the model's second derivative.
|
|
virtual std::tuple< LabeledMatrix, LabeledTensor3D > | dvalue_and_d2value (const LabeledVector &in) |
| Convenient shortcut to construct and return the model's first and second derivative.
|
|
Size | batch_dim () const |
|
TensorShapeRef | batch_sizes () const |
| Storage batch shape.
|
|
const torch::TensorOptions & | options () const |
| Storage tensor options.
|
|
torch::Dtype | scalar_type () const |
| Storage scalar type.
|
|
torch::Device | device () const |
| Storage device.
|
|
| Data (const OptionSet &options) |
| Construct a new Data object.
|
|
const std::vector< Data * > & | registered_data () const |
| All the registered data objects.
|
|
| NEML2Object (const OptionSet &options) |
| Construct a new NEML2Object object.
|
|
virtual | ~NEML2Object ()=default |
|
const OptionSet & | input_options () const |
|
const std::string & | name () const |
| A readonly reference to the object's name.
|
|
const std::string & | type () const |
| A readonly reference to the object's type.
|
|
const std::string & | path () const |
| A readonly reference to the object's path.
|
|
const std::string & | doc () const |
| A readonly reference to the object's docstring.
|
|
template<typename T = NEML2Object> |
const T * | host () const |
| Get a readonly pointer to the host.
|
|
template<typename T = NEML2Object> |
T * | host () |
| Get a writable pointer to the host.
|
|
| BufferStore (const OptionSet &options, NEML2Object *object) |
|
const Storage< std::string, TensorValueBase > & | named_buffers () const |
|
Storage< std::string, TensorValueBase > & | named_buffers () |
|
template<typename T , typename = typename std::enable_if_t<std::is_base_of_v<TensorBase<T>, T>>> |
TensorValue< T > & | get_buffer (const std::string &name) |
| }@
|
|
| ParameterStore (const OptionSet &options, NEML2Object *object) |
|
const Storage< std::string, TensorValueBase > & | named_parameters () const |
|
Storage< std::string, TensorValueBase > & | named_parameters () |
|
void | set_parameter (const std::string &, const Tensor &) |
| }@
|
|
void | set_parameters (const std::map< std::string, Tensor > &) |
| Set values for parameters.
|
|
TensorValueBase & | get_parameter (const std::string &name) |
| Get a writable reference of a parameter.
|
|
const TensorValueBase & | get_parameter (const std::string &name) const |
| Get a read-only reference of a parameter.
|
|
bool | has_nl_param () const |
| Whether this parameter store has any nonlinear parameter.
|
|
const VariableBase * | nl_param (const std::string &) const |
| Query the existence of a nonlinear parameter.
|
|
virtual std::map< std::string, const VariableBase * > | named_nonlinear_parameters (bool recursive=false) const |
| Get all nonlinear parameters.
|
|
virtual std::map< std::string, Model * > | named_nonlinear_parameter_models (bool recursive=false) const |
| Get all nonlinear parameters' models.
|
|
| VariableStore (const OptionSet &options, Model *object) |
|
LabeledAxis & | declare_axis (const std::string &name) |
|
virtual void | setup_layout () |
| Setup the layouts of all the registered axes.
|
|
VariableBase * | input_variable (const VariableName &) |
| Get the view of an input variable.
|
|
VariableBase * | output_variable (const VariableName &) |
| Get the view of an output variable.
|
|
TensorType | input_type (const VariableName &) const |
| Get the variable type of an input variable.
|
|
TensorType | output_type (const VariableName &) const |
| Get the variable type of an output variable.
|
|
template<typename T = Tensor> |
Variable< T > & | get_input_variable (const VariableName &name) |
|
template<typename T = Tensor> |
const Variable< T > & | get_input_variable (const VariableName &name) const |
|
template<typename T = Tensor> |
const Variable< T > & | get_output_variable (const VariableName &name) |
|
template<typename T = Tensor> |
const Variable< T > & | get_output_variable (const VariableName &name) const |
|
LabeledAxis & | input_axis () |
|
const LabeledAxis & | input_axis () const |
|
LabeledAxis & | output_axis () |
|
const LabeledAxis & | output_axis () const |
|
Storage< VariableName, VariableBase > & | input_variables () |
|
const Storage< VariableName, VariableBase > & | input_variables () const |
|
Storage< VariableName, VariableBase > & | output_variables () |
|
const Storage< VariableName, VariableBase > & | output_variables () const |
|
LabeledVector & | input_storage () |
|
const LabeledVector & | input_storage () const |
|
LabeledVector & | output_storage () |
|
const LabeledVector & | output_storage () const |
|
LabeledMatrix & | derivative_storage () |
|
const LabeledMatrix & | derivative_storage () const |
|
LabeledTensor3D & | second_derivative_storage () |
|
const LabeledTensor3D & | second_derivative_storage () const |
|
| NonlinearSystem (const OptionSet &options) |
|
virtual void | init_scaling (const bool verbose=false) |
| Compute algebraic Jacobian-based automatic scaling following https://cs.stanford.edu/people/paulliu/files/cs517-project.pdf.
|
|
Tensor | scale_residual (const Tensor &r) const |
| Apply scaling to the residual.
|
|
Tensor | scale_Jacobian (const Tensor &J) const |
| Apply scaling to the Jacobian.
|
|
Tensor | scale_direction (const Tensor &p) const |
| Remove scaling from the search direction, i.e. \( J^{-1} r \).
|
|
virtual Tensor | solution () const |
| Get the solution vector.
|
|
Tensor | residual (const Tensor &x) |
| Convenient shortcut to set the current solution, assemble and return the system residual.
|
|
void | residual () |
| Convenient shortcut to assemble and return the system residual.
|
|
Tensor | Jacobian (const Tensor &x) |
| Convenient shortcut to set the current solution, assemble and return the system Jacobian.
|
|
void | Jacobian () |
| Convenient shortcut to assemble and return the system Jacobian.
|
|
std::tuple< Tensor, Tensor > | residual_and_Jacobian (const Tensor &x) |
| Convenient shortcut to set the current solution, assemble and return the system residual and Jacobian.
|
|
void | residual_and_Jacobian () |
| Convenient shortcut to assemble and return the system residual and Jacobian.
|
|
const Tensor & | get_residual () const |
|
const Tensor & | get_Jacobian () const |
|
Tensor | residual_norm () const |
| The residual norm.
|
|
virtual bool | is_AD_disabled () const final |
| Whether AD is disabled.
|
|
| DiagnosticsInterface (NEML2Object *object) |
|
template<typename... Args> |
void | diagnostic_assert (std::vector< Diagnosis > &diagnoses, bool assertion, Args &&... args) const |
|
void | diagnostic_assert_state (std::vector< Diagnosis > &diagnoses, const VariableBase &v) const |
|
void | diagnostic_assert_old_state (std::vector< Diagnosis > &diagnoses, const VariableBase &v) const |
|
void | diagnostic_assert_force (std::vector< Diagnosis > &diagnoses, const VariableBase &v) const |
|
void | diagnostic_assert_old_force (std::vector< Diagnosis > &diagnoses, const VariableBase &v) const |
|
void | diagnostic_assert_residual (std::vector< Diagnosis > &diagnoses, const VariableBase &v) const |
|
void | diagnostic_check_input_variable (std::vector< Diagnosis > &diagnoses, const VariableBase &v) const |
|
void | diagnostic_check_output_variable (std::vector< Diagnosis > &diagnoses, const VariableBase &v) const |
|
|
virtual void | setup () override |
| Setup this model.
|
|
virtual void | check_AD_limitation () const |
|
void | check_inplace_dbg () |
| Check for potential in-place operation.
|
|
virtual void | check_input (const LabeledVector &in) const |
| Check if the input has valid shape.
|
|
virtual LabeledVector | get_output () |
|
virtual LabeledMatrix | get_doutput_dinput () |
|
virtual LabeledTensor3D | get_d2output_dinput2 () |
|
template<typename T , typename = typename std::enable_if_t<std::is_base_of_v<Model, T>>> |
T & | register_model (const std::string &name, int extra_deriv_order=0, bool nonlinear=false, bool merge_input=true) |
| Register a model that the current model may use during its evaluation.
|
|
virtual void | reinit (bool in, bool out) |
| Allocate storage and setup views for all the variables of this model and recursively all of the sub-models. See the other overload for detailed description.
|
|
virtual void | cache (TensorShapeRef batch_shape, int deriv_order, const torch::Device &device, const torch::Dtype &dtype) |
|
bool | requires_grad () const |
| Whether derivative has been requested for this model.
|
|
bool | requires_2nd_grad () const |
| Whether 2nd derivative has been requested for this model.
|
|
virtual void | allocate_variables (bool in, bool out) |
| Call VariableStore::allocate_variables recursively on all submodels.
|
|
virtual void | setup_input_views (VariableStore *host=nullptr) override |
| Call VariableStore::setup_input_views recursively on all submodels.
|
|
virtual void | setup_submodel_input_views (VariableStore *host) |
|
virtual void | setup_output_views () |
|
virtual void | setup_submodel_output_views () |
|
virtual void | setup_nonlinear_system () |
|
virtual void | cache (TensorShapeRef batch_shape) |
| Cache the variable's batch shape.
|
|
virtual void | allocate_variables (TensorShapeRef batch_shape, const torch::TensorOptions &options, bool in, bool out, bool dout_din, bool d2out_din2) |
| Allocate variable storages given the batch shape and tensor options.
|
|
virtual void | setup_output_views (bool out, bool dout_din, bool d2out_din2) |
| Call VariableStore::setup_output_views recursively on all submodels.
|
|
virtual void | zero () |
|
virtual void | set_input (const LabeledVector &in) |
| Set in to be the input of this model.
|
|
virtual void | set_solution (const Tensor &x) override |
| Set x as the current solution of the nonlinear system.
|
|
virtual void | set_value (bool out, bool dout_din, bool d2out_din2)=0 |
| The map between input -> output, and optionally its derivatives.
|
|
virtual void | assemble (bool residual, bool Jacobian) override |
| Compute the residual and Jacobian.
|
|
virtual void | zero (bool dout_din, bool d2out_din2) |
| Zero out derivative and second derivative storage.
|
|
template<typename T , typename = typename std::enable_if_t<std::is_base_of_v<Data, T>>> |
T & | register_data (const std::string &name) |
|
virtual void | send_buffers_to (const torch::TensorOptions &options) |
| Send all buffers to options .
|
|
template<typename T , typename = typename std::enable_if_t<std::is_base_of_v<TensorBase<T>, T>>> |
const T & | declare_buffer (const std::string &name, const T &rawval) |
| Declare a buffer.
|
|
template<typename T , typename = typename std::enable_if_t<std::is_base_of_v<TensorBase<T>, T>>> |
const T & | declare_buffer (const std::string &name, const std::string &input_option_name) |
| Declare a buffer.
|
|
virtual void | send_parameters_to (const torch::TensorOptions &options) |
| Send parameters to options.
|
|
template<typename T , typename = typename std::enable_if_t<std::is_base_of_v<TensorBase<T>, T>>> |
const T & | declare_parameter (const std::string &name, const T &rawval) |
| Declare a parameter.
|
|
template<typename T , typename = typename std::enable_if_t<std::is_base_of_v<TensorBase<T>, T>>> |
const T & | declare_parameter (const std::string &name, const std::string &input_option_name, bool allow_nonlinear=false) |
| Declare a parameter.
|
|
template<typename T , typename... S> |
const Variable< T > & | declare_input_variable (S &&... name) |
| Declare an input variable.
|
|
template<typename... S> |
const Variable< Tensor > & | declare_input_variable (Size sz, TensorType t, S &&... name) |
| Declare an input variable (with unknown base shape at compile time)
|
|
template<typename T , typename... S> |
const Variable< Tensor > & | declare_input_variable_list (Size list_size, S &&... name) |
| Declare an input variable that is a list of tensors of fixed size.
|
|
template<typename T , typename... S> |
Variable< T > & | declare_output_variable (S &&... name) |
| Declare an output variable.
|
|
template<typename... S> |
Variable< Tensor > & | declare_output_variable (Size sz, TensorType t, S &&... name) |
| Declare an input variable (with unknown base shape at compile time)
|
|
template<typename T , typename... S> |
Variable< Tensor > & | declare_output_variable_list (Size list_size, S &&... name) |
| Declare an output variable that is a list of tensors of fixed size.
|
|
template<typename T > |
VariableName | declare_variable (LabeledAxis &axis, const VariableName &var) const |
| Declare an item recursively on an axis.
|
|
VariableName | declare_variable (LabeledAxis &axis, const VariableName &var, Size sz) const |
| Declare an item (with known storage size) recursively on an axis.
|
|
VariableName | declare_subaxis (LabeledAxis &axis, const VariableName &subaxis) const |
| Declare a subaxis recursively on an axis.
|
|