A method for optimization against cure-induced distortion in composite parts

This paper describes a novel method developed for the optimization of composite components against distortion caused by cure-induced residual stresses. A novel ply stack alteration algorithm is described, which is coupled to a parametrized CAD/FE model used for optimization. Elastic strain energy in 1D spring elements, used to constrain the structure during analysis, serves as an objective function incorporating aspects of global/local part stiffness in predicted distortion. Design variables such as the number and stacking sequence of plies, and geometric parameters of the part are used. The optimization problem is solved using commercial software combined with Python scripts. The method is exemplified with a case study of a stiffened panel subjected to buckling loads. Results are presented, and the effectiveness of the method to reduce the effects of cure-induced distortion is discussed.


Optimization of composite structures
Composite materials have long been employed in aerospace applications to achieve high strength and stiffness with lower weight than corresponding metallic components. Since performance per weight is a primary motivation for choosing composites, they have been the primary focus of a significant body of work connected to optimization. Stiffness, mass, and global layout-of a highly anisotropic and layered material-are common choices for objective functions. Constraining factors in the design problem are often strength (or failure indices), or stability criteria such as buckling. To gain insight into the volume of research on the topic of optimization of composite materials and structures, the review articles by Nikbakt et al. (2018); Albazzan et al. (2019), Ghiasi et al. (2009), and Ghiasi et al. (2010) would be a good starting point to explore nearly 750 publications on the topic. In short, it is a highly relevant and challenging topic of research in structural design which has attracted much attention over the years.
Topology (or global layout) of material has been studied by many, as exemplified in Xu et al. (2018). Methods such as the use of penalty functions, branch and bound algorithms, genetic algorithms, etc. have been used to solve discrete variable problems in the literature for at least 20 years (Arora 2000). Such problems often arise in composite design where fixed sets of orientations are permissible, or integer numbers of layers are addressed. Some of these methods have received more focus than others in the composite domain. For example, shape functions combined with penalization to create the stacking sequence for any given element from a predetermined set of orientations has been studied (Bruyneel 2011). Alternatively, the discrete problem can be converted to a continuous problem such that gradient-based algorithms can be used (Sørensen et al. 2014;Sjølund et al. 2018;Lund 2018;Wu et al. 2019). Hyperbolic function parametrization has also been recently presented and compared with these methods (Hozic et al. 2021). A mathematical description of the ply areas and a set of conventional layup design rules in a mixed discrete-continuous optimization problem are Responsible Editor: Zhen Luo presented by Allaire and Delgado (2016), and referred to as the level-set method. More recently, Nasab et al. (2018) also use a level-set method including the idea of a stackingsequence table (SST) incorporating design rules.
The literature addressing the integration of cure distortions into the structural optimization is somewhat more limited. Some examples do exist, such as Hufenbach and Gude (2002) investigating the curvature of a flat plate with the use of a genetic algorithm, and Elseifi (1998) exploring variability in manufacture on a specific set of designs within a genetic algorithm-based optimization scheme. More often, the problem of cure-induced distortion is addressed through the optimization of the manufacturing and curing process in itself (Olivier and Cottu 1998;Struzziero and Skordos 2017;Struzziero et al. 2019;Struzziero and Teuwen 2020). While this can also be a very effective approach, altering a cure schedule within an autoclave to match the part being processed may prove challenging in practice.
Stability (or buckling resistance) is also a topic of specific interest for composite structures. Composites are generally well suited for use in relatively thin layers with in-plane loadings. When trying to optimize the global material layout using integer values of layers with clear boundaries between layers, this results in a step-changes in structural stiffness, and achieving global stability of the resulting structures can be a challenge. Here, the analogous problem of stability within the domain of pure topology optimization as discussed by, e.g. Ferrari and Sigmund (2019) and Ferrari and Sigmund (2020) can provide insight into the challenge. For the case of the problem addressed in this paper, the addition of cure distortion into the optimization problem further exacerbates the difficulty with stability as it effectively introduces a geometric perturbation into the buckling problem.
The method described within this paper is based on a fixed curing process but could easily be adapted for further alterations of the cure schedule if necessary. The novelty in the current work is addressing the problem of cure-induced distortion with the help of the stacking sequence-which has an integral role in cure distortion-as a design parameter. In order to do this, it is necessary to connect the stacking sequence to the distortion in a meaningful, measurable, and repeatable way.
From the vast body of work on composite optimization, a few general conclusions can be drawn that are of primary interest in the present study: 1. There is no single universally accepted 'best practice' method for layup thickness, shape, and stackingsequence optimization. There are advantages and disadvantages to all methods, as well as specific applications where they tend to work best. 2. The vast majority of composite optimization work focuses on stiffness, strength, or failure prediction in a given laminate. This should be expected given that composites are used in weight critical applications. 3. The problem of cure-induced distortion is most often addressed via changes to the manufacturing process, cure cycle used, or by altering the shape of tooling to compensate for distortion. 4. The majority of methods within the literature are based on the use of shell elements or are at least insensitive to out-of-plane strains. This should also be expected as composites are generally used for supporting in-plane loading and avoided in designs to support loads in the out-of-plane direction. For this purpose, shell elements work well.
The first point is merely an observation. The second and third point imply that there is indeed room for study of the topic in the present paper by combining the two areas of simulation. The final point highlights a critical challenge in distortion analysis, which will be further explained below.

Cure-induced deformations of composite parts
Most aerospace composites are processed (cured) at elevated temperatures; most often in an autoclave at 180 °C or above, there are however exceptions. Due to significant differences in the coefficients of thermal expansion (CTE) between the matrix and the fibres, and chemical shrinkage due to crosslinking during cure, removal from the autoclave applies an effective thermal load to the part resulting in deformation from the nominal geometry. This state of stress in the part is often referred to as 'residual stress', and the associated deformations are referred to as 'cure induced distortion' or 'cure distortion'. For simplicity, these two phenomena will, henceforth, be referred to as 'residual stress' and 'distortion'. These mechanisms have been part of basic processing knowledge for more than two decades, see (Davé and Loos 2000). One classical approach to reducing distortion has been to maintain balance and symmetry in laminates to as large a degree as possible. From classical laminate theory, it is known that this approach minimizes (or completely eliminates) the terms in the thermo-mechanical coupling matrix for the laminate.
While simple, this approach has limitations in that once a laminate has achieved a near-zero coupling matrix, only intelligent tool design can aid in reducing effects of, e.g. curvature and local unbalance due to stiffeners, patches, etc. for a given fixed cure schedule-i.e. the time and temperature profile to which the composite part is subjected in the autoclave.
Optimization of the cure schedule by changing dwell times and temperature, or adding post-cure steps to the manufacturing process can help reduce the effects of chemical shrinkage and CTE mismatch within the material. These steps cannot, however, completely eliminate the problem, and there may be practical barriers (such as tight production schedules, thermal inertia of tooling, material certification requirements, complex part geometry, etc.) that make implementing the optimal cure process in production difficult.
Some distortion may be counteracted by altering geometry of the tooling, i.e. 'reverse compensating' the tool surfaces. For example, if a flange distorts too far outwards (creating a too large angle), the tooling may be compensated inwards. This will allow the residual stresses in the part to effectively 'push' the flange to the correct nominal position. This means that the shape of the tooling does not represent the shape of the desired final part. While such corrections can be effective for certain modes of distortion, it can be difficult, or geometrically impossible, to simply reverse compensate the tooling to allow distortion to correct the geometry. This is especially true in the case of large integrated structures.
The current work addresses this problem from the perspective of laminate design and part geometry, assuming a fixed arbitrary cure cycle. Within this work, the stacking sequence of the laminate and the geometry of the part are actively adjusted in order to counteract distortions. To minimize the computational time, this method uses a rapid distortion analysis tool developed previously in Cameron et al. (2021). This rapid distortion method utilizes layer-wise CTE properties for an arbitrary composite material based on wellestablished path-dependent cure analysis methods Svanberg and Holmberg 2004;Svanberg et al. 2005). The optimization method presented here could, however, be used with any computational software capable of predicting residual stresses and deformations in composite processing, e.g. Ansys ACCS, 1 , and Compro, 2 among others.
In addition to requiring input in terms of predicted distortion, the optimization method developed requires two critical components: a method of altering the stacking sequence in a way relevant to distortion, and a method of evaluating or measuring the distortion severity of the part. These two critical components are developed within the current paper, representing a distinct contribution to the state of the art, and are explained in the following sections.

FEA and residual stresses
A rigorous description of composite process modelling is in itself outside the scope of the present paper. Two aspects of primary importance are, however, emphasized as follows: • Out-of-plane strains are critical to simulating cureinduced distortion due to out-of-plane CTE. This excludes the use of shell elements for simulation. • An exact representation of the stacking sequence to be studied must be used for each element to get the correct coupling matrix for the element. This excludes any method which averages or smears the stiffness over the cross-section of the element, or mixes properties from different layers.
With these two key aspects in mind, it can be surmised that a layer-wise solid, or solid continuum element with the actual layup description of the laminate at a given point is necessary to perform optimization of composite components where cure distortion is to be studied.

Setup of the optimization problem
The purpose of the proposed method is to minimize cureinduced distortion, or rather the impact of cure-induced distortion on de-moulding of final parts and further assembly. Intuitively, a suitable objective function would be reduced displacement of surfaces due to residual stress. Unfortunately, assessing the severity and impact of cure-induced distortion in regard to assembly forces and geometric tolerances is not so straightforward as looking at distortion magnitude. For an arbitrary part, large distortion is not necessarily problematic, and small distortions are not necessarily acceptable. Two examples are given as follows: inwards. Due to the low stiffness, the flange can be pushed into place for assembly with very small effort and no damage. This is non-problematic distortion.
For both examples to be considered, the prerequisite for considering the part useful or not is that any residual stresses generated do not overcome fracture values and induce cracking in the matrix or reduce the overall life of the part when subjected to cyclic loading.
These two examples illustrate the problem of focusing only on displacement in distortion evaluation. A large component may contain both types of distortion at different locations, and thus, an optimization scheme based purely on displacement may not improve the design significantly.
Intuitively, another candidate for an objective function to minimize would be residual stresses within the part. Unfortunately, this is also a poor measure of cure distortion severity. High residual stress can be locked into position by geometry of the structure-e.g. at the base of a T-profile created from co-curing of two L-profiles to a skin. While the high residual stress might not be ideal from an in situ strength perspective, from a distortion perspective, it has near-zero impact on the shape of the structure.
Volumetric shrinkage, due to chemical cross-linking and differential CTE values, might also be an intuitive objective function. The distribution of volumetric shrinkage closely resembles the residual stress state of the material, understandable as it is the major cause of residual stresses to begin with. Thus, it is also a poor measure of the distortion as the largest absolute changes in element volume occur within the areas of residual stress, and thus, a poor choice for an objective function in an optimization problem.
To measure the severity of distortion then, another metric is necessary. It should take into account the stiffness of the structure as well as displacement, be globally applicable, and be insensitive to acute local effects. If something needs to be added to the model, it should also not cause any localized stress concentrations which can affect the strength of a part.

Objective function: an energy-based distortion assessment criteria
To meet all these requirements, an energy-based criterion is proposed for the objective function. This is accomplished by the use of linear spring elements. One linear 1D spring element per degree of freedom (in this case 3 D.O.F.) is added to every node within the model to anchor the node to its original un-deformed position-i.e. its spacial coordinates prior to any loads being introduced to the model. This is illustrated in Fig. 1. Each K n within the figure represents 3 separate spring stiffnesses for each degree of freedom in the model. The spring elements eliminate rigid body motion, and allow the part to deform unhindered so that distortion can be studied without being affected by boundary conditions. Any boundary conditions which enforce a displacement within the model will affect the free distortion of the part, and therefore, make the results of any optimization specific to that set of boundary conditions, and therefore, not useful as a design tool.
The same linear spring stiffness, e.g. 1e-10 [N/mm], is used for all 3 spring elements for each node. The precise value of the spring stiffness is not important, provided that it is at least several orders of magnitude smaller than the anticipated structural stiffness so that it does not inhibit free distortion of the part. The suggested value of 1e-10 [N/mm] used in this work was obtained from a convergence study to guarantee the spring stiffness does not impact the global structural behaviour. Spring elements eliminate rigid body motion without affecting the distortion as regular boundary conditions would do, and at the same time, the elastic strain energy stored in the elements provides a simple and understandable method for measuring the cure distortion severity. This method includes aspects of both the structural stiffness of the part, and the displacement of the nodes in the model. By summation of the total elastic strain energy for all elements, a simple energy-based response can be created and used as an objective function for the optimization problem. The objective function F(DV 1..n ) for cure-induced distortion can then be described by equation 1: where DV 1..n = n is the design variables, z is the total number of nodes in model, and i i is the elastic strain energy in i = 1, 2, 3, DOF.
(1) F DV 1..n = z ∑ 1 1 1 + 2 2 + 3 3 , Fig. 1 A schematic representation of the original geometry (light blue, red nodes), the deformed geometry (dark blue, green nodes), and the linear spring elements (black) anchoring the deformed nodes to their original positions Abaqus is used as an FE solver in the current work. These elements are referred to as 'spring-to-ground' within the documentation (Dassault Systemes 2019) and implemented using the keyword *SPRING1. The elastic strain energy (ELSE) for all SPRING1 elements for all degrees of freedom in the entire model is summed during post-processing with a python script. A very low spring stiffness is used, obtained from a convergence study, such that the springs do not impede the global deformation.

Design variables: stack optimization parameters
For the case of distortion analysis, the stack optimization methods in the literature are largely inappropriate because firstly, they tend to focus on the stiffness/strength behaviour of the laminate, and secondly, are mostly based on the use of shell elements in FEA (Nikbakt et al. 2018;Albazzan et al. 2019;Ghiasi et al. 2009Ghiasi et al. , 2010. Solid brick elements are required for modelling the distortion behaviour, and thus, either a solid element, a layered solid, or continuum solid shell is required. In-plane stiffness will be important for structural loading, but the stacking sequence will be important for distortion. A simple example is the layups: [0/90/0/90] S vs [0 4 /90 4 ]. Both have nearly the same in-plane properties; however, their curvature will be very different, due to the none zero coupling matrix as illustrated in Fig. 2. Using arbitrary ply angles in the stack, i.e. any ply layer may have any angle without restriction, an infinite combination of layups can produce the same coupling matrix for a fixed number of plies. Weighting or penalty functions to force each layer to predefined orientations such as presented in Bruyneel (2011) may be appropriate; however, they tend to result in as many design variables per layer as there are permitted orientations in the stack. This becomes infeasible as the number of layers and allowable orientations grow along with the dimensions of the part modelled using 3D elements.

The 'prioritized plies' sorting algorithm
In this method, the problem has been approached from a more manufacturing-centric and pragmatic perspective in terms of the parametrization scheme and choice of design variables. The proposed sorting algorithm is inspired by the idea of laying down plies on a part from different 'source stacks' of varying priority. All plies in the source stacks must be added, but the order in which they are applied can be altered. The design variables and constraints are explained below. The functional steps of the algorithm are depicted in Fig. 3.

Allowable ply orientations
A set number of orientations are selected to limit the design space and align the method with current industrial practices. For the purpose of simplicity, the case study presented below is limited to the [0°, ± 45°, 90°] set of orientations, which is a basic industry standard set of orientations. This could easily be expanded (or reduced) to an arbitrary number. A highly flexible set could be, e.g. [0°, ± 15°, ± 30°, ± 45°, ± 60°, 90°]. Limiting the allowable orientations inherently limits the computational requirements to address the combinatorial aspect of the problem.

Number of plies
All forms of ply-based composite manufacturing necessarily uses an integer number of plies. It is impossible to have 1.3 layers, and it must be decided if 1 ply or 2 plies should be used.

Orientation priority
The orientation priority refers to the order in which the plies are added to the stack. Highpriority plies are added first. Orientations of the same numerical priority are added sequentially prior to lower priority plies. If two orientations have the same priority, but one orientation has more layers in the source stack, the orientation with more layers is added first. Lower-priority layers are added firstly to prevent exceeding the maximum repeated plies of higher priority, and secondly in falling order of priority.

Symmetry vs non-symmetry
If each orientation in the set is allowed to have a unique numerical value of prior- Fig. 3 Flowchart of the sorting algorithm ity, all laminates generated with the algorithm will be nonsymmetric, i.e. the stack will be created from high-priority plies to low until all plies are places. For existing design rules and conventional laminates, this is not acceptable. To accommodate this, a binary value is used to force the stack to be symmetric (thus, halving the number of plies which can be freely distributed) or allowing non-symmetry.

Stack mixety
Stack mixety is per allowable orientation and is defined as the fraction of the total number of plies which should be assigned that orientation. E.g. if there should be 13 total layers in the stack, and the stack mixety variable for the 45° layer is 33.67%, the value of 4.377 layers would be calculated. This requires conversion to an integer, as explained above this is rounded upwards to 5. Figure 4 shows two simple examples of output that can be obtained from the stacking algorithm for a simple 4 orientation stack with different priorities and symmetry/nonsymmetry of the stack.

Parametrized geometry
As emphasized earlier, distortion is also affected by the geometric stiffness in the part. Changes in geometry could potentially amplify or counteract the effect of changes to the stack. Increasing or decreasing a radius, or extending a flange for example, alters the cross-sectional area of a component with inherent residual stresses and, therefore, alters the deformation response of the structure. These geometrical variables can be parametrized, and several are implemented as continuous design variables in the current optimization framework.

Choice of optimizer
From a purely mathematical standpoint, the parametrization scheme described is challenging. The problem contains both integer and continuous design variables, and it displays a highly non-linear coupling between design variables and response. The overall problem can be categorized then as a mixed-integer non-linear programming problem (MINLP).
Unfortunately, the available literature on the topic of MINLP focuses on solving problems with analytical or explicit formulations. This is not the case for the current problem where there is no equation to describe the response of the model; thus, the choice of optimization algorithm is somewhat more limited.
Altair Hyper Study has been used in this case, as it permits the use of both integer and continuous design variables in optimization problems (Altair Engineering Inc. 2017). The choices of algorithm within the software are limited to response surface-based approaches, or genetic algorithms. Several of the available algorithms within HyperStudy were evaluated during the work, and particular success was achieved with the so-called global response search method (GRSM).
The decision to rely on commercially available software with a partially 'black box' nature was taken actively, as it is the more industrially relevant approach. The aim of the work is not to present a new optimization algorithm per se, but rather to demonstrate a novel parametrization and modelling approach that captures the cure distortion phenomena.

The case study problem
A case study is presented here to demonstrate the method described thus far. The selected structure as modelled in CAD can be seen in Fig. 5. It is a generic-stiffened panel consistent with a section of an aircraft wing skin which is reinforced with I-beam stringers. Within this method, the CAD software (Catia V5) has been included in the optimization loop using a fully parameterized CAD model to regenerate the geometry for each iteration, thus, keeping the native CAD model updated.

Design variables
The use case geometry is effectively divided into two components for optimization, the panel and the stiffener. The stiffener is a sub-assembly of 4 components, two C-profiles, and an upper and lower reinforcement plate. Geometry is shown in Fig. 6. Within the optimization, all three are identical. Overall dimensions of the panel are 1270[mm] x420 [mm]. The longest dimension is in the longitudinal direction of the stiffeners. Additional ribs included in the structure are accounted for with boundary conditions as described below. For simplicity, all connections between components were achieved by ensuring coincident mesh geometry at part interfaces. Other methods of connecting parts in the assembly, such as cohesive contacts or ties, could be used instead. For the case of buckling analysis, contact stiffness, e.g. cohesive contacts, must be strictly controlled and accurate to eliminate spurious buckling modes. This phenomenon was observed in early stages of the work, and it was decided to exclude its effects with the use of coincident mesh geometry to focus on method development.
Geometric design variables, i.e. lengths, fillets, and thicknesses, used in the optimization are shown in Fig. 7, and listed below, together with their range of allowable values as implemented in the optimization case presented here.   For stack optimization, the panel and the stiffener subassembly are treated as two separate components with different layups. The design variables are linked to the composite material section describing the part in Abaqus, and could be further expanded to be applied to as many stack descriptions as desired. For the sake of simplicity, the stiffener is here treated as having a single stack description that is the same for all 4 components of the sub-assembly. The stack related design variables and their allowable ranges used in the optimization are as follows:

Loads and boundary conditions
Two load cases are examined: A curing load case to create distortion, and a buckling load case to evaluate stability.

Curing load case
A temperature load of -160 °C is applied to all nodes within the model. This corresponds to the ∆T from 180 to ambient 20 °C typical of aerospace processing. Rigid body motion is constrained with *SPRING1 elements, which also measures the distortion energy of the panel. Stiffness of these elements is very low (1e-10 N/mm) to minimize interference with structural response. No other physical constraints are placed on the structure for the curing load case. In this case, the panel skin and stringers are assumed to be connected from the outset and, thus, a co-curing process is assumed. The method can be adapted to other processes without any fundamental changes.

Buckling load case
The deformed geometry from the curing load case is used as the base state for the buckling analysis. A compression and shear load flow are applied to one end of the structure, and symmetry conditions are used at the other edges. Load magnitudes (pressure and surface traction) are adjusted automatically each iteration to match the desired total load applied to the changing cross-sectional area of the solid brick elements. Continuum solid shell elements (CSS8) with layered composite cross sections are used to model geometry. Figure 8 shows the applied loads and boundary conditions. For the optimization run described herein, linear eigenmode-based buckling was performed. This analysis is performed using the deformed base state from the cure simulation. Non-linear geometry-i.e. an iteratively updated stiffness matrix accounting for geometrical changes-is used in the cure step to gain the most accurate description of the distorted geometry due to the internal stresses in the part. Within Abaqus, it is not possible to de-activate the nonlinear geometry option in a sequential step, and therefore, this option is carried over to the linear buckling analysis. This is not, however, non-linear buckling or post-buckling analysis which would be required for the final solution. Nonlinear buckling or post-buckling (e.g. Riks analysis) cannot be used within the optimization loop due to challenges in convergence for such problems, and significantly longer computation times. Additionally, the simplified material model used within this analysis does not account for the significant non-linearity associated with damage initiation and propagation which would be present in a post-buckled composite structure.

Global vs local buckling
A critical buckling load factor is only of interest if it is connected to a global buckling mode, and not simply a spurious local mode. To focus the optimization on relevant buckling modes, a modal assessment criteria similar to the modal participation criteria in normal modes analysis was implemented. To assess mode, 'globality' average displacement of all nodes was calculated with maximum displacement in the model normalized to 1.0. This means that all nodes will have a unit-less normalized displacement value between 0 and 1. Through manual post-processing of a number of buckling analyses, a threshold unitless normalized lowest average displacement of 0.1 was found. Above this value, buckling modes were deemed to be global in nature. Below this value, they were deemed to be spurious. For all of the results presented here, average unit-less normalized displacement values differed by at least one order of magnitude between global and local buckling modes. Following this logic, the cut-off average unit-less normalized displacement value of 0.1 was deemed a suitable assessment criteria to identify global modes and critical global buckling loads. The concept is visualized in Fig. 9 where a global mode with average normalized unit-less displacement of 0.13 and a spurious The overall flow of the complete optimization sequence to update the design variables, execute the FE analyses, and evaluate convergence criteria can be seen in Fig. 10.

Results
Two optimization studies were performed, the first a single-objective optimization focused on the curing distortion alone, and the second a multi-objective optimization to simultaneously minimize the curing distortion and the mass of the panel. For the first case, the objective function was minimization of the elastic strain energy of the *SPRING1 elements. For the second case, the mass of the structure based on the total element volume was calculated and also minimized.
Model geometry was generated for each iteration by updating and exporting the native Catia v5 model. An FE mesh was created in Altair HyperMesh. The FEA was performed in Abaqus 2019. The entire process of geometry and stack updating, model creation, analysis, and post-processing was automated with own scripts in Python (for Abaqus) and TCL programming language (for Altair HyperMesh). The optimization studies were run using the global response search method (GRSM) available in Altair HyperStudy (Altair Engineering Inc. 2017) to drive the optimization.
For both optimizations, a constraint was placed on the first buckling factor to be greater than 1, i.e. no buckling for the applied nominal load. Should the first mode be spurious, the subsequent 5 modes were monitored to ensure the first global mode was chosen.

Single-objective optimization
For the single-objective optimization, the total element strain energy was reduced by several orders of magnitude; from 23.8e − 7 to 0.51e − 7 [N * mm]. The units or absolute value of strain energy are not of interest, these values will change depending on the linear spring stiffness used. The relative difference between configurations is, however, important. Interestingly, the mass also reduced from the nominal to final configuration by approximately 30%. It is worth noting that the majority of improvement occurred in the initial iteration of the optimization algorithm. This initial iteration used 20 sampling points (i.e. internal iterations of the design loop) to determine the initial direction for the optimizer to alter design variables. The full optimization loop was allowed to run for 100 global iterations (containing internal iterations) for each full optimization run, or until convergence occurred. These values are somewhat arbitrary but were found to give good results after some trial and error. Figure 11 shows distortion in the panel in the nominal configuration and the final result from optimization. The reduction in distortion is quite clear, as the two panels in the figure are plotted with the same scale. The maximum magnitude of nodal displacement associated with the cure distortion was reduced from approx 3.8 to 1.6 [mm] from the nominal to optimal configuration.
The results of the stack optimization are visualized in Fig. 12 for the stiffener. Note that the nominal configuration was a balanced, symmetric, quasi-isotropic layup, and the optimized result is not balanced or symmetric. The number of plies has been decreased from 32 to 22, and the mixety of orientations in the stack is also changed. The numerical values for the stack variables for the stiffener from the nominal to optimal panel are given in Table 1 for reference.
A visual comparison between nominal and optimal geometry can be seen in Fig. 13.
Numerical values of the design variables shown in Fig. 7 can be seen in Table 2. It should be reiterated that skin and stiffener thickness variables are converted to integer numbers of plies within the laminate via the algorithm.

Multi-objective optimization
The multi-objective optimization does not result in a single optimal solution, but rather a Pareto front of feasible designs, see Fig. 14. One interesting comparison is the trade-off between the minimum mass and minimum distortion solutions. The minimum distortion solution has a mass of 21.9 [kg] and the minimum mass solution 16.8 [kg]. The change in ELSE is slightly more than 3x between the two solutions. The distortion is shown in Fig. 15. Here, the displacement magnitude for both components is shown with the same magnification factor (10×). As can be seen, the minimum mass solution distorts much more.
In this case, both the minimum ELSE and minimum mass solution were achieved with a symmetric laminate. This is in contrast to the result of the single-objective optimization, which achieved a slightly lower value of the distortion energy, but at a slightly higher mass (22.7 kg) with a non-symmetric laminate. A side-by-side comparison of the two optimal results is shown in Fig. 16. This helps further emphasize the fact that minimum weight and minimum distortion are interlinked.

Computational time
Industrially viable optimization schemes are necessarily restricted by computational time and CPU requirements. A short mention of the model size and computational requirements is, therefore, relevant.
All the work performed within this paper has been performed on an engineering workstation with 16 logical processors, and 32 GB of RAM. The model contained approximately 50,000 elements, and 100,000 D.O.F. 6 CPUs were used per analysis. Run time for a single iteration, including model creation, solver execution, and post-processing was 16-20 min. Full optimization runs of 100 iterations were allowed to run over a 24-hour period; however, little improvement in solution was achieved after approximately 50% of the full run was completed.
This point also helps further motivate the need for the rapid cure analysis procedure used within this paper developed in earlier work ). Using a more complex simulation methodology would require simulation time on the order of hours per configuration. This would make the optimization approach presented herein, if not technically impossible, at least infeasible.

Discussion
The method shows significant potential, as well as having obvious limitations at present. It shows great potential to improve the distortion behaviour of an arbitrary layup for  an arbitrary number of plies using commercially available tools and a novel sorting algorithm which has been programmed in Python. The distortion severity measurement proposed is simple to understand and implement. It is fast, encompasses the entire model, includes the effects of part stiffness, and is insensitive local distortions which can occur.
The sorting algorithm in itself represents a novel approach to stack optimization. It is capable of accounting for integer numbers of plies and fixed orientations encountered in manufacturing. In its present form, the algorithm does have limitations. Symmetry, for example, is enforced by a true-false variable. A continuous variation from fully symmetric to non-symmetric would be more intuitive and reduce the non-linearity of the problem. The rounding scheme for the integer number of plies may also be a point of contention, and another rounding schemes may be more relevant. This can easily be implemented in the algorithm. The optimization has not taken stress or strength into consideration either at this stage. As the full structure is modelled in 3D elements, this is simply a matter of adding additional  post-processing steps to the simulation, and including the necessary constraints in the optimization problem setup. From the results presented, the method outlined in this work shows considerable promise in addressing a challenging optimization problem. Design rules can be implemented, freedom of design is increased, and the results can be used to gain improvements in cure-induced distortion behaviour.
Including the residual stress state in the base state of a component could also be useful if less conservative approaches to dimensioning are to be pursued-i.e. considering the in situ strength of materials and accounting for residual stresses in an optimization context.

Conclusions
Within this paper, a method has been described wherein a composite part can be optimized to reduce the effects of cure-induced distortion. A method for measuring global distortion energy has been proposed. A parametrized model of the geometry and a novel manufacturing-centric stacking-sequence sorting algorithm are used to optimize a stringer-stiffened panel. The stacking algorithm can creating symmetric and non-symmetric laminates from integer numbers of fixed ply orientations. Placement of the orientation within the stack is according to its effect on global distortion and simple stacking rules regarding the maximum number of repetitions. A commercial optimization software has been used to steer the selection of design variables for each iteration. Results show significantly reduced distortion while maintaining resistance to buckling. Comparison between minimum weight and minimum distortion solutions are also made, and the two are found to be interlinked. Improved designs are achieved quickly, and design constraints are fulfilled. In short, the method shows much promise as a tool for designing against cure-induced distortion in composite structures.