Development Guide to the FAST Modularization Framework
This page is for developers of modules in the FAST modularization framework.
by Jason Jonkman, Ph.D. and Bonnie Jonkman
National Wind Technology Center
NREL has recently put considerable effort into improving the overall modularity of its FAST wind turbine aero-hydro-servo-elastic tool to (1) improve the ability to read, implement, and maintain source code; (2) increase module sharing and shared code development across the wind community; (3) improve numerical performance and robustness; and (4) greatly enhance flexibility and expandability to enable further developments of functionality without the need to recode established modules. The new FAST modularization framework supports module-independent inputs, outputs, states, and parameters; states in continuous-time, discrete-time, and in constraint form; loose and tight coupling; independent time and spatial discretizations; time marching, operating-point determination, and linearization; data encapsulation; dynamic allocation; and save/retrieve capability.
It is envisioned that the new modularization framework will transform FAST into a powerful, robust, and flexible wind turbine modeling tool with a large number of developers and a range of modeling fidelities across the aerodynamic, hydrodynamic, servo-dynamic, and structural-dynamic components. For the most recent version of FAST developed under this framework, please see the FAST v8 web site.
The following documents describe the FAST modularization framework:
- New Modularization Framework for the FAST Wind Turbine CAE Tool: Preprint (January 2013)
by Jason Jonkman
This paper explains the features of the new FAST modularization framework, as well as the concepts and mathematical background needed to understand and apply it correctly.
- Numerical Stability and Accuracy of Temporally Coupled Multi-Physics Modules in Wind Turbine CAE Tools (February 2013)
by Amir Gasmi, Michael A. Sprague, Jason M. Jonkman, and Wesley B. Jones
This paper presents an initial assessment of the stability and accuracy of numerical algorithms for coupling modules in the new FAST modularization framework. (Note that the algorithms described in this paper have been replaced by algorithms in FAST Modular Wind Turbine CAE Tool: Nonmatching Spatial and Temporal Meshes, described below.)
- FAST Modular Wind Turbine CAE Tool: Nonmatching Spatial and Temporal Meshes: Preprint (January 2014)
by Michael A. Sprague, Jason M. Jonkman, and Bonnie J. Jonkman
This paper examines numerical algorithms for coupling modules where spatial grids are non-matching at interfaces and module solutions are time advanced with different time increments and different time integrators.
- FAST Modular Framework for Wind Turbine Simulation: New Algorithms and Numerical Examples (January 2015)
by Michael A. Sprague, Jason M. Jonkman, and Bonnie J. Jonkman
This paper is an update to FAST Modular Wind Turbine CAE Tool: Nonmatching Spatial and Temporal Meshes: Preprint, and discusses rotational interpolation, mixed time steps, and sparse solvers.
- NWTC Programmer's Handbook (2.1 MB, 17-Jul-2013)
by Bonnie Jonkman, John Michalakes, Jason Jonkman, Marshall Buhl, Andy Platt, and Michael Sprague
This handbook explains the code development requirements and best practices for the FAST modularization framework. Much of the guidance in this document also applies to other tools developed at the National Wind Technology Center.
- Presentations from the October 8, 2012 NREL/DOE Workshop on the New Modularization Framework for the FAST Wind Turbine CAE Tool:
The following code is designed to assist developing modules in the FAST framework:
- Fortran Template Module
supported by Bonnie Jonkman
This gitHub link contains the Fortran source code of a template module and a driver program for the module, as well as a FAST Registry input file for the module. It compiles with NWTC Subroutine Library v2.09.00 and code generated by the FAST Registry. It was developed using Intel® Visual Fortran Compiler XE 188.8.131.520 [IA-32] and gfortran (gcc) 4.6.2. A makefile for compiling with gfortran is also provided.
Note that this template file can be generated--and modified for a new module name--using the FAST Registry.
- FAST Registry for Automatic Code Generation
supported by John Michalakes and Bonnie Jonkman
The above link to gitHub contains the source code, makefile, and Visual Studio project file to compile the FAST Registry. The FAST Registry is described in the NWTC Programmer's Handbook .
We have created some simple examples that demonstrate the new FAST modularization framework. These examples use the Fortran Template Module and FAST Registry for Automatic Code Generation available at the links above. (Note that these examples and old; they do not use the Mesh Module, which is required for the FAST modularization framework.)
- Gasmi Paper Examples (tar, 412 KB) (26-March-2013)
This archive contains the development plan and implementation of the examples described in Gasmi et al (2013), following the module-development requirements documented in the NWTC Programmer's Handbook for loose coupling. Module 1 is a one-degree-of-freedom damped oscillator with motion output and force input, Module 2 is a one-degree-of-freedom damped oscillator with force input and motion output, and Module 3 is a quasi-static nonlinear cable with motion input and force output. In contrast to Gasmi et al (2013), the method to couple the modules used here is a "symmetric" predictor-corrector approach (such that the order of modules does not matter). While these example problems are quite trivial, the examples can be used as a "how-to" reference when developing a plan and source code for more sophisticated modules.
The archive contains the Fortran source files and Registry input files for the three modules, plus separate Fortran glue codes for coupling Module 1 to Module 2 and for coupling Module 1 to Module 3. Makefiles, which will run the FAST Registry and compile the code using gfortran, are included. These examples compile with NWTC Subroutine Library v1.07.00b-mlb and code generated by the FAST Registry Rev276.
- Example using ModMesh coming later
Programming Language: Wind and Water Tools:
You must log in to download this software.
If you want to refer to this website in a report, here is a reference you can use:
NWTC Information Portal (Development Guide to the FAST Modularization Framework). https://nwtc.nrel.gov/FAST-Developers.
Last modified 23-July-2016 ; Accessed 23-February-2017