Smith  0.1
Smith is an implicit thermal structural mechanics simulation code.
Public Member Functions | List of all members
smith::DifferentiablePhysics Class Reference

BasePhysics implementation that stores differentiable states in gretl for checkpointed reverse solves. More...

#include <differentiable_physics.hpp>

Collaboration diagram for smith::DifferentiablePhysics:
Collaboration graph
[legend]

Public Member Functions

 DifferentiablePhysics (std::shared_ptr< Mesh > mesh, std::shared_ptr< gretl::DataStore > graph, const FieldState &shape_disp, const std::vector< FieldState > &states, const std::vector< FieldState > &params, std::shared_ptr< StateAdvancer > advancer, std::string physics_name, const std::vector< ReactionInfo > &reaction_infos={})
 Construct a differentiable physics wrapper around a state advancer and its tracked fields. More...
 
 ~DifferentiablePhysics ()
 Destructor.
 
void resetStates (int cycle=0, double time=0.0) override
 Base method to reset physics states to the initial time. This does not reset design parameters or shape. More...
 
virtual void resetAdjointStates () override
 Base method to reset physics states back to the end of time to start adjoint calculations again. This does not reset design parameters or shape. More...
 
void completeSetup () override
 Complete the setup and allocate the necessary data structures. More...
 
std::vector< std::string > stateNames () const override
 Get a vector of the finite element state primal solution names. More...
 
std::vector< std::string > parameterNames () const override
 Get a vector of the finite element state parameter names. More...
 
std::vector< std::string > dualNames () const override
 Get a vector of the finite element state dual (reaction) solution names. More...
 
const FiniteElementStatestate (const std::string &state_name) const override
 Accessor for getting named finite element state primal solution from the physics modules. More...
 
const FiniteElementDualdual (const std::string &dual_name) const override
 Accessor for getting named finite element state dual (reaction) solution from the physics modules. More...
 
const FiniteElementStateshapeDisplacement () const override
 Accessor for getting the shape displacement field from the physics modules. More...
 
const FiniteElementStateparameter (std::size_t parameter_index) const override
 Accessor for getting indexed finite element state parameter fields from the physics modules. More...
 
const FiniteElementStateparameter (const std::string &parameter_name) const override
 Accessor for getting named finite element state parameter fields from the physics modules. More...
 
FiniteElementState loadCheckpointedState (const std::string &state_name, int cycle) override
 Return a state for a stored checkpoint cycle. More...
 
FiniteElementDual loadCheckpointedDual (const std::string &state_name, int cycle) override
 Accessor for getting a single named finite element dual solution from the physics modules at a given checkpointed cycle index. More...
 
void setState (const std::string &state_name, const FiniteElementState &s) override
 Set the primal solution field values of the underlying physics solver. More...
 
void setShapeDisplacement (const FiniteElementState &shape_displacement) override
 Set the current shape displacement for the underlying mesh. More...
 
void setParameter (const size_t parameter_index, const FiniteElementState &parameter_state) override
 Deep copy a parameter field into the internally-owned parameter used for simulations. More...
 
void setAdjointLoad (std::unordered_map< std::string, const smith::FiniteElementDual & > string_to_dual) override
 Set the loads for the adjoint reverse timestep solve. More...
 
void setDualAdjointBcs (std::unordered_map< std::string, const smith::FiniteElementState & > string_to_bc) override
 Set the dual loads (dirichlet values) for the adjoint reverse timestep solve This must be called after setAdjointLoad. More...
 
const FiniteElementStateadjoint (const std::string &adjoint_name) const override
 Accessor for getting named finite element state adjoint solution from the physics modules. More...
 
virtual void advanceTimestep (double dt) override
 Advance the state variables according to the chosen time integrator. More...
 
void reverseAdjointTimestep () override
 Reverse one recorded timestep through the gretl graph. More...
 
FiniteElementDual computeTimestepSensitivity (size_t parameter_index) override
 Compute the implicit sensitivity of the quantity of interest used in defining the adjoint load with respect to the parameter field (d QOI/d state * d state/d parameter). More...
 
const FiniteElementDualcomputeTimestepShapeSensitivity () override
 Compute the implicit sensitivity of the quantity of interest used in defining the adjoint load with respect to the shape displacement field (d QOI/d state * d state/d shape displacement). More...
 
const std::unordered_map< std::string, const smith::FiniteElementDual & > computeInitialConditionSensitivity () const override
 Compute the implicit sensitivity of the quantity of interest with respect to the initial condition fields. More...
 
std::vector< FieldStategetInitialFieldStates () const
 Get the initial state fields captured before any timesteps were advanced. More...
 
std::vector< FieldStategetFieldStates () const
 Get the current primal state fields. More...
 
std::vector< FieldStategetFieldParams () const
 Get all the parameter FieldStates.
 
std::vector< FieldStategetFieldStatesAndParamStates () const
 Get the tracked state fields followed by the tracked parameter fields. More...
 
FieldState getShapeDispFieldState () const
 Get the tracked shape displacement field. More...
 
std::vector< ReactionStategetReactionStates () const
 Get the current differentiable reaction outputs. More...
 
std::shared_ptr< StateAdvancergetStateAdvancer () const
 Get the state advancer used for forward solves. More...
 
- Public Member Functions inherited from smith::BasePhysics
 BasePhysics (std::string physics_name, std::shared_ptr< smith::Mesh > mesh, int cycle=0, double time=0.0, bool checkpoint_to_disk=false)
 Empty constructor. More...
 
 BasePhysics (BasePhysics &&other)=default
 Construct a new Base Physics object (copy constructor) More...
 
virtual double time () const
 Get the current forward-solution time. More...
 
virtual int cycle () const
 Get the current forward-solution cycle iteration number. More...
 
virtual double maxTime () const
 Get the maximum time reached by the forward solver. More...
 
virtual double minTime () const
 Get the initial time used by the forward solver. More...
 
virtual int maxCycle () const
 The maximum cycle (timestep iteration number) reached by the forward solver. More...
 
virtual int minCycle () const
 Get the initial cycle (timestep iteration number) used by the forward solver. More...
 
bool isQuasistatic () const
 Check if the physics is setup as quasistatic. More...
 
virtual const std::vector< double > & timesteps () const
 Get a vector of the timestep sizes (i.e. \(\Delta t\)s) taken by the forward solver. More...
 
virtual std::vector< std::string > adjointNames () const
 Get a vector of the finite element state adjoint solution names. More...
 
virtual const FiniteElementStatedualAdjoint (const std::string &dual_name) const
 Accessor for getting named finite element state dual adjoint (reaction adjoint load) from the physics modules. More...
 
virtual void outputStateToDisk (std::optional< std::string > paraview_output_dir={}) const
 Output the current state of the PDE fields in Sidre format and optionally in Paraview format if paraview_output_dir is given. More...
 
void loadCheckpointedStatesFromDisk (int cycle)
 load checkpointed states from disk into states array More...
 
virtual FiniteElementDual loadCheckpointedDual ([[maybe_unused]] const std::string &state_name, [[maybe_unused]] int cycle)
 Accessor for getting a single named finite element dual solution from the physics modules at a given checkpointed cycle index. More...
 
virtual double getCheckpointedTimestep (int cycle) const
 Get a timestep increment which has been previously checkpointed at the give cycle. More...
 
virtual void initializeSummary (axom::sidre::DataStore &datastore, const double t_final, const double dt) const
 Initializes the Sidre structure for simulation summary data. More...
 
virtual void saveSummary (axom::sidre::DataStore &datastore, const double t) const
 Saves the summary data to the Sidre Datastore. More...
 
virtual ~BasePhysics ()=default
 Destroy the Base Solver object.
 
const smith::Meshmesh () const
 Returns a reference to the mesh object.
 
const mfem::ParMesh & mfemParMesh () const
 Returns a reference to the mfem ParMesh object.
 
mfem::ParMesh & mfemParMesh ()
 Returns a reference to the mfem ParMesh object.
 
std::string name () const
 Return the name of the physics.
 

Additional Inherited Members

- Protected Member Functions inherited from smith::BasePhysics
const FiniteElementDualshapeDisplacementSensitivity () const
 Internally used accessor for getting the shape displacement sensitivity from the physics modules. More...
 
void CreateParaviewDataCollection () const
 Create a paraview data collection for the physics package if requested.
 
void UpdateParaviewDataCollection (const std::string &paraview_output_dir) const
 Update the paraview states, duals, parameters, and metadata (cycle, time) in preparation for output. More...
 
void initializeBasePhysicsStates (int cycle, double time)
 Protected, non-virtual method to reset physics states to zero. This does not reset design parameters or shape. More...
 
std::unordered_map< std::string, FiniteElementStategetCheckpointedStates (int cycle)
 Accessor for getting all of the primal solutions from the physics modules at a given checkpointed cycle index. More...
 
- Protected Attributes inherited from smith::BasePhysics
std::string name_ = {}
 Name of the physics module.
 
std::shared_ptr< smith::Meshmesh_
 The primary mesh.
 
MPI_Comm comm_
 The MPI communicator.
 
std::vector< const smith::FiniteElementState * > states_
 List of finite element primal states associated with this physics module.
 
std::vector< const smith::FiniteElementState * > adjoints_
 List of finite element adjoint states associated with this physics module.
 
std::vector< const smith::FiniteElementDual * > duals_
 List of finite element duals associated with this physics module.
 
std::vector< const smith::FiniteElementState * > dual_adjoints_
 List of adjoint finite element duals associated with this physics module.
 
std::vector< ParameterInfoparameters_
 A vector of the parameters associated with this physics module.
 
std::unordered_map< std::string, std::vector< smith::FiniteElementState > > checkpoint_states_
 A map containing optionally in-memory checkpointed primal states for transient adjoint solvers.
 
std::unordered_map< std::string, smith::FiniteElementStatecached_checkpoint_states_
 A container relating a checkpointed cycle and the associated finite element state fields. More...
 
std::optional< int > cached_checkpoint_cycle_
 An optional int for disk-based checkpointing containing the cycle number of the last retrieved checkpoint.
 
bool is_quasistatic_ = true
 Whether the simulation is time-independent.
 
double time_
 Current time for the forward pass.
 
double dt_
 Current time step.
 
double max_time_
 The maximum time reached for the forward solver.
 
double min_time_
 The time the forward solver was initialized to.
 
std::vector< double > timesteps_
 A vector of the timestep sizes (i.e. \(\Delta t\)) taken by the forward solver.
 
int cycle_
 Current cycle (forward pass time iteration count)
 
int max_cycle_
 The maximum cycle (forward pass iteration count) reached by the forward solver.
 
int min_cycle_
 The cycle the forward solver was initialized to.
 
double ode_time_point_
 The value of time at which the ODE solver wants to evaluate the residual.
 
int mpi_rank_
 MPI rank.
 
int mpi_size_
 MPI size.
 
std::unique_ptr< mfem::ParaViewDataCollection > paraview_dc_
 DataCollection pointer for optional paraview output.
 
std::unordered_map< std::string, std::unique_ptr< mfem::ParGridFunction > > paraview_dual_grid_functions_
 A optional map of the dual names and duals in grid function form for paraview output.
 
std::unique_ptr< mfem::ParGridFunction > shape_sensitivity_grid_function_
 A optional view of the shape sensitivity in grid function form for paraview output.
 
smith::FiniteElementState shape_displacement_
 The shape displacement field.
 
smith::FiniteElementDual shape_displacement_dual_
 The shape displacement field sensitivity.
 
BoundaryConditionManager bcs_
 Boundary condition manager instance.
 
bool checkpoint_to_disk_
 A flag denoting whether to save the state to disk or memory as needed for dynamic adjoint solves.
 
- Static Protected Attributes inherited from smith::BasePhysics
static constexpr int FLOAT_PRECISION_ = 8
 Number of significant figures to output for floating-point.
 

Detailed Description

BasePhysics implementation that stores differentiable states in gretl for checkpointed reverse solves.

Definition at line 31 of file differentiable_physics.hpp.

Constructor & Destructor Documentation

◆ DifferentiablePhysics()

smith::DifferentiablePhysics::DifferentiablePhysics ( std::shared_ptr< Mesh mesh,
std::shared_ptr< gretl::DataStore >  graph,
const FieldState shape_disp,
const std::vector< FieldState > &  states,
const std::vector< FieldState > &  params,
std::shared_ptr< StateAdvancer advancer,
std::string  physics_name,
const std::vector< ReactionInfo > &  reaction_infos = {} 
)

Construct a differentiable physics wrapper around a state advancer and its tracked fields.

Parameters
meshThe mesh shared by all tracked fields.
graphThe gretl data store used to record forward operations and replay them in reverse.
shape_dispThe shape displacement field held fixed during a forward solve.
statesThe primal state fields advanced by advancer.
paramsThe parameter fields treated as differentiable inputs.
advancerThe algorithm that advances the tracked state fields by one timestep.
physics_nameThe BasePhysics name for this module.
reaction_infosMetadata for differentiable dual outputs produced during advanceTimestep.

Definition at line 41 of file differentiable_physics.cpp.

Member Function Documentation

◆ adjoint()

const FiniteElementState & smith::DifferentiablePhysics::adjoint ( const std::string &  adjoint_name) const
overridevirtual

Accessor for getting named finite element state adjoint solution from the physics modules.

Parameters
adjoint_nameThe name of the Finite Element State adjoint solution to retrieve
Returns
The named adjoint Finite Element State

Implements smith::BasePhysics.

Definition at line 227 of file differentiable_physics.cpp.

◆ advanceTimestep()

void smith::DifferentiablePhysics::advanceTimestep ( double  dt)
overridevirtual

Advance the state variables according to the chosen time integrator.

Advance the underlying ODE with the requested time integration scheme using the previously set timestep.

Parameters
dtThe increment of simulation time to advance the underlying physical system

Implements smith::BasePhysics.

Definition at line 234 of file differentiable_physics.cpp.

◆ completeSetup()

void smith::DifferentiablePhysics::completeSetup ( )
overridevirtual

Complete the setup and allocate the necessary data structures.

This finializes the underlying data structures in a solver and enables it to be run through a timestepping loop.

Implements smith::BasePhysics.

Definition at line 80 of file differentiable_physics.cpp.

◆ computeInitialConditionSensitivity()

const std::unordered_map< std::string, const smith::FiniteElementDual & > smith::DifferentiablePhysics::computeInitialConditionSensitivity ( ) const
overridevirtual

Compute the implicit sensitivity of the quantity of interest with respect to the initial condition fields.

Returns
Fields states corresponding to the sensitivities with respect to the initial condition fields
Precondition
reverseAdjointTimestep with an appropriate adjoint load must be called prior to this method as many times as the forward advance is called.

Reimplemented from smith::BasePhysics.

Definition at line 301 of file differentiable_physics.cpp.

◆ computeTimestepSensitivity()

FiniteElementDual smith::DifferentiablePhysics::computeTimestepSensitivity ( size_t  parameter_index)
overridevirtual

Compute the implicit sensitivity of the quantity of interest used in defining the adjoint load with respect to the parameter field (d QOI/d state * d state/d parameter).

Parameters
parameter_indexthe index of the parameter
Returns
The sensitivity of the QOI (given implicitly by the adjoint load) with respect to the parameter
Precondition
completeSetup(), advanceTimestep(), and reverseAdjointTimestep() must be called prior to this method.

Reimplemented from smith::BasePhysics.

Definition at line 290 of file differentiable_physics.cpp.

◆ computeTimestepShapeSensitivity()

const FiniteElementDual & smith::DifferentiablePhysics::computeTimestepShapeSensitivity ( )
overridevirtual

Compute the implicit sensitivity of the quantity of interest used in defining the adjoint load with respect to the shape displacement field (d QOI/d state * d state/d shape displacement).

Returns
The sensitivity with respect to the shape displacement
Precondition
completeSetup(), advanceTimestep(), and reverseAdjointTimestep() must be called prior to this method.

Reimplemented from smith::BasePhysics.

Definition at line 295 of file differentiable_physics.cpp.

◆ dual()

const FiniteElementDual & smith::DifferentiablePhysics::dual ( const std::string &  dual_name) const
overridevirtual

Accessor for getting named finite element state dual (reaction) solution from the physics modules.

Parameters
dual_nameThe name of the Finite Element State dual solution to retrieve
Returns
The named dual Finite Element State

Reimplemented from smith::BasePhysics.

Definition at line 120 of file differentiable_physics.cpp.

◆ dualNames()

std::vector< std::string > smith::DifferentiablePhysics::dualNames ( ) const
overridevirtual

Get a vector of the finite element state dual (reaction) solution names.

Returns
The dual solution names

Reimplemented from smith::BasePhysics.

Definition at line 109 of file differentiable_physics.cpp.

◆ getFieldStates()

std::vector<FieldState> smith::DifferentiablePhysics::getFieldStates ( ) const
inline

Get the current primal state fields.

Returns
Copies of the tracked state fields at the current cycle.

Definition at line 143 of file differentiable_physics.hpp.

◆ getFieldStatesAndParamStates()

std::vector< FieldState > smith::DifferentiablePhysics::getFieldStatesAndParamStates ( ) const

Get the tracked state fields followed by the tracked parameter fields.

Returns
A concatenated vector of state fields then parameter fields.

Definition at line 311 of file differentiable_physics.cpp.

◆ getInitialFieldStates()

std::vector<FieldState> smith::DifferentiablePhysics::getInitialFieldStates ( ) const
inline

Get the initial state fields captured before any timesteps were advanced.

Returns
Copies of the tracked initial state fields.

Definition at line 139 of file differentiable_physics.hpp.

◆ getReactionStates()

std::vector<ReactionState> smith::DifferentiablePhysics::getReactionStates ( ) const
inline

Get the current differentiable reaction outputs.

Returns
Copies of the current reaction states produced by the last forward advance.

Definition at line 158 of file differentiable_physics.hpp.

◆ getShapeDispFieldState()

FieldState smith::DifferentiablePhysics::getShapeDispFieldState ( ) const

Get the tracked shape displacement field.

Returns
A copy of the shape displacement FieldState.

Definition at line 319 of file differentiable_physics.cpp.

◆ getStateAdvancer()

std::shared_ptr<StateAdvancer> smith::DifferentiablePhysics::getStateAdvancer ( ) const
inline

Get the state advancer used for forward solves.

Returns
The shared state advancer.

Definition at line 162 of file differentiable_physics.hpp.

◆ loadCheckpointedDual()

FiniteElementDual smith::DifferentiablePhysics::loadCheckpointedDual ( const std::string &  state_name,
int  cycle 
)
override

Accessor for getting a single named finite element dual solution from the physics modules at a given checkpointed cycle index.

Parameters
state_nameThe name of the state to retrieve (e.g. "reaction")
cycleThe cycle to retrieve state from
Returns
The named Finite Element Dual

Definition at line 137 of file differentiable_physics.cpp.

◆ loadCheckpointedState()

FiniteElementState smith::DifferentiablePhysics::loadCheckpointedState ( const std::string &  state_name,
int  cycle 
)
overridevirtual

Return a state for a stored checkpoint cycle.

Parameters
state_nameName of the state to retrieve.
cycleCycle index to load.
Returns
A copy of the requested state at the requested cycle.
Note
This implementation only supports the current cycle stored in the gretl checkpoint state.

Reimplemented from smith::BasePhysics.

Definition at line 147 of file differentiable_physics.cpp.

◆ parameter() [1/2]

const FiniteElementState & smith::DifferentiablePhysics::parameter ( const std::string &  parameter_name) const
overridevirtual

Accessor for getting named finite element state parameter fields from the physics modules.

Parameters
parameter_nameThe name of the Finite Element State parameter to retrieve
Returns
The named parameter Finite Element State
Note
The input parameter name should not contain the base physics name. It should be identical to what is in the physics module constructor argument list.

Reimplemented from smith::BasePhysics.

Definition at line 166 of file differentiable_physics.cpp.

◆ parameter() [2/2]

const FiniteElementState & smith::DifferentiablePhysics::parameter ( std::size_t  parameter_index) const
overridevirtual

Accessor for getting indexed finite element state parameter fields from the physics modules.

Parameters
parameter_indexThe index of the Finite Element State parameter to retrieve
Returns
The indexed parameter Finite Element State

Reimplemented from smith::BasePhysics.

Definition at line 158 of file differentiable_physics.cpp.

◆ parameterNames()

std::vector< std::string > smith::DifferentiablePhysics::parameterNames ( ) const
overridevirtual

Get a vector of the finite element state parameter names.

Returns
The parameter names

Reimplemented from smith::BasePhysics.

Definition at line 107 of file differentiable_physics.cpp.

◆ resetAdjointStates()

void smith::DifferentiablePhysics::resetAdjointStates ( )
overridevirtual

Base method to reset physics states back to the end of time to start adjoint calculations again. This does not reset design parameters or shape.

Reimplemented from smith::BasePhysics.

Definition at line 98 of file differentiable_physics.cpp.

◆ resetStates()

void smith::DifferentiablePhysics::resetStates ( int  cycle = 0,
double  time = 0.0 
)
overridevirtual

Base method to reset physics states to the initial time. This does not reset design parameters or shape.

Parameters
[in]cycleThe simulation cycle (i.e. timestep iteration) to intialize the physics module to
[in]timeThe simulation time to initialize the physics module to

Implements smith::BasePhysics.

Definition at line 86 of file differentiable_physics.cpp.

◆ reverseAdjointTimestep()

void smith::DifferentiablePhysics::reverseAdjointTimestep ( )
overridevirtual

Reverse one recorded timestep through the gretl graph.

Restores the primal state values and adjoint values at the start of the just-reversed step.

Reimplemented from smith::BasePhysics.

Definition at line 256 of file differentiable_physics.cpp.

◆ setAdjointLoad()

void smith::DifferentiablePhysics::setAdjointLoad ( std::unordered_map< std::string, const smith::FiniteElementDual & >  string_to_dual)
overridevirtual

Set the loads for the adjoint reverse timestep solve.

Parameters
string_to_dualAn unorder map from the state field name string to the finite element adjoint/dual load The adjoint load is d(qoi)/d(state)

Reimplemented from smith::BasePhysics.

Definition at line 198 of file differentiable_physics.cpp.

◆ setDualAdjointBcs()

void smith::DifferentiablePhysics::setDualAdjointBcs ( std::unordered_map< std::string, const smith::FiniteElementState & >  string_to_bc)
overridevirtual

Set the dual loads (dirichlet values) for the adjoint reverse timestep solve This must be called after setAdjointLoad.

Parameters
string_to_bcAn unorder map from dual name string to finite element adjoint/state boundary condition The adjoint bc is d(qoi)/d(dual)

Reimplemented from smith::BasePhysics.

Definition at line 212 of file differentiable_physics.cpp.

◆ setParameter()

void smith::DifferentiablePhysics::setParameter ( const size_t  parameter_index,
const FiniteElementState parameter_state 
)
overridevirtual

Deep copy a parameter field into the internally-owned parameter used for simulations.

Parameters
parameter_indexthe index of the parameter
parameter_statethe values to use for the specified parameter
Precondition
The discretization space and mesh for this finite element state must be consistent with the arguments provided in the physics module constructor.

The physics module constructs its own parameter FiniteElementState in the physics module constructor. This call sets the internally-owned parameter object by value (i.e. deep copies) from the given argument.

Reimplemented from smith::BasePhysics.

Definition at line 175 of file differentiable_physics.cpp.

◆ setShapeDisplacement()

void smith::DifferentiablePhysics::setShapeDisplacement ( const FiniteElementState shape_displacement)
overridevirtual

Set the current shape displacement for the underlying mesh.

Parameters
shape_displacementThe shape displacement to copy for use in the physics module

This updates the shape displacement field associated with the underlying mesh. Note that the input FiniteElementState is deep copied into the shape displacement object owned by the StateManager.

Reimplemented from smith::BasePhysics.

Definition at line 183 of file differentiable_physics.cpp.

◆ setState()

void smith::DifferentiablePhysics::setState ( const std::string &  state_name,
const FiniteElementState s 
)
overridevirtual

Set the primal solution field values of the underlying physics solver.

Implements smith::BasePhysics.

Definition at line 188 of file differentiable_physics.cpp.

◆ shapeDisplacement()

const FiniteElementState & smith::DifferentiablePhysics::shapeDisplacement ( ) const
overridevirtual

Accessor for getting the shape displacement field from the physics modules.

Returns
The shape displacement finite element state

Reimplemented from smith::BasePhysics.

Definition at line 156 of file differentiable_physics.cpp.

◆ state()

const FiniteElementState & smith::DifferentiablePhysics::state ( const std::string &  state_name) const
overridevirtual

Accessor for getting named finite element state primal solution from the physics modules.

Parameters
state_nameThe name of the Finite Element State primal solution to retrieve
Returns
The named primal Finite Element State

Implements smith::BasePhysics.

Definition at line 111 of file differentiable_physics.cpp.

◆ stateNames()

std::vector< std::string > smith::DifferentiablePhysics::stateNames ( ) const
overridevirtual

Get a vector of the finite element state primal solution names.

Returns
The primal solution names

Implements smith::BasePhysics.

Definition at line 105 of file differentiable_physics.cpp.


The documentation for this class was generated from the following files: