|
Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
|
In topology optimization problem we consider an abstract material indicator which we denote here by \(\rho(\mathbf{x}) \in [0,1]\), where \(\mathbf{x}\) are the spatial coordinates. The influence of this design on a physics simulation is commonly modelled by introducing additional coefficients into the PDE being solved. In the case of fluid mechanics problems, a common approach is Brinkman penalization, where an additional forcing term \(\mathbf{f} = - \chi \mathbf{u}\) is added to the Navier-Stokes equations (more information can be found in Brinkman source term).
neko-top.A mapping_t provides functionality for the mapping \(X_\text{in} \mapsto X_\text{out}\) as well as providing functionality to propagate sensitivity information via the chain rule, i.e. \(\frac{\partial \mathcal{F}}{\partial X_\text{out}} \mapsto \frac{\partial \mathcal{F}}{\partial X_\text{in}}\).
The mapping_cascade_t enables complex composite mappings to be combined
\[ X_1 \mapsto X_2 \mapsto ... \mapsto X_n, \]
and enables sensitivity information to be propagated back through the cascade
\[ \frac{\partial \mathcal{F}}{\partial X_n} \mapsto ... \mapsto \frac{\partial \mathcal{F}}{\partial X_1}. \]
The mapping cascade can be prescribed in the "design" section of the .case file under the list "mapping", for example:
"brinkman" type design.verbose_design, verbose_sensitivity, output_precision, and output_format options from optimization.design.The following mappings are currently implemented in Neko-top.
A filter based on the work of B. S. Lazarov, O. Sigmund that solves a Helmholtz-type differential equation to provide smoothing. The equation has the form
\[ -\tilde{r}^2 \nabla^2 X_\text{out} + X_\text{out} = X_\text{in}, \]
subject to Neumann boundary conditions ( \(\nabla X_\text{out} \cdot n = 0\)).
Note on the locality of the filter:
Although the Helmholtz-type PDE filter is formally a global operator (i.e. the solution is affected in the entire domain), its influence exhibits a rapid exponential decay. For a point source in \(X_\text{in}\), the filtered response \(X_\text{out}\) behaves as
\[ X_\text{out}(\mathbf{x}) \propto \exp\left(-\frac{|\mathbf{x}|}{\tilde{r}}\right), \]
where \(|\mathbf{x}|\) denotes the distance from the source. This exponential decay ensures that the filter acts in a localized manner. In the implementation, the effective filter radius \(\tilde{r}\) is related to the user-prescribed parameter \(r\) by
\[ \tilde{r} = \frac{r}{2\sqrt{3}}, \]
such that the parameter \(r\) corresponds to the physical filter radius commonly used in the topology optimization literature. This scaling ensures that the influence of the filter is strongly localized, with more than 95% of its effect contained within a distance \(r\). The filter can be selected by prescribing "type": "PDE_filter" and has the following input parameters:
| Name | Description | Admissible values | Default value |
|---|---|---|---|
r | Physical filter radius. Internally scaled as \(r/(2\sqrt{3})\). | Real | - |
tol | The desired tolerance used when solving the system. | Real | 0.0000000001 |
max_iter | Maximum number of iterations when solving the system. | Integer | 200 |
solver | Numerical solver used to solve the system. | cg,gmres, gmres | cg |
preconditioner | Pre-conditioner used to solve the system. | ident, hsmg, jacobi | jacobi |
Since the Helmholtz operator is Symmetric Positive Definite (SPD), CG is recommended. The convergence rate is highly dependent on the filter radius; larger radii typically improve the condition number.
A linear mapping of the form
\[ X_\text{out} = f_\text{min} + (f_\text{max} - f_\text{min}) X_\text{in}. \]
The mapping can be selected by prescribing "type": "linear" and has the following input parameters:
| Name | Description | Admissible values | Default value |
|---|---|---|---|
f_max | \(f_\text{max}\) in the above equation. | Real | - |
f_min | \(f_\text{min}\) in the above equation. | Real | 0.0 |
A mapping based on the RAMP taking the following two forms depending on the convexity,
concave up:
\[ X_\text{out} = f_\text{min} + (f_\text{max} - f_\text{min}) \frac{X_\text{in}}{1 +q(1 - X_\text{in})}, \]
concave down:
\[ X_\text{out} = f_\text{min} + (f_\text{max} - f_\text{min}) \frac{X_\text{in}(q + 1)}{q + X_\text{in}}, \]
where \(q\) is a penalty parameter.
The mapping can be selected by prescribing "type": "RAMP" and has the following input parameters:
| Name | Description | Admissible values | Default value |
|---|---|---|---|
f_max | \(f_\text{max}\) in the above equation. | Real | - |
f_min | \(f_\text{min}\) in the above equation. | Real | 0.0 |
q | \(q\) in the above equation. | Real | 1.0 |
convex_up | The convexity used in the above equation. | .true. or .false. | .true. |
A mapping based on the SIMP taking the following form
\[ X_\text{out} = f_\text{min} + (f_\text{max} - f_\text{min}) X_\text{in}^p, \]
where \(p\) is a penalty parameter.
The mapping can be selected by prescribing "type": "SIMP" and has the following input parameters:
| Name | Description | Admissible values | Default value |
|---|---|---|---|
f_max | \(f_\text{max}\) in the above equation. | Real | - |
f_min | \(f_\text{min}\) in the above equation. | Real | 0.0 |
p | \(p\) in the above equation. | Real | 1.0 |
A smooth Heaviside mapping taking the form,
\[ X_\text{out} = \frac{\tanh(\beta \eta) + \tanh(\beta (X_\text{in} - \eta))} {\tanh(\beta \eta) + \tanh(\beta (1-\eta))}, \]
where \(\beta>0\) controls the steepness and \(\eta\in[0,1]\) describes the threshold.
The mapping can be selected by prescribing "type": "heaviside_mapping" and has the following input parameters:
| Name | Description | Admissible values | Default value |
|---|---|---|---|
beta | Projection sharpness parameter \(\beta\). | Real, > 0 | 8.0 |
eta | Projection threshold parameter \(\eta\). | Real in [0,1] | 0.5 |