|
| YieldFunction (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 |
|
|
void | set_value (bool out, bool dout_din, bool d2out_din2) override |
| The value of the yield function.
|
|
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 | 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.
|
|