# I have vessel RAOs, now need to get dynamics motion. (MechEngineer)

Discussion in 'Software' started by nokry56, Jul 10, 2012.

1. Joined: Jul 2012
Posts: 1
Likes: 0, Points: 0, Legacy Rep: 10
Location: tx

### nokry56New Member

Hi all,

I have a (I think very basic) Naval Engineering question for you. I am a Mechanical Engineer so all of this is very new to me.

For a project I am working on we are trying to find the dynamic motion of a specific point on a vessel. I have the sea state information, as well as complete vessel RAOs.

I'm trying to build an understanding of the x, y, & z displacement of a given point on the vessel deck, along with the acceleration & velocity components.

I have a good understanding of dynamics (Newtonian & Lagrangian), but have not been able to find conclusive information on how to properly use RAOs. Most of my searches end up pointing me to complex tools to develop RAOs, not what to do with them once I have them A friend mentioned that this should be simple enough to do in Excel or in a basic Matlab script. Is this true? What should my next steps be? Any recommended reading for me?

Thank you!

2. Joined: Oct 2008
Posts: 6,975
Likes: 919, Points: 113, Legacy Rep: 2488
Location: Japan

This is actually rather complex.

If I understand you correctly you're essentially doing what is called a LFE (lateral Force Estimator) and/or a GLFE (Generalised Lateral Force Estimator). calculation.

Your ROAs would be in Roll, Heave, Pitch and Sway.

The LFE and GLFE use transfer functions, which are complex to fully explain and require some back ground reading. I suggest you read "Motion-Induced Interruptions as Ship Operability Criteria", by Ross Graham, Naval Engineers Journal, March 1980, for guidance on how to use the transfer functions from ROAs.

This may lead you into the MII (motion induced Interruptions). All these functions are essentially about the effects of motions on a person performing a task with given criteria, and based upon the frequency domain of the vessel and are dependent upon the motions of the vessel the ROAs. The ref, shows how to calculate the forces/acceleration in each given case.

Each method has pro's and con's depending upon what it is your after. For example, the LFE does not account for heave, only sway and roll. The GLFE depends upon the zero crossing periods of the motions...and so on. Thus, some background reading would be in order first.

It has been ages since I did this...not a 5min job either!!!

3. Joined: Apr 2011
Posts: 232
Likes: 15, Points: 0, Legacy Rep: 171
Location: Maine

### CWTeebsAnomalyGenerator

Vessel RAOs can be translated to Nodal raos. Velocity and acceleration RAOs can be calculated from the displacement RAO and frequency. If you are calculating the response in the frequency domain you should sub divide the spectrum into equal areas when multiplying by the RAOs.

Attached is some Octave code I wrote to translate the CG raos to Nodal raos, including a gravity term. I've validated it against commercial tools. This is for zero speed but should work if you have the correct forward speed RAOs. Gravity is added to the transverse and longitudinal acceleration RAOs using linear theory/small angle approximation.

Code:
```% Amplitudes
XAmp  = amps(:,1);
YAmp  = amps(:,2);
ZAmp  = amps(:,3);
RXAmp = amps(:,4)*pi/180;
RYAmp = amps(:,5)*pi/180;
RZAmp = amps(:,6)*pi/180;

% Phases
XPhs  = phs(:,1);
YPhs  = phs(:,2);
ZPhs  = phs(:,3);
RXPhs = phs(:,4);
RYPhs = phs(:,5);
RZPhs = phs(:,6);

% Sx = eta1 - eta6*yp + eta5*zp
% Sy = eta2 + eta6*xp - eta4*zp
% Sz = eta3 - eta5*xp + eta4*yp

eta1 = XAmp.*cosd(XPhs) .+ i*XAmp.*sind(XPhs);
eta2 = YAmp.*cosd(YPhs) .+ i*YAmp.*sind(YPhs);
eta3 = ZAmp.*cosd(ZPhs) .+ i*ZAmp.*sind(ZPhs);

eta4 = RXAmp.*cosd(RXPhs) .+ i*RXAmp.*sind(RXPhs);
eta5 = RYAmp.*cosd(RYPhs) .+ i*RYAmp.*sind(RYPhs);
eta6 = RZAmp.*cosd(RZPhs) .+ i*RZAmp.*sind(RZPhs);

Sx = eta1 .- eta6*yp .+ eta5*zp;
Sy = eta2 .+ eta6*xp .- eta4*zp;
Sz = eta3 .- eta5*xp .+ eta4*yp;

% (-((2 * PI / Periods.Cells(i).Value) ^ 2)) * AddComplex(eta2, AddComplex(XpEta6, NegZpEta4)).re
SyAcc = Sy .* (-((2*pi./perds) .^ 2));
SyAccPg = SyAcc .+ ACCG*eta4;

SxAcc = Sx .* (-((2*pi./perds) .^ 2));
SxAccPg = SxAcc .- ACCG*eta5;
```

4. Joined: Apr 2011
Posts: 232
Likes: 15, Points: 0, Legacy Rep: 171
Location: Maine

### CWTeebsAnomalyGenerator

The attached image is the coordinate system the code was intended for.

I also implemented this in Excel using the attached complex number library (rename from .txt to .bas and put it in your Library folder of Microsoft Office). An example of its use is as follows (I cannot post the actual spreadsheet):

Code:
```        ' *****************************************************************************
' Sway Calcs
' *****************************************************************************
Dim eta2Point As Complex

XpEta6.re = XNodeLoc.Cells(1).Value * eta6.re
XpEta6.im = XNodeLoc.Cells(1).Value * eta6.im

NegZpEta4.re = -ZNodeLoc.Cells(1).Value * eta4.re
NegZpEta4.im = -ZNodeLoc.Cells(1).Value * eta4.im

' Calculate the transverse acceleration *without* gravity
SyAcc.re = (-((2 * PI / Periods.Cells(i).Value) ^ 2)) * AddComplex(eta2, AddComplex(XpEta6, NegZpEta4)).re
SyAcc.im = (-((2 * PI / Periods.Cells(i).Value) ^ 2)) * AddComplex(eta2, AddComplex(XpEta6, NegZpEta4)).im
SyAccAmp.Cells(i).Value = Modulo(SyAcc)
SyAccPhase.Cells(i).Value = Argument(SyAcc)
```

#### Attached Files:

File size:
7.3 KB
Views:
502
• ###### modComplexLibrary.txt
File size:
2.9 KB
Views:
531

5. Joined: Aug 2004
Posts: 3,192
Likes: 208, Points: 63, Legacy Rep: 2054
Location: Australia

### MikeJohnsSenior Member

For some free reading material look at the Class documentation on this, the methods are well described.

In the USA the relevant organisation is "ABS "