Skip to content

Conversation

@deslaughter
Copy link
Collaborator

This PR is ready to merge (supersedes #986)

Feature or improvement description

The SoilDyn module was developed as part of the OC6 project. It is designed specifically for coupling to the REDWIN dynamic linked library (DLL) for modeling soil-pile interactions. This set of DLL was developed by NGI in 2018 as part of the REDWIN project and includes three soil interaction models (https://www.ngi.no/eng/Projects/REDWIN-reduce-wind-energy-cost/#Reports-and-publications).

This module also supports a very simple soil stiffness interaction matrix, primarily for testing. There is a placeholder for a P-Y curve approach in the code, but this feature has not been fully developed.

Related issue, if one exists

Impacted areas of the software

Adds SoilDyn module and adds associated functions and meshes to FAST_Funcs and FAST_Mapping.

Additional supporting information

SoilDyn was originally developed for OpenFAST 3.X, but wasn't fully integrated. This PR updates SoilDyn for the new glue code.

Publications:

Test results, if applicable

A new test was added using a simple stiffness matrix. Unfortunately, the REDWIN DLL is proprietary and Windows only so it couldn't be integrated to the regression test suite.

andrew-platt and others added 30 commits January 29, 2020 16:47
-- update calcoutput and add a routine to get the stiffness matrix
deslaughter and others added 20 commits August 24, 2022 15:23
Added regression_test_controllers target as it was mistakenly removed
Reverted changes made in attempt to get SoilDyn regression tests to
pass. May be good to revisit these changes later.
This code was added for SoilDyn but was applied to all SubDyn cases.
This change moves the code inside the related SubDyn block and only
applies it if SoilDyn is enabled.
… load calculation. Hydrodyn doesn't need hydrostatic loads when calculating dYdu and perturbing velocities/accelerations. Resulted in 20% speedup.
…rID_None when entering the function. Therefore, each function doesn't need to set ErrMsg = "" at the beginning which reduces some overhead.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@deslaughter deslaughter added this to the v5.0.0 milestone Jan 2, 2026
@deslaughter deslaughter self-assigned this Jan 2, 2026
@deslaughter deslaughter added the Module: SoilDyn Soil interaction module (REDWIN DLL coupling) label Jan 2, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR integrates the SoilDyn module into the OpenFAST dev-tc branch. SoilDyn was originally developed for OpenFAST 3.X as part of the OC6 project to model soil-pile interactions, specifically for coupling with the REDWIN DLL. This update adapts SoilDyn for the new glue code infrastructure.

Key Changes:

  • Addition of SoilDyn module source files and build configuration
  • Integration with FAST glue code for mesh mapping and module initialization
  • New regression test case OC6_phaseII
  • Updates to support Windows DLL loading for both SoilDyn and OrcaFlex

Reviewed changes

Copilot reviewed 42 out of 45 changed files in this pull request and generated no comments.

Show a summary per file
File Description
modules/soildyn/* Complete SoilDyn module implementation including source, registry, driver, and I/O
vs-build/SoilDyn/* Visual Studio project files for Windows builds
vs-build/RunRegistry.bat Added SoilDyn to registry build script
modules/openfast-library/src/FAST_* Glue code updates for SoilDyn integration and mesh mappings
modules/subdyn/src/SD_FEM.f90 Logic to detect soil stiffness from SoilDyn
reg_tests/CTestList.cmake New OC6_phaseII regression test
modules/wakedynamics/src/WakeDynamics.f90 Fixed DCM_logMap function call signature
modules/seastate/src/SeaSt_WaveField.f90 Removed redundant ErrMsg initializations
modules/nwtc-library/src/NWTC_Base.f90 Improved error message concatenation logic
docs/source/install/index.rst Renamed ORCA_DLL_LOAD to WIN_DLL_LOAD
Comments suppressed due to low confidence (1)

modules/soildyn/src/driver/SoilDyn_Driver_Subs.f90:1

  • Corrected spelling of 'WrsCr' to 'WrScr'.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@RBergua
Copy link
Contributor

RBergua commented Jan 2, 2026

It looks good to me. Just a couple of comments:

  1. I remember that at that time, NGI also had a shared object (*.so) for Linux systems.
  2. For the CalcOption = 1 in SoilDyn, I'm not sure the expected input is a damping ratio (dimensionless) or a damping coefficient (dimensional).
Damping ratio matrix (6x6)
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Module: SoilDyn Soil interaction module (REDWIN DLL coupling)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants