Orcina news

Here you will find the latest news on the development of OrcaFlex. Alongside our LinkedIn page, it is a valuable source of information about what we are up to!

Upcoming in OrcaFlex 10.2: Support and constraint release

Continuing our series of posts on upcoming developments for version 10.2, we consider a couple of enhancements to the support and constraint objects.

OrcaFlex objects can be connected to each other, so that the connected objects move together. In addition, certain types of connections can be released at defined points in the simulation. For example, line, link and winch connections can all be configured to release at the beginning of a specified stage in the simulation. Version 10.2 introduces the same capability for supports and constraints.

Continue reading “Upcoming in OrcaFlex 10.2: Support and constraint release”

Upcoming in OrcaFlex 10.2: Vessels and 3D buoys can be slave objects

Continuing our series of posts on upcoming developments for version 10.2, let’s now look at a further relaxation of the rules relating to object connectivity.

In version 10.0 we made it possible to connect lines to lines and to form chains of connections, e.g. 6D buoy1 is connected to 6D buoy2, which in turn is connected to 6D buoy3 etc. In version 10.1 the constraint object was introduced, and mid-line connections were enabled.

In version 10.2 it will be possible to connect both vessels and 3D buoy objects as slaves of other objects.

Continue reading “Upcoming in OrcaFlex 10.2: Vessels and 3D buoys can be slave objects”

Upcoming in OrcaFlex 10.2: Coupled object modal analysis

Continuing our series of posts on upcoming developments for version 10.2, we now move to an important enhancement to modal analysis. This development has aspects in common with another new feature, line statics policy, which we have discussed in an earlier post.

OrcaFlex modal analysis calculates modes for individual lines or for the entire system. The individual line option is commonly used to generate mode shapes for use in an external VIV analysis program like SHEAR7 or VIVA. Modal analysis for an individual line is based on the assumption that the line end nodes are fixed, and the remaining nodes in the line have freedom. For many riser or umbilical configurations it is perfectly reasonable to use these modes in a VIV analysis. However, there are some systems for which this approach is not appropriate, and the new coupled object modal analysis feature is intended to addresses this limitation.

Continue reading “Upcoming in OrcaFlex 10.2: Coupled object modal analysis”

Upcoming in OrcaFlex 10.2: Line statics policy

Continuing our series of posts on upcoming developments for version 10.2, we look at some enhancements to static analysis.

Version 10.0 relaxed the rules for connecting objects together, one aspect of which was allowing lines to be connected to other lines. This new flexibility had a number of consequences for static analysis of lines. In version 10.0, these consequences were dealt with in a very simple manner and in many situations that approach worked perfectly adequately. However, some models that took advantage of more general connectivity proved difficult to handle in static analysis. In version 10.2 we have introduced some new functionality to address these issues.

Continue reading “Upcoming in OrcaFlex 10.2: Line statics policy”

Upcoming in OrcaFlex 10.2: Compound properties report

Continuing our series of posts on upcoming developments for version 10.2, we will take a look at a relatively simple, yet frequently requested enhancement to model building.

Complex structures are often modelled in OrcaFlex using multiple objects that are connected together. A common example would be a manifold modelled using a combination of lumped buoys and single segment lines, all connected together so as to move as one rigid object. When building such a model, there is plenty of scope for error. For instance, it is easy to forget to account for some part of the structure, or equally to double count parts of the structure. A common way to detect such mistakes is to calculate the combined mass, volume, centre of mass, centre of volume, etc. and compare with known values.

Previously, OrcaFlex did not offer any functionality to calculate these compound properties, but version 10.2 will address that.

Continue reading “Upcoming in OrcaFlex 10.2: Compound properties report”

Upcoming in OrcaFlex 10.2: Documentation

Continuing our series of posts on upcoming developments for version 10.2, we will now turn to some functionality entirely outside of the program, namely the documentation. OrcaFlex is an ever growing program, and as it grows, so too does the documentation. For version 10.2, we decided to make a number of significant changes to the documentation, especially in how mathematical formulae are presented.

Continue reading “Upcoming in OrcaFlex 10.2: Documentation”

Upcoming in OrcaFlex 10.2: Vessel calculation mode

As mentioned in a recent post here, we are going to publish a series of articles introducing some of the new features being developed for release in version 10.2. This article is the first of that series, discussing a new vessel option that allows users to make a choice between two methods for the interpretation of diffraction analysis data.

Continue reading “Upcoming in OrcaFlex 10.2: Vessel calculation mode”

Bugs in Python 2.7.11 and 2.7.13 that directly affect OrcaFlex

OrcaFlex has a number of features that take advantage of the Python programming language. We work hard to ensure that OrcaFlex is compatible with a wide range of Python versions. However, a couple of recent Python releases have contained bugs that have broken functionality that OrcaFlex relied upon.

  • Python version 2.7.11 is affected by issue 26108. This did not affect automation of OrcaFlex from a Python process. The defect meant that when Python was embedded in an OrcaFlex process, for external functions or post-calculation actions, OrcaFlex would crash when it attempted to load the embedded Python modules. We were able to workaround this particular defect and OrcaFlex 10.0e and later do so.
  • Python version 2.7.13 is affected by issue 29082. This issue has no impact on embedding Python in OrcaFlex, but instead breaks the import of the OrcFxAPI module from a Python process. At the moment we have no workaround for this defect.

Because of these problems we recommend that you do not install either of these versions of Python. If you must use a version from the 2.7 family then we would recommend 2.7.12.

Update: Since this post was originally written, version 2.7.14 has been released which addresses both of these problems.

Python 2 is now maintained only to add bug fixes, and mainstream development attention for Python is given to Python 3. The problems that we have encountered with 2.7, as described above, lead us to recommend that an up-to-date Python 3 should be used with OrcaFlex if at all possible.

Python 3.6 has very recently been released and the next minor update to OrcaFlex, version 10.1c, will support this.

OrcaFlex 10.1 released

A year has elapsed since we released OrcaFlex 10.0, which means that it is time for the next version. We are very pleased to announce the 2016 release of OrcaFlex, version 10.1.

The software was finalised and built on 19th October. We are currently preparing the installation program, and will then dispatch the software. All clients with up-to-date MUS contracts should receive the new version early in November.

Version 10.1 introduces much new functionality, including:

  • Constraints, a new type of object that provide general purpose connections between objects. Constraints can be used to fix individual degrees of freedom (DOFs) and to impose displacements on individual DOFs.
  • Enhancements to frequency domain analysis, particularly for calculated vessel responses at both low and wave frequencies.
  • Mid-line connections – the ability to connect nodes in the middle of lines to other objects, just as is possible for nodes at the ends of lines.
  • Improvements in multi-threaded performance on machines with more than 64 processors or with NUMA memory architecture.

These are the most significant developments, in our opinion. As always there are a great many more enhancements which are documented in the What’s New topic for 10.1.

What follows is a brief introduction to each of the new features that we consider to be of most significance.

Constraints

Constraints are a new type of object that provide an enhanced, versatile means of connecting objects. They can be used to:

  • Fix individual DOFs.
  • Introduce individual DOFs.
  • Impose displacements on individual DOFs.

Constraints were developed primarily to enable simpler modelling of the following:

  • Hinges and articulations.
  • Telescoping joints.
  • Crane operations.

This list is not intended to be exhaustive. Constraints can be applied in many other situations.

What are constraint objects?

A constraint object comprises two frames of reference: the in-frame and the out-frame. The in-frame is rigidly connected to a master object and therefore translates and rotates with the master object. Slaves of the constraint are rigidly connected to the out-frame and so translate and rotate with the out-frame. The out-frame can translate and rotate, independently in all six DOFs, relative to the in-frame, and it is this capability in particular that makes constraints so versatile and useful.

Typically, a constraint object will be used as a means to connect objects together. The constraint is connected to a master object (e.g. vessel, buoy, line, etc.), and has one or more objects connected as slaves. Constraint objects themselves have no physical properties such as mass or volume, and do not attract hydrodynamic or aerodynamic loading. Their utility is derived entirely from the out-frame’s ability to move relative to the in-frame.

There are two distinct modes of operation for constraints, Calculated DOFs and Imposed displacement. These two modes offer different ways of controlling the relative movement between the out-frame and the in-frame.

Calculated DOFs

Individual DOFs, three translational and three rotational, can be either calculated or fixed, as determined by the input data. For example, to specify a single rotational degree of freedom, about the local y-axis, as would be used to model a hinge, the input data would look like this:

Calculated DOFs constraint input data

The column of check boxes titled Free is used to specify which DOFs are free and which are fixed. Different settings for these check boxes allow different types of connection to be modelled. For example, to model a telescoping joint you would make a single translational DOF be free.

To demonstrate how the above data models a hinge, the animation below shows the constraint, with a buoy attached to provide mass, acting as a pendulum. The axes drawn with a solid pen represent the in-frame, fixed to global. The dashed axes represent the out-frame. The single degree of freedom is Ry, rotation about local y, where y is normal to the view.

Constraint modelling a pendulum

Prior to the introduction of constraints, there were a variety of standard workarounds that could be used to model hinges, articulations, telescoping joints etc. For instance, hinges would usually have been modelled using very stiff single segment lines. But these workarounds were often tricky to build, and sometimes caused numerical problems. With the advent of constraints these issues become a thing of the past.

In addition, calculated constraints also allow specification of stiffness and damping, which can be linear or nonlinear. These properties can be used to resist displacement and velocity of the out-frame relative to the in-frame. Further, applied loads can be specified (constant, time varying, or externally calculated) and applied to the out-frame.

Imposed displacement

The original motivation for constraints was the Calculated DOFs mode. However, as that feature took shape we realised that these objects could be useful for other forms of connection / constraint. Thus were Imposed Displacement constraints born.

Before this release, the only object capable of imposing motion (as opposed to calculating motion) was the vessel. This could be done through prescribed motion, time history, or external calculation. Although it feels odd to use an OrcaFlex vessel as a means to impose motion, that sort of trick is quite common in OrcaFlex. However, the real weakness is that vessels cannot be connected as slaves of other objects. Constraints have no such limitation.

When imposed displacements are used, the displacement of the out-frame, relative to the in-frame, is specified by time history. All 6 degrees of freedom can be varied, or indeed any subset of the degrees of freedom.

There are many scenarios where imposed displacement constraints are useful. The ability to connect objects together in chains allows multiple imposed displacement constraints to be connected together to form a compound imposed motion. An example where that is especially useful is to model crane operations, as shown in this video:

Having given pre-release demonstrations of constraints to many users over the past few months, I can safely say that they have generated more excitement than any new feature since we added the implicit time domain solver. We hope you have as much fun with them as we have had!

Frequency domain dynamic analysis

In version 10.0, frequency domain dynamic analysis was added. This was the result of a huge development effort, and the sheer size of the program meant that some features were not initially supported in the frequency domain. The most important of these omitted features was calculated vessels. In version 10.1 we have addressed that omission and OrcaFlex now supports calculated vessels in the frequency domain.

There are really two distinct parts to this development, wave frequency and low frequency. The frequency domain functionality in version 10.0 caters for first order wave loading, what we refer to internally as the wave frequency solver. Extending this functionality to support first order wave load RAOs on vessels is relatively straightforward, and fits into the existing program quite naturally.

While enhancing the wave frequency solver to support calculated vessels presented few challenges, implementing low frequency analysis is a much more demanding task. This type of analysis is often used to study the low frequency response of moored systems to 2nd order wave drift loading, and to wind loading. The normal solution method is quite different from that used by OrcaFlex’s wave frequency solver. We have developed a method of re-expressing the low frequency problem in a way that can be handled by the same underlying frequency domain solver code.

Using the same underlying solver code for both wave frequency and low frequency means that all result types and variables currently supported in the wave frequency solver are also available in the low frequency solver. Mooring line damping is linearised by the same frame invariant MMSE scheme employed at wave frequency. And finally, a less obvious but very important benefit of sharing the same solver is that any future development will be quicker and less prone to error.

These enhancements now mean that OrcaFlex has a frequency domain engine capable of performing mooring analysis in the frequency domain. However, this should really be considered a work in progress. While the solver is very capable, there are further enhancements that would make it easier to use:

  • There is scope for much improved results presentation that targets mooring applications.
  • We do not yet support non-Gaussian extreme statistics for the low frequency solver.
  • The mechanics and workflow of defining and analysing all the load cases for a mooring analysis could be improved.

We feel that we have made a good start towards making OrcaFlex an effective tool for frequency domain mooring analysis and now have a powerful solver which we can build on and improve. We would really appreciate and encourage feedback to help guide us in making the next steps towards that goal. So, if you have interests in this area, we would love to hear from you and learn how you feel the program could be improved.

Mid-line connections

In recent releases we have added a number of features to make modelling of connections more flexible:

  • Connecting lines to lines (version 10.0)
  • Chains of connections, e.g. Buoy1 is connected to Buoy2, which in turn is connected to Buoy3 etc. (version 10.0)
  • Constraint objects (version 10.1)

One notable limitation in all of this, is the ability to have connections at mid-line nodes. The nodes at each end of a line can be connected as slaves of other objects. But the other nodes in a line are always master of their degrees of freedom. Other objects can be connected as slaves of mid-line nodes, but mid-line nodes could not previously be masters.

That has changed with 10.1, very much driven by the desire to apply constraints to mid-line nodes. It is now possible to define mid-line connections, that is to specify that nodes away from the ends are slaves of other objects. By making a mid-line node slave to a constraint, we are able to constrain individual node DOFs. Imposed displacement constraints can be used to impose the motion of a mid-line node. Mid-line nodes can, of course, be connected to objects other than constraints. End nodes can be connected as slaves to constraints, thus allowing the same capabilities.

As a fun demonstration, the animation below shows a single line with the node at the mid-point connected to a constraint object. The constraint object introduces a single translational degree of freedom. The simulation was started with the mid-point node initially perturbed and then released at the start of dynamics. The resulting motion is, in essence, just like the pendulum above.

Mid-line connection

Obviously this is not intended to be an example of real-world OrcaFlex modelling, but it hopefully serves to illustrate the point. Without mid-line connections this model would have required two separate line objects, joined together at the constraint. Modelled with mid-line connections, a single line can be used, and more importantly, a single range graph plot can show the results for the entire line.

Multi-threaded performance on large machines

Way back in version 9.2 (released in 2008) the OrcaFlex batch functionality was extended to make use of all the processors on a machine. Before then jobs were processed in serial fashion. This was an excellent development, but as is so often the case, changes in computer hardware soon caught up with us. Machines with larger numbers of processors became available, and such machines come with complications:

  • A naively written application, on Windows, cannot take advantage of more than 64 processors. Machines with more than 64 processors exist, and OrcaFlex was incapable of reaching all the processors.
  • When a machine has a great many processors, shared memory access becomes more difficult to implement efficiently at the hardware level. This issue is typically addressed by using a non-uniform memory access (NUMA) design. On such machines, programs must typically be programmed to be aware of NUMA in order to perform well. Again, OrcaFlex was not aware of NUMA architecture and so could not extract the best performance from the machine.

In version 10.1, we have made changes to support machines with more than 64 processors, and to be aware of NUMA. As a result, OrcaFlex batch processing now scales much better on such machines.

The same issues affect Distributed OrcaFlex. Consequently, we are making similar changes to Distributed OrcaFlex and plan to release an updated version later this year.

The solution that we are opting for with Distributed OrcaFlex is to use multiple processes rather than multi-threading as used by OrcaFlex batch processing. One consequence of using multiple processes is much better scaling for Python external functions and post-calculation actions. So if you integrate Python code in that way you might find that the new Distributed OrcaFlex implementation is useful – even if you only want to process jobs on a single machine.

Conclusion

So, that’s OrcaFlex 10.1. We hope you enjoy it, and find good use for all the new features. We are already busy working on 10.2 which you can expect to see towards the end of 2017.