Skip to content

Preliminary Quayside Tow-Out & Assembly Modules #15

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 18 commits into from

Conversation

JakeNunemaker
Copy link
Contributor

@JakeNunemaker JakeNunemaker commented Apr 6, 2020

Includes two new installation modules: MooredSubInstallation and GravityBasedInstallation.

  • Substructure assembly lines with the option to configure instant fabrication time to remove supply chain constraints.
  • Configurable turbine assembly lines.
  • Configurable vessel towing groups with the option to have a different number of vessels required for towing and substructure stabilization at site.
  • Multi-Purpose Support Vessel for performing onsite operations.

I'll send you an example jupyter notebook over teams.

Still needs additional tests, further refinement of processes (with industry support) and code cleanup.

This PR also includes a preliminary MooringSystemDesign from OffshoreBOS.

def total_phase_time(self):
"""Returns total phase time in hours."""

_design = self.config.get("monopile_design", {})

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this getting monopile_design?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops that's a mistake. I probably copied it over from that module and read monopile as mooring. Will change.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved.



class TurbineAssemblyLine(Agent):
"""Turbine Assembly Line Class."""

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, I think that the turbine assembly lines can run in parallel if called by project manager? Is this correct?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can configure multiple turbine assembly lines in the module and they will run in parallel.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or maybe I'm not understanding the question?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, that was the question. thanks!


mult = kwargs.get("cost_multiplier", 1.0)
vessels = kwargs.get("num_vessels", 1)
return (self.day_rate / 24) * vessels * hours * mult

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here, is self.day_rate the aggregated day rate of all the vessels in teh group?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This attribute is the vessel day rate for one vessel but there are specialized methods that will return a "total" day rate for the group dependent on the number of vessels needed for each operation.

"""

try:
storage = self.config["port"]["sub_storage"]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is sub_storage? max number (or mass, volume?) of substructures that can be stored at the port

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Number of substructures that can be stored at port.

This starts to push the original boundaries of ORBIT (no supply chain modeling) but from talking with Aaron and Luisa (and even the conversation with the bench marking group this morning), it sounds like this is an important consideration for floating substructures.

I designed the module in a way that this can be easily ignored by setting 'takt_time' to 0 and leaving 'sub_storage' to it's default of infinity. In this situation, all substructures will be "manufactured" at time 0 and the assembly won't constrain the installations at all.

"""

try:
storage = self.config["port"]["assembly_storage"]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above, what is assembly_storage?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Number of completed assemblies (substructure + turbine) that can be stored at port.

I'll put some additional documentation on these inputs.

"""Turbine Assembly Line Class."""

def __init__(self, feed, target, turbine, num):
"""

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need to do this now, but we could think about adding an argument (and code structure) for # of turbines per substructure. there are some concept designs with 2 tubines on 1 platform.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm good idea - I'll look at adding this in.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #21

"""

towing_time = distance / towing_speed
transit_time = distance / 20

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is 20 a hardcoded vessel transit speed? why is transit time different than towing time - return to port?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh good catch - I meant to have this be the vessel speed.

From talking with Aaron, it seemed that the towing speed is significantly slower than what the vessels can travel at unburdened. I also got the impression the towing speed is more dependent on the substructure (draft, Cd) than the specific vessels which is why I added the input for 'towing_speed'.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved

Copy link

@Matt-Shields Matt-Shields left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good overall. Of course we'll need to review all of the vessel and installation parameters, but good placeholders for the time being.

@JakeNunemaker
Copy link
Contributor Author

JakeNunemaker commented Apr 29, 2020

Closing and merging into separate branch for floating branch, "feature/floating-modules". All comments in this PR have been resolved.

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.

2 participants