NEML2 2.0.0
|
The transient driver specialized for solid mechanics problems. More...
The transient driver specialized for solid mechanics problems.
Derived classes should implement the SolidMechanicsDriver::update_forces
method to update the driving forces based on the assumptions on kinematics, i.e., small vs large deformation, incremental vs total etc.
#include <SolidMechanicsDriver.h>
Public Member Functions | |
SolidMechanicsDriver (const OptionSet &options) | |
void | setup () override |
Setup this object. | |
void | diagnose () const override |
Check for common problems. | |
![]() | |
TransientDriver (const OptionSet &options) | |
void | setup () override |
Setup this object. | |
void | diagnose () const override |
Check for common problems. | |
bool | run () override |
Let the driver run, return true upon successful completion, and return false otherwise. | |
virtual torch::nn::ModuleDict | result () const |
The results (input and output) from all time steps. | |
virtual std::string | save_as_path () const |
The destination file/path to save the results. | |
![]() | |
ModelDriver (const OptionSet &options) | |
const Model & | model () const |
![]() | |
Driver (const OptionSet &options) | |
Construct a new Driver object. | |
![]() | |
NEML2Object ()=delete | |
NEML2Object (NEML2Object &&)=delete | |
NEML2Object (const NEML2Object &)=delete | |
NEML2Object & | operator= (NEML2Object &&)=delete |
NEML2Object & | operator= (const NEML2Object &)=delete |
virtual | ~NEML2Object ()=default |
NEML2Object (const OptionSet &options) | |
Construct a new NEML2Object object. | |
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. | |
![]() | |
DiagnosticsInterface ()=delete | |
DiagnosticsInterface (NEML2Object *object) | |
DiagnosticsInterface (DiagnosticsInterface &&)=delete | |
DiagnosticsInterface (const DiagnosticsInterface &)=delete | |
DiagnosticsInterface & | operator= (const DiagnosticsInterface &)=delete |
DiagnosticsInterface & | operator= (DiagnosticsInterface &&)=delete |
virtual | ~DiagnosticsInterface ()=default |
const NEML2Object & | object () const |
Get the object. | |
Static Public Member Functions | |
static OptionSet | expected_options () |
![]() | |
static OptionSet | expected_options () |
![]() | |
static OptionSet | expected_options () |
![]() | |
static OptionSet | expected_options () |
![]() | |
static OptionSet | expected_options () |
Protected Member Functions | |
void | update_forces () override |
Update the driving forces for the current time step. | |
virtual void | init_strain_control (const OptionSet &)=0 |
virtual void | init_stress_control (const OptionSet &)=0 |
virtual void | init_mixed_control (const OptionSet &) |
virtual void | init_temperature_control (const OptionSet &) |
![]() | |
virtual bool | solve () |
Solve the initial value problem. | |
virtual void | advance_step () |
Advance in time: the state becomes old state, and forces become old forces. | |
virtual void | apply_ic () |
Apply the initial conditions. | |
virtual void | apply_predictor () |
Apply the predictor to calculate the initial guess for the current time step. | |
virtual void | solve_step () |
Perform the constitutive update for the current time step. | |
virtual void | store_input () |
Save the input of the current time step. | |
virtual void | output () const |
Save the results into the destination file/path. | |
Protected Attributes | |
const EnumSelection | _control |
The control method to drive the constitutive update. | |
VariableName | _driving_force_name |
SR2 | _driving_force |
The value of the driving force. | |
VariableName | _mixed_control_name |
SR2 | _mixed_control |
Actual control signal, when used for control == "MIXED". | |
const bool | _temperature_prescribed |
VariableName | _temperature_name |
Name of the temperature variable. | |
Scalar | _temperature |
Temperature. | |
![]() | |
const VariableName | _time_name |
VariableName for the time. | |
Scalar | _time |
The current time. | |
Size | _step_count = 0 |
The current step count. | |
const Size | _nsteps |
Total number of steps. | |
ValueMap | _in |
The input to the constitutive model. | |
const EnumSelection | _predictor |
The predictor used to set the initial guess. | |
std::vector< ValueMap > | _result_in |
Inputs from all time steps. | |
std::vector< ValueMap > | _result_out |
Outputs from all time steps. | |
std::vector< VariableName > | _driving_force_names |
Driving forces (other than time) | |
std::vector< Tensor > | _driving_forces |
std::string | _save_as |
The destination file name or file path. | |
![]() | |
Model & | _model |
The model which the driver uses to perform constitutive updates. | |
const Device | _device |
The device on which to evaluate the model. | |
const bool | _show_params |
Set to true to list all the model parameters at the beginning. | |
const bool | _show_input |
Set to true to show model's input axis at the beginning. | |
const bool | _show_output |
Set to true to show model's output axis at the beginning. | |
![]() | |
bool | _verbose |
Whether to print out additional (debugging) information during the execution. | |
SolidMechanicsDriver | ( | const OptionSet & | options | ) |
|
overridevirtual |
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.
Reimplemented from ModelDriver.
|
static |
|
protectedvirtual |
|
protectedpure virtual |
Control-specific initialization
Implemented in LDISolidMechanicsDriver, and SDTSolidMechanicsDriver.
|
protectedpure virtual |
Implemented in LDISolidMechanicsDriver, and SDTSolidMechanicsDriver.
|
protectedvirtual |
|
overridevirtual |
Setup this object.
This method is called automatically if you use the Factory method get_object or get_object_ptr, right after construction. This serves as the entry point for things that are not convenient/possible to do at construction time, but are necessary before this object can be used (by others).
Reimplemented from ModelDriver.
|
overrideprotectedvirtual |
Update the driving forces for the current time step.
Reimplemented from TransientDriver.
|
protected |
The control method to drive the constitutive update.
STRAIN: Use strain control to drive the update. STRESS: Use stress control to drive the update. MIXED: Use mixed stress/strain control with signal provided by _control_name
|
protected |
The value of the driving force.
|
protected |
The name of the driving force
|
protected |
Actual control signal, when used for control == "MIXED".
|
protected |
Name of the control signal for mixed stress/strain control
|
protected |
Temperature.
|
protected |
Name of the temperature variable.
|
protected |
Whether temperature is prescribed