NEML2 2.0.0
|
Implicit exponential time integration for rotations. More...
Implicit exponential time integration for rotations.
#include <WR2ImplicitExponentialTimeIntegration.h>
Static Public Member Functions | |
static OptionSet | expected_options () |
Static Public Member Functions inherited from Model | |
static OptionSet | expected_options () |
Static Public Member Functions inherited from Data | |
static OptionSet | expected_options () |
Static Public Member Functions inherited from NEML2Object | |
static OptionSet | expected_options () |
Static Public Member Functions inherited from NonlinearSystem | |
static OptionSet | expected_options () |
static void | disable_automatic_scaling (OptionSet &options) |
static void | enable_automatic_scaling (OptionSet &options) |
Protected Member Functions | |
void | set_value (bool out, bool dout_din, bool d2out_din2) override |
Perform the update by defining the nonlinear residual and it's derivatives. | |
Protected Member Functions inherited from Model | |
void | setup () override |
Setup this object. | |
virtual void | link_input_variables () |
virtual void | link_input_variables (Model *submodel) |
virtual void | link_output_variables () |
virtual void | link_output_variables (Model *submodel) |
virtual void | request_AD () |
void | diagnose_nl_sys (std::vector< Diagnosis > &diagnoses) const |
Additional diagnostics for a nonlinear system. | |
template<typename T , typename = typename std::enable_if_t<std::is_base_of_v<Model, T>>> | |
T & | register_model (const std::string &name, bool nonlinear=false, bool merge_input=true) |
Register a model that the current model may use during its evaluation. | |
void | set_guess (const Sol< false > &) override |
Set the unscaled current guess. | |
void | assemble (Res< false > *, Jac< false > *) override |
Compute the unscaled residual and Jacobian. | |
Protected Member Functions inherited from Data | |
template<typename T , typename = typename std::enable_if_t<std::is_base_of_v<Data, T>>> | |
T & | register_data (const std::string &name) |
Protected Member Functions inherited from BufferStore | |
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 CrossRef< T > &crossref) |
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. | |
Protected Member Functions inherited from ParameterStore | |
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 CrossRef< T > &crossref, bool allow_nonlinear) |
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. | |
Protected Member Functions inherited from VariableStore | |
template<typename T , typename S > | |
const Variable< T > & | declare_input_variable (S &&name, TensorShapeRef list_shape={}, TensorShapeRef base_shape={}) |
Declare an input variable. | |
template<typename T , typename S > | |
Variable< T > & | declare_output_variable (S &&name, TensorShapeRef list_shape={}, TensorShapeRef base_shape={}) |
Declare an output variable. | |
const VariableBase * | clone_input_variable (const VariableBase &var, const VariableName &new_name={}) |
Clone a variable and put it on the input axis. | |
VariableBase * | clone_output_variable (const VariableBase &var, const VariableName &new_name={}) |
Clone a variable and put it on the output axis. | |
Protected Attributes | |
const Variable< Rot > & | _s |
Current guess at next value. | |
const Variable< Rot > & | _sn |
Previous value. | |
const Variable< WR2 > & | _s_dot |
Current variable spin rate. | |
const Variable< Scalar > & | _t |
Current time. | |
const Variable< Scalar > & | _tn |
Previous time. | |
Variable< Rot > & | _r |
Nonlinear residual. | |
Protected Attributes inherited from Model | |
std::vector< Model * > | _registered_models |
Models this model may use during its evaluation. | |
Protected Attributes inherited from Data | |
std::vector< Data * > | _registered_data |
Registered Data objects. | |
Protected Attributes inherited from ParameterStore | |
std::map< std::string, const VariableBase * > | _nl_params |
Map from nonlinear parameter names to their corresponding variable views. | |
std::map< std::string, Model * > | _nl_param_models |
Map from nonlinear parameter names to models which evaluate them. | |
Protected Attributes inherited from NonlinearSystem | |
const bool | _autoscale |
If true, do automatic scaling. | |
const Real | _autoscale_tol |
Tolerance for convergence check of the iterative automatic scaling algorithm. | |
const unsigned int | _autoscale_miter |
Maximum number of iterations allowed for the iterative automatic scaling algorithm. | |
bool | _scaling_matrices_initialized |
Flag to indicate whether scaling matrices have been computed. | |
Tensor | _row_scaling |
Row scaling "matrix" – since it's a batched diagonal matrix, we are only storing its diagonals. | |
Tensor | _col_scaling |
Column scaling "matrix" – since it's a batched diagonal matrix, we are only storing its diagonals. | |
WR2ImplicitExponentialTimeIntegration | ( | const OptionSet & | options | ) |
Check for common problems.
This method serves as the entry point for diagnosing common problems in object setup. The idea behind this method is that while some errors could be detected at construction time, i.e., when the object's constructor is called, it doesn't hinder other objects' creation. We therefore would like to defer the detection of errors until after all objects have been created, collect all errors at once, and present the user with a complete understanding of all errors encountered.
Note, however, if an error could interfere with other objects' creation, it should be raised right away inside the constructor, instead of inside this method.
diagnoses | A vector of exceptions of type Diagnosis for each of the detected problem. |
Reimplemented from Model.
|
static |
Perform the update by defining the nonlinear residual and it's derivatives.
Implements Model.