{"id":4894,"date":"2017-10-10T12:18:00","date_gmt":"2017-10-10T01:18:00","guid":{"rendered":"https:\/\/www.computationalfluiddynamics.com.au\/?p=2631"},"modified":"2017-10-10T12:18:00","modified_gmt":"2017-10-10T01:18:00","slug":"ansys-fluent-adjoint-solver-part-2","status":"publish","type":"post","link":"https:\/\/www.leapaust.com.au\/blog\/cfd\/ansys-fluent-adjoint-solver-part-2\/","title":{"rendered":"Shape Optimisation with the Adjoint solver, Part 2: Useful new features"},"content":{"rendered":"<div id=\"bsf_rt_marker\"><\/div><p><a href=\"https:\/\/www.computationalfluiddynamics.com.au\/shape-optimisation-adjoint-solver-part-1\/\">Our <strong>previous blog introduced the concept of an Adjoint solver and described how adjoint solutions can be used to automatically optimise the performance of your device or process<\/strong><\/a><strong>.<\/strong>\u00a0Building on this, let\u2019s now delve a little deeper\u2026 starting with acknowledging the limitations of the Adjoint solver in its first implementation, and how key new features in ANSYS Fluent v17 and v18 have now allowed the Adjoint solver to handle more practical user scenarios and a broader range of physics.<\/p>\n<p>When we first showed the Adjoint solver to our customers, they commonly had 2 reactions (in this order):<\/p>\n<ol>\n<li>\u201c<em>Wow, that is cool and could really make my life easier and improve my designs\u2026<\/em>\u201d<\/li>\n<li>\u201c<em>BUT (!) it won\u2019t work for me if you can\u2019t:<\/em>\n<ul>\n<li><em>Stop it from suggesting designs that are not manufacturable; and\/or<\/em><\/li>\n<li><em>Constrain the optimisation process to only occur within specified zones (ie. respect packaging constraints); and\/or<\/em><\/li>\n<li><em>Keep the shapes of key components fixed, but still allow the Adjoint solver freedom to move their position<\/em>\u201d.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Well, the <a href=\"http:\/\/www.ansys-blog.com\/critical-components-adjoint-solver\/\" target=\"_blank\" rel=\"noopener noreferrer\">development team at ANSYS have listened<\/a> to all of this feedback and the latest releases of the Adjoint solver have focused solely on improving the usefulness of the Adjoint solver for real-world customer problems &#8211; allowing for definition of multiple objectives; expanding to include more physics; and allowing more user control over geometry modifications and constraints.<\/p>\n<p><strong><u>Multi-objective optimisation in Adjoint Solver: \u00a0<\/u><\/strong><\/p>\n<p><strong>\u201cHow can I balance my design trade-offs and account for multiple objectives with the Adjoint solver?\u201d<\/strong><\/p>\n<p>The Adjoint solver now allows for a broad range of observable types to handle many more industrial problems. In addition to forces, one can specify pressure drop, swirl, surface and volume integrals as observables to be optimised in the design. The user can also create compound observables by combining existing ones using unary operations like ratio, product, arithmetic average etc. For internal flows, the Adjoint solver can be used to reduce total pressure loss and increase the flow uniformity of the outflow velocity profile.<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_2628\" aria-describedby=\"caption-attachment-2628\" style=\"width: 838px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.leapaust.com.au\/blog\/wp-content\/uploads\/2017\/07\/ANSYS-Fluent-Adjoint-Solver-pic-1.png\"><img fetchpriority=\"high\" decoding=\"async\" class=\"size-large wp-image-2628\" src=\"https:\/\/www.leapaust.com.au\/blog\/wp-content\/uploads\/2017\/07\/ANSYS-Fluent-Adjoint-Solver-pic-1-1024x611.png\" alt=\"ANSYS Fluent Adjoint Solver to reduce pressure drop and increase flow uniformity\" width=\"838\" height=\"500\" \/><\/a><figcaption id=\"caption-attachment-2628\" class=\"wp-caption-text\">Fig.1: Multiple objectives: reducing pressure drop and increasing flow uniformity in a pipe<\/figcaption><\/figure>\n<p><strong><u>More control over geometry changes in Adjoint solver:\u00a0 <\/u><\/strong><\/p>\n<p><strong>\u201cHow can I control where the Adjoint solver makes changes or constrain it to only move\/translate\/scale my existing geometry?\u201d<\/strong><\/p>\n<p>Although the Adjoint solver calculates sensitivities for the whole domain for a given observable, the user can now limit any geometry modifications to specific regions of the domain within a complex zone \u2013 using an imported STL file. In most cases, the component being optimized is a part of a bigger system and has various constraints on regions that can be modified and regions that need to be fixed. In such instances, one can go to the design conditions tab to specify a design condition such as \u201cfixed walls\u201d, \u201cbounding planes\u201d, \u201cbounded-by-surfaces\u201d etc, for the optimized design to adhere to the design conditions.<\/p>\n<figure id=\"attachment_2637\" aria-describedby=\"caption-attachment-2637\" style=\"width: 382px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.leapaust.com.au\/blog\/wp-content\/uploads\/2017\/07\/ANSYS-Fluent-Adjoint-Solver-pic-4.png\"><img decoding=\"async\" class=\"size-full wp-image-2637\" src=\"https:\/\/www.leapaust.com.au\/blog\/wp-content\/uploads\/2017\/07\/ANSYS-Fluent-Adjoint-Solver-pic-4.png\" alt=\"Surface imported to satisfy \u201cbounded-by-surfaces\u201d design condition.\" width=\"382\" height=\"568\" \/><\/a><figcaption id=\"caption-attachment-2637\" class=\"wp-caption-text\">Fig. 2: Surface imported to satisfy \u201cbounded-by-surfaces\u201d design condition.<\/figcaption><\/figure>\n<p>Another useful new feature allows users to specify surfaces that can undergo rotation or translation to improve your design objectives. This feature will allow re-positioning and re-orienting of existing parts within in a larger assembly &#8211; to improve overall efficiency of the design without actually changing the geometry of these \u201cstandard\u201d parts (which may be chosen for reasons of cost or manufacturability). Surfaces can also be scaled by applying a scale factor along a coordinate axis or a normal direction to allow the Adjoint solver to determine the optimum size required to improve the system performance.<\/p>\n<figure id=\"attachment_2753\" aria-describedby=\"caption-attachment-2753\" style=\"width: 780px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.leapaust.com.au\/blog\/wp-content\/uploads\/2017\/10\/translation-rotation-scaling.png\"><img decoding=\"async\" class=\"wp-image-2753 size-full\" src=\"https:\/\/www.leapaust.com.au\/blog\/wp-content\/uploads\/2017\/10\/translation-rotation-scaling.png\" alt=\"Translation, Rotation and Scaling options available in the Adjoint design tool\" width=\"780\" height=\"242\" \/><\/a><figcaption id=\"caption-attachment-2753\" class=\"wp-caption-text\">Fig. 3: Translation, Rotation and Scaling options available in the Adjoint design tool.<\/figcaption><\/figure>\n<p><strong><u>More physics supported in Adjoint Solver:\u00a0 <\/u><\/strong><\/p>\n<p><strong>\u201cHow can I use the Adjoint solver for problems involving rotating domains or conjugate heat transfer?\u201d<\/strong><\/p>\n<p>The flow physics supported by the Fluent Adjoint solver are being increased each version to help designers from a wide range of industries optimize their products in a better way. Periodic problems can be now analysed using this solver along with problems containing porous zones. In the latest release, problems involving moving reference frames can be tackled along with problems containing conjugate heat transfer. These new features make Adjoint solver a useful tool for challenging problems like fan design, as shown below.<\/p>\n<figure id=\"attachment_2629\" aria-describedby=\"caption-attachment-2629\" style=\"width: 977px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.leapaust.com.au\/blog\/wp-content\/uploads\/2017\/07\/ANSYS-Fluent-Adjoint-Solver-pic-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2629 size-full\" src=\"https:\/\/www.leapaust.com.au\/blog\/wp-content\/uploads\/2017\/07\/ANSYS-Fluent-Adjoint-Solver-pic-2.png\" alt=\"Using ANSYS Fluent Adjoint Solver to maximise fan efficiency of a fan using Adjoint Solver\" width=\"977\" height=\"656\" \/><\/a><figcaption id=\"caption-attachment-2629\" class=\"wp-caption-text\">Fig. 4: Maximise fan efficiency of a fan using Adjoint Solver<\/figcaption><\/figure>\n<p>In the above example, the objective of the optimization is to improve the efficiency of the fan by reducing the total pressure increase in the stage and reduce the torque and power required to drive the required mass flow through the stage. In this case, recommendations automatically generated by the Adjoint solver increase the fan efficiency by 8.5%.<\/p>\n<p>Allowing Adjoint solver to handle Conjugate heat transfer problems allows us to define the heat transfer on a surface as an observable in such problems. This is extremely useful in improving chipboard cooling designs where subtle changes in geometry identified by the Adjoint solver led to a 7.5% increase in the amount of heat transferred through the cooling surfaces when compared with baseline design.<\/p>\n<figure id=\"attachment_2630\" aria-describedby=\"caption-attachment-2630\" style=\"width: 707px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.leapaust.com.au\/blog\/wp-content\/uploads\/2017\/07\/ANSYS-Fluent-Adjoint-Solver-pic-3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2630 size-full\" src=\"https:\/\/www.leapaust.com.au\/blog\/wp-content\/uploads\/2017\/07\/ANSYS-Fluent-Adjoint-Solver-pic-3.png\" alt=\"Improve amount of heat transferred through Adjoint Solver\" width=\"707\" height=\"574\" \/><\/a><figcaption id=\"caption-attachment-2630\" class=\"wp-caption-text\">Fig. 5: Improve amount of heat transferred through Adjoint Solver for CHT problem.<\/figcaption><\/figure>\n<p>As the above examples illustrate, the Adjoint solver can now be used on a wider range of problems to improve your product performance.<\/p>\n<p>&nbsp;<\/p>\n<p><strong><u>Other useful notes on Adjoint solver:<\/u><\/strong><\/p>\n<p>When using multi-objective optimization, the user can export sensitivity data for each observable combination that takes part in the optimization. This is done through the region tab of the design tool after the deformation region is specified.\u00a0 The exported file contains the sensitivities of the observable for the mesh nodes within the specified deformation region.<\/p>\n<p>Once the bounding box and the design conditions are specified for the Adjoint solver, a design change can be calculated which calculates the expected change of the observable in the modified design. This expected change can be written to a file for future reference along with a separate file containing the surface displacements field for the new design. This feature is useful for version control of various design changes.<\/p>\n<p>These design changes can be applied to the geometry by clicking on modify mesh. It is possible to revert to the initial geometry if the user is not happy with the suggested modifications. Upon successful modification of the geometry, the user can export the new surfaces as STL files to recreate the new design in other software packages.<\/p>\n<p>As with most features within Ansys Fluent, all the commands within the Adjoint Solver workflow have counterparts in the text user interface. The iterative nature of Adjoint solver runs make it attractive to run via a Fluent journal file.<\/p>\n<p>This concludes our update on improvements to the ANSYS Fluent Adjoint solver. Readers are encouraged to <strong><a href=\"https:\/\/www.leapaust.com.au\/support\/\" target=\"_blank\" rel=\"noopener noreferrer\">contact support at LEAP Australia for specific information<\/a><\/strong> on best practices for setting up the Adjoint solver and for help in implementing these new features for a specific project.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In our 2nd part of a series on the Adjoint solver, learn how recent developments have focused solely on improving the usefulness of the Adjoint solver for real-world customer problems &#8211; allowing for definition of multiple objectives; expanding to include more physics; and allowing more user control over geometry modifications and constraints.<\/p>\n","protected":false},"author":3,"featured_media":4385,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","footnotes":""},"categories":[323],"tags":[],"class_list":["post-4894","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cfd"],"_links":{"self":[{"href":"https:\/\/www.leapaust.com.au\/blog\/wp-json\/wp\/v2\/posts\/4894","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.leapaust.com.au\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leapaust.com.au\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leapaust.com.au\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leapaust.com.au\/blog\/wp-json\/wp\/v2\/comments?post=4894"}],"version-history":[{"count":0,"href":"https:\/\/www.leapaust.com.au\/blog\/wp-json\/wp\/v2\/posts\/4894\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.leapaust.com.au\/blog\/wp-json\/wp\/v2\/media\/4385"}],"wp:attachment":[{"href":"https:\/\/www.leapaust.com.au\/blog\/wp-json\/wp\/v2\/media?parent=4894"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leapaust.com.au\/blog\/wp-json\/wp\/v2\/categories?post=4894"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leapaust.com.au\/blog\/wp-json\/wp\/v2\/tags?post=4894"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}