Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regression test and OpenFAST updates #42

Merged
merged 115 commits into from
Aug 31, 2017
Merged

Conversation

ghost
Copy link

@ghost ghost commented Aug 29, 2017

Regression Test

  • New failure criteria
if channelRange < 1 {
	norm = InfinityNorm
} else {
	norm = InfinityNorm / channelRange
}
  • Optional error plotting and results summary provided with matplotlib generated files embedded into html
  • Improved results output when running the regression test manually
  • Improved control when running the regression test manually - single case execution, generate plots without running the case (great for debugging)
  • Added abstraction and improved the API's to the custom python infrastructure

OpenFAST

  • Export unpacked binary output file
  • Git commit is embedded in the binary when built with CMake; VS integration is on the way
    -- Including the git info in the module specific outputs is more involved since each module handles its own I/O and the I/O code is tucked into larger subroutines - saving for future work
  • Fix BeamDyn, BeamDyn driver, and OrcaFlex driver precision-type bugs
  • Replace unicode with ascii characters in output
  • Additional meta data is printed in the OpenFAST log:
**************************************************************************************************
 OpenFAST

 Copyright (C) 2017 National Renewable Energy Laboratory

 This program comes with ABSOLUTELY NO WARRANTY. See the "license.txt" file distributed with this
 software for details.
 **************************************************************************************************

 OpenFAST v8.17.01c-dev-dc586c7*
 Compile Info:
  - Architecture: 64 bit
  - Precision: double
 Execution Info:
  - Date: 08/28/2017
  - Time: 19:55:51-0600

 OpenFAST input file heading:
     FAST Certification Test #06: AOC 15/50 with many DOFs with gen start, loss of grid, and
     tip-brake shutdown. Many parameters are pure fiction.

 Running ElastoDyn.
 Running AeroDyn14.
 Running InflowWind.
 Running ServoDyn.
  Timestep: 0 of 35 seconds.

TO DO BEFORE MERGE

  • Verify on peregrine & windows
  • Update r-test baseline solutions for all machine/compiler combinations
  • Include OpenFAST 0.1.0 - OpenFAST 1.0.0 comparison
  • Update the versions for glue codes and modules

mjs271 and others added 30 commits July 30, 2017 22:30
when executing the python script directly from its parent directory. for example, this was a breaking execution:
python manualRegressionTest…
but this was fine:
python reg_tests/manualRegressionTest...
Unicode characters cause problems when dealing with multiple platforms and various software reading the output files
@ghost ghost self-assigned this Aug 29, 2017
@@ -0,0 +1,168 @@
# - Returns a version string from Git
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to add the original repo from where you got this file? Also are the licensing terms of the original repo/file compatible with moving it into OpenFAST repo?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sayerhs good point. that file is from this widely used github repo: https://github.com/rpavlik/cmake-modules. It is licensed under Boost Version 1.0. The original author and a link to the license are included in the docstring of the files included in our repo so I think we are in the clear legally. For reference, the first paragraph of the license is included below. And I'll add a link to the repo in that file's docstring.

Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rafaelmudafort Let's add a link to the git repo in the CMake file comments. That should suffice.

@@ -0,0 +1,41 @@
#
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same issue with this file.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see above


OpenFAST has the following dependencies:

- LAPACK libraries provided through the variable ``BLASLIB``
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this an OpenFAST specific modification? Standard CMake variable is not BLASLIB, I think that is Intel MKL variable.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gantech was this BLASLIB variable only used for your script fast-build.sh?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I used it only for fast-build.sh and specifically to compile with mkl. I'm not sure if it was required. Is there another path forward?

   -DCMAKE_INSTALL_PREFIX=$openfast_dir/install/ \
   -DCMAKE_BUILD_TYPE=RELEASE \
   -DBUILD_FAST_CPP_API=ON \
   -DYAML_ROOT:PATH=$yaml_install_dir \
   -DHDF5_USE_STATIC_LIBRARIES=ON \
   -DHDF5_ROOT:PATH=$hdf5_install_dir \
   -DLAPACK_LIBRARIES="$BLASLIB" \
   -DBLAS_LIBRARIES="$BLASLIB" \
   -DFPE_TRAP_ENABLED=OFF \
   $EXTRA_ARGS \
../ &> log.cmake```

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gantech that script can use the BLASLIB variable, but I think @sayerhs comment is that the line in the instructions is not accurate since the cmake or spack build processes do not involve explicitly setting that BLASLIB variable.

Copy link
Author

@ghost ghost Aug 29, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about this edit:

OpenFAST has the following dependencies:

- LAPACK libraries
- For the optional C++ API, `HDF5 <https://support.hdfgroup.org/HDF5/>`__ (provided by ``HDF5_ROOT``) and `yaml-cpp <https://github.com/jbeder/yaml-cpp>`__ (provided by ``YAML_ROOT``)
- For the optional testing framework, Python 3+

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup... I agree. What is the Cmake standard for Lapack libraries though? May be I should be setting LAPACK_DIR=${BLASLIB} in the sample install scripts.

Copy link
Contributor

@sayerhs sayerhs Aug 29, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Intel's BLASLIB includes both -L flags and -l. My recommendation would be to clarify in the documentation that the users should set BLAS_LIBRARIES and LAPACK_LIBRARIES appropriately if the library isn't found in standard paths. And use BLASLIB as an example when using Intel MKL.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok... Can I submit a separate pull request reg. this then?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Push to this branch/pull request (assuming Raf gives you write access) it is a simple doc fix anyway.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gantech you should be able to submit edits to this pull request. lmk if not

Copy link
Contributor

@michaelasprague michaelasprague left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@raf what is your plan for "Include OpenFAST 0.1.0 - OpenFAST 1.0.0 comparison"

@ghost
Copy link
Author

ghost commented Aug 29, 2017

@michaelasprague that will be a document listing the test cases that failed the regression test, documenting some of the major differences in solutions, and listing the procedure used for the regression test. This is very similar to the document I've prepared (though not yet fully shared) on the FAST v8 - OpenFAST 0.1.0 comparison.

Copy link
Contributor

@HaymanConsulting HaymanConsulting left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There will be some further tidying up of the GIT hash-related code, but otherwise, I'm fine with these changes.

@HaymanConsulting HaymanConsulting merged commit c1b7074 into OpenFAST:dev Aug 31, 2017
michaelasprague added a commit that referenced this pull request Sep 8, 2017
update regression test baseline solutions after pull request #42
@HYFOAM HYFOAM mentioned this pull request Nov 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants