NEML2 2.0.0
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
TransientDriver Class Reference

The driver for a transient initial-value problem. More...

Detailed Description

The driver for a transient initial-value problem.

#include <TransientDriver.h>

Inheritance diagram for TransientDriver:

Public Member Functions

 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.
 
- Public Member Functions inherited from ModelDriver
 ModelDriver (const OptionSet &options)
 
const Modelmodel () const
 
- Public Member Functions inherited from Driver
 Driver (const OptionSet &options)
 Construct a new Driver object.
 
- Public Member Functions inherited from NEML2Object
 NEML2Object ()=delete
 
 NEML2Object (NEML2Object &&)=delete
 
 NEML2Object (const NEML2Object &)=delete
 
NEML2Objectoperator= (NEML2Object &&)=delete
 
NEML2Objectoperator= (const NEML2Object &)=delete
 
virtual ~NEML2Object ()=default
 
 NEML2Object (const OptionSet &options)
 Construct a new NEML2Object object.
 
const OptionSetinput_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.
 
- Public Member Functions inherited from DiagnosticsInterface
 DiagnosticsInterface ()=delete
 
 DiagnosticsInterface (NEML2Object *object)
 
 DiagnosticsInterface (DiagnosticsInterface &&)=delete
 
 DiagnosticsInterface (const DiagnosticsInterface &)=delete
 
DiagnosticsInterfaceoperator= (const DiagnosticsInterface &)=delete
 
DiagnosticsInterfaceoperator= (DiagnosticsInterface &&)=delete
 
virtual ~DiagnosticsInterface ()=default
 
const NEML2Objectobject () const
 Get the object.
 

Static Public Member Functions

static OptionSet expected_options ()
 
- Static Public Member Functions inherited from ModelDriver
static OptionSet expected_options ()
 
- Static Public Member Functions inherited from Driver
static OptionSet expected_options ()
 
- Static Public Member Functions inherited from NEML2Object
static OptionSet expected_options ()
 

Protected Member Functions

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 update_forces ()
 Update the driving forces for the current time step.
 
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.
 

Protected Attributes

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
 
- Protected Attributes inherited from ModelDriver
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.
 
- Protected Attributes inherited from Driver
bool _verbose
 Whether to print out additional (debugging) information during the execution.
 
std::string _save_as
 The destination file name or file path.
 
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.
 
virtual void output () const
 Save the results into the destination file/path.
 

Constructor & Destructor Documentation

◆ TransientDriver()

TransientDriver ( const OptionSet & options)

Member Function Documentation

◆ advance_step()

void advance_step ( )
protectedvirtual

Advance in time: the state becomes old state, and forces become old forces.

◆ apply_ic()

void apply_ic ( )
protectedvirtual

Apply the initial conditions.

◆ apply_predictor()

void apply_predictor ( )
protectedvirtual

Apply the predictor to calculate the initial guess for the current time step.

Reimplemented in LDISolidMechanicsDriver.

◆ diagnose()

void diagnose ( ) const
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.

◆ expected_options()

OptionSet expected_options ( )
static

◆ output()

void output ( ) const
protectedvirtual

Save the results into the destination file/path.

◆ result()

torch::nn::ModuleDict result ( ) const
virtual

The results (input and output) from all time steps.

Outputting

Returns
torch::nn::ModuleDict The results (input and output) from all time steps. The keys of the dict are "input" and "output". The values are torch::nn::ModuleList with length equal to the number of time steps. Each ModuleList contains the input/output variables at each time step in the form of torch::nn::ModuleDict whose keys are variable names and values are variable values.

◆ run()

bool run ( )
overridevirtual

Let the driver run, return true upon successful completion, and return false otherwise.

Implements Driver.

◆ save_as_path()

std::string save_as_path ( ) const
virtual

The destination file/path to save the results.

◆ setup()

void setup ( )
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.

◆ solve()

bool solve ( )
protectedvirtual

Solve the initial value problem.

◆ solve_step()

void solve_step ( )
protectedvirtual

Perform the constitutive update for the current time step.

◆ store_input()

void store_input ( )
protectedvirtual

Save the input of the current time step.

◆ update_forces()

void update_forces ( )
protectedvirtual

Update the driving forces for the current time step.

Reimplemented in LDISolidMechanicsDriver, and SolidMechanicsDriver.

Member Data Documentation

◆ _driving_force_names

std::vector<VariableName> _driving_force_names
protected

Driving forces (other than time)

◆ _driving_forces

std::vector<Tensor> _driving_forces
protected

◆ _in

ValueMap _in
protected

The input to the constitutive model.

◆ _nsteps

const Size _nsteps
protected

Total number of steps.

◆ _predictor

const EnumSelection _predictor
protected

The predictor used to set the initial guess.

◆ _result_in

std::vector<ValueMap> _result_in
protected

Inputs from all time steps.

◆ _result_out

std::vector<ValueMap> _result_out
protected

Outputs from all time steps.

◆ _save_as

std::string _save_as
protected

The destination file name or file path.

◆ _step_count

Size _step_count = 0
protected

The current step count.

◆ _time

Scalar _time
protected

The current time.

◆ _time_name

const VariableName _time_name
protected

VariableName for the time.