| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Framework for Aerostructural Design Optimization
Q: "What is my purpose?"
A: "You run other codes."
More seriously, the typical use case is: you have a simulation code (CFD, FEA, etc.) that reads/writes its inputs/outputs from/to text file(s), you want to wrap the execution of that code, for example to use it in an optimization, but that code does not have a Python interface quite like what you would like...
FADO provides abstractions to make this job easier than writing specialized scripts for each application, scripting is still required, but the resulting scripts should be easier to maintain/adapt/modify.
The design of the framework is centered around large scale applications (10k+ variables) and functions that are expensive to evaluate (compared to the cost of preparing input files).
From the top down (and not a replacement for the docs):
Note: The calls to external codes from FADO.ExternalRun evaluations are made with subprocess.call(..., shell=True), don't run optimizations as root, or in system directories, etc.
Function, Variable, and Parameter need ways to be written and read to or from files. Any object implementing write(file,values) and/or read(file) -> values can be used, five classes are provided that should cover most scenarios:
Make the parent directory ("../") and FADO's ("./") reachable to Python, usually via PYTHONPATH, from FADO import * should then work (provided the name of the directory was not changed).
Hard dependency on NumPy, ndarrays are used throughout the code. The ExteriorPenaltyDriver was designed around the SciPy.optimize.minimize interface, but a simple implementation of the Fletcher-Reeves method is available (see example2_SU2). The ScipyDriver was designed with the constrained optimization methods in mind (especially SLSQP) but does not strictly require SciPy to be used. To use the IpoptDriver you need IPyOpt and Ipopt, the latter can be installed with apt-get.
Have a look at the examples, "examples/rosenbrock" is a contrived example using the Rosenbrock function, the others are realistic uses of SU2 (version > 7.1.0). All the important classes and methods have Python documentation strings, these can be printed using the utility function printDocumentation, e.g. FADO.printDocumentation(FADO.TableReader), for classes this will print the documentation for all their methods. In general, undocumented methods are meant for FADO's internal use, and should not be called by users.
| Back | FazBrowse Home | New Git URL |