-
Notifications
You must be signed in to change notification settings - Fork 113
Description
Description of feature
We want to improve slice processing in ADflow and expose the slice-based computations to the Python layer with derivatives so that we can include functions based on the slice data in optimizations. These features will address the following needs:
- The twist and chord distributions in the "lift" file are not very accurate. The twist especially can have noise due to the LE node jumping around.
- It is difficult to access detailed slice data in runtime. We can use these slices to determine a more accurate reference axis for cases with extreme dihedral.
- We want to perform inverse design.
- We want to be able to constrain individual slice coefficients (like CL) instead of the global coefficients.
- We want to be able to constrain pressure gradient over certain sections of the airfoils.
Right now, all slice processing is done in Fortran in ADflow. This makes it very difficult to modify the code to include these advanced features. However, the Fortran layer is very useful to actually perform the slicing over the distributed mesh and communicate across processors.
Planned Solution
I want to modify how slices are processed in ADflow by exposing the raw slice data to Python. Then, we can order and format the slice data. We can also provide a derivative seed routine for the slices so that whatever derived functions computed with the slice data can be propagated back across the fortran code. Finally, we can also perform more accurate geometric postprocessing operations in Python such as detecting the leading edge point, LE radius, etc.
I want to implement an adflow slice class in python that contains all of the computations based on the raw slice data that comes from fortran. Using these adflow slice instances, we can also compute more accurate spanwise distributions. Finally, we can create modified tecplot outputs from the python layer that contains the correct twist distributions, and any of the constraints we may have prescribed over the slice itself.
For now, I say we keep the development in the ADflow repo. If the resulting code is general enough, we can move it elsewhere, and only maintain a basic slice API in ADflow.
Roadmap
I will work with @lucaeros and @bbrelje for the implementation efforts. Also tagging @lamkina because he usually has good ideas about how these things should be implemented. I suggest we use a project board in github to keep track of individual tasks: https://github.com/orgs/mdolab/projects/14/views/1 Regarding development, we can either create a feature branch on mdolab/adflow or we can use a branch in my fork.