topology_optimization#

class fenics_optim.topology_optimization.single_material.LimitAnalysis(mesh, material, **kwargs)#

Bases: fenics_optim.topology_optimization.topology_optimization.TopologyOptimization

Standard limit analysis problem (no density field).

The loading is amplified by a load factor, we look for its maximum value under the constraints of equilibrium and strength conditions.

Parameters
  • mesh (dolfin.Mesh) – mesh object

  • material (StrengthCriterion) – material strength criterion

apply_strength_conditions()#

No density-dependent strength condition.

set_up_problem()#

Limit analysis problem.

Optimization variables are \(\lambda, \sigma\).

class fenics_optim.topology_optimization.single_material.LoadMaximization(mesh, frac, material, **kwargs)#

Bases: fenics_optim.topology_optimization.topology_optimization.TopologyOptimization

Single-material load maximization problem.

The material volume fraction is set to a maximum value. The loading is amplified by a load factor, we look for its maximum value under the constraints of equilibrium, density-dependent strength conditions and volume constraints.

Parameters
  • mesh (dolfin.Mesh) – mesh object

  • frac (float) – maximum volume fraction

  • material (StrengthCriterion) – material strength criterion

set_up_problem()#

Load-maximization problem.

Optimization variables are \(\lambda, \rho, \sigma\).

class fenics_optim.topology_optimization.single_material.VolumeMinimization(mesh, material, **kwargs)#

Bases: fenics_optim.topology_optimization.topology_optimization.TopologyOptimization

Single-material volume minimization problem.

The loading is fixed to a reference value, we look for the minimum material volume such that there exists a stress field in equilibrium and complying with the density-dependent strength conditions.

Parameters
  • mesh (dolfin.Mesh) – mesh object

  • material (StrengthCriterion) – material strength criterion

set_up_problem()#

Volume-minimization problem.

Optimization variables are \(\rho, \sigma\).

class fenics_optim.topology_optimization.multi_materials.BimaterialLoadMaximization(mesh, frac, material, **kwargs)#

Bases: fenics_optim.topology_optimization.topology_optimization.TopologyOptimization

Bimaterial load maximization problem.

We assume that the total stress field decomposes as the sum of two stress fields, one for each material. We optimize the pseudo-density of both materials.

Parameters
  • mesh (dolfin.Mesh) – mesh object

  • materials (list of StrengthCriterion) – a list of two material strength criteria

apply_strength_conditions()#

Define the total strength conditions from partial strength criteria.

set_up_problem()#

Load maximization problem.

Optimization variables are \(\rho_1, \sigma_1, \rho_2 \sigma_2\). with the total stress \(\sigma= \sigma_1 + \sigma_2\) being the sum of a two stresses with density-dependent strengths.

class fenics_optim.topology_optimization.multi_materials.BimaterialVolumeMinimization(mesh, material, **kwargs)#

Bases: fenics_optim.topology_optimization.topology_optimization.TopologyOptimization

Bimaterial volume minimization problem.

We assume that the total stress field decomposes as the sum of two stress fields, one for each material. We optimize the pseudo-density of both materials.

Parameters
  • mesh (dolfin.Mesh) – mesh object

  • materials (list of StrengthCriterion) – a list of two material strength criteria

apply_strength_conditions()#

Define the total strength conditions from partial strength criteria.

set_up_problem()#

Volume minimization problem.

Optimization variables are \(\rho_1, \sigma_1, \rho_2 \sigma_2\). with the total stress \(\sigma= \sigma_1 + \sigma_2\) being the sum of a two stresses with density-dependent strengths.

class fenics_optim.topology_optimization.multi_materials.ReinforcementLoadMaximization(mesh, frac, materials, additive=True, **kwargs)#

Bases: fenics_optim.topology_optimization.topology_optimization.TopologyOptimization

Reinforcement load maximization problem.

We assume that the total stress field decomposes as the sum of two stress fields, one for each material. The first material is assumed to exist everywhere and we optimize the second material pseudo-density (reinforcement phase).

Parameters
  • mesh (dolfin.Mesh) – mesh object

  • frac (float) – maximum volume fraction for the second material

  • materials (list of StrengthCriterion) – a list of two material strength criteria

  • additive (bool, optional) – If true, both matrix and reinforcement stresses can coexist i.e. \(\sigma \in G_1 \oplus \rho G_2\) else, only one material can exist at a time i.e. \(\sigma \in (1-\rho)G_1 \oplus \rho G_2\)

apply_strength_conditions()#

Define the total strength conditions from partial strength criteria.

set_up_problem()#

Load-maximization problem.

Optimization variables are \(\lambda, \rho, \sigma_1, \sigma_2\). with the total stress \(\sigma= \sigma_1 + \sigma_2\) being the sum of a matrix and reinforcement stress respectively.

class fenics_optim.topology_optimization.multi_materials.ReinforcementVolumeMinimization(mesh, materials, additive=True, **kwargs)#

Bases: fenics_optim.topology_optimization.topology_optimization.TopologyOptimization

Reinforcement volume minimization problem.

We assume that the total stress field decomposes as the sum of two stress fields, one for each material. The first material is assumed to exist everywhere and we optimize the second material pseudo-density (reinforcement phase).

Parameters
  • mesh (dolfin.Mesh) – mesh object

  • materials (list of StrengthCriterion) – a list of two material strength criteria

  • additive (bool, optional) – If true, both matrix and reinforcement stresses can coexist i.e. \(\sigma \in G_1 \oplus \rho G_2\) else, only one material can exist at a time i.e. \(\sigma \in (1-\rho)G_1 \oplus \rho G_2\)

apply_strength_conditions()#

Define the total strength conditions from partial strength criteria.

set_up_problem()#

Volume minimization problem.

Optimization variables are \(\rho, \sigma_1, \sigma_2\). with the total stress \(\sigma= \sigma_1 + \sigma_2\) being the sum of a matrix and reinforcement stress respectively.