Conversation
commit 0c3ef44 Author: Matt Hall <5151457+mattEhall@users.noreply.github.com> Date: Wed Jul 23 11:41:24 2025 -0600 Removing HAMS BEM files and what causes them: - removing examples 03 BEM folder created by RAFT runs. - changing RAFT YAML PotMods from True to False to avoid issue in future. commit 7828a9f Author: Moreno <fmoreno@nrel.gov> Date: Fri Jul 18 09:50:56 2025 -0600 Depreciated function trapz needs to be reused due to uncompatibility with CI tests commit 33edd4b Author: Moreno <fmoreno@nrel.gov> Date: Fri Jul 18 09:40:11 2025 -0600 support_soils linked connected commit 0941863 Author: Moreno <fmoreno@nrel.gov> Date: Fri Jul 18 09:36:12 2025 -0600 Depreciated function trapz needs to be reused due to uncompatibility with CI tests commit b4dea97 Author: Moreno <fmoreno@nrel.gov> Date: Thu Jul 17 16:16:45 2025 -0600 Change order of the CI tests: pytest + example_driver.py commit 30b2ca5 Author: Moreno <fmoreno@nrel.gov> Date: Thu Jul 17 15:37:25 2025 -0600 Changes on the yaml file to include new soil structure commit 4e0866e Author: Moreno <fmoreno@nrel.gov> Date: Thu Jul 17 11:42:37 2025 -0600 Removed anchor tension limit exception commit 7de4650 Author: Moreno <fmoreno@nrel.gov> Date: Wed Jul 16 11:26:31 2025 -0600 Update FAModel_anchors: new anchor scripts, updated RAFT BEM inputs, suction pile improvements commit 0d75993 Author: Moreno <fmoreno@nrel.gov> Date: Tue Jul 8 13:05:36 2025 -0600 Remove outdated 04_Anchors examples after migrating to 05_Anchors commit b8dbd3f Merge: 4383c4c 831d651 Author: Moreno <fmoreno@nrel.gov> Date: Tue Jul 8 13:04:43 2025 -0600 Merge upstream changes; keep local anchor.py, store upstream version as backup commit 4383c4c Author: Moreno <fmoreno@nrel.gov> Date: Tue Jul 8 12:16:53 2025 -0600 WIP: Local development progress before merging upstream FAModel commit 834999b Author: Moreno <fmoreno@nrel.gov> Date: Mon Jun 23 11:15:04 2025 -0600 Merge upstream/main into FAModel_anchors with local enhancements, including update to capacity_suction.py commit f149d96 Merge: 6030d1c 12ce2a3 Author: Moreno <fmoreno@nrel.gov> Date: Mon Jun 23 11:09:12 2025 -0600 Merge remote-tracking branch 'upstream/main' into sync/upstream-2025-06-23 commit 6030d1c Author: Moreno <fmoreno@nrel.gov> Date: Mon Jun 23 10:59:03 2025 -0600 WIP: custom changes before upstream sync commit 883b024 Author: Moreno <fmoreno@nrel.gov> Date: Wed Jun 18 16:30:20 2025 -0600 Major refactor of anchor module: removed legacy map files, added new anchor types and updated capacities commit 66e4bc0 Author: Moreno <fmoreno@nrel.gov> Date: Fri Jun 13 16:00:51 2025 -0600 feat: update anchor capacity scripts and add suction example notebook
To start, I created a new "display" variable that can toggle on/off print statements--in anchor.py and capacity function files--to make the output file clear to read - NOTE: This was only done for suction piles and dandg piles. The display parameter will have to be called from the other anchor type capacity function scripts, which I did not prioritize right now Second, I ran into problems with anchor.dd['type'] values not being exact strings of 'suction', 'dandg', etc. - I corrected the type values in my Project on my front-end, but also added a check in Anchor.__init__ to make sure the type values are exactly what they should be - In makeMoorPyAnchor, it references MoorPy.getPointProps['AnchorProps'], which contain cost information for certain types of anchors. If the anchor type does not exist in getPointProps (e.g., 'dandg'), then it defaults to a suction pile getSizeAnchor - Implemented functionality to support safety factors on different components (includes Hm, Vm, and UC right now) - Updated a lot of if statements to check for the anchType just in case the string is something different but includes the main anchor type name - Added a constraint function for the design variable bounds, since COBYLA does not recognize bounds - Moved the code that updated the anchor design dictionary and recalculated the capacity to the first constraint function, since with COBYLA, the constraints are evaluated first, and this led to UC's that didn't correspond - Added a check to the dandg (and driven/helical) sections to ensure the L/D constraints were being met - - However, the UC constraints weren't being met; this may require a reevaluation of the methods that we're using for design, since we're not using COBYLA for these anymore Updated getSizeAnchor2 to work with what I had too capacity_suction bounds upgrade for design iterations that have a L/D greater than 6
…apacity model examples updates
examples/example_anchors.py - should this file remain? famodel/anchors/anchor.py - does this work - is there unused code to clear out after the merge? famodel/geography.py - does this work after the merge? - may need to update input file directories tests/test_anchors.py - merge conflicts left that need resolution
- The original LineDesign committed (yesterday) was not the most recent version of LineDesign - - Updated to the most recent version (which involved getting rid of an old try/except statement) - - Adjusted all instances in LineDesign where the Mooring.dd is referenced to use subcomponents instead of sections and connectors (other strategies could have been used to reference what we needed, but I went for the change in indexing strategy) - Added a new test script for LineDesign changes (only runs 3 very quick DEA-Chain optimizations) - Needed to fix a parenthesis bug in mooring.py in addCorrosion to reference the subcomponent
- Had to debug and figure out that the specific LineDesign results we have for the tests are based on a specific SciPy version - - So we needed to install that specific version (which only happened to work with a separate pip install call, rather than appending to the existing conda install in "Exras") - Also, needed to uninstall the existing moorpy installation to allow for the current dev branch installation - Updated the np.float parameters in fadsolvers to a current format that numpy v2 can use, just in case
- needed to properly install the current moorpy dev branch
-small fixes to check if MBL is in dictionary before loading so that you can still load mooring types without an MBL -plot2d add setting for whether to show legend -get legend handles from ax instead of plt.gca()
- should the node in famodel_base be three-dimensional? - the way the load function seems to create the fairlead dictionary seems erroneous. I suggested an alternative as a comment. This is how it is done in conceptDesign2. - the addFairlead updates the fairlead position and reflects the absolute location of fairlead positions 'fl.r' which can be helpful later. Especially when connecting to moorings. - Update to the function to make it work with the new base work with the shared lines.
- removing anchors as bodies in the moorpy system before unloading.
- Reorganizing the plotOptimization function to separate design variables from constraints and cost function. It also gives units to different variables and constraints. It is also color-referenced. - Adding units dictionary for constraints. - Adding two additional constraints related to the inclination angle of the line.
…ture requires the updates in drawLine2d in subsystem.py in MoorPy to be integrated. - The user can provide a set value of maximum depth to show the most transparent part of the line. By default, this is set to the water depth. But sometimes, we might be interested in limiting the depth to the first 200m for instance or to show the depth of which it can be affected by marine growth (e.g., -170m). This is added as a variable in kwargs called max_line_depth.
- array reorientation now orients the platforms by using the setPosition function which also rotates the fairleads with the platforms. - array reset function also uses setPosition to reset the position of the platform along with fairleads attached.
…ater column: - adding an option to only plot the line color based on depth for shared lines.
- having option to switch between stacked 'tall' and a grid type. Default is tall. - having ylabels instead of titles. - other improvements to make sure there is no overlays between the subplots.
- Added an optional input to update_moorings or not, which, when platform.setPosition is run, will not also rotate the positions of moorings and anchors - Also updated layout_helpers adjustSS4Pretension function to better work with Project Moorings rather than project.ms. subsystems
…on function in LineDesign.
A new feature to enable plot2d to show the line depth in 2D.
Reorganizing the plotOptimization function to This pull request enhances the LineDesign class by adding unit tracking for design variables and constraints, introducing new angle constraints, and improving the plotting of optimization results. The changes improve clarity, traceability, and usability for both developers and users working with mooring line design optimization. Units tracking and assignment Added allVarsUnits to track units for each design variable, and X0Units to associate units with the active design variables. This ensures that units are consistently available throughout the optimization process. [1] [2] Implemented a dictionary (conUnitsDict) to assign units to each constraint, and updated the constraints dictionary to include these units. An exception is raised if a constraint name is not recognized. New constraints Added two new constraint functions: con_min_angle and con_max_angle, enforcing minimum and maximum inclination angles for line sections. These are now available for use in optimization. [1] [2] Plotting improvements Refactored and enhanced the plotOptimization method to support both "tall" and "grid" layouts, display units for design variables and constraints, and allow returning the figure and axes for further customization.
-update plot3d to input maxcableSize (useful when plotting multiple arrays and want consistent cable legends) -edit to FFarmcCompatibleMDOutput so that factor list is defaulted. works with updated MoorPy lengthAwareSegmentation
- Corrected a couple !include directories for examples. - Removed old fadesign dependencies in layout.py. - Put some input files I could find into famodel/design/layoutdemo to make the main script in layout.py run. Could use some work to make it a good example. - Put a temporary edited copy of some code at the bottom of helpers.py as a start for yaml-based mooring config input for layout.py. WIP. - Added a few notes about dependencies/installation in the main readme.
-fixed grid_positions so that dummy points are added when there are less turbines than self.nt -updates to layout demo files for matching wind rose, soil, and bathymetry for the gulf of maine
-added legend labels for static/dynamic cables and moorings in plot3d -relies on a moorpy subsystem drawLine recent update
-- fixed unload bug that made a new platform type for each platform. -- removed some unnecessary code & simplified mooring.addMooring & updated comments -- Fixed symmetric mooring load in. Now, symmetric mooring lines have a flag added in the design dict and mooring.mirror() is called to mirror the symmetric part -- cleaned up yaml input for shared moorings example
-- fix issue in mooring.fairleads identified by Jun Tanemoto
-- reorganized examples folder to be cleaner and clearer - all examples except for example_driver.py are now in folders - added cost analysis example - updated some folder numbers - added common_inputs folder to store inputs used across different examples - updated yaml references to inputs in example yamls - updated mooring platform and project readmes to be clearer (with some help from AI Claude) - small project class cable naming update and a few assorted tiny adjustments. - mooring.mirror() call in initialization of mooring class bug identified by Jun Tanemoto is now fixed - removed unused docs folder - deleted unused example inputs
Added the BSD 3-Clause License to the project.
- Added a new pyproject.toml file for better python practices - - has a list of dependencies similar to the famodel-env.yaml (soon to be renamed) - - these get installed when you run 'pip install -e .' from the root directory of FAD-Toolset - famodel-env.yaml reworked to use the right dependency packages too - - specifies which packages are installed from conda and which ones are from pip - Deleted the old setup.py file (deprecated) - Rewrote the installation steps in the README for this new setup structure - Organized the CI_FAModel.yml file
- Mostly ensuring that the absolute file path gets created and can be used for any user in the example scripts - also replacing matplotlib.cm as its becoming deprecated in later matplotlib versions
- Updates to come later to work in other python (and dependency) versions
-- small layout.py fix to work with previous mooringAdjust update that allows multiple line sections to be adjusted for depth -- small project fix to allow read-in and write-out of exclusion zones to & from ontology files - also removed fake exclusion zones from examples & test ontologies to prevent confusion -- added layout example to examples/06_Design folder - includes adjusting mooring and 3D cable design for bathymetry and adjusting cable routing
- rewritting all instances of MoorSolve imports, since it had been re-written into the fadsolvers file -> which is where all the dsolve2 and dopt2 functions sit - - Note that MoorPy has its own versions of these functions, which should do the same thing, but are written somewhere else, so we may want to combine at some point
- and renaming Leah's layout example files to help with the file numbers - 3 LineDesign example files: a simple case, one that changes the design modes, and one that changes the initial conditions for COBYLA - See NOTES on 03 file: LineDesign is largely untested since summer 2025.
- starting to rename things FAD or FAD-Toolset instead of FAModel - - conda environment yaml - - pyproject.toml project name is 'fad-toolset', which will be reflected in pip installability - CI_FAModel to CI_FAD - a couple of minor changes to the README to help communicate these changes
- Preserves git history through the 'git mv famodel fad' command
(and seeing if the GitHub CI passes) - includes main source code, example files, and test files - I have no other way of determining whether GitHub Actions CI passes other than pushing to the remote repository
- now can work with the functions in fadsolvers rather than the old msolve functions
Contributor
|
@lsirkis, the updated examples look quite comprehensive! Given that, would it make sense to delete the layoutdemo folder I had made (and the main script portion at the bottom of layout.py)? |
Collaborator
|
We're now National Laboratory of the Rockies (formerly NREL). Please update emails: replace @NREL.gov with @NLR.gov.
Hi Matt,
I left it in initially because the main script example sort of showed how to do non-uniform grid examples (or use other optimizers), but I felt it might be too much to include in a regular example file. What are your thoughts? I'm ok with removing those if you think it's not necessary to have that. The reason I made a regular layout example was just to have a clean simple option to show the capabilities.
From: Matthew Hall ***@***.***>
Sent: Friday, April 3, 2026 2:29 AM
To: FloatingArrayDesign/FAD-Toolset ***@***.***>
Cc: Sirkis, Leah ***@***.***>; Mention ***@***.***>
Subject: Re: [FloatingArrayDesign/FAD-Toolset] v1.0.0 Release (PR #31)
CAUTION: This email originated from outside of NLR. Do not click links or open attachments unless you recognize the sender and know the content is safe.
[https://avatars.githubusercontent.com/u/5151457?s=20&v=4]mattEhall left a comment (FloatingArrayDesign/FAD-Toolset#31)<#31?email_source=notifications&email_token=BDXD7NEJQT6O2YNX6OYZLXD4T5Y3JA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIMJYGI2TCNBSGIZ2M4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJNLQOJPWG33NNVSW45C7N5YGK3S7MNWGSY3L#issuecomment-4182514223>
@lsirkis<https://github.com/lsirkis>, the updated examples look quite comprehensive! Given that, would it make sense to delete the layoutdemo folder I had made (and the main script portion at the bottom of layout.py)?
-
Reply to this email directly, view it on GitHub<#31?email_source=notifications&email_token=BDXD7NEJQT6O2YNX6OYZLXD4T5Y3JA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIMJYGI2TCNBSGIZ2M4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJNLQOJPWG33NNVSW45C7N5YGK3S7MNWGSY3L#issuecomment-4182514223>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/BDXD7NF2BR633633GGMVXQD4T5Y3JAVCNFSM6AAAAACXJZ56SCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHM2DCOBSGUYTIMRSGM>.
You are receiving this because you were mentioned.Message ID: ***@***.******@***.***>>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
This PR merges the dev branch into main, creating the first stable release of FAD-Toolset (v1.0.0). These notes highlight the major features and capabilities of the toolset, and detail the changes being merged into main.
What is FAD-Toolset?
FAD-Toolset is a Python library and collection of tools for modeling and designing arrays of floating offshore structures. Users can:
Key Capabilities
Core Modeling
Analysis & Design
LineDesign,CableDesign)layout.py)Visualization
Changes from Main (FAModel v0.1.0 → FAD-Toolset v1.0.0)