| ... | @@ -16,23 +16,24 @@ python3 run.py path/to/case.py |
... | @@ -16,23 +16,24 @@ 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):
|
|
|
|
g = GeometryBuilder(...) # optional
|
|
|
s = StructuralBuilder(...)
|
|
s = StructuralBuilder(...)
|
|
|
a = AerodynamicBuilder(...)
|
|
a = AerodynamicBuilder(...)
|
|
|
x = XferBuilder(s, a, ...)
|
|
x = XferBuilder(s, a, ...)
|
|
|
f = FlutterBuilder(...)
|
|
f = FlutterBuilder(...)
|
|
|
self.add_subsystem('flutter', FlutterGroup(struct=s, xfer=x, aero=a, flutter=f))
|
|
self.add_subsystem('flutter', FlutterGroup(struct=s, xfer=x, aero=a, flutter=f, geo=g))
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
## Interfaced codes
|
|
## Interfaced codes
|
|
|
Structural solvers:
|
|
Structural solvers:
|
|
|
- [TACS](https://github.com/acrovato/tacs)
|
|
- [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)
|
|
- OMFlut's fake structural solver (reads a modal solution from disk)
|
|
|
|
|
|
|
|
Aerodynamic solvers:
|
|
Aerodynamic solvers:
|
| ... | |
... | |
| ... | | ... | |