gemseo.problems.topology_optimization.density_filter_disc module#

A discipline for topology optimization density filter.

class DensityFilter(n_x=100, n_y=100, min_member_size=1.5, name='')[source]#

Bases: Discipline

Apply density filter to the design variables of a topology optimization problem.

This helps to avoid checkerboard patterns in density based topology optimization. A filter matrix \(H\) is assembled at instantiation. The discipline computes the physical density \(xPhys\) from the design variables \(x\) with the formula \(xPhys=Hx\). This physical density is an approximation of a convolution integral.

Initialize self. See help(type(self)) for accurate signature.

Parameters:
  • n_x (int) --

    The number of elements in the x-direction.

    By default it is set to 100.

  • n_y (int) --

    The number of elements in the y-direction.

    By default it is set to 100.

  • min_member_size (float) --

    The minimum structural member size.

    By default it is set to 1.5.

  • name (str) --

    The name of the discipline. If empty, use the name of the class.

    By default it is set to "".

cache: BaseCache | None#

The execution and linearization data saved according to the cache type.

execution_statistics: ExecutionStatistics#

The execution statistics of the process.

execution_status: ExecutionStatus#

The execution status of the process.

jac: JacobianData#

The Jacobian matrices of the outputs.

The structure is {output_name: {input_name: jacobian_matrix}}.

name: str#

The name of the process.