<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.1 20151215//EN" "http://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xml:lang="en" article-type="research-article" dtd-version="1.1">
<front>
<journal-meta>
<journal-id journal-id-type="pmc">CMES</journal-id>
<journal-id journal-id-type="nlm-ta">CMES</journal-id>
<journal-id journal-id-type="publisher-id">CMES</journal-id>
<journal-title-group>
<journal-title>Computer Modeling in Engineering &#x0026; Sciences</journal-title>
</journal-title-group>
<issn pub-type="epub">1526-1506</issn>
<issn pub-type="ppub">1526-1492</issn>
<publisher>
<publisher-name>Tech Science Press</publisher-name>
<publisher-loc>USA</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">72447</article-id>
<article-id pub-id-type="doi">10.32604/cmes.2025.072447</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>A Multi-Grid, Single-Mesh Online Learning Framework for Stress-Constrained Topology Optimization Based on Isogeometric Formulation</article-title>
<alt-title alt-title-type="left-running-head">A Multi-Grid, Single-Mesh Online Learning Framework for Stress-Constrained Topology Optimization Based on Isogeometric Formulation</alt-title>
<alt-title alt-title-type="right-running-head">A Multi-Grid, Single-Mesh Online Learning Framework for Stress-Constrained Topology Optimization Based on Isogeometric Formulation</alt-title>
</title-group>
<contrib-group>
<contrib id="author-1" contrib-type="author">
<name name-style="western"><surname>Li</surname><given-names>Kangjie</given-names></name></contrib>
<contrib id="author-2" contrib-type="author" corresp="yes">
<name name-style="western"><surname>Ye</surname><given-names>Wenjing</given-names></name><xref rid="cor1" ref-type="corresp">&#x002A;</xref><email>mewye@ust.hk</email></contrib>
<aff id="aff-1"><institution>Department of Mechanical and Aerospace Engineering, The Hong Kong University of Science and Technology Clear Water Bay</institution>, <addr-line>Kowloon, Hong Kong, 999077</addr-line>, <country>China</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>&#x002A;</label>Corresponding Author: Wenjing Ye. Email: <email>mewye@ust.hk</email></corresp>
</author-notes>
<pub-date date-type="collection" publication-format="electronic">
<year>2025</year>
</pub-date>
<pub-date date-type="pub" publication-format="electronic">
<day>26</day><month>11</month><year>2025</year>
</pub-date>
<volume>145</volume>
<issue>2</issue>
<fpage>1665</fpage>
<lpage>1688</lpage>
<history>
<date date-type="received">
<day>27</day>
<month>08</month>
<year>2025</year>
</date>
<date date-type="accepted">
<day>10</day>
<month>10</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>&#x00A9; 2025 The Authors.</copyright-statement>
<copyright-year>2025</copyright-year>
<copyright-holder>Published by Tech Science Press.</copyright-holder>
<license xlink:href="https://creativecommons.org/licenses/by/4.0/">
<license-p>This work is licensed under a <ext-link ext-link-type="uri" xlink:type="simple" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</ext-link>, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
</license>
</permissions>
<self-uri content-type="pdf" xlink:href="TSP_CMES_72447.pdf"></self-uri>
<abstract>
<p>Recent progress in topology optimization (TO) has seen a growing integration of machine learning to accelerate computation. Among these, online learning stands out as a promising strategy for large-scale TO tasks, as it eliminates the need for pre-collected training datasets by updating surrogate models dynamically using intermediate optimization data. Stress-constrained lightweight design is an important class of problem with broad engineering relevance. Most existing frameworks use pixel or voxel-based representations and employ the finite element method (FEM) for analysis. The limited continuity across finite elements often compromises the accuracy of stress evaluation. To overcome this limitation, isogeometric analysis is employed as it enables smooth representation of structures and thus more accurate stress computation. However, the complexity of the stress-constrained design problem together with the isogeometric representation results in a large computational cost. This work proposes a multi-grid, single-mesh online learning framework for isogeometric topology optimization (ITO), leveraging the Fourier Neural Operator (FNO) as a surrogate model. Operating entirely within the isogeometric analysis setting, the framework provides smooth geometry representation and precise stress computation, without requiring traditional mesh generation. A localized training approach is employed to enhance scalability, while a multi-grid decomposition scheme incorporates global structural context into local predictions to boost FNO accuracy. By learning the mapping from spatial features to sensitivity fields, the framework enables efficient single-resolution optimization, avoiding the computational burden of two-resolution simulations. The proposed method is validated through 2D stress-constrained design examples, and the effect of key parameters is studied.</p>
</abstract>
<kwd-group kwd-group-type="author">
<kwd>Isogeometric topology optimization</kwd>
<kwd>multi-grid decomposition</kwd>
<kwd>online learning</kwd>
<kwd>fourier neural operator</kwd>
</kwd-group>
<funding-group>
<award-group id="awg1">
<funding-source>Hong Kong Research Grants under Competitive Earmarked Research</funding-source>
<award-id>16206320</award-id>
</award-group>
</funding-group>
</article-meta>
</front>
<body>
<sec id="s1">
<label>1</label>
<title>Introduction</title>
<p>Structural topology optimization (TO) aims to find the optimal material distribution within a given design domain such that an objective function is minimized and constraints are satisfied [<xref ref-type="bibr" rid="ref-1">1</xref>]. Compared with size optimization and shape optimization, TO offers a greatly enlarged design space and consequently better design solutions. It is, however, the most challenging, as it deals with the creation of new geometries from scratch.</p>
<p>Most existing topology optimization (TO) methods implicitly represent structures using a fixed grid of pixels or voxels and employ the widespread finite element method (FEM) to evaluate objective functions and constraints. Despite their broad applicability, these grid-based, FEM-reliant approaches face certain limitations. For instance, the low-order continuity between neighboring finite elements [<xref ref-type="bibr" rid="ref-1">1</xref>]&#x2014;illustrated in <xref ref-type="fig" rid="fig-1">Fig. 1a</xref>&#x2014;can significantly reduce computational accuracy, especially for stress-related metrics. This makes such methods less suitable for stress-constrained TO design. To address this, some studies have proposed using adaptive mesh refinement to improve the smoothness of structure boundaries and enhance stress calculations [<xref ref-type="bibr" rid="ref-2">2</xref>&#x2013;<xref ref-type="bibr" rid="ref-4">4</xref>]. The main idea is to refine the mesh in regions where higher accuracy is needed and coarsen it elsewhere to improve computational efficiency. However, even with a refined mesh, the design is still represented as a pixel-based image with non-smooth boundaries, as shown in <xref ref-type="fig" rid="fig-1">Fig. 1b</xref>. Beyond the issue of stress calculation, optimized designs often require additional post-processing to be compatible with computer-aided design (CAD) software for manufacturing, which can further compromise design quality.</p>
<fig id="fig-1">
<label>Figure 1</label>
<caption>
<title>Optimized structure using (<bold>a</bold>) FEM-based TO [<xref ref-type="bibr" rid="ref-1">1</xref>], (<bold>b</bold>) FEM-based TO with adaptive mesh refinement [<xref ref-type="bibr" rid="ref-3">3</xref>]</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-1.tif"/>
</fig>
<p>To overcome the limitations of traditional FEM, Hughes and his co-workers [<xref ref-type="bibr" rid="ref-5">5</xref>,<xref ref-type="bibr" rid="ref-6">6</xref>] introduced the isogeometric analysis (IGA) framework, which unifies CAD and computer-aided engineering (CAE) by employing the same spline basis functions for both geometry representation and numerical analysis. This seamless integration eliminates the need for mesh generation and offers higher continuity and numerical accuracy compared to conventional FEM. All these advantages make IGA particularly advantageous for TO and form a new paradigm: isogeometric topology optimization (ITO). In particular, for stress-constrained design problems, the higher-order continuity of spline basis functions significantly enhances the accuracy of both structural representation and stress evaluation.</p>
<p>Significant efforts have been made to extend classical TO methods by incorporating IGA [<xref ref-type="bibr" rid="ref-7">7</xref>&#x2013;<xref ref-type="bibr" rid="ref-9">9</xref>]. Representative examples include its integration with level-set [<xref ref-type="bibr" rid="ref-10">10</xref>], evolution method [<xref ref-type="bibr" rid="ref-11">11</xref>], and moving morphable component [<xref ref-type="bibr" rid="ref-12">12</xref>] approaches. Moreover, IGA has been combined with the boundary element method to tackle optimization problems in acoustics [<xref ref-type="bibr" rid="ref-13">13</xref>&#x2013;<xref ref-type="bibr" rid="ref-15">15</xref>]. The density-based TO methods can be integrated with IGA by assigning design variables to the control points of the Non-uniform Rational B-splines (NURBS) basis function [<xref ref-type="bibr" rid="ref-16">16</xref>&#x2013;<xref ref-type="bibr" rid="ref-19">19</xref>]. Stress-related ITO problems, typically believed to be more challenging due to factors such as the non-linear behavior of stress and the localized nature of stress constraints [<xref ref-type="bibr" rid="ref-20">20</xref>], have also been studied in recent years. For example, Kazemi et al. [<xref ref-type="bibr" rid="ref-21">21</xref>] proposed an ITO method for minimizing structural weight under local stress constraints using NURBS-based IGA, with control points&#x2019; density as design variables. The optimization process utilizes direct sensitivity analysis combined with the Method of Moving Asymptotes (MMA) for iterative updates [<xref ref-type="bibr" rid="ref-22">22</xref>]. To handle stress singularities, the &#x03B5; relaxation method is employed. However, the optimized structures exhibit insufficient smoothness, likely due to the limited number of NURBS patches. Additionally, the reliance on direct sensitivity analysis (without using adjoint method) reduces efficiency for large-scale problems. Jahangiry and Tavakkoli [<xref ref-type="bibr" rid="ref-23">23</xref>] developed a level-set-based ITO method. The design variables are the control points of the NURBS-based level set function, which are iteratively updated by solving the Hamilton-Jacobi equation using the forward Euler scheme. Numerical examples, including weight minimization under local stress constraints and the simultaneous minimization of weight and strain energy, demonstrate the method&#x2019;s capability to achieve reasonable results with smooth boundaries. Building on Gao&#x2019;s work [<xref ref-type="bibr" rid="ref-17">17</xref>], Liu et al. [<xref ref-type="bibr" rid="ref-24">24</xref>] extended the SIMP-based IGA to tackle global stress-constrained TO problems. Density values at NURBS control points are used to construct the density distribution function, with a filter applied to ensure smoothness. The optimization problem is solved using MMA, while a global p-norm stress aggregation function constrains the stress during volume minimization. Numerical examples confirm that this approach can deliver smooth geometry representations and reliable stress analysis. To improve the optimization efficiency of Liu&#x2019;s SIMP-based IGA work, Zhai [<xref ref-type="bibr" rid="ref-25">25</xref>] proposed a hybrid optimizer combining the alternating direction method of multipliers (ADMM) with MMA. Different from minimizing weight, Villalba et al. [<xref ref-type="bibr" rid="ref-26">26</xref>] focused on stress-constrained compliant mechanisms, using quadratic B-splines for material layout and structural analysis. By incorporating an overweight constraint to manage stress, their method achieves a 40%&#x2013;60% reduction in computational time compared to classical FEM. In the monograph of Gao et al. [<xref ref-type="bibr" rid="ref-27">27</xref>], they studied the volume-constrained stress minimization problems in the ITO framework. Two global stress aggregation formulations (p-norm and Kreisselmeier-Steinhauser) are utilized to measure stress, which effectively eliminates boundary stress concentration issues. Vo et al. [<xref ref-type="bibr" rid="ref-28">28</xref>] integrated a gradient-free proportional topology optimization scheme into the isogeometric analysis framework, where NURBS basis functions simultaneously represent geometry, displacement, and material density. The approach defines densities at integration points in proportion to compliance, derives their relation to control points, and constructs a global NURBS-based density description.</p>
<p>Despite the significant development of ITO, the efficiency challenge remains and in fact becomes even more critical in large-scale stress-constrained TO designs. Compared with compliance design, stress-constrained TO is significantly more complex, often requiring many more iterations and longer convergence times. To address this, we extend a previously developed multi-grid, single-mesh online learning framework [<xref ref-type="bibr" rid="ref-29">29</xref>]&#x2014;originally designed for compliance-based TO&#x2014;to the ITO setting. This extension leverages the ITO framework&#x2019;s inherent capacity for smooth geometric representation, enabling more accurate stress calculations.</p>
<p>The use of artificial neural network (ANN)-based surrogate models to accelerate topology optimization (TO) is an active field of research [<xref ref-type="bibr" rid="ref-30">30</xref>&#x2013;<xref ref-type="bibr" rid="ref-34">34</xref>]. While various methods have been proposed, they often require large, expensive-to-generate training datasets. For applications involving only a few large-scale design problems, generating a large training dataset certainly is not efficient and sometimes even infeasible. For such cases, online learning presents another promising approach [<xref ref-type="bibr" rid="ref-35">35</xref>]. Unlike offline methods that rely on pre-collected datasets, online learning collects training data from designs and analysis results obtained during previous TO iterations. This eliminates the need for extensive upfront data generation and allows the neural networks to adapt specifically to the problem at hand, making online learning particularly well-suited for large-scale TO problems. To ensure accuracy, ANN models are continuously updated throughout the TO process as new training data is available. This iterative refinement ensures that the surrogate models remain closely aligned with the evolving design space, improving both computational efficiency and solution quality.</p>
<p>Online learning framework for TO was first proposed in [<xref ref-type="bibr" rid="ref-35">35</xref>] for compliance design. The method employs a localized patch-based prediction strategy to greatly enhance the scalability of the method and training data diversity. However, it neglects the structural information outside each local region when predicting patch responses. This may lead to an undetermined mapping and suboptimal prediction accuracy. Additionally, the coarse-fine two-grid mapping technique employed introduces additional computational overhead associated with generating coarse grid solutions. To overcome these limitations, our group recently developed a multigrid, single-mesh online learning TO method [<xref ref-type="bibr" rid="ref-29">29</xref>], which has demonstrated a better performance. In the present work, we further extend this advanced framework to stress-constrained design problems and validate its efficacy through a series of illustrative examples.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Isogeometric Analysis</title>
<sec id="s2_1">
<label>2.1</label>
<title>NURBS Basis Functions</title>
<p>NURBS are widely employed in IGA and have become the primary technology for representing complex geometries in CAD software. To define a B-spline, a knot vector must be specified as an ordered sequence of increasing parameter values, denoted as <inline-formula id="ieqn-1"><mml:math id="mml-ieqn-1"><mml:mi mathvariant="normal">&#x039E;</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mrow><mml:mi>&#x1D4C3;</mml:mi></mml:mrow><mml:mo>+</mml:mo><mml:mi>p</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mspace width="negativethinmathspace" /><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2264;</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> where <inline-formula id="ieqn-2"><mml:math id="mml-ieqn-2"><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the <italic>i</italic>th knot, <inline-formula id="ieqn-3"><mml:math id="mml-ieqn-3"><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:math></inline-formula> is the number of basis functions and <italic>p</italic> is the polynomial order. A knot vector is termed uniform if the knots are spaced equally and non-uniform otherwise. The knot vector is open if the first and last knots appear with multiplicity <italic>p</italic> &#x002B; 1. In this study, open knot vectors are used, which have become the standard in CAD practices [<xref ref-type="bibr" rid="ref-5">5</xref>].</p>
<p>For a given knot vector <inline-formula id="ieqn-4"><mml:math id="mml-ieqn-4"><mml:mi mathvariant="normal">&#x039E;</mml:mi></mml:math></inline-formula>, the corresponding B-spline functions are recursively defined as follows:
<disp-formula id="eqn-1"><label>(1)</label><mml:math id="mml-eqn-1" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi>&#x03BE;</mml:mi><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mi>p</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mi>&#x03BE;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mi>p</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-5"><mml:math id="mml-ieqn-5"><mml:mi>&#x03BE;</mml:mi></mml:math></inline-formula> is a parameter in the parametric domain. <inline-formula id="ieqn-6"><mml:math id="mml-ieqn-6"><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> are the values in the knot vector <inline-formula id="ieqn-7"><mml:math id="mml-ieqn-7"><mml:mi mathvariant="normal">&#x039E;</mml:mi></mml:math></inline-formula>. The recursion starts with:
<disp-formula id="eqn-2"><label>(2)</label><mml:math id="mml-eqn-2" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"><mml:mtr><mml:mtd><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mrow><mml:mtext>&#xA0;if&#xA0;</mml:mtext></mml:mrow><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2264;</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>&#x003C;</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mrow><mml:mtext>&#xA0;otherwise&#xA0;</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow><mml:mspace width="negativethinmathspace" /><mml:mspace width="negativethinmathspace" /><mml:mspace width="negativethinmathspace" /><mml:mspace width="negativethinmathspace" /><mml:mspace width="negativethinmathspace" /><mml:mspace width="negativethinmathspace" /><mml:mspace width="negativethinmathspace" /><mml:mspace width="negativethinmathspace" /><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-8"><mml:math id="mml-ieqn-8"><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:math></inline-formula> is the basis function index.</p>
<p>Given two knot vectors for each parametric direction <inline-formula id="ieqn-9"><mml:math id="mml-ieqn-9"><mml:msup><mml:mi mathvariant="normal">&#x039E;</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mi>p</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-10"><mml:math id="mml-ieqn-10"><mml:msup><mml:mi mathvariant="normal">&#x039E;</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mi>p</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula>, and <inline-formula id="ieqn-11"><mml:math id="mml-ieqn-11"><mml:mi>n</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>m</mml:mi></mml:math></inline-formula> control points <inline-formula id="ieqn-12"><mml:math id="mml-ieqn-12"><mml:msub><mml:mi mathvariant="bold-italic">P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, a B-spline surface is constructed as:
<disp-formula id="eqn-3"><label>(3)</label><mml:math id="mml-eqn-3" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mi mathvariant="bold-italic">S</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-13"><mml:math id="mml-ieqn-13"><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-14"><mml:math id="mml-ieqn-14"><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are the univariate basis functions of orders <italic>p</italic> and <italic>q</italic>, associated with knot vectors <inline-formula id="ieqn-15"><mml:math id="mml-ieqn-15"><mml:msup><mml:mi mathvariant="normal">&#x039E;</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-16"><mml:math id="mml-ieqn-16"><mml:msup><mml:mi mathvariant="normal">&#x039E;</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. The interval <inline-formula id="ieqn-17"><mml:math id="mml-ieqn-17"><mml:mo stretchy="false">[</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">]</mml:mo><mml:mo>&#x00D7;</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:msub><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula> is called knot spans in the parametric domain. Each control point <inline-formula id="ieqn-18"><mml:math id="mml-ieqn-18"><mml:msub><mml:mi mathvariant="bold-italic">P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is a point in physical space, typically defined by its coordinates (<italic>x</italic>, <italic>y</italic>), that influences the shape of the surface locally. For any given pair of parametric coordinates <inline-formula id="ieqn-19"><mml:math id="mml-ieqn-19"><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, this equation computes the corresponding coordinates in the physical domain.</p>
<p>B-spline cannot represent certain shapes exactly, such as circles. Consequently, NURBS has become the <italic>de facto</italic> standard in CAD for handling more complex shapes [<xref ref-type="bibr" rid="ref-36">36</xref>]. Based on B-spline, a NURBS surface can be expressed as:
<disp-formula id="eqn-4"><label>(4)</label><mml:math id="mml-eqn-4" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mi mathvariant="bold-italic">S</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-20"><mml:math id="mml-ieqn-20"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> represents the bivariate basis function defined as:
<disp-formula id="eqn-5"><label>(5)</label><mml:math id="mml-eqn-5" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03C9;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:munderover><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:munderover><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03C9;</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi>l</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-21"><mml:math id="mml-ieqn-21"><mml:msub><mml:mi>&#x03C9;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> indicates the weights corresponding to the control point <inline-formula id="ieqn-22"><mml:math id="mml-ieqn-22"><mml:msub><mml:mi mathvariant="bold-italic">P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. B-spline is a special case of NURBS where all weights are equal.</p>
</sec>
<sec id="s2_2">
<label>2.2</label>
<title>Isogeometric Structural Analysis</title>
<p>Using NURBS basis functions <inline-formula id="ieqn-23"><mml:math id="mml-ieqn-23"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, the material (density) distribution function [<xref ref-type="bibr" rid="ref-17">17</xref>] across the 2D design domain can be represented as:
<disp-formula id="eqn-6"><label>(6)</label><mml:math id="mml-eqn-6" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-24"><mml:math id="mml-ieqn-24"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> represents the pseudo-density (control density) variable associated with the control point <inline-formula id="ieqn-25"><mml:math id="mml-ieqn-25"><mml:msub><mml:mi mathvariant="bold-italic">P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. This formulation establishes a mapping between the density variables and the material distribution. Due to the non-negativity and partition of unity properties of NURBS basis functions [<xref ref-type="bibr" rid="ref-36">36</xref>], it follows that <inline-formula id="ieqn-26"><mml:math id="mml-ieqn-26"><mml:mn>0</mml:mn><mml:mo>&#x2264;</mml:mo><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x2264;</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula> if <inline-formula id="ieqn-27"><mml:math id="mml-ieqn-27"><mml:mn>0</mml:mn><mml:mo>&#x2264;</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2264;</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula>. When the density <inline-formula id="ieqn-28"><mml:math id="mml-ieqn-28"><mml:mi>&#x03C1;</mml:mi></mml:math></inline-formula> at a point <inline-formula id="ieqn-29"><mml:math id="mml-ieqn-29"><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is close to 0, it indicates an absence of material; conversely, if <inline-formula id="ieqn-30"><mml:math id="mml-ieqn-30"><mml:mi>&#x03C1;</mml:mi></mml:math></inline-formula> is close to 1, the material is present at that location. Thus, the iso-surface of the <inline-formula id="ieqn-31"><mml:math id="mml-ieqn-31"><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, typically with a default threshold of 0.5, is used to represent the structure.</p>
<p>In this study, the same NURBS basis functions are used to represent the displacement field in structural analysis. The displacement field can be defined as:
<disp-formula id="eqn-7"><label>(7)</label><mml:math id="mml-eqn-7" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-32"><mml:math id="mml-ieqn-32"><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the displacement vector associated to the control point <inline-formula id="ieqn-33"><mml:math id="mml-ieqn-33"><mml:msub><mml:mi mathvariant="bold-italic">P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. For 2D examples, each control point has two independent displacement variables <inline-formula id="ieqn-34"><mml:math id="mml-ieqn-34"><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula id="ieqn-35"><mml:math id="mml-ieqn-35"><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>y</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>.</p>
<p>In the IGA framework, elements are defined similarly to that in the FEM, with each IGA element corresponding to a knot span, denoted <inline-formula id="ieqn-36"><mml:math id="mml-ieqn-36"><mml:mo stretchy="false">[</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">]</mml:mo><mml:mo>&#x00D7;</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:msub><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula>. The system stiffness matrix is constructed by assembling local element stiffness matrices. The IGA elements in the parametric space divided by the knot vector are shown in <xref ref-type="fig" rid="fig-2">Fig. 2a</xref>. After the mapping following <xref ref-type="disp-formula" rid="eqn-4">Eq. (4)</xref>, each parametric IGA element <inline-formula id="ieqn-37"><mml:math id="mml-ieqn-37"><mml:msub><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:mrow><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> corresponds to an element <inline-formula id="ieqn-38"><mml:math id="mml-ieqn-38"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> in the physical space, as shown in <xref ref-type="fig" rid="fig-2">Fig. 2b</xref>. To facilitate computation, an affine mapping from the bi-unit parent element <inline-formula id="ieqn-39"><mml:math id="mml-ieqn-39"><mml:msub><mml:mrow><mml:mover><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> to <inline-formula id="ieqn-40"><mml:math id="mml-ieqn-40"><mml:msub><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:mrow><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> in parametric space is defined, as illustrated in <xref ref-type="fig" rid="fig-2">Fig. 2c</xref>. Here, <inline-formula id="ieqn-41"><mml:math id="mml-ieqn-41"><mml:msub><mml:mi mathvariant="bold-italic">J</mml:mi><mml:mrow><mml:mrow><mml:mtext mathvariant="bold">1</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-42"><mml:math id="mml-ieqn-42"><mml:msub><mml:mi mathvariant="bold-italic">J</mml:mi><mml:mrow><mml:mrow><mml:mtext mathvariant="bold">2</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> are Jacobi matrices of the two mappings. The element stiffness matrix in IGA is evaluated using Gauss quadrature, and in the physical domain, the stiffness matrix for element <italic>e</italic> is given by:
<disp-formula id="eqn-8"><label>(8)</label><mml:math id="mml-eqn-8" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mo>&#x222B;</mml:mo><mml:mrow><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:msubsup><mml:msup><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mtext mathvariant="bold">DB</mml:mtext></mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mo>&#x222B;</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:msubsup><mml:msup><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mtext mathvariant="bold">DB</mml:mtext></mml:mrow><mml:mrow><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">J</mml:mi><mml:mrow><mml:mrow><mml:mtext mathvariant="bold">1</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>|</mml:mo></mml:mrow><mml:mrow><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">J</mml:mi><mml:mrow><mml:mrow><mml:mtext mathvariant="bold">2</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>|</mml:mo></mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mover><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where B is the strain-displacement matrix derived from the partial derivatives of NURBS basis functions <inline-formula id="ieqn-43"><mml:math id="mml-ieqn-43"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>. D represents the elastic (constitutive) matrix, which can be expressed as:
<disp-formula id="eqn-9"><label>(9)</label><mml:math id="mml-eqn-9" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mi>E</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x2212;</mml:mo><mml:msup><mml:mi>&#x03BC;</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mrow><mml:mo>[</mml:mo><mml:mtable columnalign="center center center" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mi>&#x03BC;</mml:mi></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>&#x03BC;</mml:mi></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mfrac><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>&#x03BC;</mml:mi></mml:mrow><mml:mn>2</mml:mn></mml:mfrac></mml:mtd></mml:mtr></mml:mtable><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-44"><mml:math id="mml-ieqn-44"><mml:mi>&#x03BC;</mml:mi></mml:math></inline-formula> is the Poisson&#x2019;s ratio and <italic>E</italic> is the modulus of elasticity. Based on the power-law relation, <italic>E</italic> can be expressed as <inline-formula id="ieqn-45"><mml:math id="mml-ieqn-45"><mml:mi>E</mml:mi><mml:mo>=</mml:mo><mml:mi>&#x03C1;</mml:mi><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x03B3;</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mi>E</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, where <inline-formula id="ieqn-46"><mml:math id="mml-ieqn-46"><mml:mi>&#x03B3;</mml:mi></mml:math></inline-formula> is the penalization parameter. The global stiffness matrix K is then assembled in a similar way as the standard finite elements process [<xref ref-type="bibr" rid="ref-5">5</xref>]:
<disp-formula id="eqn-10"><label>(10)</label><mml:math id="mml-eqn-10" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mo>&#x2211;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<fig id="fig-2">
<label>Figure 2</label>
<caption>
<title>Schematic of an 2D element, <inline-formula id="ieqn-53"><mml:math id="mml-ieqn-53"><mml:msub><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:mrow><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, in parametric space (<bold>a</bold>) and the corresponding 2D element <inline-formula id="ieqn-54"><mml:math id="mml-ieqn-54"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> in physical space (<bold>b</bold>). (<bold>c</bold>) The parent element <inline-formula id="ieqn-55"><mml:math id="mml-ieqn-55"><mml:msub><mml:mrow><mml:mover><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> for integration. The knot vectors used in the schematic are <inline-formula id="ieqn-56"><mml:math id="mml-ieqn-56"><mml:msup><mml:mi mathvariant="normal">&#x039E;</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0.1</mml:mn><mml:mo>,</mml:mo><mml:mn>0.2</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:mn>0.9</mml:mn><mml:mo>,</mml:mo><mml:mn>1.0</mml:mn><mml:mo>,</mml:mo><mml:mn>1.0</mml:mn><mml:mo>,</mml:mo><mml:mn>1.0</mml:mn><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-57"><mml:math id="mml-ieqn-57"><mml:msup><mml:mi mathvariant="normal">&#x039E;</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0.167</mml:mn><mml:mo>,</mml:mo><mml:mn>0.333</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:mn>0.833</mml:mn><mml:mo>,</mml:mo><mml:mn>1.0</mml:mn><mml:mo>,</mml:mo><mml:mn>1.0</mml:mn><mml:mo>,</mml:mo><mml:mn>1.0</mml:mn><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula></title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-2.tif"/>
</fig>
<p>Boundary conditions in IGA are implemented as follows [<xref ref-type="bibr" rid="ref-5">5</xref>]. Each control point is assigned to a load vector <inline-formula id="ieqn-47"><mml:math id="mml-ieqn-47"><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. For Neumann boundary conditions, the prescribed load values are assigned directly to the load vector <inline-formula id="ieqn-48"><mml:math id="mml-ieqn-48"><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. All <inline-formula id="ieqn-49"><mml:math id="mml-ieqn-49"><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> are assembled in a similar way as FEM to form a global external load vector <bold>f</bold>. Dirichlet boundary conditions are applied by constraining the displacements <inline-formula id="ieqn-50"><mml:math id="mml-ieqn-50"><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> of specific control points [<xref ref-type="bibr" rid="ref-17">17</xref>]. All <inline-formula id="ieqn-51"><mml:math id="mml-ieqn-51"><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> are then assembled in a global displacement vector u. The global vector <italic>u</italic> is obtained by solving the global matrix:
<disp-formula id="eqn-11"><label>(11)</label><mml:math id="mml-eqn-11" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mtext mathvariant="bold">Ku</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mtext mathvariant="bold">f</mml:mtext></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Finally, the displacement <inline-formula id="ieqn-52"><mml:math id="mml-ieqn-52"><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> for each control point can be determined from <italic>u</italic>. The entire displacement field across the structure can be derived using <xref ref-type="disp-formula" rid="eqn-7">Eq. (7)</xref>.</p>
</sec>
</sec>
<sec id="s3">
<label>3</label>
<title>Stress-Constrained Design Problem</title>
<p>This section outlines the TO formulation of stress-constrained design problems based on IGA. The NURBS-based density distribution function is used to formulate the ITO approach, with IGA applied to compute structural responses. The Method of Moving Asymptotes (MMA) is employed to update design variables.</p>
<p>Nodal densities <inline-formula id="ieqn-58"><mml:math id="mml-ieqn-58"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> associated with control points are defined as the design variables, which are evolved during optimization. A Shepard function [<xref ref-type="bibr" rid="ref-17">17</xref>] is utilized to filter the nodal densities, ensuring overall smoothness. The smoothed nodal density <inline-formula id="ieqn-59"><mml:math id="mml-ieqn-59"><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is expressed as:
<disp-formula id="eqn-12"><label>(12)</label><mml:math id="mml-eqn-12" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x1D4A9;</mml:mi></mml:mrow></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x02133;</mml:mi></mml:mrow></mml:mrow></mml:munderover><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-60"><mml:math id="mml-ieqn-60"><mml:mrow><mml:mi>&#x1D4A9;</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-61"><mml:math id="mml-ieqn-61"><mml:mrow><mml:mi>&#x02133;</mml:mi></mml:mrow></mml:math></inline-formula> are the numbers of control points within the local support area of the current control point. The Shepard function <inline-formula id="ieqn-62"><mml:math id="mml-ieqn-62"><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is defined as:
<disp-formula id="eqn-13"><label>(13)</label><mml:math id="mml-eqn-13" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>w</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:munderover><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mrow><mml:mrow><mml:mo>&#x2217;</mml:mo></mml:mrow></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x1D4A9;</mml:mi></mml:mrow></mml:mrow></mml:munderover><mml:munderover><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mrow><mml:mo>&#x2217;</mml:mo></mml:mrow></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x02133;</mml:mi></mml:mrow></mml:mrow></mml:munderover><mml:mi>w</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mrow><mml:mrow><mml:mo>&#x2217;</mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mrow><mml:mo>&#x2217;</mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-63"><mml:math id="mml-ieqn-63"><mml:mi>w</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the weight function for the <inline-formula id="ieqn-64"><mml:math id="mml-ieqn-64"><mml:mo stretchy="false">(</mml:mo><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> nodal density, constructed using compactly supported radial basis functions [<xref ref-type="bibr" rid="ref-37">37</xref>] with <inline-formula id="ieqn-65"><mml:math id="mml-ieqn-65"><mml:msup><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mn>4</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> continuity:
<disp-formula id="eqn-14"><label>(14)</label><mml:math id="mml-eqn-14" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mi>w</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo movablelimits="true" form="prefix">max</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>r</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mn>6</mml:mn></mml:mrow></mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mn>35</mml:mn><mml:msup><mml:mi>r</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mn>18</mml:mn><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mn>3</mml:mn><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-66"><mml:math id="mml-ieqn-66"><mml:mi>r</mml:mi><mml:mo>=</mml:mo><mml:mi>d</mml:mi><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. <inline-formula id="ieqn-67"><mml:math id="mml-ieqn-67"><mml:mi>d</mml:mi></mml:math></inline-formula> is the Euclidean distance between the current <inline-formula id="ieqn-68"><mml:math id="mml-ieqn-68"><mml:mo stretchy="false">(</mml:mo><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> control point and another <inline-formula id="ieqn-69"><mml:math id="mml-ieqn-69"><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> control point. <inline-formula id="ieqn-70"><mml:math id="mml-ieqn-70"><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the radius of the local support domain.</p>
<p>After filtering, a projection function [<xref ref-type="bibr" rid="ref-38">38</xref>] is applied to reduce intermediate density values:
<disp-formula id="eqn-15"><label>(15)</label><mml:math id="mml-eqn-15" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mi>&#x1D4C2;</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>tanh</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03B2;</mml:mi><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mi>tanh</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03B2;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>tanh</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03B2;</mml:mi><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mi>tanh</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03B2;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-71"><mml:math id="mml-ieqn-71"><mml:mi>&#x03B7;</mml:mi></mml:math></inline-formula> is the threshold (default: 0.5) and <inline-formula id="ieqn-72"><mml:math id="mml-ieqn-72"><mml:mi>&#x03B2;</mml:mi></mml:math></inline-formula> is the shape control parameter.</p>
<p>Based on the projection function, <inline-formula id="ieqn-73"><mml:math id="mml-ieqn-73"><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, the sensitivity of the projection function, is given by:
<disp-formula id="eqn-16"><label>(16)</label><mml:math id="mml-eqn-16" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mrow><mml:mi>&#x1D4C2;</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x03B2;</mml:mi><mml:mspace width="thinmathspace" /><mml:mrow><mml:mtext>sech</mml:mtext></mml:mrow><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03B2;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi>tanh</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03B2;</mml:mi><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mi>tanh</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03B2;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>In isogeometric analysis, the knot vector discretizes the design domain into IGA elements. For the stress-constrained topology optimization problem studied in this work, a constant density distribution within each IGA element is employed for problem formulation and sensitivity calculations. The density at the centroid of an IGA element is chosen as the elemental relative density, <inline-formula id="ieqn-74"><mml:math id="mml-ieqn-74"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, which is calculated as:
<disp-formula id="eqn-17"><label>(17)</label><mml:math id="mml-eqn-17" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x1D4C2;</mml:mi></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-75"><mml:math id="mml-ieqn-75"><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are the parametric coordinates of the eth element centroid. Based on the IGA discretization, the volume minimization problem with a maximum von Mises stress constraint is formulated as:
<disp-formula id="eqn-18"><label>(18)</label><mml:math id="mml-eqn-18" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"><mml:mtr><mml:mtd><mml:munder><mml:mo form="prefix">inf</mml:mo><mml:mi>&#x03C1;</mml:mi></mml:munder><mml:mo>&#x003A;</mml:mo><mml:mi>J</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03C1;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:munderover><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>e</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munderover><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mtext>s</mml:mtext></mml:mrow><mml:mo>.</mml:mo><mml:mrow><mml:mtext>t</mml:mtext></mml:mrow><mml:mo>.</mml:mo><mml:mo>&#x003A;</mml:mo><mml:mi>G</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x1D4B3;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo movablelimits="true" form="prefix">max</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>i</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2264;</mml:mo><mml:mn>0</mml:mn><mml:mrow><mml:mtext>&#xA0;for&#xA0;</mml:mtext></mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-76"><mml:math id="mml-ieqn-76"><mml:mi>J</mml:mi></mml:math></inline-formula> represents the structural volume. <inline-formula id="ieqn-77"><mml:math id="mml-ieqn-77"><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the IGA element volume, and <inline-formula id="ieqn-78"><mml:math id="mml-ieqn-78"><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the number of IGA elements. <inline-formula id="ieqn-79"><mml:math id="mml-ieqn-79"><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is the von Mises stress and <inline-formula id="ieqn-80"><mml:math id="mml-ieqn-80"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>i</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the prescribed stress limit. <inline-formula id="ieqn-81"><mml:math id="mml-ieqn-81"><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the total number of evaluation points. Typically, 2 &#x00D7; 2 Gauss points are employed for quadratic IGA elements. The elemental constitutive matrix is derived using a power-law relationship, <inline-formula id="ieqn-82"><mml:math id="mml-ieqn-82"><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>e</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>&#x03B3;</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, which is used to obtain the stiffness matrix.</p>
<p>The von Mises stress at a stress evaluation point a is expressed as:
<disp-formula id="eqn-19"><label>(19)</label><mml:math id="mml-eqn-19" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mtext mathvariant="bold">V</mml:mtext></mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mn>0.5</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-83"><mml:math id="mml-ieqn-83"><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the stress vector. The parameter s is set to a recommended value of 0.5 [<xref ref-type="bibr" rid="ref-39">39</xref>]. <inline-formula id="ieqn-84"><mml:math id="mml-ieqn-84"><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the strain-displacemnet matrix. <inline-formula id="ieqn-85"><mml:math id="mml-ieqn-85"><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the elemental displacement vector. <inline-formula id="ieqn-86"><mml:math id="mml-ieqn-86"><mml:mrow><mml:mtext mathvariant="bold">V</mml:mtext></mml:mrow></mml:math></inline-formula> is the constant matrix defined as:
<disp-formula id="eqn-20"><label>(20)</label><mml:math id="mml-eqn-20" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mtext mathvariant="bold">V</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mtable columnalign="center center center" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mo>&#x2212;</mml:mo><mml:mn>0.5</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x2212;</mml:mo><mml:mn>0.5</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>3</mml:mn></mml:mtd></mml:mtr></mml:mtable><mml:mo>]</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>To alleviate the difficulty in the optimization caused by local stress constraint, a p-norm global stress measure is employed to approximate the local maximum stress:
<disp-formula id="eqn-21"><label>(21)</label><mml:math id="mml-eqn-21" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mi>G</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x1D4B3;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>c</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>i</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2264;</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-87"><mml:math id="mml-ieqn-87"><mml:msup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:munderover><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munderover><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>. <inline-formula id="ieqn-88"><mml:math id="mml-ieqn-88"><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the total number of evaluation points. The scaling coefficient <inline-formula id="ieqn-89"><mml:math id="mml-ieqn-89"><mml:mi>c</mml:mi></mml:math></inline-formula> is updated at each iteration as <inline-formula id="ieqn-90"><mml:math id="mml-ieqn-90"><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo movablelimits="true" form="prefix">max</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> to minimize the gap between the p-norm stress <inline-formula id="ieqn-91"><mml:math id="mml-ieqn-91"><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and the maximum stress, where subscript n refers to the iteration number.</p>
<p>Based on the adjoint method detailed in the next subsection, the sensitivity of the objective and the constraint are obtained and summarized as:
<disp-formula id="eqn-22"><label>(22)</label><mml:math id="mml-eqn-22" display="block"><mml:mtable columnspacing="0 0 0" rowspacing="4pt" columnalign="center left center"><mml:mtr><mml:mtd></mml:mtd><mml:mtd><mml:mrow><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnspacing="1em" rowspacing=".2em" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:mfrac><mml:mrow><mml:mi>&#x2202;</mml:mi><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mrow><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>e</mml:mi><mml:mo>&#x2208;</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:mrow><mml:mrow><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo>&#x2062;</mml:mo><mml:mrow><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="script">G</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo>&#x2062;</mml:mo><mml:mrow><mml:mi>&#x03C8;</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo>&#x2062;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:mrow></mml:mtd><mml:mtd></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mtable columnspacing="0 0 0" rowspacing="4pt" columnalign="center left center"><mml:mtr><mml:mtd></mml:mtd><mml:mtd><mml:mrow><mml:mfrac><mml:mrow><mml:mi>&#x2202;</mml:mi><mml:mi>G</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mrow><mml:mrow><mml:mi>c</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>&#x2208;</mml:mo><mml:msub><mml:mi>J</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mo>&#x2062;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:mrow><mml:mo>&#x22C5;</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mo>&#x2062;</mml:mo><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x2062;</mml:mo><mml:msup><mml:mtext mathvariant="bold">V</mml:mtext><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mo>&#x2062;</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2062;</mml:mo><mml:mi>s</mml:mi><mml:mo>&#x2062;</mml:mo><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x2062;</mml:mo><mml:mrow><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo>&#x2062;</mml:mo><mml:mrow><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="script">G</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo>&#x2062;</mml:mo><mml:mrow><mml:mi>&#x03C8;</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo>&#x2062;</mml:mo><mml:msub><mml:mtext mathvariant="bold">D</mml:mtext><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>&#x2062;</mml:mo><mml:msub><mml:mtext mathvariant="bold">B</mml:mtext><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2062;</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:mrow></mml:mtd><mml:mtd></mml:mtd></mml:mtr><mml:mtr><mml:mtd></mml:mtd><mml:mtd><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mi>c</mml:mi><mml:mo>&#x2061;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">&#x03BB;</mml:mi><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mo>&#x2062;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x2202;</mml:mi><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mrow><mml:mi>&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x2062;</mml:mo><mml:mtext mathvariant="bold">u</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:mtd><mml:mtd></mml:mtd></mml:mtr></mml:mtable><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-92"><mml:math id="mml-ieqn-92"><mml:msub><mml:mi>I</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the set of elements connected to the control point <inline-formula id="ieqn-93"><mml:math id="mml-ieqn-93"><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. <inline-formula id="ieqn-94"><mml:math id="mml-ieqn-94"><mml:msub><mml:mi>J</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the set of stress evaluation points associated with <inline-formula id="ieqn-95"><mml:math id="mml-ieqn-95"><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. The adjoint vector <inline-formula id="ieqn-96"><mml:math id="mml-ieqn-96"><mml:mi mathvariant="bold-italic">&#x03BB;</mml:mi></mml:math></inline-formula> is calculated by solving the following equation:
<disp-formula id="eqn-23"><label>(23)</label><mml:math id="mml-eqn-23" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mi mathvariant="bold-italic">&#x03BB;</mml:mi><mml:mo>=</mml:mo><mml:munderover><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munderover><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msup><mml:mo>&#x22C5;</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mtext mathvariant="bold">V</mml:mtext></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The term <inline-formula id="ieqn-97"><mml:math id="mml-ieqn-97"><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> in <xref ref-type="disp-formula" rid="eqn-22">Eq. (22)</xref> is composed of the derivative of element stiffness matrix w.r.t. the design variable:
<disp-formula id="eqn-24"><label>(24)</label><mml:math id="mml-eqn-24" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msubsup><mml:mo>&#x222B;</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:msubsup><mml:msup><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mi>&#x03B3;</mml:mi><mml:msup><mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>&#x03B3;</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mtext>d</mml:mtext></mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>After obtaining the sensitivity, the MMA optimizer [<xref ref-type="bibr" rid="ref-22">22</xref>] is used to update the control density <inline-formula id="ieqn-98"><mml:math id="mml-ieqn-98"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. To improve the numerical stability of the topology optimization process, several schemes are employed. The coefficient <italic>c</italic> is averaged over the last 4 iterations, which means at the nth iteration, it is calculated as <inline-formula id="ieqn-99"><mml:math id="mml-ieqn-99"><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>0.25</mml:mn><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>. The design variable <inline-formula id="ieqn-100"><mml:math id="mml-ieqn-100"><mml:mi mathvariant="bold-italic">&#x03C1;</mml:mi></mml:math></inline-formula> is also updated based on the average value: <inline-formula id="ieqn-101"><mml:math id="mml-ieqn-101"><mml:msub><mml:mi mathvariant="bold-italic">&#x03C1;</mml:mi><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>0.5</mml:mn><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">&#x03C1;</mml:mi><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">&#x03C1;</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>. In the power law relationship to obtain the elemental constitutive matrix, <inline-formula id="ieqn-102"><mml:math id="mml-ieqn-102"><mml:mi>&#x03B3;</mml:mi></mml:math></inline-formula> starts at 0.8 and increases by 0.2 per iteration until reaching a maximum of 3.</p>
<p><bold><italic>Sensitivity Analysis</italic></bold></p>
<p>Based on the IGA discretization, the volume minimization problem with a maximum von Mises stress constraint is formulated in <xref ref-type="disp-formula" rid="eqn-18">Eq. (18)</xref>. The sensitivity of the objective function <inline-formula id="ieqn-103"><mml:math id="mml-ieqn-103"><mml:mi>J</mml:mi></mml:math></inline-formula> and constraint <inline-formula id="ieqn-104"><mml:math id="mml-ieqn-104"><mml:mi>G</mml:mi></mml:math></inline-formula> to the design variable <inline-formula id="ieqn-105"><mml:math id="mml-ieqn-105"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> are detailed in this subsection.</p>
<p>First, the derivative of objective <inline-formula id="ieqn-106"><mml:math id="mml-ieqn-106"><mml:mi>J</mml:mi></mml:math></inline-formula> w.r.t. the <inline-formula id="ieqn-107"><mml:math id="mml-ieqn-107"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> can be expressed as:
<disp-formula id="eqn-25"><label>(25)</label><mml:math id="mml-eqn-25" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:munderover><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>e</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munderover><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Since the density at the centroid of an IGA element is chosen as the elemental relative density, <inline-formula id="ieqn-108"><mml:math id="mml-ieqn-108"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, which is given by:
<disp-formula id="eqn-26"><label>(26)</label><mml:math id="mml-eqn-26" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-109"><mml:math id="mml-ieqn-109"><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the parametric coordinate of the eth element centroid. Substituting <xref ref-type="disp-formula" rid="eqn-26">Eqs. (26)</xref> into <xref ref-type="disp-formula" rid="eqn-25">(25)</xref>, we derive:
<disp-formula id="eqn-27"><label>(27)</label><mml:math id="mml-eqn-27" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>e</mml:mi><mml:mo>&#x2208;</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-110"><mml:math id="mml-ieqn-110"><mml:msub><mml:mi>I</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the set of elements connected to the control point <inline-formula id="ieqn-111"><mml:math id="mml-ieqn-111"><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. Incorporating the formulation of projection function in <xref ref-type="disp-formula" rid="eqn-15">Eq. (15)</xref> and filter function in <xref ref-type="disp-formula" rid="eqn-13">Eq. (13)</xref>, the <xref ref-type="disp-formula" rid="eqn-27">(27)</xref> becomes:
<disp-formula id="eqn-28"><label>(28)</label><mml:math id="mml-eqn-28" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>e</mml:mi><mml:mo>&#x2208;</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-112"><mml:math id="mml-ieqn-112"><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, the sensitivity of the projection function, is given by <xref ref-type="disp-formula" rid="eqn-16">Eq. (16)</xref>.</p>
<p>Next, the derivative of objective <inline-formula id="ieqn-113"><mml:math id="mml-ieqn-113"><mml:mi>G</mml:mi></mml:math></inline-formula> w.r.t. the <inline-formula id="ieqn-114"><mml:math id="mml-ieqn-114"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is derived. Since we use p-norm stress <inline-formula id="ieqn-115"><mml:math id="mml-ieqn-115"><mml:msup><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi>c</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:msup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> to approximate the <inline-formula id="ieqn-116"><mml:math id="mml-ieqn-116"><mml:mo movablelimits="true" form="prefix">max</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, we have:
<disp-formula id="eqn-29"><label>(29)</label><mml:math id="mml-eqn-29" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mi>c</mml:mi><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munderover><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The intermediate terms are as follows:
<disp-formula id="eqn-30"><label>(30)</label><mml:math id="mml-eqn-30" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msup><mml:mo>&#x22C5;</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-31"><label>(31)</label><mml:math id="mml-eqn-31" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mn>1</mml:mn><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mfrac></mml:mstyle><mml:msubsup><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mtext mathvariant="bold">V</mml:mtext></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Since <inline-formula id="ieqn-117"><mml:math id="mml-ieqn-117"><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, the last term <inline-formula id="ieqn-118"><mml:math id="mml-ieqn-118"><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> in <xref ref-type="disp-formula" rid="eqn-29">Eq. (29)</xref> becomes:
<disp-formula id="eqn-32"><label>(32)</label><mml:math id="mml-eqn-32" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>s</mml:mi><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Substituting <xref ref-type="disp-formula" rid="eqn-32">Eqs. (32)</xref> into <xref ref-type="disp-formula" rid="eqn-29">(29)</xref> yields:
<disp-formula id="eqn-33"><label>(33)</label><mml:math id="mml-eqn-33" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mi>c</mml:mi><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munderover><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mi>s</mml:mi><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Since external load is a constant, <inline-formula id="ieqn-119"><mml:math id="mml-ieqn-119"><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>. By differentiating <inline-formula id="ieqn-120"><mml:math id="mml-ieqn-120"><mml:mrow><mml:mtext mathvariant="bold">Ku</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mtext mathvariant="bold">f</mml:mtext></mml:mrow></mml:math></inline-formula>, we have:
<disp-formula id="eqn-34"><label>(34)</label><mml:math id="mml-eqn-34" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mrow><mml:mtext mathvariant="bold">u</mml:mtext></mml:mrow><mml:mo>+</mml:mo><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mrow><mml:mtext mathvariant="bold">u</mml:mtext></mml:mrow></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn>0.</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Multiplying <xref ref-type="disp-formula" rid="eqn-34">Eq. (34)</xref> by <inline-formula id="ieqn-121"><mml:math id="mml-ieqn-121"><mml:msup><mml:mi mathvariant="bold-italic">&#x03BB;</mml:mi><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and substituting into <xref ref-type="disp-formula" rid="eqn-33">Eq. (33)</xref>, we obtain:
<disp-formula id="eqn-35"><label>(35)</label><mml:math id="mml-eqn-35" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:mi>c</mml:mi><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munderover><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mi>s</mml:mi><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mi></mml:mi><mml:mspace width="1em" /><mml:mo>&#x2212;</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">&#x03BB;</mml:mi><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mrow><mml:mtext mathvariant="bold">u</mml:mtext></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">&#x03BB;</mml:mi><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mrow><mml:mtext mathvariant="bold">u</mml:mtext></mml:mrow></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Collecting all terms related to <inline-formula id="ieqn-122"><mml:math id="mml-ieqn-122"><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and let it equal to 0, we derive the adjoint equation:
<disp-formula id="eqn-36"><label>(36)</label><mml:math id="mml-eqn-36" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mi mathvariant="bold-italic">&#x03BB;</mml:mi><mml:mo>=</mml:mo><mml:munderover><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munderover><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:munderover><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munderover><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msup><mml:mo>&#x22C5;</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mtext mathvariant="bold">V</mml:mtext></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Solving <xref ref-type="disp-formula" rid="eqn-36">Eq. (36)</xref> and substituting <inline-formula id="ieqn-123"><mml:math id="mml-ieqn-123"><mml:mi mathvariant="bold-italic">&#x03BB;</mml:mi></mml:math></inline-formula> back to <xref ref-type="disp-formula" rid="eqn-35">Eq. (35)</xref> gives the final expression:
<disp-formula id="eqn-37"><label>(37)</label><mml:math id="mml-eqn-37" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:mi>c</mml:mi><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>&#x2208;</mml:mo><mml:msub><mml:mi>J</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mi>s</mml:mi><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mi>c</mml:mi><mml:msup><mml:mi mathvariant="bold-italic">&#x03BB;</mml:mi><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mrow><mml:mtext mathvariant="bold">u</mml:mtext></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mspace width="1em" /></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:mi>c</mml:mi><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>&#x2208;</mml:mo><mml:msub><mml:mi>J</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msup><mml:mo>&#x22C5;</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mtext mathvariant="bold">V</mml:mtext></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">&#x03C3;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mi>s</mml:mi><mml:msubsup><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mi>c</mml:mi><mml:msup><mml:mi mathvariant="bold-italic">&#x03BB;</mml:mi><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mrow><mml:mtext mathvariant="bold">u</mml:mtext></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-124"><mml:math id="mml-ieqn-124"><mml:msub><mml:mi>J</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the set of stress evaluation points associated with <inline-formula id="ieqn-125"><mml:math id="mml-ieqn-125"><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. The term <inline-formula id="ieqn-126"><mml:math id="mml-ieqn-126"><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> in <xref ref-type="disp-formula" rid="eqn-37">Eq. (37)</xref> is composed of the derivative of element stiffness matrix w.r.t. the design variable:
<disp-formula id="eqn-38"><label>(38)</label><mml:math id="mml-eqn-38" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mrow><mml:mtext mathvariant="bold">K</mml:mtext></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msubsup><mml:mo>&#x222B;</mml:mo><mml:mrow><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:msubsup><mml:msup><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mi>&#x03B3;</mml:mi><mml:msup><mml:mrow><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>&#x03B3;</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="script">m</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mi>&#x1D4A2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold">D</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mtext mathvariant="bold">B</mml:mtext></mml:mrow><mml:mrow><mml:mtext>d</mml:mtext></mml:mrow><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
</sec>
<sec id="s4">
<label>4</label>
<title>Online Learning Framework</title>
<p>The most time-consuming step in the IGA process is the calculation of the sensitivities <inline-formula id="ieqn-127"><mml:math id="mml-ieqn-127"><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:mi>G</mml:mi><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mi mathvariant="normal">&#x2202;</mml:mi><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, which depend on state variables. To speedup this calculation, the proposed online learning framework based on FNO model is employed to perform this sensitivity calculation. In this framework, design variables are the control densities, and an FNO surrogate model is constructed to predict sensitivity fields in selected iterations, replacing the conventional IGA calculations. The training data is collected dynamically using the design results obtained from previous TO iterations, and the FNO model is continuously updated using the newly generated data during the TO process.</p>
<p>The flowchart of the online learning process is shown in <xref ref-type="fig" rid="fig-3">Fig. 3</xref>. During the initialization phase, the traditional TO process based on isogeometric analysis (TO-IGA) is conducted for <inline-formula id="ieqn-128"><mml:math id="mml-ieqn-128"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> iterations. It is followed by another <inline-formula id="ieqn-129"><mml:math id="mml-ieqn-129"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> TO-IGA iterations. The designs and analysis results generated during these <inline-formula id="ieqn-130"><mml:math id="mml-ieqn-130"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> iterations are saved and used to train the initial FNO model. This initial FNO model is then integrated with TO process (TO-FNO) and optimization is carried out for <inline-formula id="ieqn-131"><mml:math id="mml-ieqn-131"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> iterations. If the design is unsatisfactory, another <inline-formula id="ieqn-132"><mml:math id="mml-ieqn-132"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> TO-IGA iterations are executed, and results generated from this process are collected. The optimized design at the last iteration is then evaluated. If it is still unsatisfactory, the FNO model is re-trained using the newly collected data, and the TO-FNO process continues for another <inline-formula id="ieqn-133"><mml:math id="mml-ieqn-133"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> iterations. This alternative process between TO-IGA and TO-FNO continues until the design meets the specified objectives and constraints.</p>
<fig id="fig-3">
<label>Figure 3</label>
<caption>
<title>The flowchart of the proposed online learning framework based on the IGA and FNO surrogate model</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-3.tif"/>
</fig>
<sec id="s4_1">
<label>4.1</label>
<title>FNO Surrogate Model</title>
<p>In this work, the FNO [<xref ref-type="bibr" rid="ref-40">40</xref>] is employed to construct a surrogate model that maps the control density <inline-formula id="ieqn-134"><mml:math id="mml-ieqn-134"><mml:mi>&#x03C1;</mml:mi><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> of the design domain, generated during the TO process, to its corresponding sensitivity field. In the framework, we adopt a localized patch-based prediction and multi-grid decomposition strategy.</p>
<p>The architecture of the FNO and the multi-grid input of the density field are illustrated in <xref ref-type="fig" rid="fig-4">Fig. 4</xref>. In this case shown in the figure, the MG level is 1, comprising two resolution levels (level 0 and level 1). The optimized structure is represented by density in physical space, however, the control density sorted in parametric space is selected as the input of FNO. The input tensor can be expressed as <inline-formula id="ieqn-135"><mml:math id="mml-ieqn-135"><mml:mi>a</mml:mi><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>c</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>m</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, where <italic>b</italic> is the batch size and <italic>c</italic> is the channel dimension, undergoes multi-grid decomposition along its spatial dimensions. This transformation yields an expanded tensor <inline-formula id="ieqn-136"><mml:math id="mml-ieqn-136"><mml:mi>a</mml:mi><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mn>4</mml:mn><mml:mi>b</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mn>2</mml:mn><mml:mi>c</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>m</mml:mi><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mn>2</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:mi>n</mml:mi><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, effectively increases the data volume by a factor of 4. This expansion proves particularly advantageous in online learning where training data may be limited. Following the multi-grid decomposition, the processed input is fed into the FNO model, which predicts the sensitivity field for each local region. These local predictions are then systematically concatenated to reconstruct the complete sensitivity field across the entire domain, as demonstrated in the rightmost portion of <xref ref-type="fig" rid="fig-4">Fig. 4</xref>.</p>
<fig id="fig-4">
<label>Figure 4</label>
<caption>
<title>The architecture of multi-grid FNO. Left column: multi-grid density input with MG level of 1; Middle column: the architecture of the FNO; Right column: the predicted sensitivity</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-4.tif"/>
</fig>
<p>The iterative updating process <inline-formula id="ieqn-137"><mml:math id="mml-ieqn-137"><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">&#x27FC;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">&#x27FC;</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo stretchy="false">&#x27FC;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> of the FNO model is illustrated in the middle column of <xref ref-type="fig" rid="fig-4">Fig. 4</xref>. First, the input <inline-formula id="ieqn-138"><mml:math id="mml-ieqn-138"><mml:mi>a</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> is lifted to a high-dimensional representation <inline-formula id="ieqn-139"><mml:math id="mml-ieqn-139"><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mi>&#x1D4AB;</mml:mi></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>a</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> through a linear transformation <inline-formula id="ieqn-140"><mml:math id="mml-ieqn-140"><mml:mrow><mml:mi>&#x1D4AB;</mml:mi></mml:mrow></mml:math></inline-formula>. This high-dimensional representation is then gone through a series of updates: <inline-formula id="ieqn-141"><mml:math id="mml-ieqn-141"><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">&#x27FC;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-142"><mml:math id="mml-ieqn-142"><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula>. Finally, it is projected back to the physical solution through a linear transformation Q: <inline-formula id="ieqn-143"><mml:math id="mml-ieqn-143"><mml:mi>u</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi>Q</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>. In the FNO training process, the control density <inline-formula id="ieqn-144"><mml:math id="mml-ieqn-144"><mml:mi>&#x03C1;</mml:mi><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> is treated as input, which reflects the topology of the structure and is initially set to 0.5.</p>
<p>The updating formula for the latent representation is illustrated in <xref ref-type="disp-formula" rid="eqn-39">Eq. (39)</xref>. The key idea in this updating formula is to add a non-local integral operation to the usual network updating procedure in each hidden layer:
<disp-formula id="eqn-39"><label>(39)</label><mml:math id="mml-eqn-39" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x1D4A6;</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>;</mml:mo><mml:mi>&#x03D5;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mi mathvariant="normal">&#x2200;</mml:mi><mml:mi>x</mml:mi><mml:mo>&#x2208;</mml:mo><mml:mi>D</mml:mi><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-145"><mml:math id="mml-ieqn-145"><mml:mi>W</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-146"><mml:math id="mml-ieqn-146"><mml:mi>&#x03C3;</mml:mi></mml:math></inline-formula> stand for a linear transformation and non-linear activation function, <italic>a</italic> represents problem parameters, <inline-formula id="ieqn-147"><mml:math id="mml-ieqn-147"><mml:mrow><mml:mi>&#x1D4A6;</mml:mi></mml:mrow></mml:math></inline-formula> is a non-local integral operator defined as <inline-formula id="ieqn-148"><mml:math id="mml-ieqn-148"><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mi>&#x1D4A6;</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>;</mml:mo><mml:mi>&#x03D5;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mo>&#x222B;</mml:mo><mml:mrow><mml:mi>D</mml:mi></mml:mrow></mml:msub><mml:mspace width="thinmathspace" /><mml:msub><mml:mi>&#x03BA;</mml:mi><mml:mrow><mml:mi>&#x03D5;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>a</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mtext>d</mml:mtext></mml:mrow><mml:mi>y</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-149"><mml:math id="mml-ieqn-149"><mml:mi>&#x03D5;</mml:mi></mml:math></inline-formula> denotes the network parameters. The operator <inline-formula id="ieqn-150"><mml:math id="mml-ieqn-150"><mml:mrow><mml:mi>&#x1D4A6;</mml:mi></mml:mrow></mml:math></inline-formula> is applied on function <inline-formula id="ieqn-151"><mml:math id="mml-ieqn-151"><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, which itself takes <italic>x</italic> as input. Therefore, the nested parentheses in <xref ref-type="disp-formula" rid="eqn-39">Eq. (39)</xref> reflect the operator acting on a function evaluated at a point. The convolutional nature of the integral allows it to be computed via a fast Fourier transform as shown in the following equation.
<disp-formula id="eqn-40"><label>(40)</label><mml:math id="mml-eqn-40" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mrow><mml:mi>&#x1D4A6;</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>;</mml:mo><mml:mi>&#x03D5;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi>&#x2131;</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x2131;</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03BA;</mml:mi><mml:mrow><mml:mi>&#x03D5;</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x22C5;</mml:mo><mml:mrow><mml:mi>&#x2131;</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi>&#x2131;</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>&#x03D5;</mml:mi></mml:mrow></mml:msub><mml:mo>&#x22C5;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x2131;</mml:mi></mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-152"><mml:math id="mml-ieqn-152"><mml:mrow><mml:mi>&#x2131;</mml:mi></mml:mrow></mml:math></inline-formula> denotes the Fourier transform of a function and <inline-formula id="ieqn-153"><mml:math id="mml-ieqn-153"><mml:msup><mml:mrow><mml:mi>&#x2131;</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> is its inverse. <inline-formula id="ieqn-154"><mml:math id="mml-ieqn-154"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>&#x03D5;</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is a tensor containing the Fourier coefficients of the kernel function <inline-formula id="ieqn-155"><mml:math id="mml-ieqn-155"><mml:msub><mml:mi>&#x03BA;</mml:mi><mml:mrow><mml:mi>&#x03D5;</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, which is determined through learning via network updates. The detailed implementation can be found in Refs. [<xref ref-type="bibr" rid="ref-40">40</xref>,<xref ref-type="bibr" rid="ref-41">41</xref>].</p>
</sec>
<sec id="s4_2">
<label>4.2</label>
<title>Multi-Grid Input</title>
<p>The multi-grid decomposition approach adopted in this work builds upon the method presented in [<xref ref-type="bibr" rid="ref-42">42</xref>] and is designed for a domain <italic>D</italic> discretized into <inline-formula id="ieqn-156"><mml:math id="mml-ieqn-156"><mml:msup><mml:mn>2</mml:mn><mml:mrow><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:msup><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>2</mml:mn><mml:mrow><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:msup></mml:math></inline-formula> elements, where <inline-formula id="ieqn-157"><mml:math id="mml-ieqn-157"><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">Z</mml:mi></mml:mrow><mml:mrow><mml:mo>+</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula>. The procedure unfolds as follows:
<list list-type="simple">
<list-item>
<label>&#x2022;</label><p>Initial configuration:
<list list-type="simple">
<list-item><label>&#x2013;</label>
<p>If any domain edge is shorter than <inline-formula id="ieqn-158"><mml:math id="mml-ieqn-158"><mml:msup><mml:mn>2</mml:mn><mml:mrow><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:msup></mml:math></inline-formula> or <inline-formula id="ieqn-159"><mml:math id="mml-ieqn-159"><mml:msup><mml:mn>2</mml:mn><mml:mrow><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:msup></mml:math></inline-formula>, padding is applied along that boundary to ensure compatibility.</p></list-item>
<list-item><label>&#x2013;</label>
<p>At a target resolution level <italic>L</italic>, the domain <italic>D</italic> is uniformly divided into <inline-formula id="ieqn-160"><mml:math id="mml-ieqn-160"><mml:msup><mml:mn>2</mml:mn><mml:mrow><mml:mn>2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> non-overlapping regions <inline-formula id="ieqn-161"><mml:math id="mml-ieqn-161"><mml:msubsup><mml:mi>D</mml:mi><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> (level 0), each of size <inline-formula id="ieqn-162"><mml:math id="mml-ieqn-162"><mml:msup><mml:mn>2</mml:mn><mml:mrow><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:msup><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>2</mml:mn><mml:mrow><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>.</p></list-item>
</list></p></list-item>
<list-item>
<label>&#x2022;</label><p>Hierarchical context expansion (levels <inline-formula id="ieqn-163"><mml:math id="mml-ieqn-163"><mml:mi>k</mml:mi></mml:math></inline-formula> &#x003D; 1 to <italic>L</italic>):
<list list-type="simple">
<list-item><label>&#x2013;</label>
<p>For each region <inline-formula id="ieqn-164"><mml:math id="mml-ieqn-164"><mml:msubsup><mml:mi>D</mml:mi><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, a sequence of larger surrounding regions <inline-formula id="ieqn-165"><mml:math id="mml-ieqn-165"><mml:msubsup><mml:mi>D</mml:mi><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is defined. Each of <inline-formula id="ieqn-166"><mml:math id="mml-ieqn-166"><mml:msubsup><mml:mi>D</mml:mi><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is centered on <inline-formula id="ieqn-167"><mml:math id="mml-ieqn-167"><mml:msubsup><mml:mi>D</mml:mi><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> and spans <inline-formula id="ieqn-168"><mml:math id="mml-ieqn-168"><mml:msup><mml:mn>2</mml:mn><mml:mrow><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msup><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>2</mml:mn><mml:mrow><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>.</p></list-item>
<list-item><label>&#x2013;</label>
<p>If these expanded regions extend beyond the domain boundaries, they are truncated accordingly.</p></list-item>
<list-item><label>&#x2013;</label>
<p>Each region <inline-formula id="ieqn-169"><mml:math id="mml-ieqn-169"><mml:msubsup><mml:mi>D</mml:mi><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is then uniformly downsampled by a factor of <inline-formula id="ieqn-170"><mml:math id="mml-ieqn-170"><mml:msup><mml:mn>0.5</mml:mn><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> in both directions, resulting in a patch of consistent size <inline-formula id="ieqn-171"><mml:math id="mml-ieqn-171"><mml:msup><mml:mn>2</mml:mn><mml:mrow><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:msup><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>2</mml:mn><mml:mrow><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, matching the level 0 resolution.</p></list-item>
</list></p></list-item>
<list-item>
<label>&#x2022;</label><p>Final output construction:
<list list-type="simple">
<list-item><label>&#x2013;</label>
<p>The downsampled patches from all levels (from 0 to <italic>L</italic>) are concatenated along the feature dimension to form a multi-grid input representation.</p></list-item>
</list></p></list-item>
</list></p>
<p><xref ref-type="fig" rid="fig-5">Fig. 5</xref> demonstrates the hierarchical decomposition when the maximum level is set to 2. The base region at level 0 (green square) is first identified within the domain. Around this region, increasingly larger patches are defined at coarse levels 1 and 2. At each level, the corresponding patch is downsampled to match the resolution of the level-0 patch, maintaining a consistent size across all levels. The final MG input is constructed by concatenating the level 0 patch with its coarse-level counterparts, forming a multi-scale feature representation that captures both local detail and broader contextual information.</p>
<fig id="fig-5">
<label>Figure 5</label>
<caption>
<title>An illustration of the multi-grid input construction with MG level of 2</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-5.tif"/>
</fig>
<p>To enhance dataset richness, an overlapping scheme is applied to local regions. For each local patch of size <inline-formula id="ieqn-172"><mml:math id="mml-ieqn-172"><mml:mi>W</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>H</mml:mi></mml:math></inline-formula>, neighboring patches are allowed to overlap by <inline-formula id="ieqn-173"><mml:math id="mml-ieqn-173"><mml:msub><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mi>W</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-174"><mml:math id="mml-ieqn-174"><mml:msub><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mi>H</mml:mi></mml:math></inline-formula> in the horizontal and vertical directions, respectively. Here <inline-formula id="ieqn-175"><mml:math id="mml-ieqn-175"><mml:msub><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-176"><mml:math id="mml-ieqn-176"><mml:msub><mml:mi>&#x03B7;</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> denote the overlapping ratios. As illustrated in <xref ref-type="fig" rid="fig-6">Fig. 6</xref>, when both overlapping ratios are set to 0.5, this configuration yields nine local patches at level 0: four core patches without overlap and five additional patches formed from overlapping regions.</p>
<fig id="fig-6">
<label>Figure 6</label>
<caption>
<title>Illustration of the overlapping strategy with the overlapping ratio of 0.5 in both directions</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-6.tif"/>
</fig>
</sec>
</sec>
<sec id="s5">
<label>5</label>
<title>Numerical Experiments</title>
<p>Two L-bracket design problems with different load positions, with their problem setups illustrated in <xref ref-type="fig" rid="fig-7">Fig. 7</xref>, are used as the benchmark examples to validate the effectiveness of the online learning framework. The optimization parameters are set as follows. The filter radius is 4, which means the adjacent 4 control densities are used for smoothing. The default norm value for the p-norm is 8. In this work, a uniformly distributed load <inline-formula id="ieqn-177"><mml:math id="mml-ieqn-177"><mml:mi mathvariant="bold-italic">t</mml:mi></mml:math></inline-formula> is applied. To compute the load assigned to the control points, numerical integration is performed using five Gaussian quadrature points [<xref ref-type="bibr" rid="ref-17">17</xref>]. For example, in <xref ref-type="fig" rid="fig-7">Fig. 7a</xref>, the load position in parametric space is <inline-formula id="ieqn-178"><mml:math id="mml-ieqn-178"><mml:mi>&#x03BE;</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mn>0.95</mml:mn><mml:mo>,</mml:mo><mml:mn>1.0</mml:mn><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>=</mml:mo><mml:mn>1.0</mml:mn></mml:math></inline-formula>. Load applied on control points <inline-formula id="ieqn-179"><mml:math id="mml-ieqn-179"><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> is calculated as:
<disp-formula id="eqn-41"><label>(41)</label><mml:math id="mml-eqn-41" display="block"><mml:mtable columnalign="left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>F</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mo>&#x222B;</mml:mo><mml:mrow><mml:mn>0.95</mml:mn></mml:mrow><mml:mrow><mml:mn>1.0</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mi mathvariant="bold-italic">t</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo symmetric="true">&#x2016;</mml:mo><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi mathvariant="bold-italic">S</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03B7;</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mrow><mml:mtext>d</mml:mtext></mml:mrow><mml:mi>&#x03BE;</mml:mi></mml:mrow></mml:mfrac><mml:mo symmetric="true">&#x2016;</mml:mo></mml:mrow><mml:mrow><mml:mtext>d</mml:mtext></mml:mrow><mml:mi>&#x03BE;</mml:mi><mml:mo>&#x2248;</mml:mo><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi mathvariant="bold-italic">t</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo symmetric="true">&#x2016;</mml:mo><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi mathvariant="bold-italic">S</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mrow><mml:mtext>d</mml:mtext></mml:mrow><mml:mi>&#x03BE;</mml:mi></mml:mrow></mml:mfrac><mml:mo symmetric="true">&#x2016;</mml:mo></mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-180"><mml:math id="mml-ieqn-180"><mml:mi mathvariant="bold-italic">t</mml:mi></mml:math></inline-formula> is the load per unit length, <inline-formula id="ieqn-181"><mml:math id="mml-ieqn-181"><mml:msub><mml:mi>&#x03BE;</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-182"><mml:math id="mml-ieqn-182"><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> are the <italic>k</italic>th Gauss points location and weight within the interval [0.95, 1.0]. Each design problem considered a total load of 2.0 N, and the stress constraint limit is set at 25 Pa.</p>
<fig id="fig-7">
<label>Figure 7</label>
<caption>
<title>Design domain of the L-bracket for the stress-constrained design: <bold>(a)</bold> load applied at the top, and <bold>(b)</bold> load applied on the side</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-7.tif"/>
</fig>
<p>We also consider another design domain of quarter annulus, illustrated as <xref ref-type="fig" rid="fig-8">Fig. 8</xref>. A total load of 2.0 N, and the stress constraint limit is set at 40 Pa.</p>
<fig id="fig-8">
<label>Figure 8</label>
<caption>
<title>Design domain of the quarter annulus for the stress-constrained design</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-8.tif"/>
</fig>
<p>All numerical experiments are conducted on a Windows 10 Pro operating system with an i7-11700 CPU, 16 GB RAM, and an NVIDIA 3060 GPU with 12 GB RAM. The implementation was done in MATLAB 2020b, with the online learning component executed using Python 3.8 and PyTorch 1.10.2 framework. In the FNO model, the number of modes kept after the Fourier transform is 12. The channel width is 64 after the lifting layer.</p>
<sec id="s5_1">
<label>5.1</label>
<title>Stress-Constrained Design Results</title>
<p>During the online learning process, the <inline-formula id="ieqn-183"><mml:math id="mml-ieqn-183"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-184"><mml:math id="mml-ieqn-184"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> values are maintained at 10 and 5, with optimization stopping after 210 iterations or the average change of the design variable smaller than 1e&#x2212;3. The default multi-grid level is 1 with no overlap. Training or tuning is performed for 150 epochs using a batch size of 12. The number of obtained control points is 103 &#x00D7; 52, so we use bottom edge padding to get input with a size of 104 &#x00D7; 52. In the projection <xref ref-type="disp-formula" rid="eqn-15">Eq. (15)</xref>, <inline-formula id="ieqn-185"><mml:math id="mml-ieqn-185"><mml:mi>&#x03B2;</mml:mi></mml:math></inline-formula> is initialized at 1.0 and increased by 1 every 10 iterations until reaching a maximum of 10. Data collection for online learning begins after the first 20 iterations (<inline-formula id="ieqn-186"><mml:math id="mml-ieqn-186"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 20).</p>
<p>For the design problem described in <xref ref-type="fig" rid="fig-7">Fig. 7a</xref>, based on our online learning framework, the structural evolution and the corresponding von Mises stress distributions at different iterations are shown in <xref ref-type="fig" rid="fig-9">Fig. 9</xref>. The stress plots are generated from a point cloud. Each point corresponds to a Gauss point and is colored by its computed stress value. The results illustrate that the structure gradually converges to an optimized design.</p>
<fig id="fig-9">
<label>Figure 9</label>
<caption>
<title>Design evolution and von Mises stress distribution at different iterations for the L-bracket example illustrated in <xref ref-type="fig" rid="fig-7">Fig. 7a</xref></title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-9.tif"/>
</fig>
<p>Design results for both design problems are listed in <xref ref-type="table" rid="table-1">Table 1</xref>, showing that the proposed online learning framework achieves results comparable to the ground truth TO-IGA in terms of the volume fraction value and stress constraint satisfaction. The effectiveness of the framework is validated by these findings. The evolution curves of volume fraction and the maximum von Mises stress are plotted in <xref ref-type="fig" rid="fig-10">Fig. 10</xref>, indicating that the curve of the maximum von Mises stress obtained from the online learning process is less smooth than that of the ground truth TO-IGA due to discrepancies between FNO-predicted sensitivities and actual values. These differences occasionally cause localized increases in stress, which are corrected in subsequent IGA updates. As the optimization converges, the maximum stress stabilizes and basically meets the constraints. At the same time, the online learning method can reduce the number of IGA evaluations from 210 to 150, reducing the total computational time by about 20%.</p>
<table-wrap id="table-1">
<label>Table 1</label>
<caption>
<title>Results summary for stress-constrained TO designs obtained from the online learning framework and the standard IGA approach. <italic>vf</italic> is the abbreviation of volume fraction. <inline-formula id="ieqn-187"><mml:math id="mml-ieqn-187"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the maximum von Mises stress</title>
</caption>
<table>
<colgroup>
<col align="center"/>
<col align="center"/>
<col align="center"/>
</colgroup>
<thead>
<tr>
<th align="center">Setup</th>
<th align="center">Ground truth<break/> TO-IGA results</th>
<th align="center">Online learning<break/> results</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="2">(a)</td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-1a.tif"/></td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-1b.tif"/></td>
</tr>
<tr>
<td><italic>vf</italic> &#x003D; 0.1500; <inline-formula id="ieqn-188"><mml:math id="mml-ieqn-188"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 25.2465; time &#x003D; 2540.44 s</td>
<td><italic>vf</italic> &#x003D; 0.1489; <inline-formula id="ieqn-189"><mml:math id="mml-ieqn-189"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 24.9176; time &#x003D; 2062.78 s</td>
</tr>
<tr>
<td rowspan="2">(b)</td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-1c.tif"/></td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-1d.tif"/></td>
</tr>
<tr>
<td><italic>vf</italic> &#x003D; 0.1465; <inline-formula id="ieqn-190"><mml:math id="mml-ieqn-190"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 24.9757; time &#x003D; 2429.20 s</td>
<td><italic>vf</italic> &#x003D; 0.1464; <inline-formula id="ieqn-191"><mml:math id="mml-ieqn-191"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 24.9528; time &#x003D; 2058.63 s</td>
</tr>
</tbody>
</table>
</table-wrap><fig id="fig-10">
<label>Figure 10</label>
<caption>
<title>Volume fraction and maximum von Mises stress evolution curves of (<bold>a</bold>) ground truth result for the design problem shown in <xref ref-type="fig" rid="fig-7">Fig. 7a</xref>, (<bold>b</bold>) online learning result for the design problem shown in <xref ref-type="fig" rid="fig-7">Fig. 7a</xref> setup, (<bold>c</bold>) ground truth result for the design problem shown in <xref ref-type="fig" rid="fig-7">Fig. 7b</xref>, (<bold>d</bold>) online learning result for the design problem shown in <xref ref-type="fig" rid="fig-7">Fig. 7b</xref></title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-10.tif"/>
</fig>
<p>Under the same online learning parameter settings, the design results for the quarter annulus example are summarized in <xref ref-type="table" rid="table-2">Table 2</xref>. We employ two different numbers of Gauss points to assess their influence. Increasing the number of Gauss points improves the accuracy of the response evaluation, leading to slight variations in the final optimized designs. Using a larger number of Gauss points also increases the total solving time. Nevertheless, under both settings, the online learning method consistently produces designs that are comparable to the ground truth, further confirming its effectiveness across different examples.</p>
<table-wrap id="table-2">
<label>Table 2</label>
<caption>
<title>Results summary for stress-constrained TO designs obtained from the online learning framework and the standard IGA approach. <italic>vf</italic> is the abbreviation of volume fraction. <inline-formula id="ieqn-192"><mml:math id="mml-ieqn-192"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the maximum von Mises stress</title>
</caption>
<table>
<colgroup>
<col align="center"/>
<col align="center"/>
<col align="center"/>
</colgroup>
<thead>
<tr>
<th align="center">Gauss points<break/> per element</th>
<th align="center">Ground truth<break/> TO-IGA results</th>
<th align="center">Online learning<break/> results</th>
</tr>
</thead>
<tbody>
<tr>
<td>2 &#x00D7; 2</td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-2a.tif"/></td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-2b.tif"/></td>
</tr>
<tr>
<td></td>
<td><italic>vf</italic> &#x003D; 0.1232; <inline-formula id="ieqn-193"><mml:math id="mml-ieqn-193"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 40.1762; time &#x003D; 2406.58 s</td>
<td><italic>vf</italic>&#x003D; 0.1238; <inline-formula id="ieqn-194"><mml:math id="mml-ieqn-194"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 40.4327; time &#x003D;<break/> 1783.18 s</td>
</tr>
<tr>
<td>3 &#x00D7; 3</td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-2c.tif"/></td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-2d.tif"/></td>
</tr>
<tr>
<td></td>
<td><italic>vf</italic> &#x003D; 0.1314; <inline-formula id="ieqn-195"><mml:math id="mml-ieqn-195"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 39.9690; time &#x003D;<break/> 3316.6 s</td>
<td><italic>vf</italic> &#x003D; 0.1278; <inline-formula id="ieqn-196"><mml:math id="mml-ieqn-196"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 40.1300; time &#x003D;<break/> 2570.9 s</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The evolution curves of volume fraction and the maximum von Mises stress using different Gauss points are plotted in <xref ref-type="fig" rid="fig-11">Fig. 11</xref>. Convergence of the curves is observed with the increasing iteration count in the quarter-annulus example.</p>
<fig id="fig-11">
<label>Figure 11</label>
<caption>
<title>Volume fraction and maximum von Mises stress evolution curves of (<bold>a</bold>) ground truth result using 2 &#x00D7; 2 Gauss points for the design problem shown in <xref ref-type="fig" rid="fig-8">Fig. 8</xref>, (<bold>b</bold>) online learning result using 2 &#x00D7; 2 Gauss points for the design problem shown in <xref ref-type="fig" rid="fig-8">Fig. 8</xref> setup. (<bold>c</bold>) ground truth result using 3 &#x00D7; 3 Gauss points for the design problem shown in <xref ref-type="fig" rid="fig-8">Fig. 8</xref>, (<bold>d</bold>) online learning result using 3 &#x00D7; 3 Gauss points for the design problem shown in the setup of <xref ref-type="fig" rid="fig-8">Fig. 8</xref></title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-11a.tif"/>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-11b.tif"/>
</fig>
</sec>
<sec id="s5_2">
<label>5.2</label>
<title>Parameter Study</title>
<sec id="s5_2_1">
<label>5.2.1</label>
<title>P-Norm</title>
<p>In this study, we employ p-norm stress as an approximation for maximum stress. The parameter p plays a crucial role in determining the approximation accuracy. To investigate the influence of the p-norm parameter on stress-constrained optimization, we test p-norm values of 4, 6, 8, and 10. The online learning settings are the same as those stated in <xref ref-type="sec" rid="s5_1">Section 5.1</xref>, with results shown in <xref ref-type="fig" rid="fig-12">Fig. 12</xref>. When p is too small, the optimized designs exhibit sharp corners. This phenomenon occurs because smaller values of p result in less accurate p-norm approximations of the maximum stress. As a result, the maximum stress of the optimized structure is slightly higher than those optimized structures obtained with a larger <italic>p</italic> value. For <inline-formula id="ieqn-197"><mml:math id="mml-ieqn-197"><mml:mi>p</mml:mi><mml:mo>&#x003E;</mml:mo><mml:mn>6</mml:mn></mml:math></inline-formula>, the objective function values are close to each other, and further increases in p have a negligible impact on the performance of the design. In addition, a very large <italic>p</italic> value, such as 10, may lead to numerical instability. Therefore, a default value of 8 is adopted in this work.</p>
<fig id="fig-12">
<label>Figure 12</label>
<caption>
<title>Online learning optimization results for different p-norm values. <italic>f</italic> is the volume objective. <inline-formula id="ieqn-198"><mml:math id="mml-ieqn-198"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the maximum von Mises stress</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-12a.tif"/>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-12b.tif"/>
</fig>
</sec>
<sec id="s5_2_2">
<label>5.2.2</label>
<title>Fourier Mode</title>
<p>In our implementation, we chose the default value of 12 Fourier modes based on findings from our previous work [<xref ref-type="bibr" rid="ref-41">41</xref>], where we observed that using 12 modes provides a good balance between accuracy and computational cost across a range of PDE-related problems. To further investigate the sensitivity of our method to the number of Fourier modes, we conduct additional experiments based on the first case in <xref ref-type="table" rid="table-1">Table 1</xref>. We compare results obtained using 4, 8, and 12 Fourier modes. The results are summarized in the following <xref ref-type="table" rid="table-3">Table 3</xref>. As shown, using fewer modes (e.g., 4) slightly increases the objective value, indicating a minor degradation in performance. Increasing the number of modescan improve that.</p>
<table-wrap id="table-3">
<label>Table 3</label>
<caption>
<title>The effect of different Fourier modes on topology optimization results</title>
</caption>
<table>
<colgroup>
<col align="center"/>
<col align="center"/>
<col align="center"/>
</colgroup>
<thead>
<tr>
<th align="center">Optimized result (mode &#x003D; 4)</th>
<th align="center">Optimized result (mode &#x003D; 8)</th>
<th align="center">Optimized result (mode &#x003D; 12)</th>
</tr>
</thead>
<tbody>
<tr>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-3a.tif"/></td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-3b.tif"/></td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-3c.tif"/></td>
</tr>
<tr>
<td><italic>vf</italic> &#x003D; 0.1555; <inline-formula id="ieqn-199"><mml:math id="mml-ieqn-199"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 25.0829</td>
<td><italic>vf</italic> &#x003D; 0.1549; <inline-formula id="ieqn-200"><mml:math id="mml-ieqn-200"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 24.9972</td>
<td><italic>vf</italic> &#x003D; 0.1489; <inline-formula id="ieqn-201"><mml:math id="mml-ieqn-201"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 24.9176</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s5_2_3">
<label>5.2.3</label>
<title>Overlapping Strategy</title>
<p>In the methodology section, we propose an overlapping strategy to increase the training data amount available for FNO training. Next, we examine the impact of this strategy on the effectiveness of the online learning approach for stress-constrained design problems. In this study, we fix <inline-formula id="ieqn-202"><mml:math id="mml-ieqn-202"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, while varying <inline-formula id="ieqn-203"><mml:math id="mml-ieqn-203"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>. In constructing the MG input, the overlapping ratio in both directions is set to 0.5. When <inline-formula id="ieqn-204"><mml:math id="mml-ieqn-204"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> reduces to 5, <inline-formula id="ieqn-205"><mml:math id="mml-ieqn-205"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> value of 21 is used. The results are summarized in <xref ref-type="table" rid="table-4">Table 4</xref>. Reducing <inline-formula id="ieqn-206"><mml:math id="mml-ieqn-206"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> decreases the number of IGA evaluations during online learning and thus reduces the computational time. But it also results in a smaller training dataset, which may negatively impact the accuracy of FNO predictions and final optimized results. It can be observed that employing the overlapping strategy can further obtain better objective function values. This demonstrates the role of overlap in generating additional datasets, which can further support the training of the FNO. This advantage becomes more pronounced when <inline-formula id="ieqn-207"><mml:math id="mml-ieqn-207"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> is small and the amount of training data is limited, as it enables the FNO to predict sensitivities more accurately and yields volume fractions that are closer to the ground truth.</p>
<table-wrap id="table-4">
<label>Table 4</label>
<caption>
<title>Impact of overlap on online learning optimization results. <italic>f</italic> is the volume objective function value. <inline-formula id="ieqn-208"><mml:math id="mml-ieqn-208"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the maximum von Mises stress</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
<col/>
</colgroup>
<thead>
<tr>
<th>(<inline-formula id="ieqn-209"><mml:math id="mml-ieqn-209"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-210"><mml:math id="mml-ieqn-210"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>)</th>
<th>Without overlap</th>
<th>With overlap</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="2">(8, 5)</td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-4a.tif"/></td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-4b.tif"/></td>
</tr>
<tr>
<td><italic>f</italic> &#x003D; 0.1504; <inline-formula id="ieqn-211"><mml:math id="mml-ieqn-211"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 25.0502</td>
<td><italic>f</italic> &#x003D; 0.1482; <inline-formula id="ieqn-212"><mml:math id="mml-ieqn-212"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 25.0415</td>
</tr>
<tr>
<td rowspan="2">(6, 5)</td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-4c.tif"/></td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-4d.tif"/></td>
</tr>
<tr>
<td><italic>f</italic> &#x003D; 0.1541; <inline-formula id="ieqn-213"><mml:math id="mml-ieqn-213"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 24.6945</td>
<td><italic>f</italic> &#x003D; 0.1502;<inline-formula id="ieqn-214"><mml:math id="mml-ieqn-214"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 25.5170</td>
</tr>
<tr>
<td rowspan="2">(5,5)</td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-4e.tif"/></td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-4f.tif"/></td>
</tr>
<tr>
<td><italic>f</italic> &#x003D; 0.1540; <inline-formula id="ieqn-215"><mml:math id="mml-ieqn-215"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 25.2548</td>
<td><italic>f</italic> &#x003D; 0.1513;<inline-formula id="ieqn-216"><mml:math id="mml-ieqn-216"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 24.6877</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>If the overlapping ratio is too small, it fails to effectively expand the dataset, whereas excessively large overlapping ratios are also not recommended. Because they will result in a higher GPU memory usage and a longer training time due to the increased number of training samples. Addition, extremely large overlapping ratios do not necessarily improve the accuracy as overfitting may occur. Therefore, a default value of 0.5 is adopted in our experiments.</p>
</sec>
<sec id="s5_2_4">
<label>5.2.4</label>
<title>Efficiency</title>
<p>As shown in <xref ref-type="table" rid="table-1">Table 1</xref>, the online learning approach reduces the total amount of computational time of the two design problems. However, the reduced amount is rather small, which is less than 20%. There are two main reasons for the small improvement in efficiency. First, a relatively small <inline-formula id="ieqn-217"><mml:math id="mml-ieqn-217"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> to <inline-formula id="ieqn-218"><mml:math id="mml-ieqn-218"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> ratio was employed in those calculations. Since the speedup is controlled by the ratio of ground truth computation time to the online learning solution time, to further enhance the speedup achieved by the online learning method, a smaller <inline-formula id="ieqn-219"><mml:math id="mml-ieqn-219"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> value and thus a larger ratio could be used, as demonstrated in <xref ref-type="table" rid="table-4">Table 4</xref>. Reducing <inline-formula id="ieqn-220"><mml:math id="mml-ieqn-220"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> to 5 (with overlap) shortens the total computation time to 1767.56 s, yielding a speedup of 1.44, which is larger than the speedup of 1.23 in <xref ref-type="table" rid="table-1">Table 1</xref>.</p>
<p>Second, the size of the two problems considered is rather small (103 &#x00D7; 52), it is expected a larger efficiency gain would be obtained for large-scale problems. We examine two additional design cases of different design resolutions, but with the same problem setup as shown in <xref ref-type="fig" rid="fig-7">Fig. 7a</xref>. The control point grids are set to (a) 63 &#x00D7; 48 and (b) 207 &#x00D7; 102, respectively. After padding, the input sizes of FNO are 64 &#x00D7; 48 and 208 &#x00D7; 104, respectively. For the larger case, the filter radius is 8 and <inline-formula id="ieqn-221"><mml:math id="mml-ieqn-221"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> is 25, while other parameters remain unchanged.</p>
<p>The design results of the two additional cases are provided in <xref ref-type="table" rid="table-5">Table 5</xref>. As shown, compared to the case with the size of 103 &#x00D7; 52, the speedup drops to 1.29&#x00D7; in case (a), while increasing to 1.78&#x00D7; in case (b). Based on the results from these three experiments, we plot the relationship between speedup and the number of control points, as shown in <xref ref-type="fig" rid="fig-13">Fig. 13</xref>. As the number of control points increases, the speedup gradually approaches the theoretical upper limit value of (<inline-formula id="ieqn-222"><mml:math id="mml-ieqn-222"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>)/<inline-formula id="ieqn-223"><mml:math id="mml-ieqn-223"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>. In the case when <inline-formula id="ieqn-224"><mml:math id="mml-ieqn-224"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>5</mml:mn></mml:math></inline-formula>, this value is 2.0.</p>
<table-wrap id="table-5">
<label>Table 5</label>
<caption>
<title>Design results using ground truth TO-IGA and online learning method. <italic>f</italic> is the volume objective function value. <inline-formula id="ieqn-225"><mml:math id="mml-ieqn-225"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the maximum von Mises stress</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
</colgroup>
<thead>
<tr>
<th>Ground truth results</th>
<th>Online learning results; <inline-formula id="ieqn-226"><mml:math id="mml-ieqn-226"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>,<inline-formula id="ieqn-227"><mml:math id="mml-ieqn-227"><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 5,5; MG level &#x003D; 1</th>
</tr>
</thead>
<tbody>
<tr>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-5a.tif"/></td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-5b.tif"/></td>
</tr>
<tr>
<td><italic>f</italic> &#x003D; 0.1834; <inline-formula id="ieqn-228"><mml:math id="mml-ieqn-228"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 25.0128; time &#x003D; 950.12 s</td>
<td><italic>f</italic> &#x003D; 0.1887; <inline-formula id="ieqn-229"><mml:math id="mml-ieqn-229"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 24.8197; time &#x003D; 738.27 s;</td>
</tr>
<tr>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-5c.tif"/></td>
<td><inline-graphic mimetype="image" mime-subtype="png" xlink:href="CMES_72447-inline-5d.tif"/></td>
</tr>
<tr>
<td><italic>f</italic> &#x003D; 0.1444; <inline-formula id="ieqn-230"><mml:math id="mml-ieqn-230"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 25.1271; time &#x003D; 30,604.28 s</td>
<td><italic>f</italic> &#x003D; 0.1446; <inline-formula id="ieqn-231"><mml:math id="mml-ieqn-231"><mml:msub><mml:mrow><mml:mi mathvariant="normal">&#x03C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x003D; 25.0978; time &#x003D; 17,222.91 s;</td>
</tr>
</tbody>
</table>
</table-wrap><fig id="fig-13">
<label>Figure 13</label>
<caption>
<title>The relationship between speedup and the number of control points</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMES_72447-fig-13.tif"/>
</fig>
<p>The trade-off between efficiency and accuracy is inherent in machine learning methods and is often difficult to analyze theoretically. However, our numerical experiments (including compliance design cases) indicate that a relative error of approximately 0.1% yields satisfactory designs with performance comparable to the ground-truth solution. The training data required to achieve this error threshold depends on the problem&#x2019;s complexity. The adaptive hierarchical strategy proposed in [<xref ref-type="bibr" rid="ref-29">29</xref>] can be employed to select appropriate multigrid levels and overlapping ratios based on a targeted speedup ratio.</p>
<p>In addition to the increased speedup achieved as the number of control points increases, the results also show that the objective function decreases from 0.1887 to 0.1446. Moreover, the optimized topology becomes more complex with refinement: the design contains four holes for the first two cases, whereas five holes appear in the finest mesh. These observations are consistent with the expectation since the design space expands as the number of control points increases.</p>
</sec>
</sec>
</sec>
<sec id="s6">
<label>6</label>
<title>Conclusion</title>
<p>This work presents an online learning framework to improve efficiency of isogeometric topology optimization, where the FNO surrogate is employed to predict sensitivity fields. A multi-grid decomposition strategy is employed, enabling the augmentation of training data and embedding global information across different levels in the input. This strategy enhances framework scalability and FNO prediction accuracy. The results of numerical experiments demonstrate the effectiveness of the proposed framework across two stress constrained design problems. By incorporating FNO as surrogate models, the framework significantly reduces the number of IGA evaluations and sensitivity calculations, leading to substantial computational savings while maintaining results comparable to ground-truth IGA solutions in large-scale examples. Reducing the usage ratio of IGA updates can further improve efficiency; however, this also reduces the amount of available data, which may negatively impact the accuracy of FNO predictions. Therefore, there&#x2019;s a tradeoff between efficiency and accuracy. Overlapping strategy can help increase the training dataset size, which can enhance the FNO&#x2019;s prediction accuracy.</p>
<p>There remain multiple promising directions for future research. For example, future efforts could focus on dynamically adjusting the FNO usage ratio during inference, possibly guided by design change indicators. Additionally, while the framework is validated on medium-scale problems, its scalability to giga-scale and 3D stress-constrained designs remain undemonstrated. Future work will include such large-scale 3D stress-constrained design problems and extensions to other application problems, such as acoustic wave analysis.</p>
</sec>
</body>
<back>
<ack>
<p>Not applicable.</p>
</ack>
<sec>
<title>Funding Statement</title>
<p>This work is supported by the Hong Kong Research Grants under Competitive Earmarked Research Grant No. 16206320.</p>
</sec>
<sec>
<title>Author Contributions</title>
<p>The authors confirm their contribution to the paper as follows: study conception and design: Wenjing Ye; data collection: Kangjie Li; analysis and interpretation of results: Kangjie Li, Wenjing Ye; draft manuscript preparation: Kangjie Li. All authors reviewed the results and approved the final version of the manuscript.</p>
</sec>
<sec sec-type="data-availability">
<title>Availability of Data and Materials</title>
<p>Data available on request from the authors.</p>
</sec>
<sec>
<title>Ethics Approval</title>
<p>Not applicable.</p>
</sec>
<sec sec-type="COI-statement">
<title>Conflicts of Interest</title>
<p>The authors declare no conflicts of interest to report regarding the present study.</p>
</sec>
<ref-list content-type="authoryear">
<title>References</title>
<ref id="ref-1"><label>[1]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Bends&#x00F8;e</surname> <given-names>MP</given-names></string-name>, <string-name><surname>Sigmund</surname> <given-names>O</given-names></string-name></person-group>. <article-title>Material interpolation schemes in topology optimization</article-title>. <source>Arch Appl Mech</source>. <year>1999</year>;<volume>69</volume>:<fpage>635</fpage>&#x2013;<lpage>54</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s004190050248</pub-id>.</mixed-citation></ref>
<ref id="ref-2"><label>[2]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>de Troya MA</surname> <given-names>S</given-names></string-name>, <string-name><surname>Tortorelli</surname> <given-names>DA</given-names></string-name></person-group>. <article-title>Adaptive mesh refinement in stress-constrained topology optimization</article-title>. <source>Struct Multidiscip Optim</source>. <year>2018</year>;<volume>58</volume>(<issue>6</issue>):<fpage>2369</fpage>&#x2013;<lpage>86</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s00158-018-2084-2</pub-id>.</mixed-citation></ref>
<ref id="ref-3"><label>[3]</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name><surname>Wang</surname> <given-names>S</given-names></string-name>, <string-name><surname>de Sturler</surname> <given-names>E</given-names></string-name>, <string-name><surname>Paulino</surname> <given-names>GH</given-names></string-name></person-group>. <article-title>Dynamic adaptive mesh refinement for topology optimization</article-title>. <comment>arXiv:1008.3453. 2010</comment>.</mixed-citation></ref>
<ref id="ref-4"><label>[4]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Hoshina</surname> <given-names>TY</given-names></string-name>, <string-name><surname>Menezes</surname> <given-names>IF</given-names></string-name>, <string-name><surname>Pereira</surname> <given-names>A</given-names></string-name></person-group>. <article-title>A simple adaptive mesh refinement scheme for topology optimization using polygonal meshes</article-title>. <source>J Braz Soc Mech Sci Eng</source>. <year>2018</year>;<volume>40</volume>(<issue>7</issue>):<fpage>348</fpage>. doi:<pub-id pub-id-type="doi">10.1007/s40430-018-1267-5</pub-id>.</mixed-citation></ref>
<ref id="ref-5"><label>[5]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Hughes</surname> <given-names>TJ</given-names></string-name>, <string-name><surname>Cottrell</surname> <given-names>JA</given-names></string-name>, <string-name><surname>Bazilevs</surname> <given-names>Y</given-names></string-name></person-group>. <article-title>Isogeometric analysis: CAD, finite elements, NURBS, exact geometry and mesh refinement</article-title>. <source>Comput Methods Appl Mech Eng</source>. <year>2005</year>;<volume>194</volume>(<issue>39&#x2013;41</issue>):<fpage>4135</fpage>&#x2013;<lpage>95</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.cma.2004.10.008</pub-id>.</mixed-citation></ref>
<ref id="ref-6"><label>[6]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Cottrell</surname> <given-names>JA</given-names></string-name>, <string-name><surname>Hughes</surname> <given-names>TJ</given-names></string-name>, <string-name><surname>Bazilevs</surname> <given-names>Y</given-names></string-name></person-group>. <source>Isogeometric analysis: toward integration of CAD and FEA</source>. <publisher-loc>Chichester, UK</publisher-loc>: <publisher-name>John Wiley &#x0026; Sons</publisher-name>; <year>2009</year>. <fpage>352</fpage> p.</mixed-citation></ref>
<ref id="ref-7"><label>[7]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Seo</surname> <given-names>YD</given-names></string-name>, <string-name><surname>Kim</surname> <given-names>HJ</given-names></string-name>, <string-name><surname>Youn</surname> <given-names>SK</given-names></string-name></person-group>. <article-title>Isogeometric topology optimization using trimmed spline surfaces</article-title>. <source>Comput Methods Appl Mech Eng</source>. <year>2010</year>;<volume>199</volume>(<issue>49&#x2013;52</issue>):<fpage>3270</fpage>&#x2013;<lpage>96</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.cma.2010.06.033</pub-id>.</mixed-citation></ref>
<ref id="ref-8"><label>[8]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Ded&#x00E8;</surname> <given-names>L</given-names></string-name>, <string-name><surname>Borden</surname> <given-names>MJ</given-names></string-name>, <string-name><surname>Hughes</surname> <given-names>TJ</given-names></string-name></person-group>. <article-title>Isogeometric analysis for topology optimization with a phase field model</article-title>. <source>Arch Comput Methods Eng</source>. <year>2012</year>;<volume>19</volume>:<fpage>427</fpage>&#x2013;<lpage>65</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s11831-012-9075-z</pub-id>.</mixed-citation></ref>
<ref id="ref-9"><label>[9]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Chen</surname> <given-names>W</given-names></string-name>, <string-name><surname>Su</surname> <given-names>X</given-names></string-name>, <string-name><surname>Liu</surname> <given-names>S</given-names></string-name></person-group>. <article-title>Algorithms of isogeometric analysis for MIST-based structural topology optimization in MATLAB</article-title>. <source>Struct Multidiscip Optim</source>. <year>2024</year>;<volume>67</volume>(<issue>3</issue>):<fpage>43</fpage>. doi:<pub-id pub-id-type="doi">10.1007/s00158-024-03764-4</pub-id>.</mixed-citation></ref>
<ref id="ref-10"><label>[10]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wang</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Benson</surname> <given-names>DJ</given-names></string-name></person-group>. <article-title>Isogeometric analysis for parameterized LSM-based structural topology optimization</article-title>. <source>Comput Mech</source>. <year>2016</year>;<volume>57</volume>:<fpage>19</fpage>&#x2013;<lpage>35</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s00466-015-1219-1</pub-id>.</mixed-citation></ref>
<ref id="ref-11"><label>[11]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Qiu</surname> <given-names>W</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>Q</given-names></string-name>, <string-name><surname>Gao</surname> <given-names>L</given-names></string-name>, <string-name><surname>Xia</surname> <given-names>Z</given-names></string-name></person-group>. <article-title>Evolutionary topology optimization for continuum structures using isogeometric analysis</article-title>. <source>Struct Multidiscip Optim</source>. <year>2022</year>;<volume>65</volume>(<issue>4</issue>):<fpage>121</fpage>. doi:<pub-id pub-id-type="doi">10.1007/s00158-022-03215-y</pub-id>.</mixed-citation></ref>
<ref id="ref-12"><label>[12]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Hou</surname> <given-names>W</given-names></string-name>, <string-name><surname>Gai</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Zhu</surname> <given-names>X</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>X</given-names></string-name>, <string-name><surname>Zhao</surname> <given-names>C</given-names></string-name>, <string-name><surname>Xu</surname> <given-names>L</given-names></string-name>, <etal>et al</etal></person-group>. <article-title>Explicit isogeometric topology optimization using moving morphable components</article-title>. <source>Comput Methods Appl Mech Eng</source>. <year>2017</year>;<volume>326</volume>:<fpage>694</fpage>&#x2013;<lpage>712</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.cma.2017.08.021</pub-id>.</mixed-citation></ref>
<ref id="ref-13"><label>[13]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Shaaban</surname> <given-names>AM</given-names></string-name>, <string-name><surname>Anitescu</surname> <given-names>C</given-names></string-name>, <string-name><surname>Atroshchenko</surname> <given-names>E</given-names></string-name>, <string-name><surname>Rabczuk</surname> <given-names>T</given-names></string-name></person-group>. <article-title>3D isogeometric boundary element analysis and structural shape optimization for Helmholtz acoustic scattering problems</article-title>. <source>Comput Methods Appl Mech Eng</source>. <year>2021</year>;<volume>384</volume>:<fpage>113950</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.cma.2021.113950</pub-id>.</mixed-citation></ref>
<ref id="ref-14"><label>[14]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Shaaban</surname> <given-names>AM</given-names></string-name>, <string-name><surname>Anitescu</surname> <given-names>C</given-names></string-name>, <string-name><surname>Atroshchenko</surname> <given-names>E</given-names></string-name>, <string-name><surname>Rabczuk</surname> <given-names>T</given-names></string-name></person-group>. <article-title>Isogeometric boundary element analysis and shape optimization by PSO for 3D axi-symmetric high frequency Helmholtz acoustic problems</article-title>. <source>J Sound Vib</source>. <year>2020</year>;<volume>486</volume>:<fpage>115598</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.jsv.2020.115598</pub-id>.</mixed-citation></ref>
<ref id="ref-15"><label>[15]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wang</surname> <given-names>J</given-names></string-name>, <string-name><surname>Jiang</surname> <given-names>F</given-names></string-name>, <string-name><surname>Zhao</surname> <given-names>W</given-names></string-name>, <string-name><surname>Chen</surname> <given-names>H</given-names></string-name></person-group>. <article-title>A combined shape and topology optimization based on isogeometric boundary element method for 3D acoustics</article-title>. <source>Comput Model Eng Sci</source>. <year>2021</year>;<volume>127</volume>(<issue>2</issue>):<fpage>645</fpage>&#x2013;<lpage>81</lpage>. doi:<pub-id pub-id-type="doi">10.32604/cmes.2021.015894</pub-id>.</mixed-citation></ref>
<ref id="ref-16"><label>[16]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Hassani</surname> <given-names>B</given-names></string-name>, <string-name><surname>Khanzadi</surname> <given-names>M</given-names></string-name>, <string-name><surname>Tavakkoli</surname> <given-names>SM</given-names></string-name></person-group>. <article-title>An isogeometrical approach to structural topology optimization by optimality criteria</article-title>. <source>Struct Multidiscip Optim</source>. <year>2012</year>;<volume>45</volume>:<fpage>223</fpage>&#x2013;<lpage>33</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s00158-011-0680-5</pub-id>.</mixed-citation></ref>
<ref id="ref-17"><label>[17]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Gao</surname> <given-names>J</given-names></string-name>, <string-name><surname>Gao</surname> <given-names>L</given-names></string-name>, <string-name><surname>Luo</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Li</surname> <given-names>P</given-names></string-name></person-group>. <article-title>Isogeometric topology optimization for continuum structures using density distribution function</article-title>. <source>Int J Numer Methods Eng</source>. <year>2019</year>;<volume>119</volume>(<issue>10</issue>):<fpage>991</fpage>&#x2013;<lpage>1017</lpage>. doi:<pub-id pub-id-type="doi">10.1002/nme.6081</pub-id>.</mixed-citation></ref>
<ref id="ref-18"><label>[18]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Gao</surname> <given-names>J</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>L</given-names></string-name>, <string-name><surname>Luo</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Gao</surname> <given-names>L</given-names></string-name></person-group>. <article-title>IgaTop: an implementation of topology optimization for structures using IGA in MATLAB</article-title>. <source>Struct Multidiscip Optim</source>. <year>2021</year>;<volume>64</volume>:<fpage>1669</fpage>&#x2013;<lpage>700</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s00158-021-02858-7</pub-id>.</mixed-citation></ref>
<ref id="ref-19"><label>[19]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhuang</surname> <given-names>C</given-names></string-name>, <string-name><surname>Xiong</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Ding</surname> <given-names>H</given-names></string-name></person-group>. <article-title>An efficient 2D/3D NURBS-based topology optimization implementation using page-wise matrix operation in MATLAB</article-title>. <source>Struct Multidiscip Optim</source>. <year>2023</year>;<volume>66</volume>(<issue>12</issue>):<fpage>254</fpage>. doi:<pub-id pub-id-type="doi">10.1007/s00158-023-03701-x</pub-id>.</mixed-citation></ref>
<ref id="ref-20"><label>[20]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>da Silva</surname> <given-names>GA</given-names></string-name>, <string-name><surname>Aage</surname> <given-names>N</given-names></string-name>, <string-name><surname>Beck</surname> <given-names>AT</given-names></string-name>, <string-name><surname>Sigmund</surname> <given-names>O</given-names></string-name></person-group>. <article-title>Local versus global stress constraint strategies in topology optimization: a comparative study</article-title>. <source>Int J Numer Methods Eng</source>. <year>2021</year>;<volume>122</volume>(<issue>21</issue>):<fpage>6003</fpage>&#x2013;<lpage>36</lpage>. doi:<pub-id pub-id-type="doi">10.1002/nme.6781</pub-id>.</mixed-citation></ref>
<ref id="ref-21"><label>[21]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Kazemi</surname> <given-names>HS</given-names></string-name>, <string-name><surname>Tavakkoli</surname> <given-names>SM</given-names></string-name>, <string-name><surname>Naderi</surname> <given-names>R</given-names></string-name></person-group>. <article-title>Isogeometric topology optimization of structures considering weight minimization and local stress constraints</article-title>. <source>Int J Optim Civ Eng</source>. <year>2016</year>;<volume>6</volume>(<issue>2</issue>):<fpage>303</fpage>&#x2013;<lpage>17</lpage>.</mixed-citation></ref>
<ref id="ref-22"><label>[22]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Svanberg</surname> <given-names>K</given-names></string-name></person-group>. <article-title>The method of moving asymptotes&#x2014;a new method for structural optimization</article-title>. <source>Int J Numer Methods Eng</source>. <year>1987</year>;<volume>24</volume>(<issue>2</issue>):<fpage>359</fpage>&#x2013;<lpage>73</lpage>. doi:<pub-id pub-id-type="doi">10.1002/nme.1620240207</pub-id>.</mixed-citation></ref>
<ref id="ref-23"><label>[23]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Jahangiry</surname> <given-names>HA</given-names></string-name>, <string-name><surname>Tavakkoli</surname> <given-names>SM</given-names></string-name></person-group>. <article-title>An isogeometrical approach to structural level set topology optimization</article-title>. <source>Comput Methods Appl Mech Eng</source>. <year>2017</year>;<volume>319</volume>:<fpage>240</fpage>&#x2013;<lpage>57</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.cma.2017.02.005</pub-id>.</mixed-citation></ref>
<ref id="ref-24"><label>[24]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Liu</surname> <given-names>H</given-names></string-name>, <string-name><surname>Yang</surname> <given-names>D</given-names></string-name>, <string-name><surname>Hao</surname> <given-names>P</given-names></string-name>, <string-name><surname>Zhu</surname> <given-names>X</given-names></string-name></person-group>. <article-title>Isogeometric analysis based topology optimization design with global stress constraint</article-title>. <source>Comput Methods Appl Mech Eng</source>. <year>2018</year>;<volume>342</volume>:<fpage>625</fpage>&#x2013;<lpage>52</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.cma.2018.08.013</pub-id>.</mixed-citation></ref>
<ref id="ref-25"><label>[25]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhai</surname> <given-names>X</given-names></string-name></person-group>. <article-title>Alternating optimization method for isogeometric topology optimization with stress constraints</article-title>. <source>J Comput Math</source>. <year>2024</year>;<volume>42</volume>(<issue>1</issue>):<fpage>134</fpage>&#x2013;<lpage>55</lpage>. doi:<pub-id pub-id-type="doi">10.4208/jcm.2209-m2021-0358</pub-id>.</mixed-citation></ref>
<ref id="ref-26"><label>[26]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Villalba</surname> <given-names>D</given-names></string-name>, <string-name><surname>Gon&#x00E7;alves</surname> <given-names>M</given-names></string-name>, <string-name><surname>Dias-de-Oliveira</surname> <given-names>J</given-names></string-name>, <string-name><surname>Andrade-Campos</surname> <given-names>A</given-names></string-name>, <string-name><surname>Valente</surname> <given-names>R</given-names></string-name></person-group>. <article-title>IGA-based topology optimization in the design of stress-constrained compliant mechanisms</article-title>. <source>Struct Multidiscip Optim</source>. <year>2023</year>;<volume>66</volume>(<issue>12</issue>):<fpage>244</fpage>. doi:<pub-id pub-id-type="doi">10.1007/s00158-023-03697-4</pub-id>.</mixed-citation></ref>
<ref id="ref-27"><label>[27]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Gao</surname> <given-names>J</given-names></string-name>, <string-name><surname>Gao</surname> <given-names>L</given-names></string-name>, <string-name><surname>Xiao</surname> <given-names>M</given-names></string-name></person-group>. <source>Isogeometric topology optimization: methods, applications and implementations</source>. <publisher-loc>Singapore</publisher-loc>: <publisher-name>Springer</publisher-name>; <year>2022</year>. <fpage>212</fpage> p.</mixed-citation></ref>
<ref id="ref-28"><label>[28]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Vo</surname> <given-names>D</given-names></string-name>, <string-name><surname>Nguyen</surname> <given-names>MN</given-names></string-name>, <string-name><surname>Bui</surname> <given-names>TQ</given-names></string-name>, <string-name><surname>Suttakul</surname> <given-names>P</given-names></string-name>, <string-name><surname>Rungamornrat</surname> <given-names>J</given-names></string-name></person-group>. <article-title>Isogeometric gradient-free proportional topology optimization (IGA-PTO) for compliance problem</article-title>. <source>Int J Numer Methods Eng</source>. <year>2023</year>;<volume>124</volume>(<issue>19</issue>):<fpage>4275</fpage>&#x2013;<lpage>310</lpage>. doi:<pub-id pub-id-type="doi">10.1002/nme.7315</pub-id>.</mixed-citation></ref>
<ref id="ref-29"><label>[29]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Li</surname> <given-names>K</given-names></string-name>, <string-name><surname>Ye</surname> <given-names>W</given-names></string-name></person-group>. <article-title>A multi-grid, single-mesh online learning framework for efficient large-scale topology optimization</article-title>. <source>Eng Comput</source>. Forthcoming. <year>2025</year>.</mixed-citation></ref>
<ref id="ref-30"><label>[30]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Toan</surname> <given-names>ML</given-names></string-name>, <string-name><surname>Elena</surname> <given-names>A</given-names></string-name>, <string-name><surname>Tinh</surname> <given-names>QB</given-names></string-name>, <string-name><surname>Jaroon</surname> <given-names>R</given-names></string-name></person-group>. <article-title>Material and thickness optimization of microscale in-plane FG thin-walled structures using deep neural network-assisted artificial hummingbird lgorithms</article-title>. <source>Comp Struct</source>. <year>2025</year>;<volume>368</volume>:<fpage>119227</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.compstruct.2025.119227</pub-id>.</mixed-citation></ref>
<ref id="ref-31"><label>[31]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Woldseth</surname> <given-names>RV</given-names></string-name>, <string-name><surname>Aage</surname> <given-names>N</given-names></string-name>, <string-name><surname>B&#x00E6;rentzen</surname> <given-names>JA</given-names></string-name>, <string-name><surname>Sigmund</surname> <given-names>O</given-names></string-name></person-group>. <article-title>On the use of artificial neural networks in topology optimisation</article-title>. <source>Struct Multidiscip Optim</source>. <year>2022</year>;<volume>65</volume>(<issue>10</issue>):<fpage>294</fpage>. doi:<pub-id pub-id-type="doi">10.1007/s00158-022-03347-1</pub-id>.</mixed-citation></ref>
<ref id="ref-32"><label>[32]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Xiang</surname> <given-names>C</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>D</given-names></string-name>, <string-name><surname>Pan</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Chen</surname> <given-names>A</given-names></string-name>, <string-name><surname>Zhou</surname> <given-names>X</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>Y</given-names></string-name></person-group>. <article-title>Accelerated topology optimization design of 3D structures based on deep learning</article-title>. <source>Struct Multidiscip Optim</source>. <year>2022</year>;<volume>65</volume>(<issue>3</issue>):<fpage>99</fpage>. doi:<pub-id pub-id-type="doi">10.1007/s00158-022-03194-0</pub-id>.</mixed-citation></ref>
<ref id="ref-33"><label>[33]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Gao</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Zhou</surname> <given-names>S</given-names></string-name>, <string-name><surname>Li</surname> <given-names>M</given-names></string-name></person-group>. <article-title>Structural topology optimization based on deep learning</article-title>. <source>J Comput Phys</source>. <year>2025</year>;<volume>520</volume>:<fpage>113506</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.jcp.2024.113506</pub-id>.</mixed-citation></ref>
<ref id="ref-34"><label>[34]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Xue</surname> <given-names>L</given-names></string-name>, <string-name><surname>Liu</surname> <given-names>J</given-names></string-name>, <string-name><surname>Wen</surname> <given-names>G</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>H</given-names></string-name></person-group>. <article-title>Efficient, high-resolution topology optimization method based on convolutional neural networks</article-title>. <source>Front Mech Eng</source>. <year>2021</year>;<volume>16</volume>(<issue>1</issue>):<fpage>80</fpage>&#x2013;<lpage>96</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s11465-020-0614-2</pub-id>.</mixed-citation></ref>
<ref id="ref-35"><label>[35]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Chi</surname> <given-names>H</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Tang</surname> <given-names>TLE</given-names></string-name>, <string-name><surname>Mirabella</surname> <given-names>L</given-names></string-name>, <string-name><surname>Dalloro</surname> <given-names>L</given-names></string-name>, <string-name><surname>Song</surname> <given-names>L</given-names></string-name>, <etal>et al.</etal></person-group> <article-title>Universal machine learning for topology optimization</article-title>. <source>Comput Methods Appl Mech Eng</source>. <year>2021</year>;<volume>375</volume>:<fpage>112739</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.cma.2019.112739</pub-id>.</mixed-citation></ref>
<ref id="ref-36"><label>[36]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Piegl</surname> <given-names>L</given-names></string-name>, <string-name><surname>Tiller</surname> <given-names>W</given-names></string-name></person-group>. <source>The NURBS book</source>. <edition>2nd ed</edition>. <publisher-loc>Berlin, Germany</publisher-loc>: <publisher-name>Springer</publisher-name>; <year>1997</year>. <fpage>646</fpage> p.</mixed-citation></ref>
<ref id="ref-37"><label>[37]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wendland</surname> <given-names>H</given-names></string-name></person-group>. <article-title>Piecewise polynomial, positive definite and compactly supported radial functions of minimal degree</article-title>. <source>Adv Comput Math</source>. <year>1995</year>;<volume>4</volume>:<fpage>389</fpage>&#x2013;<lpage>96</lpage>. doi:<pub-id pub-id-type="doi">10.1007/bf02123482</pub-id>.</mixed-citation></ref>
<ref id="ref-38"><label>[38]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Giraldo-Londo&#x00F1;o</surname> <given-names>O</given-names></string-name>, <string-name><surname>Paulino</surname> <given-names>GH</given-names></string-name></person-group>. <article-title>PolyStress: a Matlab implementation for local stress-constrained topology optimization using the augmented Lagrangian method</article-title>. <source>Struct Multidiscip Optim</source>. <year>2021</year>;<volume>63</volume>(<issue>4</issue>):<fpage>2065</fpage>&#x2013;<lpage>97</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s00158-020-02760-8</pub-id>.</mixed-citation></ref>
<ref id="ref-39"><label>[39]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Holmberg</surname> <given-names>E</given-names></string-name>, <string-name><surname>Torstenfelt</surname> <given-names>B</given-names></string-name>, <string-name><surname>Klarbring</surname> <given-names>A</given-names></string-name></person-group>. <article-title>Stress constrained topology optimization</article-title>. <source>Struct Multidiscip Optim</source>. <year>2013</year>;<volume>48</volume>:<fpage>33</fpage>&#x2013;<lpage>47</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s00158-012-0880-7</pub-id>.</mixed-citation></ref>
<ref id="ref-40"><label>[40]</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name><surname>Li</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Kovachki</surname> <given-names>N</given-names></string-name>, <string-name><surname>Azizzadenesheli</surname> <given-names>K</given-names></string-name>, <string-name><surname>Liu</surname> <given-names>B</given-names></string-name>, <string-name><surname>Bhattacharya</surname> <given-names>K</given-names></string-name>, <string-name><surname>Stuart</surname> <given-names>A</given-names></string-name>, <etal>et al.</etal></person-group> <article-title>Fourier neural operator for parametric partial differential equations</article-title>. <comment>arXiv:2010.08895. 2020</comment>.</mixed-citation></ref>
<ref id="ref-41"><label>[41]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Li</surname> <given-names>K</given-names></string-name>, <string-name><surname>Ye</surname> <given-names>W</given-names></string-name></person-group>. <article-title>D-FNO: a decomposed Fourier neural operator for large-scale parametric partial differential equations</article-title>. <source>Comput Methods Appl Mech Eng</source>. <year>2025</year>;<volume>436</volume>:<fpage>117732</fpage>. doi:<pub-id pub-id-type="doi">10.1016/j.cma.2025.117732</pub-id>.</mixed-citation></ref>
<ref id="ref-42"><label>[42]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Kossai</surname> <given-names>J</given-names></string-name>, <string-name><surname>Kovachki</surname> <given-names>N</given-names></string-name>, <string-name><surname>Azizzadenesheli</surname> <given-names>K</given-names></string-name>, <string-name><surname>Anandkumar</surname> <given-names>A</given-names></string-name></person-group>. <article-title>Multi-grid tensorized Fourier neural operator for high-resolution PDEs</article-title>. <source>Trans Mach Learn Res</source>. <year>2024</year>;<volume>8</volume>:<fpage>1</fpage>&#x2013;<lpage>27</lpage>.</mixed-citation></ref>
</ref-list>
</back></article>






