NEML2 1.4.0
Loading...
Searching...
No Matches
SolidMechanicsDriver Class Reference

The transient driver specialized for solid mechanics problems. More...

Detailed Description

The transient driver specialized for solid mechanics problems.

#include <SolidMechanicsDriver.h>

Inheritance diagram for SolidMechanicsDriver:

Public Member Functions

 SolidMechanicsDriver (const OptionSet &options)
 Construct a new SolidMechanicsDriver object.
 
void diagnose (std::vector< Diagnosis > &) const override
 Check for common problems.
 
- Public Member Functions inherited from TransientDriver
 TransientDriver (const OptionSet &options)
 Construct a new TransientDriver object.
 
bool run () override
 Let the driver run, return true upon successful completion, and return false otherwise.
 
const Modelmodel () const
 
virtual std::string save_as_path () const
 The destination file/path to save the results.
 
virtual torch::nn::ModuleDict result () const
 The results (input and output) from all time steps.
 
- Public Member Functions inherited from Driver
 Driver (const OptionSet &options)
 Construct a new Driver object.
 
- Public Member Functions inherited from NEML2Object
 NEML2Object (const OptionSet &options)
 Construct a new NEML2Object object.
 
virtual ~NEML2Object ()=default
 
const OptionSetinput_options () const
 
virtual void setup ()
 Setup this object.
 
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 (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
 

Static Public Member Functions

static OptionSet expected_options ()
 
- Static Public Member Functions inherited from TransientDriver
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 void update_forces () override
 Update the driving forces for the current time step.
 
- Protected Member Functions inherited from TransientDriver
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 store_output ()
 Save the output of the current time step.
 
virtual void output () const
 Save the results into the destination file/path.
 

Protected Attributes

const std::string _control
 The control method to drive the constitutive update.
 
SR2 _driving_force
 
VariableName _driving_force_name
 
const VariableName _control_name
 Name of the control signal for mixed stress/strain control.
 
const VariableName _temperature_name
 Name of the temperature variable.
 
const bool _temperature_prescribed
 Whether temperature is prescribed.
 
Scalar _temperature
 Temperature.
 
SR2 _control_signal
 Actual control signal, when used for control == "MIXED".
 
- Protected Attributes inherited from TransientDriver
const bool _enable_AD
 Whether to disable automatic differentiation.
 
Model_model
 The model which the driver uses to perform constitutive updates.
 
const torch::Device _device
 The device on which to evaluate the model.
 
Scalar _time
 The current time.
 
Size _step_count
 The current step count.
 
VariableName _time_name
 VariableName for the time.
 
Size _nsteps
 Total number of steps.
 
Size _nbatch
 The batch size.
 
LabeledVector_in
 The input to the constitutive model.
 
LabeledVector_out
 The output of the constitutive model.
 
std::string _predictor
 The predictor used to set the initial guess.
 
std::string _save_as
 The destination file name or file path.
 
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.
 
LabeledVector _result_in
 Inputs from all time steps.
 
LabeledVector _result_out
 Outputs from all time steps.
 
std::vector< VariableName_ic_scalar_names
 Names for scalar initial conditions.
 
std::vector< CrossRef< Scalar > > _ic_scalar_values
 Values for the scalar initial conditions.
 
std::vector< VariableName_ic_rot_names
 Names for the Rot initial conditions.
 
std::vector< CrossRef< Rot > > _ic_rot_values
 Values for the Rot initial conditions.
 
std::vector< VariableName_ic_sr2_names
 Names for the SR2 initial conditions.
 
std::vector< CrossRef< SR2 > > _ic_sr2_values
 Values for the SR2 initial conditions.
 
Real _cp_elastic_scale
 Scale value for initial cp predictor.
 
- Protected Attributes inherited from Driver
bool _verbose
 Whether to print out additional (debugging) information during the execution.
 

Constructor & Destructor Documentation

◆ SolidMechanicsDriver()

Construct a new SolidMechanicsDriver object.

Parameters
optionsThe options extracted from the input file

Member Function Documentation

◆ diagnose()

void diagnose ( std::vector< Diagnosis > & diagnoses) 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.

Parameters
diagnosesA vector of exceptions of type Diagnosis for each of the detected problem.

Reimplemented from TransientDriver.

◆ expected_options()

OptionSet expected_options ( )
static

◆ update_forces()

void update_forces ( )
overrideprotectedvirtual

Update the driving forces for the current time step.

Reimplemented from TransientDriver.

Member Data Documentation

◆ _control

const std::string _control
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

◆ _control_name

const VariableName _control_name
protected

Name of the control signal for mixed stress/strain control.

◆ _control_signal

SR2 _control_signal
protected

Actual control signal, when used for control == "MIXED".

◆ _driving_force

SR2 _driving_force
protected

The value of the driving force, depending on _control this is either the prescribed strain or the prescribed stress.

◆ _driving_force_name

VariableName _driving_force_name
protected

The name of the driving force, depending on _control this is either the prescribed strain or the prescribed stress.

◆ _temperature

Scalar _temperature
protected

Temperature.

◆ _temperature_name

const VariableName _temperature_name
protected

Name of the temperature variable.

◆ _temperature_prescribed

const bool _temperature_prescribed
protected

Whether temperature is prescribed.