Boundary Conditions

Boundary conditions for topology optimization (forces and fixed nodes).

Base Boundary Conditions

class topopt.boundary_conditions.BoundaryConditions(nelx, nely)[source]

Abstract class for boundary conditions to a topology optimization problem.

Functionalty for geting fixed nodes, forces, and passive elements.

nelx

The number of elements in the x direction.

Type:int
nely

The number of elements in the y direction.

Type:int
__init__(nelx, nely)[source]

Create the boundary conditions with the size of the grid.

Parameters:
  • nelx (int) – The number of elements in the x direction.
  • nely (int) – The number of elements in the y direction.
active_elements

Active elements to be set to full density.

Type:numpy.ndarray
fixed_nodes

Fixed nodes of the problem.

Type:numpy.ndarray
forces

Force vector for the problem.

Type:numpy.ndarray
passive_elements

Passive elements to be set to zero density.

Type:numpy.ndarray

All Boundary Conditions

This section contains all boundary conditions currently implemented in the library. It is not yet comprehensive, so it would be really nice if you can help me add more!

MBB Beam

MBB beam domain
class topopt.boundary_conditions.MBBBeamBoundaryConditions(nelx, nely)[source]

Boundary conditions for the Messerschmitt–Bölkow–Blohm (MBB) beam.

fixed_nodes

Fixed nodes in the bottom corners.

Type:numpy.ndarray
forces

Force vector in the top center.

Type:numpy.ndarray

Cantilever

Cantilever domain
class topopt.boundary_conditions.CantileverBoundaryConditions(nelx, nely)[source]

Boundary conditions for a cantilever.

fixed_nodes

Fixed nodes on the left.

Type:numpy.ndarray
forces

Force vector in the middle right.

Type:numpy.ndarray

L-Bracket

The L-bracket is a bracket in the shape of a capital “L”. This domain is achieved using a passive block in the upper right corner of a square domain.

L-bracket domain

The passive block is defined by its minimum x coordinate and the maximum y coordinate.

class topopt.boundary_conditions.LBracketBoundaryConditions(nelx, nely, minx, maxy)[source]

Boundary conditions for a L-shaped bracket.

__init__(nelx, nely, minx, maxy)[source]

Create L-bracket boundary conditions with the size of the grid.

Parameters:
  • nelx (int) – The number of elements in the x direction.
  • nely (int) – The number of elements in the y direction.
  • minx (int) – The minimum x coordinate of the passive upper-right block.
  • maxy (int) – The maximum y coordinate of the passive upper-right block.
Raises:

ValueError: minx and maxy must be indices in the grid.

fixed_nodes

Fixed nodes in the top row.

Type:numpy.ndarray
forces

Force vector in the middle right.

Type:numpy.ndarray
passive_elements

Passive elements in the upper right corner.

Type:numpy.ndarray

I-Beam

The I-beam is a cross-section of a beam in the shape of a capital “I”. This domain is achieved using two passive blocks in the middle left and right of a square domain.

I-beam domain
class topopt.boundary_conditions.IBeamBoundaryConditions(nelx, nely)[source]

Boundary conditions for an I-shaped beam.

fixed_nodes

Fixed nodes in the bottom row.

Type:numpy.ndarray
forces

Force vector on the top row.

Type:numpy.ndarray
passive_elements

Passive elements on the left and right.

Type:numpy.ndarray

II-Beam

The II-beam is a cross-section of a beam in the shape of “II”. This domain is achieved using three passive blocks in the middle left, center, and right of a square domain.

II-beam domain
class topopt.boundary_conditions.IIBeamBoundaryConditions(nelx, nely)[source]

Boundary conditions for an II-shaped beam.

passive_elements

Passives on the left, middle, and right.

Type:numpy.ndarray