# Criteria

Criteria are elements of the optimization problem.

The module `OpenPisco.Optim.Criteria()`

collects criteria available in OpenPisco.

Each criterion must be able to evaluate both the cost function value and sensitivity on a given optimization state. Thus, each criterion has three basic functions

`OpenPisco.Optim.Criteria.Criteria.UpdateValues()`

`OpenPisco.Optim.Criteria.Criteria.GetValue()`

`OpenPisco.Optim.Criteria.GetSensitivity()`

There are two main classes of criteria: physical and geometrical criteria.

## Physical criteria

A physical criterion needs to run a physical analysis (here, a finite element analysis) to evaluate values and sensitivities on the current optimization point. A base class describing physical criteria can be found in the following module

`OpenPisco.Optim.Criteria.PhysicalCriteriaBase()`

A physical criterion must have a mandatory attribute `OpenPisco.Optim.Criteria.problem`

which is a physical solver class. Please read the physical solver documentation for an overview of the physical solvers capabilities.
Note that some physical criteria need to solve an adjoint state to evaluate the sensitivity on the current levelset. In some cases, the computation of the adjoint state can repose on external finite element solvers interfaced with OpenPisco.

The physical criteria are collected in the following submodules

In order to run as expected, a physical criterion must be able to compute auxiliary scalars and fields needed to evaluate the current state. The auxiliary quantities needed by each criterion are detailed below. See `FieldNames`_ for more details about auxiliary quantities names.

### Elastic compliance

This criterion evaluates the elastic compliance of the negative part of the level set in linear elasticity

where the quantities \(\sigma(u)\) and \(\varepsilon (u)\) are related to a linear elasticity analysis. See the documentation for details about the associated physical analysis.

In order to run as expected, the `OpenPisco.Optim.Criteria.problem`

class must be able to compute the following auxiliary quantities :

elastic_energy

int_elastic_energy on nodes

This criterion does not need an adjoint solver to update its values.

See also `OpenPisco.Optim.Criteria.PhyCriteria.TopoCriteriaCompliance`

.

### Von Mises stress

This criterion evaluates the von Mises equivalent stress of the negative part of the level set in linear elasticity. Since stress measurements are intrinsically of local nature, we rely here on a popular aggregation technique. Therefore, we consider the following formulation based on the p-norm of the von Mises stress

where \(\alpha\) is a real positive parameter and \(\sigma_{vm}\) is the Von Mises Stress related to a linear elasticity analysis. See physical solver for details about the associated physical analysis.

The `OpenPisco.Optim.Criteria.problem`

solver must be able to compute the following auxiliary quantities :

stress on integration points

von_mises on nodes

von_mises on integration points

The adjoint state computation reposes on the solver Code_Aster.

The attribute `OpenPisco.Optim.Criteria.PhyMecaCriteria.TopoCriteriaVonMises.alpha`

corresponds to the weight \(\alpha\) appearing in the criterion functional.

It is possible to exclude a subregion from the computation of the integral value of the criterion. In order to do so, the attribute `OpenPisco.Optim.Criteria.PhyMecaCriteria.TopoCriteriaVonMises.offZone`

must be initialized with an implicit geometry representing the zone to exclude.
The ImplicitGeometry module of the library muscat 1 is used to define specific zones.

See also `OpenPisco.Optim.Criteria.PhyMecaCriteria.TopoCriteriaVonMises`

.

### Target displacement

This criterion evaluates the discrepancy between the actual and target displacements in linear elasticity

where \(u_{nTag}\) is the elastic displacement on a mesh node specified by the nodal tag nTag, dir is an unit vector (direction) and \(u_0\) is a target scalar value.
See the documentation for details about the associated physical analysis.
The `OpenPisco.Optim.Criteria.problem`

solver must be able to compute the following auxiliary quantities :

stress on integration points

The adjoint state computation reposes on the solver Code_Aster.

See also `OpenPisco.Optim.Criteria.PhyMecaCriteria.TopoCriteriaNodalTargetDisp`

.

### k-th eigenfrequency

This criterion aims at maximizing the k-th eigenfrequency of the negative part of the level set. In order to to so, the following functional is considered

where \(\omega_k > 0\) is the k-th eigenpulsation. See the documentation for details about the associated physical analysis.

The `OpenPisco.Optim.Criteria.problem`

class must be able to compute the following auxiliary quantities :

FN.EigenFreqSquared_sensitivity

FN.EigenFreqSquared

This criterion does not need an adjoint solver to update its values.

See also `OpenPisco.Optim.Criteria.PhyModalCriteria.TopoCriteriaModal`

.

### Effective radiated power (ERP)

This criterion evaluates the structure-borne noise to obtain an insight regarding the radiation of components and panels for specific excitations, in the context of viscoelasticity.

See the documentation for details and notations about the associated physical analysis.

The `OpenPisco.Optim.Criteria.problem`

class must be able to compute the following auxiliary quantities :

ERP_sensitivity on Nodes

ERP_density on Nodes

dominant_SolutionMode on Nodes

ERP

ModalCumulMassFractiondX

ModalCumulMassFractiondY

ModalCumulMassFractiondZ

ModalLastEnergyRatio

The adjoint state computation reposes on the solver Code_Aster.

See also `OpenPisco.Optim.Criteria.PhyHarmonicCriteria.TopoCriteriaERP`

.

### Target temperature

This criterion aims at controlling a global temperature indicator of the negative part of the level set.

where \(T(x)\) is the calculated temperature field and \(T_s\) is a scalar value equal to the temperature at solidus state. See the documentation for details and notations about the associated physical analysis. See 4 for the theoretical background.

The `OpenPisco.Optim.Criteria.problem`

class must be able to compute the following auxiliary quantities :

temperature on Nodes

The adjoint state computation reposes on the solver Code_Aster.

See also `OpenPisco.Optim.Criteria.PhyThermalCriteria.TopoCriteriaTargetTemperature`

.

### Buckling

This criterion aims at avoiding linear buckling instabilities.

where \(\gamma\) is the critical load coefficient.

`OpenPisco.Optim.Criteria.problem`

class must be able to compute the following auxiliary quantities :

load_crit

elastic_energy_buckling on Centroids

stress on Centroids

strain_green_buckling on Centroids

strain_buckling on Centroids

mode_buckling on FN.Nodes

von_mises on FN.Nodes

The adjoint state computation reposes on the solver Code_Aster.

See also `OpenPisco.Optim.Criteria.PhyBucklingCriteria.TopoCriteriaBuckling`

.

### Worst-case elastic compliance

This criterion evaluates the elastic compliance of the negative part of the level set in the context of linear elasticity under the assumption of uncertainty over surfacic loads.

See 2 for the theoretical background.

`OpenPisco.Optim.Criteria.problem`

class must be able to compute the following auxiliary quantities :

elastic_energy on Nodes

int_elastic_energy

stress on Centroids

The adjoint state computation reposes on the solver Code_Aster.

See also `OpenPisco.Optim.Criteria.PhyRobustCriteria.TopoCriteriaComplianceRobustLoadWorstCase`

.

## Geometrical criteria

Geometrical criteria only need informations about the geometry of the shape to evaluate value and sensitivity on a given optimization point. Thus, in most cases, these criteria do not need to call a finite element solver. The geometrical criteria are collected in the following submodules

### Volume

This criterion evaluates the volume of the negative part of the current level set.

See also `OpenPisco.Optim.Criteria.GeoCriteria.TopoCriteriaVolume`

### Mass

This criterion evaluates the mass of the negative part of the current level set.

where \(\rho\) is the constant density.

See also `OpenPisco.Optim.Criteria.GeoCriteria.TopoCriteriaMass`

.

### Minimal thickness

This criterion evaluates the minimal thickness of the negative part of the current level set.

where \(d_{\Omega}\) is the signed distance function, \(d_{min}\) is the desired minimal thickness and \(n\) is the normal vector.

See 3 for the theoretical background.

See also `OpenPisco.Optim.Criteria.GeoThicknessCriteria.TopoCriteriaMinThickness`

.

### Maximal thickness

This criterion evaluates the maximal thickness of the negative part of the current level set.

where \(d_{\Omega}\) is the signed distance function and \(d_{max}\) is the desired maximal thickness.

See 3 for the theoretical background.

See also `OpenPisco.Optim.Criteria.GeoThicknessCriteria.TopoCriteriaMaxThickness`

.

## Criteria operations

It is possible to apply unary or binary operations on the set of available criteria.

The available unary operations are the following

`OpenPisco.Optim.Criteria.Criteria.CriteriaFactor`

`OpenPisco.Optim.Criteria.Criteria.Weighted`

`OpenPisco.Optim.Criteria.Criteria.PolynomialVanishingCriteria`

`OpenPisco.Optim.Criteria.Criteria.CriteriaPower`

The available binary operations are the following

`OpenPisco.Optim.Criteria.Criteria.CriteriaRatio`

- 1
- 2
Allaire, Ch. Dapogny, A linearized approach to worst-case design in parametric and geometric shape optimization, M3AS Vol. 24, No. 11 (2014) 2199-2257

- 3(1,2)
Allaire, F. Jouve, G. Michailidis, Thickness control in structural optimization via a level set method, SMO 53, 1349-1382 (2016)

- 4
Michailidis, Manufacturing constraints and multi-phase shape and topology optimization via a level-set method. Diss. Ecole Polytechnique X (2014)