Skip to content

Multidisciplinary Design Optimization (MDO) to optimize an ocean wave energy converter

License

Notifications You must be signed in to change notification settings

symbiotic-engineering/MDOcean

Repository files navigation

Unit Tests codecov GitHub DOI

MDOcean

This is an open source codebase that uses Multidisciplinary Design Optimization (MDO) to optimize an ocean wave energy converter (WEC).

More specifically, it uses the SQP and pattern search algorithms to find the geometry and controller design which minimizes the energy cost and power variation of the Reference Model 3 (RM3) WEC, using a fast simplified frequency domain WEC model.

Context

The project is part of research in the Symbiotic Engineering Analysis (SEA) Lab and has been accepted for publication/presentation in the 2022 ASME IDETC-CIE. At this conference, the work was presented at the DAC-6 session and is publication number 90227. A recording of the conference presentation is available here. The project began as an effort in Cornell course MAE 5350. Known areas for improvement are listed as GitHub issues. If you find any additional errors, please let us know.

Citation: R. McCabe, O. Murphy, and M. N. Haji, “Multidisciplinary Optimization to Reduce Cost and Power Variation of a Wave Energy Converter,” International Design Engineering Technical Conferences & Computers and Information in Engineering Conference, St. Louis, MO, August 14-17, 2022. https://doi.org/10.1115/DETC2022-90227.

Authors

License

This project is released open-source under the MIT License. The validation folder contains code taken from NREL's WEC-Sim. The Apache 2.0 license for this open source WEC-Sim code is included.

File Structure

  • inputs: numerical inputs needed to run the optimiztion, simulation, and validation, including wave data, parameters, design variable bounds, and validation values.
  • simulation: the simulation that takes design variables and parameters as inputs and returns objective and constraint values as outputs, and its validation. The script run_single.m is a good starting point if you want to run the simulation without optimizing.
  • optimization: scripts and functions to perform single objective and multi-objective optimization and sensitivities. Start with the script gradient_optim.m if you want to run single objective optimization for each of the two objectives.
  • plots: helper functions to visualize outputs. Start with the script all_figures.m if you want to try out the entire pipeline by running all relevant optimizations to generate every figure in the paper.
  • dev: miscellaneous scripts not core to the codebase that were used to inform the development of the simulation.

Dependencies

The following packages are used in this code:

Package Required?
MATLAB Required for simulation
Statistics and Machine Learning Toolbox Required for simulation
Optimization Toolbox Required for optimization
Global Optimization Toolbox Required for optimization
Symbolic Math Toolbox Optional for simulation code generation
Parallel Computing Toolbox Optional for speedup
MATLAB Report Generator Optional for WEC-Sim validation
Simulink Optional for WEC-Sim validation
Simscape Optional for WEC-Sim validation
Simscape Multibody Optional for WEC-Sim validation
WEC-Sim Optional for WEC-Sim validation

The code has been tested on R2022a (Windows) and R2024b (Linux), and likely works on other versions and operating systems.

Funding Acknowledgement

This material is based upon work supported by the National Science Foundation Graduate Research Fellowship under Grant No. DGE–2139899, and the Cornell Engineering Fellowship. Any opinion, findings, and conclusions or recommendations expressed in this material are those of the authors(s) and do not necessarily reflect the views of the National Science Foundation.