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 this components from a macroscopical point of view.
Focus on criteria
Within OpenPisco semantic, a criterion take as an input a levelSet and should be able to:
Compute its value
Compute its associated sensitivity
Note that:
When a criterion is used within an optimization problem, it makes no difference whether it is used as the objective or a contraint.
Each criterion defines its internal physical simulator and potential adjoint solvers, if required.
RST directory Tree
We introduce briefly the repositories within the module and refer to the respective 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
Its content and features are somehow similar to Muscat 1, there are mainly:
Support for the MED format, used with Code_Aster in particular
Support for Code_Aster integration scheme
Mesh quality related tools
CLApp
Implementation of OpenPisco Domain Specific Language (DSL) based on a XML-like syntax.
Demos
Collection of topology optimization examples from the scientific literature
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
As one could infer from the subdirectories name, there are:
The optimization algorithms to pilot the optimization process
The optimization criteria, both physical and geometrical, to evaluate a shape
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 Graphic User Interface
Structured
Various scripts to handle level set on structured meshes
TestData
Some data
Unstructured
Script related to level set operations for unstructured meshes. That includes, in particular:
The redistanciation
The remeshing tools
The advection