diff --git a/modules/combined/doc/content/modules/combined/tutorials/index.md b/modules/combined/doc/content/modules/combined/tutorials/index.md index e90ffbbb43f2..153636044c7a 100644 --- a/modules/combined/doc/content/modules/combined/tutorials/index.md +++ b/modules/combined/doc/content/modules/combined/tutorials/index.md @@ -16,10 +16,10 @@ acting on the same mesh domain. All the following examples employ SIMP topology optimization (see, e.g., [!cite](sigmund200199)): -- [Two-dimensional mechanical bridge with radial average filtering](combined/examples/optimization/2d_mbb.md) -- [Two-dimensional mechanical bridge with Helmholtz, PDE filtering](combined/examples/optimization/2d_mbb_pde.md) -- [Idem with adaptive mesh refinement](combined/examples/optimization/2d_mbb_pde_amr.md) -- [Three-dimensional mechanical bridge with radial average filtering](combined/examples/optimization/3d_mbb.md) -- [Multi-load with multiapp](combined/examples/optimization/multiload.md) -- [Thermal and mechanical optimization](combined/examples/optimization/thermomechanical.md) -- [Multimaterial](combined/examples/optimization/multimaterial.md) +- [Two-dimensional mechanical bridge with radial average filtering](modules/optimization/examples/topology_optimization/2d_mbb.md) +- [Two-dimensional mechanical bridge with Helmholtz, PDE filtering](modules/optimization/examples/topology_optimization/2d_mbb_pde.md) +- [Two-dimensional mechanical bridge with adaptive mesh refinement](modules/optimization/examples/topology_optimization/2d_mbb_pde_amr.md) +- [Three-dimensional mechanical bridge with radial average filtering](modules/optimization/examples/topology_optimization/3d_mbb.md) +- [Multi-load with multiapp](modules/optimization/examples/topology_optimization/multiload.md) +- [Thermal and mechanical optimization](modules/optimization/examples/topology_optimization/thermomechanical.md) +- [Multimaterial](modules/optimization/examples/topology_optimization/multimaterial.md) diff --git a/modules/optimization/doc/content/bib/optimization.bib b/modules/optimization/doc/content/bib/optimization.bib index c11691dbc433..fd36166783d9 100644 --- a/modules/optimization/doc/content/bib/optimization.bib +++ b/modules/optimization/doc/content/bib/optimization.bib @@ -85,3 +85,55 @@ @article{zuo2017multi year={2017}, publisher={Springer} } +@article{sigmund200199, +title={A 99 line topology optimization code written in Matlab}, +author={Sigmund, Ole}, +journal={Structural and multidisciplinary optimization}, +volume={21}, +pages={120--127}, +year={2001}, +publisher={Springer} +} +@book{bendsoe2003topology, + title={Topology optimization: theory, methods, and applications}, + author={Bendsoe, Martin Philip and Sigmund, Ole}, + year={2003}, + publisher={Springer Science \& Business Media} +} +@article{tavakoli2014alternating, + title={Alternating active-phase algorithm for multimaterial topology optimization problems: a 115-line MATLAB implementation}, + author={Tavakoli, Rouhollah and Mohseni, Seyyed Mohammad}, + journal={Structural and Multidisciplinary Optimization}, + volume={49}, + pages={621--642}, + year={2014}, + publisher={Springer} +} +@article{sigmund2007, +author = {Sigmund, Ole}, +year = {2007}, +month = {04}, +pages = {401-424}, +title = {Morphology-based black and white filters for topology optimization}, +volume = {33}, +journal = {Structural and Multidisciplinary Optimization}, +doi = {10.1007/s00158-006-0087-x} +} +@Article{pde_filter, +author = {Wallin, Mathias and Ivarsson, Niklas and Amir, Oded and Tortorelli, Daniel}, +title = {Consistent Boundary Conditions for PDE Filter Regularization in Topology Optimization}, +year = {2020}, +issue_date = {Sep 2020}, +publisher = {Springer-Verlag}, +address = {Berlin, Heidelberg}, +volume = {62}, +number = {3}, +issn = {1615-147X}, +url = {https://doi.org/10.1007/s00158-020-02556-w}, +doi = {10.1007/s00158-020-02556-w}, +journal = {Struct. Multidiscip. Optim.}, +month = {sep}, +pages = {1299–1311}, +numpages = {13}, +keywords = {PDE filter, Boundary effects, Topology optimization} +} diff --git a/modules/optimization/doc/content/modules/optimization/examples/index.md b/modules/optimization/doc/content/modules/optimization/examples/index.md index c6f7b71a90b6..c74033b972a9 100644 --- a/modules/optimization/doc/content/modules/optimization/examples/index.md +++ b/modules/optimization/doc/content/modules/optimization/examples/index.md @@ -1,5 +1,7 @@ # Example Problems +## Inverse Optimization + The following pages provide examples on how to use the optimization module to solve inverse optimization problems for force and material inversion. The MOOSE optimization module relies heavily on [MultiApps](MultiApps/index.md) to solve PDE constrained optimization problems. The main-app in the `Multiapps` system contains the optimization executioner which controls the execution and transfer of data in the sub-apps containing either the "forward" or "adjoint" numerical problem. The "forward" model is the numerical model of the system of interest and is used for computing the objective function. The "adjoint" model is the adjoint of the forward model and computes the adjoint variable used to compute the derivatives needed for optimization. Examples on the below pages follow the derivations given on the [Theory page](theory/InvOptTheory.md). - [examples/forceInv_main.md] @@ -11,7 +13,11 @@ heat conduction in a solid, as described in this [section](theory/InvOptTheory.m Regardless of which type of inversion problem you are trying to solve, it is recommended that you start with the [Example 1: Point Loads](forceInv_pointLoads.md). This example contains the best documentation on all of the MOOSE objects needed to solve an optimization and most importantly, this is the simplest optimization problem. When setting up your own optimization problems, you will likely run into problems and the [debuggingHelp.md] page will help with the Tao executioner options and output that can help locate the problem. +## Topology Optimization Solid Isotropic Material Penalization (SIMP) examples typically require mechanical or thermal physics to meaningfully leverage the optimization module's capabilities. Some SIMP examples, including those that combine multiple loads, multiple materials, and multiple physics are available in the MOOSE combined module. + +- [examples/top_opt_main.md] + diff --git a/modules/optimization/doc/content/modules/optimization/examples/top_opt_main.md b/modules/optimization/doc/content/modules/optimization/examples/top_opt_main.md new file mode 100644 index 000000000000..c04c4121e102 --- /dev/null +++ b/modules/optimization/doc/content/modules/optimization/examples/top_opt_main.md @@ -0,0 +1,33 @@ +# Topology Optimization Examples + + +!card! large_media/optimization/2d_mbb.mp4 title=[2D Topology Optimization with a Convolution Filter](2d_mbb.md) +A detailed description of the 2D topology optimization problem with the implementation of Convolution Filter. +!card-end! + +!card! large_media/optimization/2d_mbb_pde.mp4 title=[2D Topology Optimization with PDE Filter and Boundary Penalty](2d_mbb_pde.md) +An in-depth discussion on 2D topology optimization with a focus on PDE Filter techniques. +!card-end! + +!card! large_media/optimization/2d_mbb_pde_amr.png title=[2D Topology Optimization with PDE Filter and Adaptive Mesh Refinement](2d_mbb_pde_amr.md) +An example problem illustrating 2D topology optimization with the use of PDE Filter and Adaptive Mesh Refinement. +!card-end! + +!card! large_media/optimization/3d_mbb.mp4 title=[3D Topology Optimization with PDE Filter](3d_mbb.md) +An example showcasing 3D topology optimization using PDE Filter. +!card-end! + +!card! large_media/optimization/multiload.png title=[Multi-load with multiapp](multiload.md) +An example showcasing topology optimization with multiple loads. +!card-end! + +!card! large_media/optimization/multimaterial.png style=width:50% title=[Ordered SIMP: Multimaterial](multimaterial.md) +An example showcasing topology optimization with multiple materials and a cost constraint. +!card-end! + +!card! large_media/optimization/tm.png style=width:50% title=[Thermomechanical SIMP](thermomechanical.md) +An example showcasing topology optimization with for thermal compliance. +!card-end! + + +## All input files for these examples can be found in the `Combined` Module! diff --git a/modules/combined/doc/content/modules/combined/examples/optimization/2d_mbb.md b/modules/optimization/doc/content/modules/optimization/examples/topology_optimization/2d_mbb.md similarity index 100% rename from modules/combined/doc/content/modules/combined/examples/optimization/2d_mbb.md rename to modules/optimization/doc/content/modules/optimization/examples/topology_optimization/2d_mbb.md diff --git a/modules/combined/doc/content/modules/combined/examples/optimization/2d_mbb_pde.md b/modules/optimization/doc/content/modules/optimization/examples/topology_optimization/2d_mbb_pde.md similarity index 94% rename from modules/combined/doc/content/modules/combined/examples/optimization/2d_mbb_pde.md rename to modules/optimization/doc/content/modules/optimization/examples/topology_optimization/2d_mbb_pde.md index 1f922d7e17e8..7b6aa9d46c70 100644 --- a/modules/combined/doc/content/modules/combined/examples/optimization/2d_mbb_pde.md +++ b/modules/optimization/doc/content/modules/optimization/examples/topology_optimization/2d_mbb_pde.md @@ -3,7 +3,7 @@ In this example we will go over using a PDE filter instead of a convolution type filter (see [!cite](pde_filter)). For larger problems this method may scale better depending on processor counts and filter radius size. Only new material not covered in the previous -example will be covered here [2D Topology Optimization with Radial Average Filter](examples/optimization/2d_mbb.md). +example will be covered here [2D Topology Optimization with a Convolution Filter](2d_mbb.md). First there is a new variable `Dc` that will be the filtered sensitivity. diff --git a/modules/combined/doc/content/modules/combined/examples/optimization/2d_mbb_pde_amr.md b/modules/optimization/doc/content/modules/optimization/examples/topology_optimization/2d_mbb_pde_amr.md similarity index 88% rename from modules/combined/doc/content/modules/combined/examples/optimization/2d_mbb_pde_amr.md rename to modules/optimization/doc/content/modules/optimization/examples/topology_optimization/2d_mbb_pde_amr.md index 321b1cfb9687..1a41041308b4 100644 --- a/modules/combined/doc/content/modules/combined/examples/optimization/2d_mbb_pde_amr.md +++ b/modules/optimization/doc/content/modules/optimization/examples/topology_optimization/2d_mbb_pde_amr.md @@ -1,7 +1,7 @@ # 2D MBB Beam with a Convolution Filter and Adaptive Mesh Refinement In this example we will go over the SIMP approach to topology optimization using adaptive mesh refinement. Only new material not covered in the previous -example will be covered here [2D Topology Optimization with Radial Average Filter](examples/optimization/2d_mbb.md), [2D Topology Optimization with PDE Filter and Boundary Penalty](examples/optimization/2d_mbb_pde.md). +example will be covered here [2D Topology Optimization with Radial Average Filter](2d_mbb.md), [2D Topology Optimization with PDE Filter and Boundary Penalty](2d_mbb_pde.md). The main addition for this example is showing an effective indicator for adaptive mesh refinement, which is the `mat_den_nodal` variable below.. In the `AuxVariables` block there is a new variable. diff --git a/modules/combined/doc/content/modules/combined/examples/optimization/3d_mbb.md b/modules/optimization/doc/content/modules/optimization/examples/topology_optimization/3d_mbb.md similarity index 69% rename from modules/combined/doc/content/modules/combined/examples/optimization/3d_mbb.md rename to modules/optimization/doc/content/modules/optimization/examples/topology_optimization/3d_mbb.md index 2de6c743335f..75dbc2cda474 100644 --- a/modules/combined/doc/content/modules/combined/examples/optimization/3d_mbb.md +++ b/modules/optimization/doc/content/modules/optimization/examples/topology_optimization/3d_mbb.md @@ -1,7 +1,7 @@ # 3D MBB Beam with a PDE Filter In this example is included to show that TROUT works in 3D too. Only new material not covered in the previous -example will be covered here [2D Topology Optimization with Radial Average Filter](examples/optimization/2d_mbb.md), [2D Topology Optimization with PDE Filter and Boundary Penalty](examples/optimization/2d_mbb_pde.md), [3D Topology Optimization with PDE Filter](examples/optimization/3d_mbb.md). +example will be covered here [2D Topology Optimization with Radial Average Filter](2d_mbb.md), [2D Topology Optimization with PDE Filter and Boundary Penalty](2d_mbb_pde.md), [3D Topology Optimization with PDE Filter](3d_mbb.md). In this example, the mesh block is 3D. @@ -10,6 +10,7 @@ In this example, the mesh block is 3D. caption=MBB `Mesh` block The results below show the final design for the 3D MBB problem. + !media large_media/optimization/3d_mbb.mp4 style=width:100%; controls=False autoplay=True loop=True diff --git a/modules/combined/doc/content/modules/combined/examples/optimization/multiload.md b/modules/optimization/doc/content/modules/optimization/examples/topology_optimization/multiload.md similarity index 96% rename from modules/combined/doc/content/modules/combined/examples/optimization/multiload.md rename to modules/optimization/doc/content/modules/optimization/examples/topology_optimization/multiload.md index 01258ecf4470..8f0435b87aaa 100644 --- a/modules/combined/doc/content/modules/combined/examples/optimization/multiload.md +++ b/modules/optimization/doc/content/modules/optimization/examples/topology_optimization/multiload.md @@ -1,7 +1,7 @@ # Multiple Load SIMP We employ here a multi-app scheme similar to that employed in -[Thermal and mechanical optimization](combined/examples/optimization/thermomechanical.md). +[Thermal and mechanical optimization](topology_optimization/thermomechanical.md). In this example, each subapp is solving the same mechanics problem with a different applied load. The sensitivity of the structure to each load is computed separately and used in a global optimization algorithm. Considering the optimization of a problem with diff --git a/modules/combined/doc/content/modules/combined/examples/optimization/multimaterial.md b/modules/optimization/doc/content/modules/optimization/examples/topology_optimization/multimaterial.md similarity index 100% rename from modules/combined/doc/content/modules/combined/examples/optimization/multimaterial.md rename to modules/optimization/doc/content/modules/optimization/examples/topology_optimization/multimaterial.md diff --git a/modules/combined/doc/content/modules/combined/examples/optimization/thermomechanical.md b/modules/optimization/doc/content/modules/optimization/examples/topology_optimization/thermomechanical.md similarity index 100% rename from modules/combined/doc/content/modules/combined/examples/optimization/thermomechanical.md rename to modules/optimization/doc/content/modules/optimization/examples/topology_optimization/thermomechanical.md diff --git a/modules/optimization/doc/content/modules/optimization/index.md b/modules/optimization/doc/content/modules/optimization/index.md index 49ba68d3d894..732a4c9abb9a 100644 --- a/modules/optimization/doc/content/modules/optimization/index.md +++ b/modules/optimization/doc/content/modules/optimization/index.md @@ -2,14 +2,14 @@ # MOOSE Optimization Module -## Inverse Optimization Code +## Optimization Code -The MOOSE optimization module provides functionality for solving inverse optimization -problems in moose. It is based on PDE constrained optimization using the PETSC TAO optimization solver. +The MOOSE optimization module provides functionality for solving optimization +problems in moose. It uses the TAO optimization interface from PETSc for solving PDE-constrained optimization problems. !row! !col! small=12 medium=4 large=4 icon=toys -### [Theory](theory/InvOptTheory.md) class=center style=font-weight:200; +### [Inverse Optimization Theory](theory/InvOptTheory.md) class=center style=font-weight:200; Learn the theory behind PDE constrained optimization as implemented in the MOOSE optimization module. !col-end!