Skip to content

Commit

Permalink
Merge pull request idaholab#25869 from maxnezdyur/opt_docs
Browse files Browse the repository at this point in the history
Optimization Module Top Opt Docs
  • Loading branch information
GiudGiud authored Nov 2, 2023
2 parents e85a1a9 + f395562 commit 7e01935
Show file tree
Hide file tree
Showing 12 changed files with 107 additions and 15 deletions.
14 changes: 7 additions & 7 deletions modules/combined/doc/content/modules/combined/tutorials/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
52 changes: 52 additions & 0 deletions modules/optimization/doc/content/bib/optimization.bib
Original file line number Diff line number Diff line change
Expand Up @@ -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}
}
Original file line number Diff line number Diff line change
@@ -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]
Expand All @@ -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]

Original file line number Diff line number Diff line change
@@ -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!
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
Original file line number Diff line number Diff line change
@@ -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.

Expand All @@ -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


Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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!
Expand Down

0 comments on commit 7e01935

Please sign in to comment.