Skip to content

Commit

Permalink
Merge remote tracking branch upstream/dev into feature/MHK_AddedMass_…
Browse files Browse the repository at this point in the history
…Inertia
  • Loading branch information
hkross committed Dec 24, 2024
2 parents c358186 + daa0f43 commit c8bc907
Show file tree
Hide file tree
Showing 115 changed files with 9,804 additions and 12,042 deletions.
51 changes: 49 additions & 2 deletions .github/workflows/automated-dev-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ jobs:
-DVARIABLE_TRACKING=OFF \
-DBUILD_FASTFARM:BOOL=ON \
-DBUILD_OPENFAST_CPP_API:BOOL=ON \
-DBUILD_OPENFAST_LIB_DRIVER:BOOL=ON \
-DBUILD_OPENFAST_CPP_DRIVER:BOOL=ON \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DBUILD_TESTING:BOOL=ON \
Expand Down Expand Up @@ -248,7 +249,7 @@ jobs:
- name: Build OpenFAST C-Interfaces
working-directory: ${{runner.workspace}}/openfast/build
run: |
cmake --build . --target openfastlib openfast_cpp_driver openfastcpp aerodyn_inflow_c_binding moordyn_c_binding ifw_c_binding hydrodyn_c_binding regression_test_controllers
cmake --build . --target openfastlib openfast_lib_driver openfastcpp aerodyn_inflow_c_binding moordyn_c_binding ifw_c_binding hydrodyn_c_binding regression_test_controllers
- name: Cache the workspace
uses: actions/cache@v4
with:
Expand Down Expand Up @@ -534,7 +535,8 @@ jobs:
- name: Run Interface / API tests
working-directory: ${{runner.workspace}}/openfast/build
run: |
ctest -VV -L "cpp|python|fastlib"
ctest -VV -L "cpp|python|fastlib" \
-LE "openfast_io"
- name: Failing test artifacts
uses: actions/upload-artifact@v4
if: failure()
Expand Down Expand Up @@ -600,6 +602,51 @@ jobs:
!${{runner.workspace}}/openfast/build/reg_tests/glue-codes/openfast/UAE_VI
!${{runner.workspace}}/openfast/build/reg_tests/glue-codes/openfast/WP_Baseline
rtest-openfast_io:
runs-on: ubuntu-22.04
needs: build-openfast-release
steps:
- name: Cache the workspace
uses: actions/cache@v4
with:
path: ${{runner.workspace}}
key: build-openfast-release-${{ github.sha }}
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install -r requirements.txt
sudo apt-get update -y
sudo apt-get install -y libopenblas-dev libopenblas-openmp-dev
sudo apt-get install -y libhdf5-dev libnetcdf-dev libopenmpi-dev libyaml-cpp-dev
- name: Install openfast_io
working-directory: ${{runner.workspace}}/openfast/openfast_io
run: |
pip install -e .
- name: Configure Tests
working-directory: ${{runner.workspace}}/openfast/build
run: |
cmake \
-DPython_ROOT_DIR:STRING=${{env.pythonLocation}} \
-DBUILD_TESTING:BOOL=ON \
-DCTEST_PLOT_ERRORS:BOOL=ON \
${GITHUB_WORKSPACE}
cmake --build . --target regression_test_controllers
- name: Run openfast_io tests
working-directory: ${{runner.workspace}}/openfast/build
run: |
ctest -VV -j4 \
-L openfast_io
- name: Failing test artifacts
uses: actions/upload-artifact@v4
if: failure()
with:
name: rtest-openfast_io
path: |
${{runner.workspace}}/openfast/build/reg_tests/openfast_io
rtest-OF-simulink:
runs-on: ubuntu-22.04
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-docker-image-manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ jobs:
timeout-minutes: 300
env:
DOCKERFILE_PATH: share/docker/Dockerfile
DOCKERFILE_PERMALINK: https://raw.githubusercontent.com/OpenFAST/openfast/main/share/docker/Dockerfile
DOCKERFILE_PERMALINK: https://raw.githubusercontent.com/openfast/openfast/main/share/docker/Dockerfile
DOCKERHUB_REPOSITORY: nrel/openfast
GH_REGISTRY: ghcr.io/OpenFAST/openfast
GH_REGISTRY: ghcr.io/openfast/openfast
permissions:
contents: read
packages: write
Expand Down
81 changes: 61 additions & 20 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,42 +6,79 @@ name: deploy

on:
workflow_dispatch:

release:
types:
- released


jobs:
publish-to-pypi:
publish-to-pypi-test:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read

if: github.event_name == 'workflow_dispatch'
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.12'
cache: 'pip'

- name: Install Poetry
uses: snok/[email protected]
- name: Install Hatch
uses: pypa/hatch@install

- name: Build a binary wheel and a source tarball
run: poetry build
working-directory: openfast_python
- name: Install dependencies
run: pip install keyring[file]

- name: Publish package distributions to PyPI
uses: pypa/[email protected]
- name: Build package
run: hatch build
working-directory: openfast_io

- name: Publish to PyPI test
env:
HATCH_INDEX_USER: __token__
HATCH_INDEX_AUTH: ${{ secrets.PYPI_TEST_TOKEN }}
run: hatch publish -r test
working-directory: openfast_io

publish-to-pypi:
runs-on: ubuntu-latest
if: github.event_name == 'release'
steps:
- uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v4
with:
packages-dir: openfast_python/dist
python-version: '3.12'
cache: 'pip'

- name: Install Hatch
uses: pypa/hatch@install

- name: Install dependencies
run: pip install keyring[file]

- name: Build package
run: hatch build
working-directory: openfast_io

- name: Publish to PyPI
env:
HATCH_INDEX_USER: __token__
HATCH_INDEX_AUTH: ${{ secrets.PYPI_TOKEN }}
run: hatch publish
working-directory: openfast_io

docker-build-and-push:
runs-on: ubuntu-latest
timeout-minutes: 300
if: github.event_name == 'release'
timeout-minutes: 500
env:
DOCKERFILE_PATH: share/docker/Dockerfile
DOCKERHUB_REPOSITORY: nrel/openfast
GH_REGISTRY: ghcr.io/OpenFAST/openfast
GH_REGISTRY: ghcr.io/openfast/openfast
permissions:
contents: read
packages: write
Expand All @@ -68,7 +105,11 @@ jobs:

- name: Extract tag from release candidate branch name
id: extract-tag
run: echo "openfast-tag=$(expr substr "${{ github.head_ref }}" 4 100)" >> $GITHUB_OUTPUT
run: |
TAG="${{ github.event.release.tag_name }}"
CLEAN_TAG="${TAG#v}"
echo "openfast-tag=$CLEAN_TAG" >> $GITHUB_OUTPUT
echo "Extracted tag $CLEAN_TAG"
- name: Build and push to registry
uses: docker/build-push-action@v5
Expand All @@ -77,7 +118,7 @@ jobs:
file: ${{ env.DOCKERFILE_PATH }}
platforms: linux/amd64,linux/aarch64
tags: |
${{ env.GH_REGISTRY }}:${{ steps.extract-tag.outputs.openfast-tag }},${{ env.DOCKERHUB_REPOSITORY }}:latest
${{ env.GH_REGISTRY }}:${{ steps.extract-tag.outputs.openfast-tag }},${{ env.GH_REGISTRY }}:latest
# ${{ env.DOCKERHUB_REPOSITORY }}:${{ steps.extract-tag.outputs.openfast-tag }},${{ env.DOCKERHUB_REPOSITORY }}:latest
push: true
cache-from: type=gha
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,7 @@ vs-build/
#Simulink cache files
varcache
*.slxc

# Python cache files
openfast_io/dist/
openfast_io/openfast_io/_version.py
7 changes: 4 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ option(FPE_TRAP_ENABLED "Enable FPE trap in compiler options" off)
option(ORCA_DLL_LOAD "Enable OrcaFlex Library Load" on)
option(BUILD_FASTFARM "Enable building FAST.Farm" off)
option(BUILD_OPENFAST_CPP_API "Enable building OpenFAST - C++ API" off)
option(BUILD_OPENFAST_CPP_DRIVER "Enable building OpenFAST C++ driver using C++ API" off)
option(BUILD_OPENFAST_CPP_DRIVER "Enable building OpenFAST C++ driver using C++ CFD API" off)
option(BUILD_OPENFAST_LIB_DRIVER "Enable building OpenFAST driver using C++ Library API" off)
option(BUILD_OPENFAST_SIMULINK_API "Enable building OpenFAST for use with Simulink" off)
option(OPENMP "Enable OpenMP support" off)
option(USE_LOCAL_STATIC_LAPACK "Enable downloading and building static LAPACK and BLAS libs" off)
Expand Down Expand Up @@ -231,8 +232,8 @@ endforeach(IDIR IN ITEMS ${OPENFAST_MODULES})
add_subdirectory(glue-codes)

# Install fortran .mod files also to installation directory
install(DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/openfast/
install(DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}
DESTINATION include/openfast/
FILES_MATCHING PATTERN "*.mod"
)

Expand Down
38 changes: 38 additions & 0 deletions docs/changelogs/v2.4.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
### General
- #428 Improve CLI for OpenFAST (`openfast -v` and `openfast -h`)
- #350 Add offshore linearization capability
- #488 Improve Line2-to-Line2 or Line2-to-Point mapping
- #508 Support RANLUX as an optional pRNG
- #373 Support for channel names up to 20 characters
- #373 Allow mode shape visualization - [docs](https://github.com/OpenFAST/matlab-toolbox#mode-shapes-visualization)
- #373 Find a periodic steady-state trim solution where linearization will be performed
- Update documentation
- Bug fixes

### AeroDyn
- #477 Add free vortex wake module - [docs](https://openfast.readthedocs.io/en/master/source/user/aerodyn-olaf/index.html)
- #515 Add aeroacoustics module - [docs](https://openfast.readthedocs.io/en/master/source/user/aerodyn-aeroacoustics/index.html)
- #373 Allow channel outputs at every blade node - [docs](https://openfast.readthedocs.io/en/master/source/user/aerodyn/input.html#ad-nodal-outputs)

### BeamDyn
- #373 Allow channel outputs at every blade node - [docs](https://openfast.readthedocs.io/en/master/source/user/beamdyn/input_files.html#bd-nodal-outputs)

### ElastoDyn
- #453 Bug fix: the rotational speed was doubled in the rotational velocity field of the blade output mesh
- #461 Add output channel for translational displacements of tower top at yaw bearing relative to the reference position
- #373 Allow channel outputs at every blade node - [docs](https://openfast.readthedocs.io/en/master/source/user/elastodyn/input.html#ed-nodal-outputs)

### ExtPtfm
- #344 Use Craig-Bampton reduction of support structures for sequential load calculations

### InflowWind
- #437 Add new HAWC wind profile input type for reading wind conditions without mean wind speed
- #437 Allow to shift the HAWC wind upstream or downstream

### ServoDyn
- #456 Properly support yaw rate command integration from controller
- #460 Fix an issue in updating the states when a yaw maneuver is beginning

### r-test
- #456 Update 5MW BeamDyn blade damping models

57 changes: 57 additions & 0 deletions docs/changelogs/v2.5.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
### General
In v2.5.0, the `master` branch will become `main` and this will serve as the "trunk" or primary branch for OpenFAST. This is in line with current best practices in naming conventions (see [here](https://github.com/github/renaming)).

### AeroDyn
- #538 Update AeroDyn to allow for linearized dynamic stall and dynamic inflow models
- #538 Disable BEM if TSR <= 1, blend BEM and non-BEM when 1 < TSR < 2, output the proportion of BEM in GeomPhi output channel
- #590 [BugFix] VTK folder location, Vx sign for OLAF
- #594 [BugFix] Close a file that was opened but not closed
- #623 [BugFix] Allocate array to size 0 before getting its size
- #627 [BugFix] Fix logic for setting size of arrays for airfoil tables

### BeamDyn
- #560 Expand and improve BeamDyn unit tests
- #564 Documentation updates: Add BD OpenFAST solve section
- #576 Replace cubic spline with least squares fit
- #619 [BugFix] Regenerate Types files after registry file changes

### FAST Library
- #550 Make channel length consistent between C and Fortran sides of interface
- #616 Fix potential memory leak and expand error handling

### HydroDyn
- #582 Use RANLUX pRNG in offshore floating regression test cases
- #586 Hd Driver - Add Morrison mesh and standalone driver test cases
- #602 Vectorize a section of VariousWaves_Init (also #606)

### InflowWind
- #578 InflowWind Updates (vertical flow angle, Bladed support, negetive height)
- #596 Add support for initializing InflowWind with string inputs

### MoorDyn
- #565 Add active tensioning capabilities in MoorDyn
- #604 [BugFix] Fix position and tension node outputs
- #619 [BugFix] Regenerate Types files after registry file changes

### NWTC Library
- #588 Add NWTC Library infrastructure for parsing inputs as strings
- #603 [BugFix] Fix order of variables declaration

### Simulink
- #545 Support for GNU compiler on Linux systems
- #577 Updated examples for OpenFAST-Simulink Interface
- #616 Fix potential memory leak and add more error handling

### Documentation
- #558 Refer to conda for installation ([docs](https://openfast.readthedocs.io/en/dev/source/install/index.html#download-binaries))
- #559 Update unit test guidance ([docs](https://openfast.readthedocs.io/en/dev/source/testing/unit_test.html))
- #614 [BugFix] Fix api_change.rst ([docs](https://openfast.readthedocs.io/en/dev/source/user/api_change.html))

### Build system
- #547 [BugFix] cmake configuration for Linux + Intel + Debug
- #583 CMake: set CMP0074 policy explicitly to avoid warnings
- #595 Disable gfortran stack-reuse compiler option
- #610 Prevent variable tracking in large Fortran modules

### Testing
- #579 #599 #610 Improve GH Actions
30 changes: 30 additions & 0 deletions docs/changelogs/v2.6.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
This release includes the following major enhancements:
- Support for flexible floating platforms and expansion of linearization capability (#537)

### AeroDyn
#645 Add Eames tower shadow model to AD15
#643 Support primary input file parsing through strings

### BeamDyn
#615 [BugFix] Initialized error variables
#636 Add unit tests for BD_ComputeIniNodalCrv

### HydroDyn
#537 Flexible floating platforms
#615 Morison performance improvement
#634 Fix HydroDyn linearization matrix multiplication using unallocated arrays

### InflowWind
#642 [BugFix] Reenable InflowWind echo file lost in #596

### NWTC Library
#615 NWTC Lib bug fixes

### Simulink Interface
#641 [BugFix] Simulink error message overwrite

### Testing
#637 Use default runner and GFortran 10
#635 Use Intel 2021 Toolset for regression test


Loading

0 comments on commit c8bc907

Please sign in to comment.