Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
6a53b01
removed Crunch post processing inputs from the /inputs directory
rafmudaf May 12, 2017
8efe512
add a script and makefiles to compile ServoDyn controllers to 5MW cases
rafmudaf May 12, 2017
5f2c34a
use 32 bit compiler for windows, 64 bit otherwise
rafmudaf May 12, 2017
134ff71
syntax fix in makefile
rafmudaf May 12, 2017
098784f
add 32 bit / 64 bit selection in all makefiles
rafmudaf May 12, 2017
68828a0
rm make logs from the repo
rafmudaf May 12, 2017
71d0dda
bug fix in make command syntax
rafmudaf May 12, 2017
66ad795
add compiled files to gitignore
rafmudaf May 12, 2017
466728b
update cert test inputs for AeroDyn 15
rafmudaf May 12, 2017
c1b2b7e
update CertTest inputs for FEAMooring
rafmudaf May 12, 2017
224935a
update CertTest inputs for MAP
rafmudaf May 12, 2017
0e2a6a9
update CertTest inputs for MoorDyn
rafmudaf May 12, 2017
5577510
update CertTest wind inputs
rafmudaf May 12, 2017
6748e3a
update CertTest inputs for InflowWind
rafmudaf May 12, 2017
17189e8
add README
rafmudaf May 12, 2017
19a956f
update README with peregrine's ifort version
rafmudaf May 12, 2017
0b0a763
update aerodyn input file to new format
rafmudaf May 12, 2017
a9ed0fa
update rhel-intel gold standard files with latest openfast/dev and up…
rafmudaf May 15, 2017
d05935a
rename 'rhel' to 'linux'
rafmudaf May 15, 2017
70cf65e
capitalize input file names to match their call in the hydrodyn input…
rafmudaf May 15, 2017
10e0d24
Switch FEAMooring for MAP++ in Test23; FEAMooring does not successful…
rafmudaf May 16, 2017
359e3d2
remove extra / in the build rules
rafmudaf May 16, 2017
c687be1
if the program is not called from its parent directory, cd in the par…
rafmudaf May 16, 2017
f425461
update linux-intel CertTest cases with the latest build from openfast…
rafmudaf May 16, 2017
cf91811
Switch mooring type from 2 to 1 in Test23.fst
rafmudaf May 17, 2017
df1cde9
update macos-gnu CertTest cases with the latest build from openfast/d…
rafmudaf May 17, 2017
7de88d4
remove built flag and add architecture type flag to the python script…
rafmudaf May 17, 2017
5fc7877
update the README with external links, include updated python script …
rafmudaf May 22, 2017
efb1e8a
update python script and documentation to python 3
rafmudaf May 23, 2017
20edfc1
print more descriptive error when given incorrect inputs
rafmudaf May 24, 2017
c3a3a0e
add LICENSE file; include license info on all source files that are n…
rafmudaf May 24, 2017
cda5a3b
Convert ServoDyn controllers to compile with extension dll rather tha…
rafmudaf May 31, 2017
0578110
update makefiles to compile with extension dll rather than so for vis…
rafmudaf May 31, 2017
9cfe302
gitignore compiled .dll's
rafmudaf May 31, 2017
d73786f
move the static makefiles to cmake projects
rafmudaf May 31, 2017
ec4d361
rework ServoDyn controller compilation script to run cmake; make; mak…
rafmudaf May 31, 2017
278943b
convert file paths to CMAKE style when using internally
rafmudaf May 31, 2017
89db5a3
add a module level structure for input and output files
rafmudaf Jun 2, 2017
95af411
compile servodyn controllers in a build directory rather than in source
rafmudaf Jun 2, 2017
8e5ff6a
match the openfast source code directory structure
rafmudaf Jun 6, 2017
7161e64
starting the process of constructing an independent directory for eac…
rafmudaf Jun 6, 2017
4862868
update input file to find the correct elastodyn inputs
rafmudaf Jun 6, 2017
fe87d1c
bug fix in naming the servodyn controllers
rafmudaf Jun 7, 2017
1012867
create discrete directories for each openfast test case containing in…
rafmudaf Jun 8, 2017
5e82101
case specific input files have been moved to the case directories
rafmudaf Jun 8, 2017
13f72ac
add windows solutions to all openfast cases
rafmudaf Jun 9, 2017
a96505d
fix broken unicode character in input file
rafmudaf Jun 12, 2017
3427949
update AWT cases for directory structure change
rafmudaf Jun 12, 2017
84f4e4c
update AOC cases for directory structure change
rafmudaf Jun 12, 2017
247764f
remove case output file from the inputs directory
rafmudaf Jun 12, 2017
c47af0d
update UAE cases for directory structure change
rafmudaf Jun 12, 2017
f32947a
update WP cases for directory structure change
rafmudaf Jun 13, 2017
b05394b
update SWRT cases for directory structure change
rafmudaf Jun 13, 2017
ee92cb3
update 5MW cases for directory structure change
rafmudaf Jun 14, 2017
78bb2e8
remove .cru files from the solution sets
rafmudaf Jun 15, 2017
a834e0c
update linux-intel solution sets to openfast/dev HEAD as of June 5 2017
rafmudaf Jun 15, 2017
0d51644
update macos-gnu solution sets to openfast/dev HEAD as of June 5 2017
rafmudaf Jun 15, 2017
6fd8ace
fix errors and warnings in servodyn controller compiling
rafmudaf Jun 15, 2017
0fcef3e
use IMPLICIT_DLLEXPORT flag on non windows systems only
rafmudaf Jun 16, 2017
57f178d
Bug fix for 'update linux-intel solution sets to openfast/dev HEAD as…
rafmudaf Jun 16, 2017
4d83c38
update linux-intel solutions with latest openfast HEAD
rafmudaf Jun 20, 2017
7635fd3
add all timesteps to the beamdyn regression test solution
rafmudaf Jun 20, 2017
a333933
update linux-intel baseline files based on openfast/dev commit d329d01
rafmudaf Jun 22, 2017
4a1fa57
update the discon controller cmake projects with specific install loc…
rafmudaf Jun 30, 2017
015e35a
README update
rafmudaf Jun 30, 2017
69027d0
remove unused files from macos-gnu baseline solution set
rafmudaf Jul 6, 2017
38e51bb
update macos-gnu baseline files based on openfast/dev commit d329d01
rafmudaf Jul 6, 2017
f4647ad
rename CertTest case input files and corresponding flags from TestNN …
rafmudaf Jul 7, 2017
83aa6a3
rename CertTest case directories from TestNN to case descriptive names
rafmudaf Jul 7, 2017
b808f1f
update DISCON controller cmake config install locations based on whet…
rafmudaf Jul 7, 2017
975493d
add initial script for copying local solutions to the baseline directory
rafmudaf Jul 11, 2017
a3ca16c
add documentation and argument checking; rename script
rafmudaf Jul 12, 2017
be886e8
add nrel license
rafmudaf Jul 12, 2017
c603c74
update README after updates to directory structure
rafmudaf Jul 12, 2017
82d07c9
add a map of old names to new names in README
rafmudaf Jul 12, 2017
b58456b
remove extraneous test case directory
rafmudaf Jul 12, 2017
612262f
add a case manifest; in format for future use in README
rafmudaf Jul 17, 2017
8d290b5
add functionality for the solution update script to read an input file
rafmudaf Jul 17, 2017
293a789
update openfast test case naming
rafmudaf Jul 18, 2017
0a9c90e
update cert test names in documentation
rafmudaf Jul 18, 2017
89efb66
bug fix: add back cert test case 24
rafmudaf Jul 18, 2017
a3ea8b1
update macos baseline solutions for oepnfast commit ff90fc
rafmudaf Jul 18, 2017
073ced1
update windows baseline solutions for oepnfast commit ff90fc
rafmudaf Jul 19, 2017
cb50bbc
update linux baseline solutions for oepnfast commit ff90fc
rafmudaf Jul 19, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,16 @@
.DS_Store

# logs
*.log

# cmake outputs
CMakeCache.txt
CMakeFiles
*.cmake
Makefile
install_manifest.txt

# compiled outputs
*.dll
*.so
*.o
201 changes: 201 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright {yyyy} {name of copyright owner}

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
93 changes: 93 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# r-test

This repository serves as a container for regression test data for system level and module level testing of OpenFAST. The repository contains:
- input files for test case execution
- baseline solutions for various machine and compiler combinations
- turbine specific inputs

The baseline solutions serve as "gold standards" for the regression test suite and are updated periodically as OpenFAST and its modules are improved.

## modules-local/beamdyn
These BeamDyn specific cases are configured to run with the BeamDyn driver program rather than with a glue code.

## openfast
These are the system level test cases taken from the [FAST V8 CertTests](https://github.com/NWTC/FAST/tree/master/CertTest).
Each test case directory contains the OpenFAST input file, `.fst`, and all other case specific inputs. All turbine specific inputs are linked by relative paths to their corresponding turbine data directory. See the individual test case README's for more information regarding the particular turbine model and portion of the OpenFAST system that is being tested.

The included turbine directories are:
- 5MW_Baseline - [NREL offshore 5-MW baseline wind turbine](http://www.nrel.gov/docs/fy09osti/38060.pdf)
- AOC - [Atlantic Orient Company 15/50 wind turbine](http://www.nrel.gov/docs/legosti/old/4740.pdf)
- AWT27 - Advanced Wind Turbine program blade 27
- SWRT - [Small Wind Research Turbine](http://www.nrel.gov/docs/fy06osti/38550.pdf)
- UAE_VI - [Unsteady Aerodynamics Experiment research wind turbine](http://www.nrel.gov/docs/fy04osti/34755.pdf)
- WP_Baseline - [WindPACT 1.5-MW baseline wind turbine](http://www.nrel.gov/docs/fy06osti/32495.pdf)

The CertTest cases were recently renamed from the old style `TestNN` to more descriptive names. In general, the turbine abbreviation begins the case name followed by a concise description of the physics involved.

Map of old style names to new names
Test01 - AWT_YFix_WSt
Test02 - AWT_WSt_StartUp_HighSpShutDown
Test03 - AWT_YFree_WSt
Test04 - AWT_YFree_WTurb
Test05 - AWT_WSt_StartUpShutDown
Test06 - AOC_WSt
Test07 - AOC_YFree_WTurb
Test08 - AOC_YFix_WSt
Test09 - UAE_Dnwind_YRamp_WSt
Test10 - UAE_Upwind_Rigid_WRamp_PwrCurve
Test11 - WP_VSP_WTurb_PitchFail
Test12 - WP_VSP_ECD
Test13 - WP_VSP_WTurb
Test14 - WP_Stationary_Linear
Test15 - SWRT_YFree_VS_EDG01
Test16 - SWRT_YFree_VS_EDC01
Test17 - SWRT_YFree_VS_WTurb
Test18 - 5MW_Land_DLL_WTurb
Test19 - 5MW_OC3Mnpl_DLL_WTurb_WavesIrr
Test20 - 5MW_OC3Trpd_DLL_WSt_WavesReg
Test21 - 5MW_OC4Jckt_DLL_WTurb_WavesIrr_MGrowth
Test22 - 5MW_ITIBarge_DLL_WTurb_WavesIrr
Test23 - 5MW_TLP_DLL_WTurb_WavesIrr_WavesMulti
Test24 - 5MW_OC3Spar_DLL_WTurb_WavesIrr
Test25 - 5MW_OC4Semi_WSt_WavesWN
Test26 - 5MW_Land_BD_DLL_WTurb

## Baselines
The regression test compares locally generated solutions to the baseline solutions generated on a series of machine and compiler combinations. Currently, the supported machine/compiler combinations for successful regression testing are:
- linux-intel
- macos-gnu
- windows-intel

#### macos-gnu
These results were generated on a MacBook Pro running on macOS Sierra 10.12.4. The OpenFAST binary was compiled with gfortran installed through Homebrew's gcc package at gcc version 6.3.0 (Homebrew GCC 6.3.0_1).

#### linux-intel
These results were generated on [NREL's Peregrine HPC cluster](https://hpc.nrel.gov/users/systems/peregrine) running on Red Hat Enterprise Linux Server release 6.3 (Santiago). The OpenFAST binary was compiled with Intel's ifort compiler version 16.0.2.

#### windows-intel
These results were generated on a Dell Latitude E7440 running Windows 7 Enterprise SP 1. The OpenFAST binary was compiled with Intel's Visual Fortran 17 update 4.

#### Updating the baselines
The baseline directories can be updated with the included `updateBaselineSolutions.py`. This script copies locally generated OpenFAST solutions into the appropriate machine - compiler baseline solution directory.

Usage: `python updateBaselineSolutions.py source_directory target_directory system_name compiler_id`
Example: `python updateBaselineSolutions.py local/solution/TestName target/solution/TestName [Darwin,Linux,Windows] [Intel,GNU]`

### NOTE - ServoDyn external controllers for 5MW_Baseline cases
The cases using the 5MW turbine require an external controller for ServoDyn. The source code for three external controllers are provided, but they must be compiled and installed. For Linux and Mac systems, a python script is included at `openfast/compileDISCON.py` to configure with `cmake` and compile with `make` automatically. The compile script can be called with this command:
`python compileDISCON.py compiler_type[gnu,intel] arch_type[32/64]`
for example:
`python compileDISCON.py gnu 64`

On Windows systems, `cmake` can generate a Visual Studio project to compile and install the controllers. Create a `build` directory at
- `r-test/openfast/5MW_Baseline/ServoDyn/DISCON/build`
- `r-test/openfast/5MW_Baseline/ServoDyn/DISCON_ITI/build`
- `r-test/openfast/5MW_Baseline/ServoDyn/DISCON_OC3/build`

and run `cmake` in each one replacing your Visual Studio version and architecture in the following command:
`cmake -G "Visual Studio 14 2015 Win64" ..`

Ultimately, three `.dll`'s should be compiled and placed in the `5MW_Baseline` parallel to the test cases that will be executed. For example, if the regression test is executed automatically with `ctest` or `manualRegressionTest.py`, all case files will be copied to `openfast/build`. In this case, these three controller libraries must exist:
- `openfast/build/reg_tests/openfast/5MW_Baseline/ServoDyn/DISCON.dll`
- `openfast/build/reg_tests/openfast/5MW_Baseline/ServoDyn/DISCON_ITIBarge.dll`
- `openfast/build/reg_tests/openfast/5MW_Baseline/ServoDyn/DISCON_OC3Hywind.dll`
Loading