pyMOTO Reference
Core
Manages the state data, sensitivities, and connects module in- and outputs |
|
Main class: Module Transforms input signal to output signal and output signal sensitivity to input signal sensitivity |
|
Binds multiple Modules together as one Module |
Mathematical Modules
General linear algebra module which uses the Numpy function |
|
General mathematical expression module |
|
Module that automatically differentiates the response function |
|
Calculate the inverse of a matrix \(\mathbf{B} = \mathbf{A}^{-1}\) |
|
Solves linear system of equations \(\mathbf{A}\mathbf{x}=\mathbf{b}\) |
|
Solve a partitioned linear system of equations |
|
Static condensation of a linear system of equations |
|
Solves the (generalized) eigenvalue problem \(\mathbf{A}\mathbf{q}_i = \lambda_i \mathbf{B} \mathbf{q}_i\) |
|
Solves the transient thermal problem \(\mathbf{K}\mathbf{T} + \mathbf{C}\dot{\mathbf{T}} = \mathbf{Q}\) |
|
Scales (scalar) input for different response functions in optimization (objective / constraints). |
|
Concatenates data of multiple signals into one big vector |
|
Sets the values of a numpy array at specified indices to a given value |
|
Compute linear combination of sparse matrices |
Constraint Aggregation
Abstract base-class for aggregation modules |
|
P-norm aggregration |
|
Soft maximum/minimum function aggregation |
|
Aggregation using Kreisselmeier and Steinhauser function from 1979 |
Helper objects
Determine active set for aggregation by discarding lower or upper fraction of a set of values |
|
Scaling strategy for aggregation to improve approximation of the true minimum or maximum. |
Finite Element Modules
Assembles a sparse matrix according to element scaling \(\mathbf{A} = \sum_e x_e \mathbf{A}_e\) |
|
Stiffness matrix assembly by scaling elements in 2D or 3D \(\mathbf{K} = \sum_e x_e \mathbf{K}_e\) |
|
Consistent mass matrix or equivalents assembly by scaling elements \(\mathbf{M} = \sum_e x_e \mathbf{M}_e\) |
|
Assembly of matrix to solve Poisson equation (e.g. Thermal conductivity, Electric permittivity) \(\mathbf{P} = \sum_e x_e \mathbf{P}_e\). |
|
Generic module for element-wise operations based on nodal information |
|
Generic module for nodal operations based on elemental information |
|
Evaluate average mechanical strains in solid elements based on deformation |
|
Calculate the average stresses per element |
|
Determine average value in element of input nodal values |
|
Determine equivalent thermo-mechanical load from design vector and elemental temperature difference |
Filter Modules
Abstract base class for any linear filter with normalization |
|
Standard density filter for a structured mesh in topology optimization |
|
Implementation of overhang filter by Langelaar (2016, 2017) |
|
Density filter based on convolution |
Output Modules
Abstract base class for any module which produces a figure |
|
Plots the densities of a domain (2D or 3D) |
|
Plot an X-Y graph |
|
Plot iteration history of one or more variables |
|
Writes vectors to a Paraview VTI file |
|
Writes transient response vectors to a Paraview VTI file |
|
Writes iteration data to a log file |
|
Prints the input signals to console |
Complex-value Modules
Makes a complex variable from two real inputs \(z(x,y) = x + iy\) |
|
Convert a complex variable into its real and imaginary parts \(z \rightarrow (x,y)\) |
|
Takes the real part of a complex value \(x = \text{Re}(z)\) |
|
Takes the imaginary part of a complex value \(y = \text{Im}(z)\) |
|
Takes the complex norm \(A = \sqrt(z z^*)\) |
|
Conjugation of a complex value \(y = z^*\) |
Common Utilities and Routines
Definition for a structured voxel domain Nodal numbering used in the domain is given below. |
|
Efficient storage for dyadic or rank-N matrix |
|
Performs a finite difference check on the given Module or Network |
Optimizers
Execute minimization using the OC-method |
|
Execute minimization using the MMA-method Svanberg (1987), The method of moving asymptotes - a new method for structural optimization |
|
Sequential linear programming optimization algorithm |
|
Class for the Method of Moving Asymptotes (MMA) optimization algorithm |
|
Linear Solvers
Base class of all linear solvers |
|
Linear dependency aware solver (LDAS) |
|
Solver for diagonal matrices |
|
Solver for dense (square) matrices using a QR decomposition |
|
Solver for dense (square) matrices using an LU decomposition |
|
Solver for Hermitian positive-definite matrices using a Cholesky factorization. |
|
Solver for Hermitian or symmetric matrices using an LDL factorization. |
|
Solver for sparse (square) matrices using an LU decomposition. |
|
Solver wrapper Intel MKL Pardiso solver, which is a very fast and flexible multi-threaded solver |
|
Solver for positive-definite Hermitian matrices using a Cholesky factorization. |
|
Solver for positive-definite Hermitian matrices using a Cholesky factorization. |
Preconditioners
Abstract base class for preconditioners to inexact solvers |
|
Damped Jacobi preconditioner \(M = \frac{1}{\omega} D\) |
|
Successive over-relaxation preconditioner The matrix \(A = L + D + U\) is split into a lower triangular, diagonal, and upper triangular part. |
|
Incomplete LU factorization |
|
Geometric multigrid preconditioner |
Iterative solvers
Preconditioned conjugate gradient method Works for positive-definite self-adjoint matrices (\(A=A^H\)) |