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.

alternate text

Fig. 19 Interactions between OpenPisco main components#

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

alternate text

Fig. 20 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 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

1(1,2)

https://gitlab.com/drti/muscat