{"id":64074,"date":"2025-02-21T03:03:39","date_gmt":"2025-02-21T08:03:39","guid":{"rendered":"https:\/\/blogs.sw.siemens.com\/simcenter\/?p=64074"},"modified":"2026-03-26T06:51:01","modified_gmt":"2026-03-26T10:51:01","slug":"adjoint-optimization-at-full-speed","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/simcenter\/adjoint-optimization-at-full-speed\/","title":{"rendered":"Infinite problems, finite solutions: Adjoint optimization at full speed"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Achilles and the Tortoise \u2013 a timeless paradox<\/h2>\n\n\n\n<p>Long before adjoint optimization was a thing&#8230;Achilles and the Tortoise stand on a dusty runway under the hot sun, locked in a curious footrace towards a distant flag waving in the breeze. As they debate their purpose and what lays ahead, Zeno, the very creator of their fate, steps forward. A knowing smile on his face, he begins to share how he envisions the racecourse.<\/p>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"332\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/skildpadden-og-Achilleus1_480x480.webp\" alt=\"\" class=\"wp-image-64077 size-full\"\/><\/figure><div class=\"wp-block-media-text__content\">\n<p>Zeno: <em>Since the Tortoise is slower, he gets a head start of ten rods. The race begins. In a few bounds, Achilles reaches the spot where the Tortoise started.<\/em><\/p>\n\n\n\n<p>Achilles: <em>Hah!<\/em><\/p>\n\n\n\n<p>Zeno: <em>Now the Tortoise is just a rod ahead. Achilles catches up again.<\/em><\/p>\n\n\n\n<p>Achilles: <em>Ho ho!<\/em><\/p>\n\n\n\n<p>Zeno: <em>But in that instant, the Tortoise had advanced slightly. Achilles covers that too.<\/em><\/p>\n\n\n\n<p>Achilles: <em>Hee hee hee!<\/em><\/p>\n\n\n\n<p>Zeno: <em>Yet the Tortoise inches forward once more. This game must be played infinitely, meaning Achilles can never catch the Tortoise.<\/em><\/p>\n\n\n\n<p>Tortoise: <em>Heh heh heh heh!<\/em><\/p>\n\n\n\n<p><em>From: Zeno, Achilles and the Tortoise (almost) in G\u00f6del, Escher, Bach \u2013 Douglas R. Hofstadter<\/em><\/p>\n<\/div><\/div>\n\n\n\n<p>During my last holiday break, I was reading this lively exchange between the three guys, and my mind immediately went to the adjoint optimization I was trying to perform. The solver, like Achilles chasing the Tortoise, was stuck in an endless loop &#8211; stalling residuals, slow progress, and the promise of convergence just out of reach. The process felt like it could go on forever, with each step taking infinite time to complete, as if convergence was always just beyond the horizon.<\/p>\n\n\n\n<p>But what if Achilles didn\u2019t have to take every step to reach the flag? What if, instead of inching forward, he could leap over the inefficiencies of thought, collapsing the infinite into the finite? Can we break the <a href=\"https:\/\/blogs.sw.siemens.com\/simcenter\/solve-the-impossible-the-hard-ones-are-already-solved\/\" target=\"_blank\" rel=\"noreferrer noopener\">infinite loop<\/a>?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Chasing convergence <\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">The breakthrough for adjoint optimization<\/h3>\n\n\n\n<p>Yes, we can!<\/p>\n\n\n\n<p>Driven by our vision to deliver efficient and reliable solvers that push the boundaries of flow simulation, we have tackled some of the challenges limiting adjoint workflows performance, leaping over the inefficiencies of convergence. Simcenter STAR-CCM+ 2502 introduces significant algorithmic improvements to the second-order adjoint solver, enabling it to handle complex flows with major robustness.<\/p>\n\n\n\n<details class=\"wp-block-details has-background is-layout-flow wp-block-details-is-layout-flow\" style=\"background-color:#dfdfdf\"><summary>A small detour for Achilles:  adjoint and the adjoint optimization explained easy<br><\/summary>\n<p>In order to understand the way an adjoint based optimization works imagine you would like to become a six-star medal winner, i.e. finish all big marathons of this earth successfully.<\/p>\n\n\n\n<p>In a nutshell adjoint optimization for CFD (and six star medaling) is an algorithm that works like this:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>For a given object we simulate the internal or external flow simulation using CFD<\/li>\n<\/ol>\n\n\n\n<p>(You run any marathon)<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Then we assess something called the adjoint: A mathematical function that gives us an idea of which local surface area has which impact on the cost function, e.g. the lift or drag, the pressure loss or the flow rate. This requires a deeply converged solution with really low residuals &#8211;  at the heart of what this blog is all about.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"430\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint1-1024x430.png\" alt=\"\" class=\"wp-image-22831\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint1-1024x430.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint1-600x252.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint1-768x323.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint1-1536x646.png 1536w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint1-900x378.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint1.png 1896w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>(For the marathon the adjoint goes like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"487\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint2-1024x487.png\" alt=\"\" class=\"wp-image-22832\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint2-1024x487.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint2-600x285.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint2-768x365.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint2-1536x731.png 1536w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint2-900x428.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2021\/01\/Adjoint2.png 1682w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Next, comes the actual geometric optimization step: we let the CFD tool and mesher morph the areas that have the largest impact on the performance\/cost function by moving surfaces of the geometry inwards or outwards in accordance to the adjoint sensitivities. <\/li>\n<\/ol>\n\n\n\n<p>(You start training those parts of your body that were showing the biggest impact on your run time, detected by those parts that hurt the most. Yes, pain can be a good teacher!)<\/p>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>In the Simulation we start running the CFD with the newly formed now slightly modified (morphed) design. So you are back at step 1 but with an updated domain. This time, the cost function \u2013 when reassessed \u2013 should show an improved value<\/li>\n<\/ol>\n\n\n\n<p>(You are going to run the next Marathon after training the most relevant parts of your body. This time your finishing time should have improved.)<\/p>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>We do these steps 1 to 4 in loops until the geometric limitations of morphing are reached and\/or the cost function does not change significantly anymore.<\/li>\n<\/ol>\n<\/details>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Achieving convergence with second-order adjoint has always been a tough challenge, particularly for simulations involving intricate and turbulent flow dynamics. Slow progress or even stalling residuals were common hurdles, often demanding user intervention to fine-tune setups and stretch optimization studies to the edge of feasibility.<\/p>\n\n\n\n<p>The solver now overcomes these obstacles with ease. Cases that previously struggled to converge achieve results faster and more reliably, even in the most demanding scenarios\u2014and all without user intervention. The example below features the computation of adjoint surface sensitivities of Total Pressure ratio (with respect to Normal Displacement) for the <a href=\"https:\/\/ntrs.nasa.gov\/citations\/20230008978\" target=\"_blank\" rel=\"noreferrer noopener\">NASA High-Efficiency Centrifugal Compressor HECC<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-id=\"64080\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/02_HECC_AdjSensitivity-1024x576.png\" alt=\"\" class=\"wp-image-64080\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/02_HECC_AdjSensitivity-1024x576.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/02_HECC_AdjSensitivity-600x338.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/02_HECC_AdjSensitivity-768x432.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/02_HECC_AdjSensitivity-1536x864.png 1536w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/02_HECC_AdjSensitivity-395x222.png 395w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/02_HECC_AdjSensitivity-900x506.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/02_HECC_AdjSensitivity.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"577\" data-id=\"64079\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/03_HECC_AdjResidual-1024x577.png\" alt=\"Algorithmic improvements lead to (faster) convergence of adjoint solver with second order discretization\n\" class=\"wp-image-64079\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/03_HECC_AdjResidual-1024x577.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/03_HECC_AdjResidual-600x338.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/03_HECC_AdjResidual-768x433.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/03_HECC_AdjResidual-395x222.png 395w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/03_HECC_AdjResidual-900x507.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/03_HECC_AdjResidual.png 1510w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<figcaption class=\"blocks-gallery-caption wp-element-caption\">Left: Adjoint Surface Sensitivity of Total Pressure ratio with respect to Normal Displacement for the NASA HECC compressor. Right: comparison of adjoint residual convergence between versions 2410 and 2502.<\/figcaption><\/figure>\n\n\n\n<p>The improvement is clearly shown in the residuals plot. In earlier versions of the code, achieving second-order convergence was a struggle, with residuals stalling and progress halting altogether. In contrast, the new solver delivers a smooth and efficient convergence, dropping residuals by 10 orders of magnitude in just 80 iterations\u2026and breaking up the infinite loop!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Speed and efficiency <\/h3>\n\n\n\n<p>This leap in convergence rates brings a game-changing value to users: faster turnaround times.<\/p>\n\n\n\n<p>Since most adjoint simulations rely on convergence-based stopping criteria, the ability to reach these thresholds more quickly significantly shortens the overall computing time. What once needed hours of computation can now be achieved in a fraction of the time, enabling more optimization iterations and quicker delivery of results.<\/p>\n\n\n\n<p>As proven in the examples below, the improvement can deliver speedup factors up to 3x, depending on the complexity of the problem. For particularly challenging scenarios that previously did not converge at all, the speedup is (theoretically) infinite \ud83d\ude0a<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls poster=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/Adjoint-Convergence.png\" src=\"https:\/\/videos.mentor-cdn.com\/mgc\/videos\/5400\/6c10c07b-2733-4b84-a949-d7d3927d83fb-en-US-video.mp4\"><\/video><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Preserving accuracy <\/h3>\n\n\n\n<p>While the concept of an \u201cinfinite speedup\u201d is, of course, more thought-provoking than practical, it serves to highlight a crucial added value: the ability to achieve robust convergence without sacrificing precision. In the past, first-order adjoint was often the fallback solution when second-order methods struggled to converge. Although reliable, this comes at a cost\u2014reduced accuracy in sensitivity calculations, ultimately leading to suboptimal optimization outcomes.<\/p>\n\n\n\n<p>The new advancements cut this compromise. By enhancing the performance of the second-order adjoint solver, users can now achieve convergence with both reliability and precision. Sensitivity analyses keep their full second-order accuracy, delivering results that are not only robust but also high-fidelity. This ensures that even the most challenging flow scenarios\u2014where reliability and accuracy are paramount\u2014can be tackled effectively, unlocking the true potential of adjoint-based optimization. This is shown in the plots below, comparing the adjoint residual behavior for the Eclipse business jet and the NASA HECC test cases, in first and second order.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"406\" height=\"231\" data-id=\"64081\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/05_Eclipse_AdjResiduals_comparison.png\" alt=\"\" class=\"wp-image-64081\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"406\" height=\"231\" data-id=\"64082\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/06_HECC_AdjResiduals_comparison.png\" alt=\"Convergence of an adjoint is the precondition to adjoint optimization \" class=\"wp-image-64082\"\/><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">The real-world impact \u2013 from philosophy to engineering with adjoint optimization<\/h2>\n\n\n\n<p>To illustrate the benefits of these improvements to real-world engineering applications, an adjoint optimization study was performed on the <a href=\"https:\/\/arc.aiaa.org\/doi\/10.2514\/6.2022-0383\" target=\"_blank\" rel=\"noreferrer noopener\">aerodynamics of a business jet in cruise condition<\/a>.<\/p>\n\n\n\n<p>The goal of the adjoint optimization is to improve lift by redefining the shape of the jet\u2019s horizontal stabilizers. Using a shape optimization workflow, the surface morphing is driven by the adjoint sensitivities and constrained to a maximum displacement of <a>1 mm<\/a> per step. This ensures realistic modifications while keeping aerodynamic integrity for the entire airplane. The process consists of four adjoint optimization steps, progressively morphing the surface mesh of the stabilizers towards the final shape.<\/p>\n\n\n\n<p>Results highlight the power of the enhancement for adjoint optimization: 5% increase in lift, with a 30% saving of computing time for the whole adjoint optimization process (4 cycles of volume meshing, primal and adjoint solving), compared to earlier versions of Simcenter STAR-CCM+.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls poster=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/EclipseJet_Hero.png\" src=\"https:\/\/videos.mentor-cdn.com\/mgc\/videos\/5400\/6276cd37-1d5e-4df9-8cd5-3a37a8fd5edf-en-US-video.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Breaking free from the infinite adjoint residuals loop<\/h2>\n\n\n\n<p>Just as Achilles breaks free from the infinite loop to win the race against the Tortoise, adjoint simulation  no longer struggles with endless stalling residuals. The latest advancements in Simcenter STAR-CCM+ 2502 combine speed, robustness, and accuracy of the adjoint solver altogether.<\/p>\n\n\n\n<p>Whether it\u2019s shaving hours off an adjoint optimization loop or ensuring the highest fidelity in sensitivity results, we are committed to delivering products that ensure a smooth and efficient path to engineering success.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<a href=\"https:\/\/www.g2.com\/products\/simcenter-star-ccm\/reviews?utm_source=review-widget\" title=\"Read reviews of Simcenter STAR-CCM+ on G2\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"full-width\" style=\"max-width: 200px\" alt=\"Read Simcenter STAR-CCM+ reviews on G2\" src=\"https:\/\/www.g2.com\/products\/simcenter-star-ccm\/widgets\/stars?color=gray&amp;type=read\" \/><\/a><script>(function(a,b,c,d){window.fetch(\"https:\/\/www.g2.com\/products\/simcenter-star-ccm\/rating_schema.json\").then(e=>e.json()).then(f=>{c=a.createElement(b);c.type=\"application\/ld+json\";c.text=JSON.stringify(f);d=a.getElementsByTagName(b)[0];d.parentNode.insertBefore(c,d);});})(document,\"script\");<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Simcenter STAR-CCM+ 2502 enables seamless acceleration of adjoint optimization workflows<\/p>\n","protected":false},"author":90846,"featured_media":64112,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1,179],"tags":[242,636],"industry":[],"product":[513],"coauthors":[63529],"class_list":["post-64074","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","category-product-updates","tag-computational-fluid-dynamics-cfd","tag-process-integration-and-design-optimization","product-simcenter-star-ccm"],"featured_image_url":"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2025\/02\/EclipseJet_Hero.png","_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/posts\/64074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/users\/90846"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/comments?post=64074"}],"version-history":[{"count":5,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/posts\/64074\/revisions"}],"predecessor-version":[{"id":70498,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/posts\/64074\/revisions\/70498"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/media\/64112"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/media?parent=64074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/categories?post=64074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/tags?post=64074"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/industry?post=64074"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/product?post=64074"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/coauthors?post=64074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}