Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
28fbefd
Updating missing copyright year and owner
mayankchetan Apr 1, 2025
0160d29
Merge branch 'OpenFAST:dev' into dev
mayankchetan Jul 5, 2026
a74c38b
feat: add NWTC_CheckInput shared collector/report module for -CheckIn…
mayankchetan Jul 5, 2026
ca8eb04
feat: accept -CheckInput flag in CheckArgs
mayankchetan Jul 5, 2026
6af9325
feat: add CheckInputMode parameter to FAST_ParameterType
mayankchetan Jul 5, 2026
51d3620
feat: -CheckInput mode: init-only driver with collect-and-continue er…
mayankchetan Jul 5, 2026
edaf447
feat: -CheckInput attempt-everything guards and continue-past-module-…
mayankchetan Jul 5, 2026
4f937f7
fix: disclose stubbed-ED downstream taint as unavailable; make unavai…
mayankchetan Jul 5, 2026
cddfc41
fix: disclose stubbed-ED taint to AeroDisk as well
mayankchetan Jul 5, 2026
57eda47
feat: -CheckInput per-component labels, not_used marking, incremental…
mayankchetan Jul 5, 2026
df8ee50
test: CTest suite for -CheckInput (positive decks + multi-error accum…
mayankchetan Jul 5, 2026
5e57439
test: make -CheckInput parity check wrap-tolerant without losing line…
mayankchetan Jul 5, 2026
89e7108
docs: document the -CheckInput input-deck verification flag
mayankchetan Jul 5, 2026
b52669f
fix: guard Simplified-ElastoDyn failure path; unify overall_status wi…
mayankchetan Jul 5, 2026
22cc03f
chore: -CheckInput cleanup sweep from final review
mayankchetan Jul 5, 2026
79dfcde
feat: driver-side finish/fail helpers for -CheckInput
mayankchetan Jul 5, 2026
5cceeb7
feat: -CheckInput mode for TurbSim
mayankchetan Jul 5, 2026
1e30e8a
feat: -CheckInput mode for FAST.Farm with per-turbine attribution
mayankchetan Jul 5, 2026
c09e1f4
fix: finalize -CheckInput report before FAST.Farm teardown; gate IsIn…
mayankchetan Jul 5, 2026
34ddc36
feat: -CheckInput mode for hydrodyn_driver and seastate_driver
mayankchetan Jul 5, 2026
4ecb625
feat: -CheckInput mode for aerodyn_driver and aeroacoustics_driver
mayankchetan Jul 5, 2026
fd141db
feat: -CheckInput mode for moordyn_driver
mayankchetan Jul 5, 2026
eb25fc1
feat: -CheckInput mode for inflowwind/aerodisk/sed/soildyn/orca drivers
mayankchetan Jul 5, 2026
5ed3529
fix: guarantee a verify.yaml even for pre-RootName -CheckInput failures
mayankchetan Jul 5, 2026
fd18388
feat: -CheckInput mode for beamdyn_driver and unsteadyaero_driver
mayankchetan Jul 5, 2026
3724e8e
test: CTest coverage for -CheckInput across FAST.Farm, TurbSim, and m…
mayankchetan Jul 5, 2026
f0e0015
docs: -CheckInput availability across all executables
mayankchetan Jul 5, 2026
07dfb30
fix: preserve last-resort verify.yaml after failed report open; end M…
mayankchetan Jul 5, 2026
c5c7a2a
chore: -CheckInput rollout cleanup from final review
mayankchetan Jul 5, 2026
6f2d880
fix: guard remaining -CheckInput continuation segfaults found by corp…
mayankchetan Jul 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright {yyyy} {name of copyright owner}
Copyright 2025 NREL

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
62 changes: 62 additions & 0 deletions docs/source/working.rst
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,68 @@ In general, if an error is displayed in the terminal, you can use the guidelines
You can use relative and aboslute path to the OpenFAST executable and to the main OpenFAST input file. Input files of OpenFAST also contain filepaths that reference other input files. These filepaths are either relative to the current file, or, can be absolute paths.


Checking an input deck without running
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The ``-CheckInput`` flag fully initializes every module enabled by the input file --
reading and validating all module input files, resolving file references, building
meshes and airfoil tables, and running the glue code's cross-module consistency checks
-- and then exits without any time marching:

.. code-block:: bash

./openfast -CheckInput InputFile.fst

Unlike a normal run, which stops at the first fatal error, ``-CheckInput`` attempts
every module even after one fails, so a single invocation reports as many independent
input problems as possible. Results are printed as a summary on the console and written
to a machine-readable report ``<RootName>.verify.yaml`` next to the output files. The
process exit code is ``0`` when the deck is valid (warnings allowed) and ``1`` when any
fatal input error was found.

The report file is append-only: readers must treat a file without a trailing
``overall_status:`` entry as a crashed check. Runtime-only problems (large-deflection
warnings, solver convergence, NaN blow-ups) are outside the scope of this check.

.. note::
``-CheckInput`` initializes modules exactly as a real run does, so it needs all
referenced resources present -- wind files, airfoil tables, and (if ServoDyn uses a
DLL controller) the controller shared library.


Availability across executables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The ``-CheckInput`` flag is available on all user-facing OpenFAST executables:

- **Full accumulation (attempt-everything across modules):**

- ``openfast`` — checks all enabled modules in the input file and reports cross-module consistency
- ``FAST.Farm`` — checks farm input, initializes all wrapped turbines with per-turbine attribution in the report (T1, T2, etc. message prefixes); skips downstream steps if any turbine fails

- **Init-only check with report (single-module drivers, fail-fast semantics):**

- ``turbsim`` — validates wind input
- Module drivers: ``aerodyn_driver``, ``aeroacoustics_driver``, ``hydrodyn_driver``, ``seastate_driver``, ``moordyn_driver``, ``inflowwind_driver``, ``aerodisk_driver``, ``sed_driver`` (simple ElastoDyn), ``soildyn_driver``, ``orca_driver``, ``beamdyn_driver``, ``unsteadyaero_driver``

Each driver reads its input file(s), initializes its module, and exits before the time loop or compute phase.
All failures are accumulated and reported before exit.

**Report files:**

- ``<RootName>.verify.yaml`` — for ``openfast``, ``FAST.Farm``, and ``turbsim``
- ``<RootName>.driver.verify.yaml`` — for single-module drivers (``*_driver`` executables)
- ``checkinput.verify.yaml`` (in the current working directory) — fallback when the root name cannot be determined before a failure

**Excluded executables:**

- ``servodyn_driver`` — hardcoded module-test harness; its input deck is a code literal embedded in the executable, not CLI-driven

**DLL caveat:**

SoilDyn (REDWIN) and OrcaFlex load their DLLs during initialization.
Under ``-CheckInput``, a missing DLL is reported as that component's failure.
This is deliberate: the DLL is part of the deck/environment, and its absence is a real problem the deck cannot solve around.



Expand Down
4 changes: 4 additions & 0 deletions glue-codes/fast-farm/src/FAST_Farm.f90
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,10 @@ PROGRAM FAST_Farm

if (ErrStat/=0) then
call ProgAbort('', TrapErrors=.FALSE., TimeWait=3._ReKi )
else if ( TRIM(FlagArg) == 'CHECKINPUT' ) then ! Initialize every farm-level component + all wrapped turbines and report; no time-marching
! Runs collect-and-continue initialization, writes the -CheckInput report, and ENDS the program
! with a report-derived exit code; never returns.
call Farm_CheckInput( farm, InputFileName )
else if ( len( trim(FlagArg) ) > 0 ) then ! Any other flag (-v,-h) end normally
call NormStop()
endif
Expand Down
Loading
Loading