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

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

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

    nokry56 New 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. Ad Hoc
    Joined: Oct 2008
    Posts: 7,788
    Likes: 1,688, Points: 113, Legacy Rep: 2488
    Location: Japan

    Ad Hoc Naval Architect

    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. CWTeebs
    Joined: Apr 2011
    Posts: 232
    Likes: 15, Points: 0, Legacy Rep: 171
    Location: Maine

    CWTeebs AnomalyGenerator

    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. CWTeebs
    Joined: Apr 2011
    Posts: 232
    Likes: 15, Points: 0, Legacy Rep: 171
    Location: Maine

    CWTeebs AnomalyGenerator

    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
            eta2Point = AddComplex(eta2, AddComplex(XpEta6, NegZpEta4))
            
            SyAmp.Cells(i).Value = Modulo(AddComplex(eta2, AddComplex(XpEta6, NegZpEta4)))
            SyPhase.Cells(i).Value = Argument(AddComplex(eta2, AddComplex(XpEta6, NegZpEta4)))
            
            ' 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:


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

    MikeJohns Senior 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 "
    link here:
    http://www.eagle.org/eagleExternalP...bel=abs_eagle_portal_marine_rules_guides_book

    looking at the list try publication 140 "SafeHull-Dynamic Loading Approach for Vessels"
    you might also find some good material in spectral fatigue guidelines.

    You could also search the other class societies for free material such as DNV and LR
     
Loading...
Forum posts represent the experience, opinion, and view of individual users. Boat Design Net does not necessarily endorse nor share the view of each individual post.
When making potentially dangerous or financial decisions, always employ and consult appropriate professionals. Your circumstances or experience may be different.