Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
Loading...
Searching...
No Matches
Objectives and constraints

Neko-top allows the user to solve constrained optimization problems, often times but not limited to, topology optimization problems involving fluid mechanics.

Objectives and constraints enter the .case file in neko-top as lists

{
"version": 1.0
"case": {},
"optimization": {
"objectives": [],
"constraints": []
}
}

In neko-top multiple objectives can be prescribed in a list, resulting in a multi-objective optimization problem which is handled by a weighted sum of all prescribed objectives

\[ \mathcal{F} = \sum_i w_i \mathcal{F}_i, \]

where \(\mathcal{F}i\) is an objective value \(w_i\) is a prescribed weight.

Multiple constraints on the other hand are also entered in a list but are handled through the MMA functionality discussed in The Method of Moving Asymptotes (MMA).

The following objectives

  1. Minimum dissipation
  2. Velocity penalty
  3. Scalar mixing

and constraints

  1. Volume constraint

have currently been implemented in neko-topยท

Objectives

Minimum dissipation

This objective is used to either minimize or maximize the pseudo-dissipation. It takes the form

\[ \mathcal{F} = \frac{1}{|\Omega_\text{obj}|}\int_{\Omega_\text{obj}} \frac{1}{2} |\nabla \mathbf{u}|^2 d\Omega, \]

where \(\mathbf{u}\) is the fluid velocity, \(\Omega_\text{obj}\) is the objective domain, \(|\nabla \mathbf{u}|^2\) the pseudo-dissipation where the notation \(|\cdot|\) denotes the Frobenius norm and where \(|\Omega_\text{obj}|\) denotes the volume of the objective domain.

The objective can be selected by prescribing "type": "minimum_dissipation" and has the following input parameters:

Name Description Admissible values Default value
weight The weight used in the objective. Real 1.0
mask_name The name of the point_zone indicating \(\Omega_\text{obj}\). String ""
name The name that will appear in objective_data.csv String Dissipation

Velocity penalty

In the works of A. Gersborg-Hansen et al. (2005) an objective function of the form

\[ \mathcal{F} = \frac{1}{2}\int \frac{1}{2} \left[ \underset{I}{\nabla \mathbf{u} \cdot \left(\nabla \mathbf{u} + (\nabla \mathbf{u})^T \right)} + \underset{II}{\chi \mathbf{u} \cdot \mathbf{u} } \right] d\Omega, \]

where \(\mathbf{u}\) is the fluid velocity and \(\chi\) the Brinkman amplitude was used, claiming:

‍Term I is half of the part of the dissipation function that is associated with the in-plane components of the stretching tensor (cf. Currie (2003)), while term II is half the part associated with the out-of-plane components. The latter part arises from the parabolic velocity profile in the lubrication theory (2). From an optimization perspective, term II links the cost function directly to the two-dimensional velocity field.

Later works have argued that this second term can also be used to penalize intermediate values of the design indicator and promote binary designs. Hence, this second term is considered a "velocity penalty" in neko-top and takes the form

\[ \mathcal{F} = \frac{1}{|\Omega_\text{obj}|}\int_{\Omega_\text{obj}} \frac{1}{2} \chi \mathbf{u}^2 d\Omega. \]

The objective can be selected by prescribing "type": "lube_term" and has the following input parameters:

Note
the naming convention of "lube_term" comes from the original claim based on lubrication theory written by Gersborg-Hansen et al.
Name Description Admissible values Default value
weight The weight used in the objective. Real 1.0
mask_name The name of the point_zone indicating \(\Omega_\text{obj}\). String ""
name The name that will appear in objective_data.csv String Out of plane stresses

Scalar mixing

This objective is used to either minimize or maximize the mixing of a passive scalar. It takes the form

\[ \mathcal{F} = \frac{1}{|\Omega_\text{obj}|}\int_{\Omega_\text{obj}} \frac{1}{2} (\phi - \phi_\text{ref})^2 d\Omega, \]

where \(\phi\) is the scalar field, \(\Omega_\text{obj}\) is the objective domain, \(|\Omega_\text{obj}|\) denotes the volume of the objective domain and \( \phi_\text{ref}\) is a target concentration.

The objective can be selected by prescribing "type": "scalar_mixing" and has the following input parameters:

Name Description Admissible values Default value
weight The weight used in the objective. Real 1.0
mask_name The name of the point_zone indicating \(\Omega_\text{obj}\). String ""
target_concentration \(\phi_\text{ref}\) in the above equation. Real 0.5
name The name that will appear in objective_data.csv String Scalar Mixing

Constraints

Volume constraint

This constraint is used to constrain the volume of the design in the domain. It takes the form

\[ \mathcal{C} = \frac{1}{|\Omega_\text{opt}|}\int_{\Omega_\text{opt}} \rho d\Omega, \]

where \(\rho\) is the material indicator, \(\Omega_\text{opt}\) is the optimization domain and \(|\Omega_\text{opt}|\) denotes the volume of the optimization domain.

The constraint can be used to enforce either a minimum or maximum volume, i.e. \( \mathcal{C} > \mathcal{C}_\text{min} \) or \( \mathcal{C} < \mathcal{C}_\text{max} \).

Note
Currently the volume constraint can only be applied to the unfiltered material indicator function, but in the future we aim to allow it to be prescribed to intermediate stages of the mapping cascade.

The constraint can be selected by prescribing "type": "volume" and has the following input parameters:

Name Description Admissible values Default value
limit \( \mathcal{C}_\text{min} \) or \( \mathcal{C}_\text{max} \) in the above equation Real -
is_max Indicate whether a minimum or maximum volume constraint should be applied. .true. or .false. .false.
mask_name The name of the point_zone indicating \(\Omega_\text{obj}\). String ""
name The name that will appear in objective_data.csv String Volume constraint