Skip to content

Conversation

@dzalkind
Copy link
Contributor

Purpose

Support upcoming meshing update in WEIS v2.1

Type of change

What types of change is it?
Select the appropriate type(s) that describe this PR

  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (non-backwards-compatible fix or feature)
  • Code style update (formatting, renaming)
  • Refactoring (no functional changes, no API changes)
  • Documentation update
  • Maintenance update
  • Other (please describe)

Testing

Explain the steps needed to test the new code to verify that it does indeed address the issue and produce the expected behavior.

Checklist

Put an x in the boxes that apply.

  • I have run existing tests which pass locally with my changes
  • I have added new tests or examples that prove my fix is effective or that my feature works
  • I have added necessary documentation

lucas-carmo and others added 11 commits September 23, 2025 12:38
- The meshing algorithm was receiving member's position in the global reference frame (mem.rA and mem.rB) whereas it should use member's position wrt the FOWT reference frame (mem.rA0 and mem.rB0). Maybe in the future we will want to make this differently and solve the radiation/diffraction problem around the equilibrium position of the system
- Modified the code to call pyHAMS only once  for each different platform type in an array
- Renamed fowtInfo to arrayInfo because it stores information about the array and not about the fowt
- Fixed a call to fowt.calcTurbineConstants that was using r6 instead of fowt.r6
Need to use the position of the reference node wrt the platform coordinate system
Before this commit, RAFT fowt.plots() would zoom in the FOWT if not plotting the mooring system, which is specified by plot_ms.
Now, we have an optional flag axes_around_fowt that overwrites that behaviour and lets you choose whether you want to zoom in or not. It works like this:

- If the flag is not provided, fowt.plot() just like before: it zooms in the FOWT if not plotting the mooring system, it does not zoom in if plotting the mooring system.
- If axes_around_fowt==True: Zoom in the FOWT regardless of plotting the mooring system or not.
- If axes_around_fowt==False: Zoom in the FOWT regardless of plotting the mooring system or not. In that case, the function uses the axes limits of the ax object passed to it. Users can use MoorPy's helper function `set_axes_equal` to ensure that axes have the same aspect ratio, just like done in model.plot()
We were double counting the lever arm of the aerodynamic forces. This part of the code

self.rotorList[0].nodeList[0].T@self.f_aero0[:,ir])[4]

already accounts for the lever arm via the transformation matrix, so applying transformForce() was applying the lever arm twice
The operation T@self.f_aero0 had to many assumptions within it to get the force wrt the rotor reference frame, so replaced it by rotor.f0. We do the same computation as previous RAFT versions, but as rotor.f0 is given wrt the rotor structural node, we need to add self.rotorList[ir].nodeList[0].r0[2] to the offset in transformForce()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants