Adjoint design sensitivity analysis is used to compute derivatives of design
responses with respect to one or more design variables.
Adjoint design
sensitivity analysis:
is useful for nonparametric structural design and optimization workflows to produce
components that are lightweight, rigid, and durable;
is supported for the following approaches to structural sensitivity analysis: elemental
topology sensitivity, elemental sizing sensitivity with shells, elemental sizing sensitivity
with circular beams, nodal shape sensitivities for continuum elements, and nodal bead
sensitivities for shell elements;
provides the sensitivities of selective design responses with respect to the appropriate
design variables for each of the above analysis types;
is available for static stress, transient dynamic, and frequency analysis using models
that have only stress/displacement elements;
accounts for contact, geometric, and some material nonlinearities; and
is often carried out within a combined Abaqus-Tosca design optimization workflow but can also be used in a stand-alone Abaqus/Standard analysis to output design sensitivities.
Adjoint design sensitivity analysis is typically used in sensitivity analysis having many
design parameters. Alternatively, you can use Direct Design Sensitivity Analysis in Abaqus/Standard for parametric design optimization having only a few design parameters and many design
responses.
Adjoint design sensitivity analysis is used to compute the derivatives of design responses with
respect to one or more design variables. These derivatives are commonly referred to as
sensitivities, because they provide a first-order measure of how sensitive the design response
is to a change in the design variables. The adjoint design sensitivity analysis capability is
useful when the design optimization methodology requires a relatively small set of design
responses, but a large number of design variables, typically one or more variables associated
with each element or node of the design domain. This is the case for topology, sizing, shape,
and bead sensitivities, where the adjoint method for computing design sensitivities is
significantly more cost effective computationally compared to the direct method. More details
on the different kinds of structural optimization methods can be found in . However, adjoint sensitivity analysis can also be used in a
stand-alone Abaqus/Standard analysis (that is, outside of an iterative design optimization workflow using Abaqus/Standard and Tosca) to obtain design sensitivities at any stage during the design process.
Adjoint Sensitivity Method for Transient Dynamics Using Abaqus/Standard
The adjoint sensitivity approach for transient dynamic problems is based on the implicit
dynamic procedure in Abaqus/Standard. Some classes of problems are better suited than others for such an approach. These
problems include low frequency–mode bending-dominated deformations and low-velocity crash
problems (such as side crashes and other bending-dominated crashes). Other problems in this
category include battery frame crashes, pedestrian head impacts, dynamics of machinery, and
compliant flexible dynamic mechanisms. Typically, such problems use 30–300 increments to
capture the correct physics and applying Abaqus/Standard is appropriate. Therefore, the adjoint sensitivity method for transient dynamics is
applicable for these situations.
However, for high frequency–mode crash problems (for example, axial deformation and
crushing), very small time increments are required to capture the correct physics. The run
time for many practical applications of this latter type are not feasible for Abaqus/Standard due to a very large number of time increments. Therefore, Abaqus/Explicit is better suited to solve this class of problems. Also, Abaqus/Standard might often fail to converge when the models have significant nonlinearities (many
contacts and many buckling modes). Such problems are also solved more effectively using Abaqus/Explicit.
Activating Adjoint Sensitivity Analysis
You activate an adjoint sensitivity analysis on a step-by-step basis.
Activating Adjoint Sensitivity Analysis in Multiple Steps
If you activate an adjoint sensitivity calculation in any general step during the analysis, it
is activated for all general steps in the analysis, including steps before the activating
step. Likewise, if you activate an adjoint sensitivity calculation in any perturbation
step during the analysis, it is activated for all perturbation steps in the analysis,
including steps before the activating step. In both of these situations, the sensitivity
calculations occur for any given step that includes responses. In a linear perturbation
step with multiple load cases, the design sensitivity calculations are carried out for all
the load cases. The adjoint sensitivity calculations cannot be selectively deactivated for
some of the load cases.
Specifying Design Variables
Unlike direct design sensitivity analysis (which is commonly used for
parametric design and optimization), adjoint design sensitivity analysis is
commonly used for nonparametric design and optimization. The design parameters
are more commonly referred to as design variables in this case. Unlike direct
design sensitivity analysis (where the number of design parameters is
relatively small in number), an adjoint design sensitivity analysis typically
has one or more design variables associated with each element in the design
domain.
The specific choices for design variables depend on the type of design
sensitivities that you desire, as listed in the table below. For topology and
sizing sensitivities, the design variables and the corresponding design
sensitivities are element-based, while for shape and bead sensitivities these
quantities are node-based.
Type of sensitivity
Design variables
Topology
Relative material density
Sizing with shells
Shell element thickness
Sizing with circular section beams
Beam element radius
Shape or bead
Nodal positions
Topology Sensitivity
The design variables for topology optimization are the material relative
densities for the elements in the design domain. The material relative density
is a nondimensional quantity that can take a value that is greater than 0 but
less than or equal to 1. A value of 1 corresponds to the original material
density, while a value that is close to 0 corresponds to removal of material to
create a void. For computing design response and sensitivities,
Abaqus/Standard
makes use of scaling factors and their derivatives for stiffness, mass, and
stress design response, respectively. The scaling factors and their derivatives
are all functions of the relative material density, and you can use a spatial
distribution to specify them directly. All elements in the design domain must
explicitly specify a value for the different scaling factors and their
derivatives as part of the spatial distribution definition. An element for
which the scaling factors and its derivatives are not specified is assumed not
to be a part of the design domain.
Sizing Sensitivity with Shell Elements
The design variables for sizing with shell elements are the shell thicknesses. All elements in
the design domain must explicitly specify a value for the shell thickness using a spatial
distribution. An element for which the thickness is not specified in the spatial
distribution definition is assumed not to be a part of the design domain.
Sizing Sensitivity with Circular Section Beam Elements
The design variables for sizing with circular section beam elements are the beam radii. All
elements in the design domain must explicitly specify a value for the beam radius using a
spatial distribution. An element for which the radius is not specified in the spatial
distribution definition is assumed not to be a part of the design domain. Adjoint design
sensitivity calculations with circular section beams is supported only for elements with
section behaviors that are integrated during the analysis.
You must request output variable BRADIUS, which contains the beam
radius for a circular cross-section beam, to render (visualize) the beam elements with
varying radii properly. Otherwise, all beam radii are rendered with a value of 1.0.
Shape Sensitivity with Solid Elements
The design variables for shape sensitivity analysis with solid elements are
the positions (coordinates) for all nodes that are in the design domain. All
nodes in the design domain must explicitly specify, as part of a spatial
distribution, a value of the displacement components relative to their original
locations. A node for which the displacement is not specified through a spatial
distribution definition is assumed to not be a part of the design domain.
Bead Sensitivity with Shell Elements
The design variables for a bead sensitivity analysis with shell elements
are the positions (coordinates) of all nodes that are in the design domain. All
nodes in the design domain must explicitly specify, as part of a spatial
distribution, a value of the displacement components relative to their original
locations. A node for which the displacement is not specified through a spatial
distribution definition is assumed to not be a part of the design domain.
Specifying Design Responses in a Static or an Eigenfrequency Analysis
An adjoint design sensitivity analysis supports three kinds of design responses: element
responses, global responses, and node responses. The valid element responses are von Mises
stress, signed von Mises stress (the sign of this quantity is the same as the sign of the
trace of the stress tensor), maximum principal stress, minimum principal stress, plastic
strain magnitude, Neuber and Glinka plasticity correction quantities (Plasticity Corrections), a
user-defined response based on either the stress or the plastic strain, and internal forces.
A stress- or plastic strain–based design response represents a scalar measure calculated
using a specified operator (by default, the maximum) on the values in the specified element
set. Abaqus/Standard uses the stresses or the plastic strains at the element integration points to compute
stress- or plastic strain–based design responses and sensitivities. The internal forces
response represents a scalar measure calculated using a specified operator (by default, the
sum) on the internal nodal forces over a set of specified nodes from a specified set of
elements.
Only two types of global responses are available: stiffness and eigenfrequency. The global
stiffness response, available in a static procedure, provides a measure of the stiffness of
the structure that accounts for both external loading and prescribed displacements. It is
defined as
where , , , and refer to vectors representing external loads, displacements, reaction
forces, and prescribed displacements on the structure. For a structure that has only
external loading and no prescribed displacements, the second term is identically zero, and
only the first term produces a nonzero contribution. The global eigenfrequency response,
available in an eigenfrequency procedure, refers to one or more eigenfrequencies of the
structure.
The node responses refer to quantities such as displacements or reaction forces and moments
at one or more nodes in the structure.
You request design responses using a syntax analogous to that for specifying output
requests to the output database. There are no default responses. If no responses are
requested, then no design responses and no sensitivities are output. Specifying a response
outputs both the design response value and the response sensitivities.
For internal forces and internal moments in element responses, both an element and a node
set must be specified to define the design response. Each node in the specified node set
receives contributions from all the elements in the specified element set that are attached
to it. For element responses and node responses, if the node set contains more than one
node, the design response contains the sum of the contributions from all the nodes in the
node set.
By default, the sensitivity for the stress and the plastic strain magnitude responses are
approximated with aggregation functions over the specified element set, where the default is
an aggregation function representing the maximum. Other aggregation functions approximating
the minimum and the difference between the maximum and minimum values are also available.
You apply these operator types for the design response. Additional operators for elemental
design responses are the sum and the average over the elemental integration points of a
given element set.
Defining the Design Response in User Subroutine UELEMDRESP
For a user-defined element design response based on stress or plastic strain, you must
define the design response in user subroutine UELEMDRESP. You specify an element
response identifier label (such as TRESCA,
MISES_PE, or DRESP_1), the name of a table
collection that refers to a property or parameter table, and output variable
S or
PE. The specified table collection is
activated before the user subroutine is called. If no table collection is specified, Abaqus activates the table collection, if any, that is associated with the material definition
of the elements in the design domain.
Requesting Responses in Multiple Steps
Unless specified otherwise, response requests defined in a step propagate to subsequent
steps according to the following rules:
Requests in general steps propagate to subsequent general steps.
Requests in linear perturbation steps propagate to subsequent consecutive linear
perturbation steps.
Responses in a Linear Static Perturbation Step
For topology sensitivities in a static linear perturbation step following a general
static step, the design responses are computed based on the total values of the
appropriate physical quantities. Here, total refers to the sum of the physical quantities
from the general and the perturbation steps. This approach is particularly useful when the
general step represents the preloading and the assembly process of a structure while the
perturbation step, which is typically composed of a number of load cases, represents
service and live loads. The perturbation step may or may not use the Linear
Complementarity Problem (LCP) solution technique (see
Linear Complementarity Problem (LCP) Solution Technique for Solving Contact Problems).
The approach outlined above is not available for sizing, shape, and bead sensitivities.
Restrictions on Responses
The available design responses for various procedure types are described in the tables
below.
Procedure type
Physical quantity
Node response
Static
Displacement components
U1,
U2, U3
Displacement magnitude
UMAG
Rotation components
UR1,
UR2, UR3
Rotation magnitude
URMAG
Reaction force components
RF1,
RF2, RF3
Reaction force magnitude
RFMAG
Reaction moment components
RM1,
RM2, RM3
Reaction moment magnitude
RMMAG
Procedure type
Physical quantity
Element response
Static
Internal force components
INTF1,
INTF2, INTF3
Internal force magnitude
INTFMAG
Internal moment components
INTM1,
INTM2, INTM3
Internal moment magnitude
INTMMAG
Von Mises equivalent stress
MISES
Signed von Mises equivalent stress
S_MISES
Maximum principal stress
SP3
Minimum principal stress
SP1
Neuber equivalent stress
NBSEQ
Glinka equivalent stress
GKSEQ
Neuber equivalent strain
NBEEQ
Glinka equivalent strain
GKEEQ
Plastic strain magnitude
PEMAG
Neuber equivalent plastic strain
NBPEEQ
Glinka equivalent plastic strain
GKPEEQ
Procedure type
Physical quantity
Global response
Static
Global stiffness measure
STIFF
Frequency
Eigenfrequency
FREQ
Specifying Design Responses in a Transient Dynamic Analysis
A transient dynamic adjoint design sensitivity analysis supports two kinds of design
responses: node responses and element responses. The node responses refer to quantities such
as displacements or reaction forces and moments at one or more nodes in the structure. Most
of the available responses are node responses; the only valid element response is internal
rate of work (power flow) for a given element set.
You request design responses using a syntax analogous to that for specifying output
requests to the output database. There are no default responses. If no responses are
requested, no design responses and no sensitivities are output. Specifying a response
outputs both the design response value and its sensitivities. You must specify a node set or
an element set as part of a node or an element design response definition. If the set
contains more than one entity (node or element), the design response contains the sum of the
contributions from all of the entities in the set.
Optionally, you can specify one or more time points at which a physical quantity of
interest is to be treated as a design response. If no time point is specified, the time
point corresponding to the end of the step is used for the design response.
Restrictions on Responses
The available design responses for a transient dynamic procedure are described in the
tables below.
Procedure type
Physical quantity
Node response
Transient dynamic
Displacement components
U1,
U2, U3
Displacement magnitude
UMAG
Rotation components
UR1,
UR2, UR3
Rotation magnitude
URMAG
Translational velocity components
V1,
V2, V3
Translational velocity magnitude
VMAG
Rotational velocity components
VR1,
VR2,
VR3
Rotational velocity magnitude
VRMAG
Translational acceleration components
A1,
A2, A3
Translational acceleration magnitude
AMAG
Rotational acceleration components
AR1,
AR2,
AR3
Rotational acceleration magnitude
ARMAG
Reaction force components
RF1,
RF2, RF3
Reaction moment components
RM1,
RM2, RM3
Procedure type
Physical quantity
Element response
Transient dynamic
Rate of internal work
ELPF
Material Options
The adjoint sensitivity calculations are supported with elastic,
hyperelastic, and isotropic hardening Mises plasticity material models. With
plasticity, the sensitivity calculations assume that the loading is monotonic
(that is, no unloading) and proportional. The sensitivity results are not
accurate if the above assumptions are not valid.
Output
The responses and response sensitivities are output only to the output
database (.odb) file; sensitivity output to the data
(.dat) file and results (.fil) file
is not supported. The design responses are output as follows:
The number is an integer that is present only if there is a need to differentiate two
design responses of the same type. For example, if there is a single design response U1, the
name of the output variable is DResp_U1. If there are two
design responses of type U1, there are two output variables,
DResp_U1 and DResp_U1_1,
respectively, to distinguish between the two. The output database also includes the design
response name to help distinguish similar design responses.
The names of the sensitivities are related to the names of the design
responses as follows:
The depends on the type of sensitivity analysis. For topology sensitivity the
design variable name is pre-fixed by Abaqus/Standard to be _density. For example, if the design response is
U1, the corresponding sensitivity is d_U1__density. For
shape and bead sensitivities, the design variable name is pre-fixed by Abaqus/Standard to be _position. In this case, the sensitivity output
represents a vector with three components in the X-,
Y-, and Z-directions. For example, if the design
response is U1, the corresponding shape or bead sensitivities are a vector
d_U1__position. For sizing sensitivities, the design
variable name refers to the name of the spatial distribution that is used to specify the
values of the design variables. The number is an integer that is present only if there is a need to differentiate two
design sensitivities that are of the same type.
Limitations
An adjoint design sensitivity analysis has the following limitations:
Inertia relief loads are supported only for three-dimensional elements in linear perturbation
steps and load cases.
The isotropic Mises plasticity model is the only supported plasticity
material model. For this model, the sensitivity calculations assume that all
material points undergo proportional loading with no unloading.
For workflows that involve a (general) preload step followed by a (linear
perturbation) live load step, the topology response and sensitivities are based
on total values of different physical quantities. This is not the case for
sizing, shape, and bead response sensitivities, where the calculations are
based on perturbation quantities only.
Nodes that are involved in a multi-point constraint definition, either as a main node or a
secondary node, cannot be part of the design domain for a shape or bead sensitivity
analysis.
Continuum shell elements are not supported for sizing sensitivities.
The following element types are not supported for shape sensitivities: continuum
elements with incompatible modes; generalized plane strain elements; cylindrical solid
elements; axisymmetric solid elements with nonlinear, asymmetric deformation; continuum
solid shell elements; cylindrical membrane elements; and axisymmetric membrane elements
(with and without twist).
The following element types are not supported for bead sensitivities: continuum shell
elements; axisymmetric shell elements; axisymmetric shell elements with nonlinear,
asymmetric deformation; conventional three-dimensional shell elements with five degrees
of freedom per node; and triangular facet thin shell elements
(STRI3).
The internal force design response cannot be associated with elements that have secondary
nodes (for any feature that uses a main-secondary concept, such as a multi-point
constraint).
Only the Lanczos eigensolver can be used during an eigenfrequency analysis.
In a transient dynamic procedure, shape or bead sensitivity analysis is supported only
for moderate dissipation and quasi-static applications.
A transient dynamic shape sensitivity analysis is not supported for hybrid, modified,
and incompatible-mode elements as design elements, but these elements can be present in
the model.
A transient dynamic bead or shape sensitivity analysis is not supported with thermal
loads.
A transient dynamic sensitivity analysis must contain only a single dynamic step.
For a transient sensitivity analysis, the specification of the time points can contain
only a single time point.
Material damping is not supported for transient sensitivity calculations. Numerical
damping contributions are not consistently taken into account for the adjoint transient
sensitivities. Inherently, the numerical damping (for example, for moderate dissipation
and quasi-static applications) is implemented consistently for the adjoint transient
sensitivities.
For three-dimensional Timoshenko beam elements, a transient sensitivity analysis
supports only isotropic rotary inertia. As a result the rotary inertia associated with the
torsional mode is used for all rotational degrees of freedom.
Input File Template
Input file template for sensitivity analysis in a static procedure:
HEADING
…
NODE, NSET=nsetData lines to define the nodesELEMENT, TYPE=element type, ELSET=elset_elasticData lines to define the elementsSOLID SECTION, ELSET=elset_elastic, MATERIAL=elasticMATERIAL, NAME=elasticELASTICData lines to define the elastic propertiesSTEP, SENSITIVITY=ADJOINTSTATIC
…
DESIGN RESPONSE, NAME=response nameELEMENT RESPONSE, ELSET=elset nameData line to specify the element response identifier keyDESIGN RESPONSE, NAME=response nameELEMENT RESPONSE, ELSET=elset name, NSET=nset nameData line to specify the element response identifier keyDESIGN RESPONSE, NAME=response nameNODE RESPONSE, NSET=nsetData line to specify the nodal response identifier keyDESIGN RESPONSE, NAME=response nameGLOBAL RESPONSEData lines to specify the global response identifier keysEND STEP
Input file template for sensitivity analysis in a transient dynamic procedure:
HEADING
…
NODE, NSET=nsetData lines to define the nodesELEMENT, TYPE=element type, ELSET=elset_elasticData lines to define the elementsSOLID SECTION, ELSET=elset_elastic, MATERIAL=elasticMATERIAL, NAME=elasticELASTICData lines to define the elastic propertiesDENSITYData lines to define density propertiesTIME POINTS, NAME=TimePoint_Name1Data lines to define a list of time pointsTIME POINTS, NAME=TimePoint_Name2Data lines to define a list of time pointsSTEP, SENSITIVITY=ADJOINTDYNAMIC
…
DESIGN RESPONSE, NAME=response name, TIME MARKS=YES, TIME POINTS=TimePoint_Name1ELEMENT RESPONSE, ELSET=elset nameData line to specify the element response identifier keyDESIGN RESPONSE, NAME=response name, TIME MARKS=YES, TIME POINTS=TimePoint_Name2NODE RESPONSE, NSET=nsetData line to specify the nodal response identifier keyEND STEP