# 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