pyBmodes version
1.60.1
Python version
3.11.18
How did you install pyBmodes?
pip install pybmodes (from PyPI)
Operating system
Windows
What happened?
issue 128
Thanks for the props, that let me pin it down exactly, and it turns out to be a modelling-setup difference rather than a solver bug.
The whole ~3.3 % is the tower outfitting factor. Your ontology carries outfitting_factor: 1.07 on the tower, and pyBmodes applies it as a non-structural mass smear (paint, bolts, flanges, internals), so the tower is 7 % heavier and about √1.07 ≈ 3.4 % lower in frequency. Running your exact tower geometry (z 15 → 144.386 m, the OD / wall schedule you posted) with E = 200 GPa steel:
outfitting_factor | pyBmodes f₁
-- | --
1.0 | 0.8010 Hz (matches your OrcaFlex 0.79959)
1.07 | 0.7743 Hz (matches your pyBmodes 0.7732)
The ratio is exact: 0.79959 / 0.7732 = 1.034 = √1.07. So the two models simply carry a different tower mass. Your OrcaFlex tower is the bare steel tube; pyBmodes includes the 7 % outfitting the ontology asks for.
To compare like for like, either add the 7 % non-structural mass to the OrcaFlex tower, or drop the outfitting from the pyBmodes side (set outfitting_factor: 1.0 in the ontology, or build the tower via Tower.from_geometry(..., outfitting_factor=1.0), which takes it as a keyword). Both land within a fraction of a percent then.
Closing as a setup difference, but reopen if the reconciliation does not come out as above and I will dig further.
What did you expect?
Pybmodes still produces
No Monopile just tower, TWR frequencys
Pybmodes produces 0.2437Hz (outfitting 1.07)
Pybmodes produces 0.2444 Hz (outfitting 1.00)
OrcaFlex prodcues 0.22599 Hz (I took RNA from pybmodes and put on top of PyBmode tower)
To reduce deltas between software
Delta of 7.87%, 8.2% respectively
Minimal reproducer
Traceback or unexpected output
Anything else?
No response
pyBmodes version
1.60.1
Python version
3.11.18
How did you install pyBmodes?
pip install pybmodes (from PyPI)
Operating system
Windows
What happened?
issue 128
Thanks for the props, that let me pin it down exactly, and it turns out to be a modelling-setup difference rather than a solver bug.
The whole ~3.3 % is the tower outfitting factor. Your ontology carries
outfitting_factor | pyBmodes f₁ -- | -- 1.0 | 0.8010 Hz (matches your OrcaFlex 0.79959) 1.07 | 0.7743 Hz (matches your pyBmodes 0.7732)outfitting_factor: 1.07on the tower, and pyBmodes applies it as a non-structural mass smear (paint, bolts, flanges, internals), so the tower is 7 % heavier and about √1.07 ≈ 3.4 % lower in frequency. Running your exact tower geometry (z 15 → 144.386 m, the OD / wall schedule you posted) with E = 200 GPa steel:The ratio is exact: 0.79959 / 0.7732 = 1.034 = √1.07. So the two models simply carry a different tower mass. Your OrcaFlex tower is the bare steel tube; pyBmodes includes the 7 % outfitting the ontology asks for.
To compare like for like, either add the 7 % non-structural mass to the OrcaFlex tower, or drop the outfitting from the pyBmodes side (set
outfitting_factor: 1.0in the ontology, or build the tower viaTower.from_geometry(..., outfitting_factor=1.0), which takes it as a keyword). Both land within a fraction of a percent then.Closing as a setup difference, but reopen if the reconciliation does not come out as above and I will dig further.
What did you expect?
Pybmodes still produces
No Monopile just tower, TWR frequencys
Pybmodes produces 0.2437Hz (outfitting 1.07)
Pybmodes produces 0.2444 Hz (outfitting 1.00)
OrcaFlex prodcues 0.22599 Hz (I took RNA from pybmodes and put on top of PyBmode tower)
To reduce deltas between software
Delta of 7.87%, 8.2% respectively
Minimal reproducer
Traceback or unexpected output
Anything else?
No response