Appendix B: Modelling

1. Recommendations regarding pipe-in-pipe modelling

1.1. General recommendations

The contact between the master pipe and the slave pipe will be applied between a node on the master pipe and an element in the slave pipe. This results in nodal loads along the master pipe and discrete element loads along the slave pipe. This is similar to the roller contact which is described in the Theory Manual.

The contact stiffness, specified as stiffness per unit length along the master pipe, should be chosen large enough, but not stiffer than necessary. When selecting the stiffness it may be useful to consider penetration for a characteristic force, e.g. weight.

A relatively high stiffness proportional damping may be needed to damp out the high natural frequencies caused by stiff contact elements.

The contact force does not contribute to bending moment on the element level. Thus the number of elements in the master and slave pipe should be chosen large enough to reflect the occurring distributed forces.

Note that the contact points in the master pipe are placed at the first end of each element plus an additional contact point at the second end of the last element. If the inner diameter of the master pipe varies, this may not give the desired contact radius at the node where the radius changes. This may be avoided by specifying a separate pipe-in-pipe contact for each segment of the master pipe.

The length of the master pipe should be approximately of the same length as the slave pipe. As an example if the bellomuth is the master, the slave pipe (for instance a riser) of the same length as the master. You may use divide the riser into segments to obtain this. See figures Example: pipe-in-pipe modelled as ENTERED and Example: pipe-in-pipe modelled as ENTERED LOAD GROUP DATA.

1.2. Input parameters

  • Master position : The position of the master pipe in the pipe-in-pipe contact pair. This option decides if the outer or inner pipe should be the master pipe. The contact between the master pipe and the slave pipe will be applied between a node on the master pipe and an element in the slave pipe. This results in nodal loads along the master pipe and discrete element loads along the slave pipe. The number of artificial contact elements is equal to number of nodes in the master pipe.

  • Stiffness type : Either constant (linear), or non-linear contact compression stiffness between the master and slave pipe. In the latter case, a table of force/displacement pairs must be entered. The contact stiffness, specified as stiffness per unit length along the master pipe, should be chosen large enough, but not stiffer than necessary. Very high stiffness values may lead to long run-times, instability and high-frequency numerical noise. When selecting the stiffness it may be useful to consider penetration for a characteristic force and also the convergence of the results that are of interest.

  • Relative damping level : Relative damping at estimated eigenperiod in the master, slave and contact spring system.

  • Damping : damping coefficient per unit length of master pipe

  • Spring stiffness : associated with static friction coefficient : The stiffness used when loading friction forces.

  • Axial friction switch : This swith controls if the axial friction between master and slave is included.

  • Rotational friction switch : This swith controls if the rotational friction between master and slave is included.

  • Velocity limit : for change from static to dynamic friction

The following are recommended default values for setting up a typical pipe-in pipe analysis. It is recommended to always do a parameter variation after setting up a model to ensure convergence of results and that damping does not affect modes of interest. Only a small amount of axial friction is included in the suggested input to improve convergence (compared to turning axial friction off).

1.3.1. Pipe in pipe parameters

Parameter Recommended value Unit

Master position

Outer

(-)

Stiffness type

Linear

(-)

Linear spring stiffness

1e+5

(N/m^2)

Relative damping

0.7-1.0

(-)

Damping

0.0

(Ns/m^2)

Friction stiffness

2.0e+6

(N/m)

Static friction coefficient

1e-3

(-)

Dynamic (sliding) friction coefficient

1e-3

(-)

Axial friction switch

ON

(-)

Rotational friction switch

OFF

(-)

Velocity limit

0.1

(m/s)

1.4. Recommended static loading sequence

To improve convergence in the static analysis, it is not recommended to include pipe-in-pipe contact forces as the first load group. Loading Volume forces, initially pre-stressed segments etc. before pip-in-pipe forces will in most cases improve static convergence.

1.5. Tips for efficient analysis with pipe-in-pipe

  • Set Pipe-in-pipe contact to entered in static calculation parameters. The internal pipe does not have to be placed in the exact centre, or even inside of the external pipe, it will be pulled towards the centre when the contact forces are applied.

  • Load Volume forces before pipe-in-pipe forces. This will in many cases make the application of contact forces much more stable due to the additional drag forces and weight.

  • Setting the external pipe as master will often improve convergence and run-times.

  • It is recommended to use shorter elements in the master pipe. The opposite may lead to slower convergence and numerical noise.

  • Note that the element mesh of the master pipe controls the number of contact elements and should therefore be chosen carefully with regards to convergence of results and speed. Use a refined mesh where necessary, for example in areas where large curvatures and contact is expected, inside bellmouths/guide-tubes, flexjoints etc. Run times increase exponentially with number of elements in pipe-in-pipe pairs, so it is important to keep number of elements to a minimum, but sufficient to ensure convergence of key results.

  • Use linear contact stiffness and start off with a low stiffness for stability and increase gradually if needed.

  • For a typical application, drilling-riser, an element length of 2-3 m for both the drillpipe and marine riser will be sufficient. In areas where the drillpipe is bent and large contact forces are expected (for example around flex-joints/ball-joints), the element length should be reduced.

  • External contact radius of inner pipe must be larger than zero

  • If the master position is outer, all segments in the slave(inner) pipe segments must have external contact radius which is smaller than the internal contact radius of the outer(master) pipe and larger than zero. See illustration in the figure Pipe-in-pipe master is modelled as outer.

  • If the master position is inner , all segments in the master (inner) pipe segments must have external contact radius which is smaller than the internal contact radius of the outer(slave) pipe and larger than zero. See illustration in the figure Pipe-in-pipe master is modelled as inner.

um pipeinpipe modelling radius a
Figure 1. Pipe-in-pipe master is modelled as outer
um pipeinpipe modelling radius b
Figure 2. Pipe-in-pipe master is modelled as inner

1.6. Transfer functions - roll, pitch and yaw

In RIFLEX vessel roll, pitch and yaw are given as rotation per wave slope; i.e. dimensionless. If values are available as rotation per meter or foot of wave height, a conversion must be performed.

1.7. Conversion example:

1.8. Linux script for conversion of rao values:

##! /usr/bin/awk -f

##

##  Expects input as:    freq(rad/s)  trf(rad/m)     phase

##  and gives output as: freq(rad/s)  trf(rad/rad)   phase

##

##  Waterdepth may be given on the command line;

##      convert_trf 'd=100.0' <infile>

##

BEGIN { d = 310.0; g = 9.81}

  NF  { w = $1; i = 0;
          k0 = 0.0; k1 = w*w/g;

##       print i, k1;
        while ( (k1-k0) > 0.00005 || (k0-k1) > 0.00005 )
           { i++;
             k0   = k1;
             x    = k0*d;
             tanh = 1.0;
             if (x < 50.) tanh = (exp(x)-exp(-x))/(exp(x)+exp(-x))
             k1   = w*w/(g*tanh);

##            print i, k1
           }
        print $1,$2/k1,$3
      }

2. Example MATLAB script to generate a 3D seafloor grid

The MATLAB scripts iFundi.m and seafloor.m may be used to generate a regular spaced grid of 3D seafloor data. seafloor.m includes the set of (x,y,z) coordinates that define the 3D seafloor.

2.1. iFundi.m

%
%                                   iFundi
%                                   ______
%
% MATLAB script that generates a RIFLEX seafloor input file, on the basis of
% column based data.
%
% This script is a basis, which is expected to be modified by the user when needed.
%
% Philippe Maincon, MARINTEK, 28/6/2000
%
clear                                                % Clear MATLAB's memory, to
                                                     % avoid surprises
% Read the seafloor data

seafloor;                                            % call the script in file
                                                     % seafloor.m, which defines 3
                                                     % vectors x,y and z, of same
                                                     % size.

% Define the grid to be generated

Xsmin = 540;                                         % define the grid to be
DGX   = .5;                                          % generated
Xsmax = 650;                                         % x values on the grid to be
Ysmin = 80;                                          % between Xsmin and Xsmax, with
DGY   = .5;                                          % step DGX
Ysmax = 140;

% Create the interpolated grid

[b,a]=meshgrid(Ysmin:DGY:Ysmax,Xsmin:DGX:Xsmax);     % for the purpose of
                                                     % interpolation, generate the
                                                     % matrices a and b of x and y
                                                     % data respectively, for each
                                                     % point of the grid.
                                                     % DO NOT switch a and b, x and
                                                     % y. !!!
c=griddata(x,y,z,a,b,'linear');                      % interpolate z data to grid c

% Plot the result - for feedback to the user


figure(1); clf; hold on;axis equal;
mesh(a,b,c);                                         % plot the interpolated grid as
                                                     % a "mesh"
plot3(x,y,z,'k.','markersize',3);                    % plot the original data as
                                                     % black dots
grid;                                                % put a grid as background to
                                                     % the plot

% Write the RIFLEX seafloor input file

depth=round(c*100);
[NGX,NGY]=size(depth)
fnut=char(39);zero=0

file=fopen('bottom.rif','w');                        % You can change the name of
                                                     % the file here
fprintf(file,'%s\n','Sample seabed profile');        % the syntax here is that of
                                                     % C language
fprintf(file,'%s %s\n',fnut,'NGX NGY Xsmin Xsmax Ysmin Ysmax DGX DGY');
% Mind that a RIFLEX input file is never to have more than 80 columns...
fprintf(file,'%4d %4d %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f\n',...
              NGX,NGY,Xsmin,Xsmax,Ysmin,Ysmax,DGX,  DGY);
fprintf(file,'%s %s\n',fnut,'XOS YOS ANGOL');
fprintf(file,'%8.2f %8.2f %8.2f\n',zero,zero,zero);
fprintf(file,'%s %s\n',fnut,'Depth of seabed [ul*100]');
for col = 1:NGY
   for lin =1:NGX-1
      fprintf(file,'%8d %s\n',depth(lin,col),'&');
   end
   fprintf(file,'%8d \n',depth(NGX,col));
end
fclose(file);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2.2. seafloor.m

tmp=[  46318.500     62176.000    -134.0976
   46319.500     62176.000    -134.0722
   46320.500     62176.000    -134.0749
   46321.500     62176.000    -134.0644
.
..
.

46427.125 62283.000 -126.0274 46428.125 62283.000 -125.9467];

x = tmp(:,1)-tmp(1,1); y = tmp(:,2)-tmp(1,2); z = tmp(:,3); clear tmp;
r1 = x<400; r2 = x>400;