Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
320 commits
Select commit Hold shift + click to select a range
ee324ed
Outline DLC page
dzalkind Sep 18, 2024
61fb81d
Ensure RAFT gets correct DLC data
dzalkind Sep 19, 2024
89c655e
Test the raft input generated in ex15 against a standard input
dzalkind Sep 19, 2024
aaf6d2a
Reorganize to remove globals from dlc_generator
dzalkind Sep 19, 2024
e838be8
Use wind_speed to set URef
dzalkind Sep 19, 2024
419fac1
Point to new RAFT input file, generated with WEIS
dzalkind Oct 2, 2024
498164b
Add DLC for AEP calculations with constant TI
dzalkind Oct 2, 2024
d384942
Try printing RAFT inputs
dzalkind Oct 2, 2024
04c4e50
Disable regression test for now
dzalkind Oct 2, 2024
7cb9330
Assign wave seeds for each case
dzalkind Oct 17, 2024
2496640
Add DLC 7.1 and 7.2
abhineet-gupta Oct 23, 2024
31fafd1
Fix 1-year sea state
dzalkind Oct 25, 2024
b547d48
Merge remote-tracking branch 'origin/DLC_RefactorCaseInputs' into DLC…
dzalkind Oct 25, 2024
8537c13
DLC: Add yaw error as an option for fault cases
abhineet-gupta Oct 27, 2024
754c2dc
Merge remote-tracking branch 'origin/wisdem_317' into DLC_RefactorCas…
dzalkind Nov 7, 2024
1eb9474
Merge branch 'dlc_aep' into DLC_RefactorCaseInputs
dzalkind Nov 7, 2024
5630ae7
Merge remote-tracking branch 'origin/develop' into DLC_RefactorCaseIn…
dzalkind Nov 8, 2024
e46bfcc
Fix DLC generator test
dzalkind Nov 8, 2024
4251871
Merge remote-tracking branch 'origin/develop' into DLC_RefactorCaseIn…
dzalkind Nov 8, 2024
a587a9c
Revert 02 input
dzalkind Nov 8, 2024
3a1fd3d
Tidy new code blocks
dzalkind Nov 8, 2024
1fcef34
Add developer docs
dzalkind Nov 21, 2024
a7dfe20
Merge remote-tracking branch 'origin/develop' into DLC_RefactorCaseIn…
dzalkind Nov 21, 2024
1678781
Outline dlc generator cases
dzalkind Nov 25, 2024
21279d2
Add DLC documentation (1.X)
dzalkind Dec 3, 2024
4ff7158
Add tip clearance channels
dzalkind Dec 3, 2024
d9986c4
Increase WvHiCOff so we can model normal sea states properly
dzalkind Dec 3, 2024
0f39767
Rename case to case_i
dzalkind Dec 3, 2024
c5163a0
DLCDocs: Start documentation for DLC 2.x
abhineet-gupta Dec 4, 2024
a3a6400
Add fatigue processing input
dzalkind Dec 5, 2024
2b1c32e
Update DLC 1.2 case generation with wind/wave direction, etc.
dzalkind Dec 5, 2024
30a509e
Fix typo
dzalkind Dec 5, 2024
7a82155
Fix AEP DLC and PSFs
dzalkind Dec 11, 2024
6285de0
Merge remote-tracking branch 'origin/DLC_RefactorCaseInputs' into DLC…
dzalkind Dec 11, 2024
3b0e912
Finish ROSCO user DVs
dzalkind Dec 11, 2024
01296fd
Load DISCON inputs from modeling yaml
dzalkind Dec 11, 2024
d658fef
Merge remote-tracking branch 'dz/torque_FF' into generic_control
dzalkind Dec 11, 2024
b7dfc3d
Initial add of OrcaFlex translation scripts/inputs
dzalkind Dec 12, 2024
bb50b7b
Enable any ROSCO DISCON input as DV
dzalkind Dec 17, 2024
8b16395
Enable the running/optimization of DISCON parameters without tune_rosco
dzalkind Dec 19, 2024
ddd6fad
Fix fstring/dict formatting
dzalkind Dec 19, 2024
fba21da
Add more tower translation to OrcaFlex notebook
dzalkind Dec 26, 2024
767b5d4
Set up member-based hydro coefficients
dzalkind Jan 8, 2025
febe6bb
Add new potential model override
dzalkind Jan 8, 2025
fd01fc0
run user-defined blade elastic properties
yqliaohk Feb 5, 2025
e39e263
Let NumSegs be a mod opt, set wtrdepth consistently, moordyn ordering
dzalkind Mar 21, 2025
af1abac
Update BEM_dir when PotFile is provided
dzalkind Mar 21, 2025
aae2169
Add WEIS example for running orcaflex based input
dzalkind Mar 26, 2025
a313920
Merge remote-tracking branch 'origin/develop' into orcaflex_translator
dzalkind Mar 26, 2025
cb0488b
Add back NumSegs input for MoorDyn
dzalkind Mar 26, 2025
848d486
Add member-based Cb
dzalkind Mar 26, 2025
3063765
Point to correct ROSCO yaml
dzalkind Mar 26, 2025
680dadc
Changes default Cb to 1
dzalkind Mar 26, 2025
ebe12df
Merge remote-tracking branch 'nrel/orcaflex_translator' into orcaflex…
yqliaohk Mar 26, 2025
0aba9ff
Merge remote-tracking branch 'nrel/orcaflex_translator' into orcaflex…
yqliaohk Mar 26, 2025
0871b68
Fix numsegs error message
dzalkind Mar 26, 2025
54ac174
Skip member-based hydro coeffs for monopiles
dzalkind Mar 26, 2025
acb8e56
Add blank IEA-15 yaml
dzalkind Mar 28, 2025
b2a5342
Fix potential model override
dzalkind Apr 1, 2025
349f314
Add time period calculations for freedecay DLC
abhineet-gupta Apr 2, 2025
baf2a32
FTW surrogate model template
yonghoonlee Apr 3, 2025
c54e04b
SGP surrogate model modified for WT application
yonghoonlee Apr 3, 2025
a48d396
Modify get_signalperiods to better identify peaks
abhineet-gupta Apr 10, 2025
456e1fd
Merge remote-tracking branch 'upstream/develop' into generic_control
dzalkind Apr 14, 2025
397f8e3
Tidy up merge, regen discons
dzalkind Apr 14, 2025
573aff2
Remove hard-coded control DVs
dzalkind Apr 14, 2025
253407d
Fix f-string parsing
dzalkind Apr 15, 2025
fdf4412
Force rosco_tuning dv into single float, for now
dzalkind Apr 15, 2025
0638a4c
Skip twr_freq input scaling
dzalkind Apr 15, 2025
d05eb5a
Support tuning yaml discon arrays
dzalkind Apr 16, 2025
b9062b2
Simplify initial control parameter assignment, dv should have start
dzalkind Apr 16, 2025
5c846ee
Clean up print tools and ontology writing
dzalkind Apr 16, 2025
ba7ee47
Merge remote-tracking branch 'upstream/develop' into generic_control
dzalkind Apr 16, 2025
de22acd
Add back twr_freq input
dzalkind Apr 17, 2025
24e301f
Remove whitespace
dzalkind Apr 17, 2025
83e3e55
Related updates for user-defined blade properties
yqliaohk Apr 24, 2025
6ebccc8
Merge remote-tracking branch 'nrel/orcaflex_translator' into orcaflex…
yqliaohk Apr 24, 2025
5d67e7c
Add force excursion DLC
dzalkind Apr 24, 2025
01c9102
Merge remote-tracking branch 'origin/orcaflex_translator' into orcafl…
dzalkind Apr 24, 2025
f1423e2
Updated dlc driver and example 02 - loads to AeroDyn changes from v4.x
abhineet-gupta May 7, 2025
2b83b3c
Add startup and shutdown DLCs
abhineet-gupta May 7, 2025
94b4b70
Modify DLCs to make them more accurate according to IEC standards
abhineet-gupta May 11, 2025
3af773a
Merge remote-tracking branch 'upstream/develop' into ftw
yonghoonlee May 12, 2025
41d6dee
Place holder for design coupling analysis algorithm
amsunilsunil May 12, 2025
dcfed5b
Fix shutdown dlc to allow for better default values and fix yaw_misal…
abhineet-gupta May 13, 2025
2f355eb
Merge remote-tracking branch 'upstream/develop' into ftw
yonghoonlee May 15, 2025
607d673
Merge remote-tracking branch 'origin/develop' into orcaflex_translator
dzalkind May 16, 2025
e80ffe7
Fix merge conflicts
dzalkind May 16, 2025
80c3956
Allow RAFT to have user-define potential flow model
dzalkind May 16, 2025
74992f2
Initialize WaterKin
dzalkind May 19, 2025
5318e3a
Add steady, step and ramp DLCs
abhineet-gupta May 22, 2025
dc2aeb7
Add DLC 10.1 and 10.2 and fix small bugs
abhineet-gupta May 22, 2025
6449d56
Initialize WaterKin
dzalkind May 22, 2025
da4a128
Merge remote-tracking branch 'origin/develop' into finalizedlc
dzalkind May 22, 2025
c969fb7
Reduce fault times for DLC tests and small bugfix
abhineet-gupta May 22, 2025
8560f85
Streamline post_processing, dicts don't need to be returned, error prone
dzalkind May 23, 2025
3e5c85d
Add default wind speed to some DLCs
abhineet-gupta Jun 2, 2025
64c312c
Fix bug with wind file generation
abhineet-gupta Jun 2, 2025
2624b24
Fix bug introduced in DLC 6.4
abhineet-gupta Jun 2, 2025
2c834bb
Fix more tests for DLCs
abhineet-gupta Jun 2, 2025
b021e13
Fix more DLC tests and options for DLC 4.2
abhineet-gupta Jun 2, 2025
3c28c7f
Fix DLC 4.2 and adjust test timings.
abhineet-gupta Jun 5, 2025
5d11ea1
Revert FAST_exe addition to dlc_driver tests
abhineet-gupta Jun 5, 2025
401a9ae
Set default value for PLExp for windtype2
abhineet-gupta Jun 6, 2025
40140f4
Add descriptions to some DLCs
abhineet-gupta Jun 7, 2025
1aa9551
Add comments to mooring failure DLCs
abhineet-gupta Jun 7, 2025
3138f5b
Rename Steady,Ramp and Step DLCs to steady, ramp and step
abhineet-gupta Jun 7, 2025
2084db9
Fix bug with dlc 2.3
abhineet-gupta Jun 7, 2025
d392562
Merge DLC changes from PR 396 to orcaflex_translator branch
abhineet-gupta Jun 11, 2025
8ef892a
Merge remote-tracking branch 'origin/orcaflex_translator' into orcafl…
abhineet-gupta Jun 11, 2025
819fb31
Add user_bts option to allow for user defined wind
abhineet-gupta Jun 12, 2025
d161c80
Add user_bts option for more wind types
abhineet-gupta Jun 12, 2025
060cda1
Add userwind DLC
abhineet-gupta Jun 12, 2025
89d438c
Merge remote-tracking branch 'upstream/develop' into generic_control
dzalkind Jun 12, 2025
aae2cdb
Merge remote-tracking branch 'origin/orcaflex_translator' into orcafl…
dzalkind Jun 16, 2025
004b9d9
Fix user bts, set wind heading for steady dlc
dzalkind Jun 16, 2025
7677cf0
Fix static load application with new case generator
dzalkind Jun 16, 2025
7cfd296
Set wave_model for each DLC
dzalkind Jun 16, 2025
607254d
Add wind_heading to userwind DLC
dzalkind Jun 16, 2025
d7871c5
Set AxCp to zero for potential_model_override = 3
dzalkind Jun 17, 2025
8eddbcd
Merge remote-tracking branch 'upstream/develop' into ftw
yonghoonlee Jun 19, 2025
b90efda
WEIS wrapper for RAFT DOE for FTW
yonghoonlee Jun 19, 2025
f070472
DOE exceptions and parallel training implemented
yonghoonlee Jun 23, 2025
f19a157
Surrogate outputs specified in analysis_option, More constraints impl…
yonghoonlee Jun 25, 2025
547674e
Extract data from recorded DOE database files
yonghoonlee Jun 26, 2025
62c96ae
constrainted nsga2 working
cfrontin Jul 10, 2025
560b292
remove archive
cfrontin Jul 10, 2025
ebcca33
got the openmdao driver working with constraints
cfrontin Jul 11, 2025
28ad0c6
numba compilation now optimal
cfrontin Jul 11, 2025
8f7cc60
recompile for automatic numba or non-numba implementations
cfrontin Jul 11, 2025
9fd5560
further updates with automatic imports
cfrontin Jul 11, 2025
d6fe66f
Pass rigid bodies to RAFT
dzalkind Jul 15, 2025
d439377
Merge remote-tracking branch 'origin/develop' into orcaflex_translator
dzalkind Jul 15, 2025
06132e8
Merge remote-tracking branch 'dz/fatigue_cases' into orcaflex_translator
dzalkind Jul 15, 2025
cb80e88
added beginnings of unit testing
cfrontin Jul 16, 2025
0137600
actually adding the unit tests...
cfrontin Jul 16, 2025
2e00a52
added crowding distance tests
cfrontin Jul 16, 2025
4856c5c
Finish merge and OF 4.1 support for pot_mod_override = 3
dzalkind Jul 18, 2025
2d2f5ae
Merge remote-tracking branch 'upstream/orcaflex_translator' into gene…
dzalkind Jul 22, 2025
7004ce9
Merge remote-tracking branch 'upstream/orcaflex_translator' into gene…
dzalkind Jul 22, 2025
3f52c57
Merge branch 'nsga2_submodule' into generic_control
cfrontin Jul 22, 2025
b923478
Enable multiple merit figures in WEIS
dzalkind Jul 22, 2025
b917037
Merge remote-tracking branch 'origin/generic_control' into generic_co…
dzalkind Jul 22, 2025
7bc8f0b
updated consensus example
cfrontin Jul 22, 2025
40a5fdc
Clean up error catching on merit figure
dzalkind Jul 22, 2025
9894c79
Merge remote-tracking branch 'origin/generic_control' into generic_co…
dzalkind Jul 22, 2025
b15095c
Enable both user and non-user merit figures for MOO
dzalkind Jul 22, 2025
9851206
Skip super call to set_merit_figure_user, not needed
dzalkind Jul 22, 2025
30a4765
Add dummy user-defined merit figure
dzalkind Jul 22, 2025
c75c0cf
Fix unit binary crossover so no 0s returned
dzalkind Jul 22, 2025
3296df7
Check that design variables stay within bounds
dzalkind Jul 22, 2025
d54d29f
Skip runs if out_of_bounds, shouldn't happen with exception (revert?)
dzalkind Jul 22, 2025
e1a83b7
fix funkiness with twin values
cfrontin Jul 22, 2025
f5a117f
Merge remote-tracking branch 'origin/generic_control' into generic_co…
dzalkind Jul 22, 2025
754b924
Fix last iteration bug
dzalkind Jul 22, 2025
2675778
added two-sided constraints
cfrontin Jul 24, 2025
23b8ad7
Merge branch 'generic_control' of github.com:dzalkind/WEIS into gener…
cfrontin Jul 24, 2025
2057bfa
add init files
cfrontin Jul 24, 2025
1c97ab5
algo update
cfrontin Jul 25, 2025
1bdb177
modify/upgrade ptfmpitch optimization targets to be able to track dif…
cfrontin Jul 25, 2025
077c843
operational triobjective optimization setup
cfrontin Jul 25, 2025
d55f18a
Connect ROSCO peak shaving to RotorSE
dzalkind Jul 25, 2025
637ec66
Merge remote-tracking branch 'origin/generic_control' into generic_co…
dzalkind Jul 25, 2025
bd3ecef
basic plotly
cfrontin Jul 26, 2025
afcb8f7
Merge branch 'generic_control' of github.com:dzalkind/WEIS into gener…
cfrontin Jul 26, 2025
662b0d6
two analysis scripts now
cfrontin Jul 26, 2025
ce47223
configs for meeting
cfrontin Jul 29, 2025
77c5fb0
turn on evolutionary parallelization stuff
cfrontin Jul 29, 2025
f735f67
update the analyses
cfrontin Jul 29, 2025
d4cf24e
Extraction merged into ftw_doe function + doedata skipping logic impl…
yonghoonlee Aug 1, 2025
0a576c6
Merge remote-tracking branch 'upstream/develop' into ftw
yonghoonlee Aug 1, 2025
e622bce
some changes
cfrontin Aug 5, 2025
606189f
init commit for multi objective optimization dashboard
sora-ryu Aug 6, 2025
d14cff4
Merge remote-tracking branch 'upstream/main' into generic_control
dzalkind Aug 6, 2025
ca5f290
Allow only a user defined MF with no WISDEM
dzalkind Aug 6, 2025
5d46cea
Merge remote-tracking branch 'origin/generic_control' into generic_co…
dzalkind Aug 6, 2025
dab82ec
implement data loader
sora-ryu Aug 6, 2025
e43d87b
doedata filename changed for consistency
yonghoonlee Aug 7, 2025
e3432d6
adjust driver output
cfrontin Aug 7, 2025
4bed1f3
filename changed
yonghoonlee Aug 8, 2025
592b619
surrogate model expanded to general methods in addition to SGP
yonghoonlee Aug 8, 2025
15e824a
Split listed items to available MPI cores
yonghoonlee Aug 8, 2025
2ec57d6
Surrogate model class updated to support vector values
yonghoonlee Aug 14, 2025
838902d
return [skip if smt exists] flag
yonghoonlee Aug 14, 2025
bc9cd1d
ftw_doe returns [skip if smt exists] flag
yonghoonlee Aug 14, 2025
55791d3
filename changed
yonghoonlee Aug 14, 2025
ec92e24
kestrel updates
cfrontin Aug 14, 2025
56e82e1
skip surrogate model training flag defined
yonghoonlee Aug 15, 2025
9ed1c5e
surrogate modeling class defined
yonghoonlee Aug 15, 2025
a9bf0e4
typo corrected
yonghoonlee Aug 15, 2025
99fdaf0
surrogate model reading routine implemented
yonghoonlee Aug 15, 2025
3d93653
simple surrogate prediction implemented
yonghoonlee Aug 15, 2025
b92d3ec
some new sandboxes
cfrontin Aug 15, 2025
02962f7
rename
cfrontin Aug 19, 2025
c365dee
render dynamic scatter plot
sora-ryu Aug 20, 2025
f1aba79
link samples with row idx (iteration)
sora-ryu Aug 20, 2025
461f727
Merge remote-tracking branch 'origin/generic_control' into generic_co…
dzalkind Aug 20, 2025
bd28d97
Merge remote-tracking branch 'upstream/main' into generic_control
dzalkind Aug 20, 2025
8f291f2
Merge remote-tracking branch 'sryu/moo-viz' into generic_control
dzalkind Aug 20, 2025
b5c7574
split single script to modules
sora-ryu Aug 26, 2025
5a1dde6
resize label size
sora-ryu Aug 26, 2025
f7269ae
add data table on clicked data
sora-ryu Sep 3, 2025
a18aef6
link samples with highlight
sora-ryu Sep 3, 2025
51f1f58
add clear highlight btn
sora-ryu Sep 3, 2025
7355730
improve stylings for plot and table
sora-ryu Sep 4, 2025
b926e82
delete old single compact script
sora-ryu Sep 4, 2025
5b9e620
add discussion debrief
sora-ryu Sep 4, 2025
143f3b6
add update
cfrontin Sep 5, 2025
593d74f
Merge branch 'generic_control' of github.com:dzalkind/WEIS into gener…
cfrontin Sep 5, 2025
9dd226f
Merge remote-tracking branch 'origin/generic_control' into generic_co…
dzalkind Sep 5, 2025
82a67fc
Merge remote-tracking branch 'uiuc/ftw' into generic_control
dzalkind Sep 5, 2025
ed40790
Skip DOE and go right to training SM
dzalkind Sep 5, 2025
a1b6056
Add placeholder for FTW documentation
dzalkind Sep 5, 2025
eba22d8
add subchannels for array-type columns
sora-ryu Sep 9, 2025
27852b4
fix channel selection error
sora-ryu Sep 10, 2025
ab9ce66
add toggle buttons on array channels
sora-ryu Sep 18, 2025
0d4b7b9
add pareto fronts
sora-ryu Sep 18, 2025
b48cda2
accurate pareto fronts calculation
sora-ryu Sep 18, 2025
1e5068c
fix small variance issues on SPLOM
sora-ryu Sep 18, 2025
2c59b99
make array channels simple + add constraint bounds comparison
sora-ryu Sep 18, 2025
a23ab08
add action items after discussion
sora-ryu Sep 18, 2025
bb2cede
minor styling edit to make visible
sora-ryu Sep 30, 2025
bcd84c3
add action item
sora-ryu Oct 1, 2025
4f606c6
Merge remote-tracking branch 'upstream/develop' into generic_control
dzalkind Oct 31, 2025
3cbaf6e
remove nsga2_weis directory (replaced into WISDEM)
cfrontin Oct 31, 2025
e291ecf
Update update_rosco_options for DISCON params
dzalkind Oct 31, 2025
731eb36
Clean up merge, tuning example seems to work
dzalkind Oct 31, 2025
aa0bf96
Merge branch 'develop' into generic_control
dzalkind Dec 1, 2025
9666023
Clean up merge
dzalkind Dec 1, 2025
b69029d
Merge remote-tracking branch 'dz/generic_control' into generic_control
dzalkind Dec 1, 2025
a4e5eb3
Merge remote-tracking branch 'origin/develop' into moo-viz
sora-ryu Dec 1, 2025
1df73a1
make ui layout adjustable to browser size
sora-ryu Dec 2, 2025
f8d8f65
color data table by categories (plot is unavailable)
sora-ryu Dec 2, 2025
12f6769
add objective options - min vs max
sora-ryu Dec 3, 2025
a49e387
button to show/hide diagonal lines
sora-ryu Dec 3, 2025
0af0f20
save dashboard as interactive html
sora-ryu Dec 3, 2025
449679b
clean codes
sora-ryu Dec 3, 2025
03e860f
add moo dashboard docs
sora-ryu Dec 3, 2025
62d8e9c
Merge branch 'generic_control' of github.com:dzalkind/WEIS into gener…
cfrontin Dec 3, 2025
dd4586c
fix issue when less than 2 channels selected
sora-ryu Dec 19, 2025
f4ebff9
adjust plot size, font size of html
sora-ryu Dec 19, 2025
c75cab0
debug export functions
sora-ryu Dec 19, 2025
df67959
fix table update function on html
sora-ryu Dec 20, 2025
d13656f
add videos of moo dashboard on docs
sora-ryu Dec 20, 2025
72804a5
remove comments
sora-ryu Dec 20, 2025
568ed5a
Merge branch 'generic_control' into moo-viz
dzalkind Jan 9, 2026
01200a1
Merge remote-tracking branch 'upstream/develop' into generic_control
dzalkind Jan 9, 2026
432a6d8
Clean up merge
dzalkind Jan 9, 2026
87d7bb9
Remove pre-processing notebooks added in other PRs
dzalkind Jan 9, 2026
93ecd96
Fix another float cast
dzalkind Jan 22, 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
13 changes: 13 additions & 0 deletions docs/ftw_overview.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.. _section-ftw:

====================================
Formulation Toolbox for WEIS (FTW)
====================================


The Formulation Toolbox for WEIS (FTW) provides a set of tools and methodologies for formulating and analyzing design optimizations.


--------------------------
Introduction
--------------------------
288 changes: 288 additions & 0 deletions docs/how_weis_moo_viz_works.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,288 @@
.. _moo_dashboard:


WEIS Multi-Objective Optimization Dashboard
============================================

The MOO Dashboard is an interactive visualization tool for analyzing multi-objective optimization results from WEIS. It provides real-time exploration of design space, Pareto fronts, and trade-offs between competing objectives.

Overview
--------

The dashboard enables users to:

* Visualize high-dimensional optimization results using Scatter Plot Matrix (SPLOM)
* Identify and explore Pareto-optimal solutions
* Analyze relationships between design variables, objectives, and constraints
* Export interactive visualizations for reports and presentations
* Compare individual design iterations with detailed data tables

.. video:: images/viz/MOO/dashboard.mov
:width: 900
:autoplay:

Installation
------------

The MOO Dashboard is included with WEIS. Ensure you have the required dependencies:

.. code-block:: bash

conda activate weis-env
pip install dash plotly pandas numpy pyyaml dash-bootstrap-components

Running the Dashboard
---------------------

Launch the dashboard from the command line:

.. code-block:: bash

conda activate weis-env
cd weis/visualization/moo_dashboard
python main.py

The dashboard will open in your default browser at ``http://localhost:8050``.

User Interface
--------------

The dashboard consists of four main sections:

1. **File Loaders**

* **CSV File**: Load optimization results (design variables, objectives, constraints)
* **YAML File**: Load problem definition (variable categories, optimization goals)


2. **Controls & Variables**

Select which variables to visualize:

* **Objectives** (blue): Quantities to minimize or maximize
* **Constraints** (orange): Feasibility requirements
* **Design Variables** (green): Parameters that can be modified

For each objective, select whether to minimize or maximize using toggle buttons.


3. **Scatter Plot Matrix (SPLOM)**

Interactive matrix showing all pairwise relationships between selected variables:

* **Color scale**: Represents iteration number
* **Red diamonds**: Pareto-optimal solutions (if enabled)
* **Green star**: Currently highlighted point (when clicked)
* **Click** on any point to see detailed values in the data table

Controls:

* ``Show/Hide Pareto Front``: Toggle visualization of optimal solutions
* ``Show/Hide Diagonal``: Toggle diagonal histogram plots
* ``Clear Highlighting``: Remove point selection
* ``Download Dashboard``: Export as standalone interactive HTML


4. **Data Table**

Displays detailed values for the selected iteration.


Input File Formats
------------------

CSV File
~~~~~~~~

The CSV file should contain one row per optimization iteration with columns for:

* Design variables (e.g., ``tune_rosco_ivc.Kp_float``)
* Objectives (e.g., ``aeroelastic.AEP``)
* Constraints (e.g., ``aeroelastic.rotor_overspeed``)

Example:

.. csv-table::
:header: "aeroelastic.AEP", "aeroelastic.DEL_TwrBsMyt", "aeroelastic.rotor_overspeed", "aeroelastic.Max_PtfmPitch", "tune_rosco_ivc.Kp_float", "tune_rosco_ivc.ps_percent"
:widths: 15, 15, 15, 15, 15, 15

"410786235558.229", "87616.5338", "0.0905", "5.0551", "-20.4375", "0.6525"
"421847787601.9160", "101079.1819", "0.0848", "5.2194", "-8.4375", "0.8725"


YAML File
~~~~~~~~~

The YAML file defines the optimization problem structure:

.. code-block:: yaml

design_vars:
- - tune_rosco_ivc.Kp_float
- name: tune_rosco_ivc.Kp_float
upper: 0.0
lower: -30.0
size: 1
val: [-9.937499999999996]
- - tune_rosco_ivc.ps_percent
- name: tune_rosco_ivc.ps_percent
upper: 1.0
lower: 0.6
size: 1
val: [0.8775]
constraints:
- - aeroelastic.rotor_overspeed
- name: aeroelastic.rotor_overspeed
lower: 0.0
upper: 0.2
equals: ''
size: 1
val: [0.1168584634534533]
- - aeroelastic.Max_PtfmPitch
- name: aeroelastic.Max_PtfmPitch
lower: -1e+30
upper: 5.5
equals: ''
size: 1
val: [5.111509323120117]
objectives:
- - aeroelastic.AEP
- name: aeroelastic.AEP
size: 1
val: [-4209011.602067122]
- - aeroelastic.DEL_TwrBsMyt
- name: aeroelastic.DEL_TwrBsMyt
size: 1
val: [0.9920550255927588]

Features
--------

Pareto Front Calculation
~~~~~~~~~~~~~~~~~~~~~~~~

The dashboard automatically calculates Pareto-optimal solutions based on:

* Selected objectives and their optimization sense (minimize/maximize)
* Non-dominated sorting algorithm
* Visual distinction with red diamond markers

The Pareto front represents the set of solutions where no objective can be improved without degrading another.

Array Variable Handling
~~~~~~~~~~~~~~~~~~~~~~~

Variables containing arrays (e.g., blade chord distribution) are automatically detected and split into:

* ``variable_min``: Minimum value in the array
* ``variable_max``: Maximum value in the array

This allows visualization of array-valued design variables in the SPLOM.

Interactive HTML Export
~~~~~~~~~~~~~~~~~~~~~~~

The ``Download Dashboard`` button creates a standalone HTML file that saves the current status of the dashboard, allowing you to continue analysis offline. The exported file contains:

* Full interactive SPLOM with all data points
* Current selections and highlighted points
* Click-through functionality for data table updates
* Toggle controls for Pareto front and diagonal visibility
* All optimization data embedded for complete offline access
* No external dependencies or internet connection required

.. video:: images/viz/MOO/export.mov
:width: 900
:autoplay:

Configuration
-------------

Settings can be modified in ``config/settings.py``:

.. code-block:: python

# Server configuration
HOST = '0.0.0.0'
PORT = 8050

# Plot styling
DEFAULT_PLOT_WIDTH = 800
DEFAULT_PLOT_HEIGHT = 800
MARKER_SIZE = 4

# Color schemes
HIGHLIGHT_COLOR = '#00FF41' # Bright green
COLOR_SCALES = {
'objectives': 'primary', # Blue
'constraints': 'warning', # Orange
'design_vars': 'success' # Green
}


Architecture
------------

The dashboard follows a modular architecture:

.. code-block:: text

moo_dashboard/
├── main.py # Entry point
├── app_init.py # Application initialization
├── config/
│ └── settings.py # Configuration constants
├── layouts/
│ ├── layout.py # Main page layout
│ └── components.py # Reusable UI components
├── callbacks/
│ ├── data_loading.py # File upload/loading
│ ├── channel_selection.py # Variable selection
│ └── visualization.py # Plot updates and interactions
└── utils/
├── data_processing.py # Data transformation and Pareto calculation
└── plot_helpers.py # Plotly figure creation


Troubleshooting
---------------

Dashboard won't start
~~~~~~~~~~~~~~~~~~~~~

Check that the port is not already in use:

.. code-block:: bash

lsof -i :8050

Change the port in ``config/settings.py`` if needed.

Data not loading
~~~~~~~~~~~~~~~~

Verify:

* CSV file has proper column headers
* YAML file follows the required structure
* File paths are absolute (not relative)
* Files are accessible with read permissions

Pareto front not showing
~~~~~~~~~~~~~~~~~~~~~~~~

Ensure:

* At least 2 objectives are selected
* Objective senses (min/max) are configured correctly
* CSV data contains valid numeric values for objectives

Click events not working
~~~~~~~~~~~~~~~~~~~~~~~~

This is a known issue with some browser configurations. Try:

* Using a different browser (Chrome/Firefox recommended)
* Clearing browser cache
* Disabling browser extensions that might interfere with JavaScript

2 changes: 1 addition & 1 deletion docs/how_weis_viz_works.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
.. _weis_viz_app:


WEIS Visualization APP
WEIS I/O Visualization APP
=======================

This application provides a web-based graphical user interface to visualize input/output from WEIS.
Expand Down
Binary file added docs/images/viz/MOO/dashboard.mov
Binary file not shown.
Binary file added docs/images/viz/MOO/export.mov
Binary file not shown.
10 changes: 9 additions & 1 deletion docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,22 @@ WEIS Outputs

weis_outputs

WEIS Visualization Application
WEIS I/O Visualization Application
===============================

.. toctree::
:maxdepth: 2

how_weis_viz_works

WEIS Multi-Objective Optimization Visualization Application
================================================

.. toctree::
:maxdepth: 2

how_weis_moo_viz_works

Developer Documentation
=========================

Expand Down
1 change: 1 addition & 0 deletions examples/00_setup/OpenFAST_models/update_weis_discons.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,4 @@

# Make discons
update_discons(discon_map)

Loading
Loading