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

Abstract WeakForm class. More...

#include <weak_form.hpp>

Public Member Functions

 WeakForm (std::string name)
 base constructor takes the name of the physics More...
 
virtual ~WeakForm ()
 destructor
 
virtual mfem::Vector residual (TimeInfo time_info, ConstFieldPtr shape_disp, const std::vector< ConstFieldPtr > &fields, const std::vector< ConstQuadratureFieldPtr > &quad_fields={}) const =0
 Virtual interface for computing the residual vector of a weak form. More...
 
virtual std::unique_ptr< mfem::HypreParMatrix > jacobian (TimeInfo time_info, ConstFieldPtr shape_disp, const std::vector< ConstFieldPtr > &fields, const std::vector< double > &field_argument_tangents, const std::vector< ConstQuadratureFieldPtr > &quad_fields={}) const =0
 Derivative of the residual with respect to specified field arguments: sum_j d{r}/d{fields}_j * argument_tangents[j], j are input fields (columns) More...
 
virtual void jvp (TimeInfo time_info, ConstFieldPtr shape_disp, const std::vector< ConstFieldPtr > &fields, const std::vector< ConstQuadratureFieldPtr > &quad_fields, ConstFieldPtr v_shape_disp, const std::vector< ConstFieldPtr > &v_fields, const std::vector< ConstQuadratureFieldPtr > &v_quad_fields, DualFieldPtr jvp_reaction) const =0
 Jacobian-vector product, will overwrite any existing values in jvp_reactions. More...
 
virtual void vjp (TimeInfo time_info, ConstFieldPtr shape_disp, const std::vector< ConstFieldPtr > &fields, const std::vector< ConstQuadratureFieldPtr > &quad_fields, ConstFieldPtr v_field, DualFieldPtr vjp_shape_disp_sensitivity, const std::vector< DualFieldPtr > &vjp_sensitivities, const std::vector< QuadratureFieldPtr > &vjp_quadrature_sensivities) const =0
 Vector-Jacobian product, will += into existing values in vjpFields. More...
 
std::string name () const
 name
 

Detailed Description

Abstract WeakForm class.

Definition at line 36 of file weak_form.hpp.

Constructor & Destructor Documentation

◆ WeakForm()

smith::WeakForm::WeakForm ( std::string  name)
inline

base constructor takes the name of the physics

Parameters
nameprovide a name corresponding to the physics

Definition at line 41 of file weak_form.hpp.

Member Function Documentation

◆ jacobian()

virtual std::unique_ptr<mfem::HypreParMatrix> smith::WeakForm::jacobian ( TimeInfo  time_info,
ConstFieldPtr  shape_disp,
const std::vector< ConstFieldPtr > &  fields,
const std::vector< double > &  field_argument_tangents,
const std::vector< ConstQuadratureFieldPtr > &  quad_fields = {} 
) const
pure virtual

Derivative of the residual with respect to specified field arguments: sum_j d{r}/d{fields}_j * argument_tangents[j], j are input fields (columns)

Parameters
time_infotime and timestep information
shape_dispsmith::FiniteElementState*, change in model coordinates relative to the initially read in mesh
fieldsvector of smith::FiniteElementState*
field_argument_tangentsspecifies the weighting of the residual derivative with respect to each field
quad_fieldsvector of ConstQuadratureFieldPtr
Returns
std::unique_ptr<mfem::HypreParMatrix> returns sum_j d{r}/d{fields}_j * argument_tangents[j], where {fields}_j is the jth field, {r} is the residual

◆ jvp()

virtual void smith::WeakForm::jvp ( TimeInfo  time_info,
ConstFieldPtr  shape_disp,
const std::vector< ConstFieldPtr > &  fields,
const std::vector< ConstQuadratureFieldPtr > &  quad_fields,
ConstFieldPtr  v_shape_disp,
const std::vector< ConstFieldPtr > &  v_fields,
const std::vector< ConstQuadratureFieldPtr > &  v_quad_fields,
DualFieldPtr  jvp_reaction 
) const
pure virtual

Jacobian-vector product, will overwrite any existing values in jvp_reactions.

Parameters
time_infotime and timestep information
shape_dispsmith::FiniteElementState*, change in model coordinates relative to the initially read in mesh
fieldsvector of smith::FiniteElementState*
quad_fieldsvector of ConstQuadratureFieldPtr
v_shape_dispshape_displacement tangent
v_fieldsfield tangents, right hand side 'v' fields
v_quad_fieldsquadrature_field_tangents
jvp_reactionoutput jvps: d{r} / d{fields}_j * fieldsV[j] nullptr fieldsV are assumed to be all zero to avoid extra calculations

◆ residual()

virtual mfem::Vector smith::WeakForm::residual ( TimeInfo  time_info,
ConstFieldPtr  shape_disp,
const std::vector< ConstFieldPtr > &  fields,
const std::vector< ConstQuadratureFieldPtr > &  quad_fields = {} 
) const
pure virtual

Virtual interface for computing the residual vector of a weak form.

Parameters
time_infotime and timestep information
shape_dispsmith::FiniteElementState*, change in model coordinates relative to the initially read in mesh
fieldsvector of smith::FiniteElementState*
quad_fieldsvector of ConstQuadratureFieldPtr
Returns
mfem::Vector

◆ vjp()

virtual void smith::WeakForm::vjp ( TimeInfo  time_info,
ConstFieldPtr  shape_disp,
const std::vector< ConstFieldPtr > &  fields,
const std::vector< ConstQuadratureFieldPtr > &  quad_fields,
ConstFieldPtr  v_field,
DualFieldPtr  vjp_shape_disp_sensitivity,
const std::vector< DualFieldPtr > &  vjp_sensitivities,
const std::vector< QuadratureFieldPtr > &  vjp_quadrature_sensivities 
) const
pure virtual

Vector-Jacobian product, will += into existing values in vjpFields.

Parameters
time_infotime and timestep information
shape_dispsmith::FiniteElementState*, change in model coordinates relative to the initially read in mesh
fieldsvector of smith::FiniteElementState*
quad_fieldsvector of ConstQuadratureFieldPtr
v_fieldleft hand side 'v' field
vjp_shape_disp_sensitivityvjp for shape_displacement: v_fields * d{r} / d{shape_disp}
vjp_sensitivitiesoutput vjps, 1 per input field: v_fields * d{r} / d{fields}_j
vjp_quadrature_sensivitiesoutput vjps, 1 per input quadrature field: v_field * d{r} / d{quadrature_field}_j

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