Software Design#
Interactions between macroscopic components#
OpenPisco provides three main components:
The optimization engine, used to drive the optimization iterations
The level set engine, to handle the evolution and the computation of the level set function \(\phi\)
A collection of various criteria of interest, in the context of topology optimization
The figure below describes the interactions between these components from a macroscopical point of view.
Fig. 20 Interactions between OpenPisco main components#
Focus on criteria#
Within OpenPisco semantic, a criterion takes as an input a levelSet and should be able to:
Compute its value
Compute its associated sensitivity
Fig. 21 Inner API used when updating criteria#
Note that:
When a criterion is used within an optimization problem, it makes no difference whether it is used as the objective or a constraint.
Each criterion defines its internal physical simulators and potential adjoint solvers, if required.
RST directory Tree#
We introduce briefly the repositories within the module and refer to the related documentation for more details. The library is organized as follows
OpenPisco
├── Actions
├── MuscatExtentions
├── CLApp
├── Demos
├── ExternalTools
│ ├── Code_Aster
│ ├── FreeFem
│ ├── Zset
├── Optim
│ ├── Algorithms
│ ├── Criteria
│ ├── Problems
├── PhysicalSolvers
├── QtApp
├── Structured
├── TestData
├── Unstructured
Actions#
It is a collection of encapsulated operations used frequently to run a topology optimization problem with level sets but not exclusively.
MuscatExtentions#
This module contains:
Support for the MED format, used with the finite element solver Code_Aster in particular
Support for Code_Aster integration scheme
Mesh quality related tools
It can be seen as a custom extensions to Muscat, tailored for OpenPisco’s needs.
CLApp#
Implementation of OpenPisco Domain Specific Language (DSL) based on a XML-like syntax. It provides utilities to describe, parse input files from the command line and run OpenPisco at a higher level of abstraction comparing to python.
Demos#
Collection of topology optimization examples from the scientific literature and various usecases considered during the development of OpenPisco.
ExternalTools#
Scripts related to the external tools used within the platform, mainly the physical solvers. For instance, this is where one can find:
For Code_Aster, the .comm and .export files
For FreeFem, some .edp files
The core implementation of the physical analysis supported by the platform and relying on each solver DSL are there.
Optim#
This module contains:
The optimization algorithms to drive the optimization process
The shape optimization criteria, both physical and geometrical
The optimization problem, to encapsulate all the components inherent to the optimization process (design space, objective, constraints…)
PhysicalSolvers#
Implementation of the physical analysis available within the platform using the external solvers (Code_aster, FreeFem, Zset) or internal solver (Muscat Solver 1).
QtApp#
Implementation of the OpenPisco Graphical User Interface
Structured#
Various scripts to handle level sets on structured meshes
TestData#
Some data used for tests.
Unstructured#
Scripts devoted to unstructured meshes. That includes, in particular:
The redistancing algorithm
The remeshing tool interface
The advection procedure interface
The level-set related modules
The regularization of the scalar velocity field