Adjoint Design Sensitivity Analysis

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.

This page discusses:

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.

For a user-defined design response based on stress or plastic strain, you must define the design response in user subroutine UELEMDRESP (see Defining the Design Response in User Subroutine UELEMDRESP).

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

G s t i f f = 1 2 P U 1 2 R F U p r e s ,

where P , U , R F , and U p r e s 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:

  1. Requests in general steps propagate to subsequent general steps.
  2. 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:

DResp_{response_name}_{N}

The number N 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:

d_{response_name}_{design_variable_name}_{N}

The d e s i g n _ v a r i a b l e _ n a m e 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 N 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:

HEADINGNODE, NSET=nset
Data lines to define the nodes
ELEMENT, TYPE=element type, ELSET=elset_elastic
Data lines to define the elements
SOLID SECTION, ELSET=elset_elastic, MATERIAL=elastic
MATERIAL, NAME=elastic
ELASTIC
Data lines to define the elastic properties
STEP, SENSITIVITY=ADJOINT
STATICDESIGN RESPONSE, NAME=response name
ELEMENT RESPONSE, ELSET=elset name
Data line to specify the element response identifier key
DESIGN RESPONSE, NAME=response name
ELEMENT RESPONSE, ELSET=elset name, NSET=nset name
Data line to specify the element response identifier key
DESIGN RESPONSE, NAME=response name
NODE RESPONSE, NSET=nset
Data line to specify the nodal response identifier key
DESIGN RESPONSE, NAME=response name
GLOBAL RESPONSE
Data lines to specify the global response identifier keys
END STEP

Input file template for sensitivity analysis in a transient dynamic procedure:

HEADINGNODE, NSET=nset
Data lines to define the nodes
ELEMENT, TYPE=element type, ELSET=elset_elastic
Data lines to define the elements
SOLID SECTION, ELSET=elset_elastic, MATERIAL=elastic
MATERIAL, NAME=elastic
ELASTIC
Data lines to define the elastic properties
DENSITY
Data lines to define density properties
TIME POINTS, NAME=TimePoint_Name1
Data lines to define a list of time points
TIME POINTS, NAME=TimePoint_Name2
Data lines to define a list of time points
STEP, SENSITIVITY=ADJOINT
DYNAMICDESIGN RESPONSE, NAME=response name, TIME MARKS=YES, TIME POINTS=TimePoint_Name1
ELEMENT RESPONSE, ELSET=elset name
Data line to specify the element response identifier key
DESIGN RESPONSE, NAME=response name, TIME MARKS=YES, TIME POINTS=TimePoint_Name2
NODE RESPONSE, NSET=nset
Data line to specify the nodal response identifier key
END STEP