Update home authored by Adrien Crovato's avatar Adrien Crovato
# OMFlut # OMFlut
OMFlut is a framework built on top of OpenMDAO and is designed to perform flutter analysis and flutter-constrained optimization calculations. The package interfaces a structural solver, an aerodynamic solver, a transfer scheme and a flutter solution method. OMFlut is a framework built on top of OpenMDAO and is designed to perform flutter analysis and flutter-constrained optimization calculations. The package interfaces a structural solver, an aerodynamic solver, a transfer scheme and a flutter solution method.
## Install and run ## Install and run
If you only want to use OMFlut, you can install it using If you only want to use OMFlut, you can install it using
```bash ```bash
python3 -m pip install . [--user] python3 -m pip install . [--user]
``` ```
and then run a case using and then run a case using
```bash ```bash
python3 path/to/case.py python3 path/to/case.py
``` ```
If you need to develop in OMFlut before using it, you do not need to install anything, and you can just run your case from the repo folder using If you need to develop in OMFlut before using it, you do not need to install anything, and you can just run your case from the repo folder using
```bash ```bash
python3 run.py path/to/case.py python3 run.py path/to/case.py
``` ```
## Use ## Use
OMFlut being built on top of OpenMDAO, any model must derive from an OpenMDAO group. The flutter calculation is carried out in the class `FlutterGroup`, which is also OpenMDAO group. The class requires four underlying builders: structural, aerodynamic, transfer scheme and flutter computation. These builders must instantiate and initialize all the components required by each individual methodology. A template for building custom builders is provided with the code and examples of already existing builders can be found in their respective repository. OMFlut being built on top of OpenMDAO, any model must derive from an OpenMDAO group. The flutter calculation is carried out in the class `FlutterGroup`, which is also OpenMDAO group. The class requires four underlying builders: structural, aerodynamic, transfer scheme and flutter computation. An optional geometry builder can also be provided. These builders must instantiate and initialize all the components required by each individual methodology. A template for building custom builders is provided with the code and examples of already existing builders can be found in their respective repository.
A typical model for computing flutter will look like: A typical model for computing flutter will look like:
```python ```python
from omflut import FlutterGroup from omflut import FlutterGroup
import openmdao.api as om import openmdao.api as om
class MyModel(om.Group): class MyModel(om.Group):
def setup(self): def setup(self):
s = StructuralBuilder(...) g = GeometryBuilder(...) # optional
a = AerodynamicBuilder(...) s = StructuralBuilder(...)
x = XferBuilder(s, a, ...) a = AerodynamicBuilder(...)
f = FlutterBuilder(...) x = XferBuilder(s, a, ...)
self.add_subsystem('flutter', FlutterGroup(struct=s, xfer=x, aero=a, flutter=f)) f = FlutterBuilder(...)
``` self.add_subsystem('flutter', FlutterGroup(struct=s, xfer=x, aero=a, flutter=f, geo=g))
```
## Interfaced codes
Structural solvers: ## Interfaced codes
- [TACS](https://github.com/acrovato/tacs) Structural solvers:
- OMFlut's fake structural solver (reads a modal solution from disk) - [TACS](https://github.com/smdogroup/tacs) (structural solver, builder currently stored in this repo)
- OMFlut's fake structural solver (reads a modal solution from disk)
Aerodynamic solvers:
- [SDPM](https://gitlab.uliege.be/am-dept/sdpm) (panel method) Aerodynamic solvers:
- [SDPM](https://gitlab.uliege.be/am-dept/sdpm) (panel method)
Transfer schemes:
- OMFlut's RBF (interface to scipy RBF) Transfer schemes:
- OMFlut's RBF (interface to scipy RBF)
Flutter solutions:
Flutter solutions:
- [PyPK](https://gitlab.uliege.be/am-dept/pypk) (collection of p-k methods) - [PyPK](https://gitlab.uliege.be/am-dept/pypk) (collection of p-k methods)
\ No newline at end of file