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 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

1(1,2)

https://gitlab.com/drti/muscat