You are on page 1of 3

Example: Frahm vibration absorber (anti-roll tank)

The action of an anti-roll tank can be explained by use of a simple mechanical analogy. Consider a
classical oscillating system composed of a mass, a spring, and a dashpot. If a smaller mass is attached
to the main mass by a spring, the oscillations of the main (larger) mass can be damped by carefully
designing the second mass and spring. In a similar mode, if two tanks (one on the starboard and the
other on the port side) are connected by a pipe, and water flows between them, in a certain phase to the
roll motion, this cross flow opposes the roll motion. The small mass-spring-damper system is the
analogue of the anti-roll tanks.

If a sinusoidal force F 0 sin  t acts on m1, and a properly tuned auxiliary system absorbs the forced
vibrations of the system, we can write the governing equations of both systems as:
1
2 dx
d x1 dx 1 and m2 2 k 2  x 2−x 1 =0
m1 2 c k ¿ k 2  x1− x 2 =F 0 sin t dt
dt dt

2 k1
Dividing both equations by their respective masses, and noting that since  0= , and hence
m1
k2 k 2 k 2 m2 m
= 2 , we can say that = =2 2 and we can write:
m2 m1 m2 m 1 m1

c m F
x¨1 x˙1 20 x 12 2  x 1− x 2= 0 sin t and x¨22  x 2−x 1 =0
m1 m1 m1

To integrate numerically, we have to transform these second-order differential equations into a system
of first order differential equations. So we say y 1= x˙1, y 2= x1, y 3= x˙2, y 4=x 2 and substitute:

−c m F
ẏ 1= y 1− 20 y 2− 2 2  y 2− y 4 − 0 sin t
m1 m1 m1
ẏ 2= y 1
2
ẏ 3=−0  y 4− y 2 
ẏ 4= y 3

An example script for a function (Frahm) and calling script (call_Frahm) is shown following the
example of Biran and Breiner (2002), Chapter 14.
%FRAHM Model of a Frahm vibration absorber.
% This function file is called by Call_Frahm.
% Companion file to Biran, A. {2003}, Ship Hydrostatics and Stability,
% Oxford: Butterworth-Heinemann.
%
% Syntax: Frahm(t, y, rm)
% Input arguments:
% t time
% y variable
% rm m2-to-m1 ratio

function yd = Frahm(t, y, rm)

% meaning of derivatives
% yd(1) speed of main mass m1
% yd(2) displacement of main mass m1
% yd(3) displacement of absorbing mass m2
% yd(4) displacement of absorbing mass m2

w0 = 2*pi/14.43; % ship natural frequency, rad/s


w = 2*pi/7; % wave frequency, rad/s
c_m = 0.1; % damping coefficient, c-to-m1 ratio
F_m = 1; % exciting amplitude, F-to-m1 ratio

yd = zeros(size(y));

% derivatives
yd(1) = -c_m*y(1)- w0^2*y(2) - w^2*rm*(y(2) - y(4)) - F_m*sin(w*t);
yd(2) = y(1);
yd(3) = -w^2*(y(4) - y(2)) ;
yd(4) = y(3);

%CALL_FRAHM Calls ODE23 with the derivatives file Frahm.


% Integrates the model of the Frahm damper previously described

t0 = 0.0; % initial time, s


tf = 100; % final integration time
y0 = [ 0; 0; 0; 0 ]; % initial conditions

% call integration function for system without absorber


[ t, y ] = ode23(@Frahm, [ t0, tf ], y0, [], 0);

subplot(3, 1, 1)
plot(t, y(:, 2))
axis([ 0 100 -5 5 ])
Ht = text(80, 3.5, 'r_m = 0');
set(Ht, 'FontSize', 12)
Ht = title('Displacement of main mass');
set(Ht, 'FontSize', 14)

% call integration function with mass ratio 1/10


[ t, y ] = ode23(@Frahm, [ t0, tf ], y0, [], 1/10);
subplot(3, 1, 2)
plot(t, y(:, 2))
axis([ 0 100 -5 5 ])
Ht = text(80, 3.5, 'r_m = 1/10');
set(Ht, 'FontSize', 12)

% call integration function with mass ratio 1/5


[ t, y ] = ode23(@Frahm, [ t0, tf ], y0, [], 1/5);
subplot(3, 1, 3)
plot(t, y(:, 2))
axis([ 0 100 -5 5 ])
Ht = text(80, 3.5, 'r_m = 1/5');
set(Ht, 'FontSize', 12)
Ht = xlabel('Time scale, s');
set(Ht, 'FontSize', 12)

Output:
Note that the larger the ratio between m2 and m1, the more effective the absorber is. Unfortunately, on a
ship large flume tanks can drastically affect the metacentric height, so trade offs are necessary.

D is p la c e m e n t o f m a in m a s s
5
r = 0
m

-5
0 10 20 30 40 50 60 70 80 90 100
5
r = 1 /1 0
m

-5
0 10 20 30 40 50 60 70 80 90 100
5
r = 1 /5
m

-5
0 10 20 30 40 50 60 70 80 90 100
T i m e s c a le , s

You might also like