Bodies and Parts Bodies and Parts

The basic ingredients for performing a simulation are bodies. For simulation purposes, bodies are considered rigid, and composed of parts. A part is the smallest entity upon which a structural analysis can be performed. Bodies are connected by parts which contain special elements called connectors. In essence, a part is simply a named portion of the model.

All properties of the system are described by the attributes of the parts. In other words, every attribute of the system must be an attribute of some part of the system. Thus, everything except bodies belong to some part.

In MOSES, each body, and each part will have a separate coordinate system associated with it. Since MOSES can consider bodies which move in space, we also employ a global coordinate system. The global system is fixed in time, and is used to locate positions in space. Its origin is arbitrarily located on the water surface, and its Z axis points upward.

The part coordinate system is used to define the geometry of a part. In other words,

Thus, the part system is used in defining the model and in the definition of the structural deflections.

The body system is used for simulations. In most cases, the body system will be identical to the part system of the part which has the same name as the body. The axes of the body system are parallel to the global system when roll, yaw, and pitch are zero. The orientation of the body system defines the orientation of the body by three Euler angles, yaw, followed by a pitch, followed by a roll. An illustration of the global and part coordinate system along with a jacket and vessel body system during a launch is shown in Figure 4.

To distinguish between different bodies and parts, a block concept is used; i.e., all of the data for a part and body is defined contiguously in the input. One defines the different parts and bodies by &DESCRIBE commands. All of the data which follows one of these commands will be associated with this body or part until another &DESCRIBE command is encountered. This command also allows the user to alter the attributes of the body as the analysis proceeds. The format of this command is:


     &DESCRIBE BODY, BODY_NAME, -OPTIONS

where the available options are:


     -IGNORE, DOF(1), DOF(2), .....

     -GEN_DOF, MODE_SEL(1), MODE_SEL(2), ....

     -S_DAMPING, CFRACTION

     -SECTION, EI, X(1), SM(1), ....., X(n), SM(n)

     -LOCATION, X(1), X(2), ......

     -DMARK, DM_NAME, *DPT(1), *DPT(2)

     -D_DMARK, :DM_NAME(1), :DM_NAME(2), ......

     -PR_NAME, PR_NAME

     -MD_NAME, MD_NAME

     -MD_FORCE, MD_FORCE, MD_RADIATION, MD_CORIOLIS

     -MD_PHASE, MD_PHASE

     -FM_MORISON, FM_FACTOR

     -SPE_MULTIPLIER, SPEMUL

     -SP_ORIENT, VX, VY, VZ, HX, HY, HZ

     -SP_HEIGHT, X, Y, Z

     -DT_CONVOLUTION, DT_CONV

     -FACT_CONVOLUTION, CONV_FACTOR

     -PERI_USE, PER

     -WAVE_RUNUP, YES/NO

To ease the difficulty of defining a model, whenever a body is defined, a part with the same name is automatically defined. Any attribute defined before a part is specifically defined becomes the property of the "body" part. NOTICE that since everything must belong to some part of some body, a &DESCRIBE BODY should be at the beginning of each set of data.

Normally, all bodies have six degrees of freedom. Sometimes, one wants to "ignore" some of these degrees of freedom. This is accomplished with the -IGNORE option. Here, DOF(i) is the name of the degree of freedom to be ignored, and must be chosen from the list X, Y, Z, RX, RY, and RZ. When a degree of freedom is ignored, the force in this degree of freedom is set to zero, and the inertia is set to a very large number.

Normally, bodies have six degrees of freedom. The option -GEN_DOF, however, allows one to use previously computed vibration modes as generalized degrees of freedom for a body. For a discussion on computing modes for a body, see the section on Extracting Modes. Here, MODE_SEL(i) are selectors for the mode numbers one wishes to use. MODE_SEL(i) can be a single number which selects that mode number, or a pair of numbers A:B which selects all modes from A to B. Once a body has more that 6 degrees of freedom, some measure of its deformation and the deformation inertia is accounted for in any equilibrium, time domain, or frequency domain analysis. Thus, this is an excellent way to study the effect of flexibility on the results. To the user, however, the number of degrees of freedom make no difference in how to accomplish various tasks. The only effect is the computer resources required. The -S_DAMPING option defines the modal damping which will be used for the generalized degrees of freedom. Here, CFRACTION is the fraction of critical damping to be used. If this option is omitted, .01 will be used.

Two options of &DESCRIBE BODY serve to override defaults when computing longitudinal strength. The -SECTION option is used to define the "section properties". Here, EI is the stiffness of the body. The X(i)s are the X locations along the body where one wishes to compute longitudinal strength results, and SM(i) is the body section modulus at X(i). If only a single location is specified, then MOSES will redefine this data so that results are computed at each station, and the section modulus will be constant along the length of the body. For SM the units will be either ft**3 or meters**3, and for EI, force-ft**2 or force-meters**2. If one simply wants to define the locations at which the results are reported, he can use the -LOCATION command.

The option -DMARK is used to define draft marks and -D_DMARK is used to delete draft marks. Draft marks are rays along which one measures draft. Each mark is defined by two points. The first point is the "origin" of the draft mark and the second is used to define the direction of the mark. Draft is the distance along this ray from the first point to where the waterplane intersects the line. Here, DM_NAME is a name given to the draft mark, *DPT(1) a point defining the origin of the mark, and *DPT(2) is a point defining the direction of the mark. On should use a -DMARK option for each draft mark defined. When deleting marks, :DM_NAME(i) are selectors which select the marks to delete.

The next two options: -PR_NAME and -MD_NAME, allow one to change the pressure packet name and the drift packet name associated with the body. Here, PR_NAME and MD_NAME are the new pressure or mean drift names. In most cases, the mean drift database is created as a consequence of creating the pressure database, and a discussion of the mean forces can be found in the section of the HYDRODYNAMICS MENU and in the subsection on mean drift.

The next three options allow one to change the multipliers used with the mean drift force. The -MD_FORCE option defines three scale factors, MD_FORCE, MD_RADIATION, and MD_CORIOLIS which are used in computing the total mean drift force. The last two of these are multipliers of the radiation and Coriolis contributions to the mean force as they are added to the diffraction contribution. The MD_FORCE factor multiplies the total mean force before it is accumulated. The current response operators for the current process are used when computing the radiation and Coriolis contributions. Finally, the -MD_PHASE defines a phase angle (deg.) of the wave drift force in the frequency domain. Here, each drift force component will have a phase, PHASE, relative to the wave crest being at the origin. The default for these options is set with &DEFAULT.

The next two options of &DESCRIBE BODY deal with viscous damping, and both of them override defaults set with &DEFAULT. The -FM_MORISON option defines a factor which will be multiplied by the computed viscous force to yield an applied viscous force in the frequency domain. The option -SPE_MULTIPLIER defines the spectral linearization multiplier. When nonlinear quantities are linearized with a spectral linearization in the frequency domain, the RMS of the velocity is multiplied by the factor SPEMUL and used in computing a constant drag coefficient.

When performing a simulation in the Static Process Menu, one needs to define two vectors which are used to measure the "roll and pitch" angles and a point which is used to measure height. This is accomplished with the two options -SP_ORIENT and -SP_HEIGHT. All of these quantities used with these options are defined in the part system of the body. The height used to terminate a lift is defined by X, Y, and Z. The pitch angle is defined as angle formed by the vector VX, VY, and VZ with the waterplane, and the roll angle is the angle formed by the vector HX, HY, and HZ with the waterplane. Here, VX, VY, and VZ are the components of a vector in the part system which will be vertical when the jacket is in the installed condition. If these options are omitted, the values defined with the same name on an &DEFAULT command will be used.

The last four options provide the user ways in which to "tweak" the hydrodynamic data to suit his purposes. All these options use as defaults values defined with an option of the same name on an &DEFAULT command. The first three options control the way the frequency dependent nature of the added mass and damping are considered in the time domain. As described in the Hydrodynamics section, mathematically, this results in a convolution. This convolution is, however, often difficult to deal with numerically. One of the leading causes of numerical instability is a badly behaved convolution. In fact, with a convolution, it is possible to take too small a time step! There is a limit to how much velocity history can be stored. For extremely small time steps, this history may not be long enough to adequately describe the damping. The -DT_CONVOLUTION option defines the time increment at which the convolution will be integrated. This must be equal or greater than the time step at which the time domain is computed. If you use TIME_STEP for DT_CONV, then the convolution will be computed at the time steps used to integrate the equations of motion otherwise it will be computed for times steps of DT_CONV. This option allows one to use a reasonable time step (around 1/4 second) to compute the convolution and a smaller one to integrate the equations of motion which ameliorate the above problem. An alternative way of dealing with this problem is by using the last two options. The -FACT_CONVOLUTION option scales the kernel of the convolution by CONV_FACTOR before it is applied. If CONV_FACTOR is zero, the convolution will not be added, and if CONV_FACTOR is one, all of the convolution will be added. The -PERI_USE option allows one to replace the convolution terms in the equations of motion with single added mass and damping matrices. The matrices used will be the frequency domain matrices at the specified period, PER. This eliminates any numerical problems with the convolution. The defaults here CONV_FACTOR = 1 and PER = 0, i.e. use all of the convolution in the time domain.

In the time domain, the buoyancy is computed "correctly" at each time step. Since the frequency domain forces already include the effects of the wave elevation, this buoyancy is computed assuming that the water surface is flat. If -WAVE_RUNUP is used with a YES/NO of YES, then a different algorithm is used. Here, the water surface is assumed to be adequately described by the incident potential and the "correct" Froude-Krylov force computed. When this option is used, the Froude-Krylov force is not included in the frequency domain forces applied.

The string function which returns data for bodies is:


     &BODY(ACTION, BODY_NAME, -OPTION)

Here, BODY_NAME is the name of the body for which data is desired and ACTION must be either: CURRENT, E_NODES, P_NAME, EXTREMES, DRAFT, LOCATION, VELOCITY, MXSUBMERGENCE, BOTCLEARANCE, NWT_DOWN, MIN_NWT_DOWN, WT_DOWN, MIN_WT_DOWN, E_PIECES, I_PIECES, MAX_BUOYANCY, MAX_CB, DISPLACE, CB, GM, G_ROLL, I_VECTOR, F_WEIGHT, F_CONTENTS, F_BUOYANCY F_WIND, F_V_DRAG, F_WAVE, F_SLAM, F_R_DRAG, F_CORIOLIS, F_W_DRIFT, F_DEFORMATION, F_EXTRA, F_APPLIED, F_INERTIA, F_AINERTIA, F_CINERTIA, F_FLEX_CONNECTORS, F_RIGID_CONNECTORS, F_TOTAL B_CG, B_WEIGHT, B_RADII, B_MATRIX, A_CG, A_WEIGHT, A_RADII, A_MATRIX, D_CG, D_WEIGHT, D_RADII, or D_MATRIX. The action CURRENT is special in that it should have no other input; i.e. no BODY_NAME and no -OPTIONS. It returns the name of current body. All other action need a body name. If this name is omitted, the current body will be used. Thus if your model contains only a single body the name may be safely omitted.

The action E_NODES returns the names of the extreme nodes for the body, and P_NAMES returns the names of the parts in the body. The action EXTREMES returns the length, width, and height of a body where these quantities are measured along the body X, Y, and Z axes respectively. The action DRAFT, the reading of the draft marks will be reported, while the actions LOCATION, VELOCITY, MXSUBMERGENCE, and BOTCLEAR, return the requested data on the location of the body. WT_DOWN and NWT_DOWN will return a list of the down-flooding points of the specified type , and MIN_WT_DOWN and MIN_NWT_DOWN return the minimum height of the points about the water.

The actions E_PIECES and I_PIECES return a list of the external or internal pieces in the body. The actions MAX_BUOYANCY and MAX_CB return the non-compartment buoyancy and its center when the body is completely submerged, while the actions actions DISPLACE, CB and GM return the current value of these things. For the actions CB, MAX_CB, LOCATION, and VELOCITY the option -GLOBAL can be used to change the returned data from being in the body system to being in the global system. The G_ROLL returns an angle which is the angle of inclination of the body from the vertical. More precisely, if v is a vertical vector represented in the body system, then G_ROLL is the arc tangent of the sqrt(v(1)*v(1) + v(2)*v(2)) / v(3). The I_VECTOR returns a vector which, if a moment is applied in this direction, will cause the inclination to increase, or I_VECTOR = [ v(1), v(2), 0 ]/sqrt(v(1)*v(1)+v(2)*v(2)).

The actions which begin with a F_ return forces acting on the body. The data following the _ specifies the type of load which will be returned. The meaning of these forces can be found in the section on FORCES.

If no option is specified, then the results are in the body system. Alternately, one can specify -GLOBAL to return the values in the global system.

The remainder of the actions deal with the weight of the body. Those beginning with a B are applicable to the "basic" weight of the body, those beginning with an A to the "apparent" weight of the body (basic weight plus weight of contents), while those beginning with a D deal with the "define" weight for the body. What follows the _ define the type of data returned: WEIGHT for the weight, CG for the centroid of the weight, radii of gyration for RADII, and MATRIX for the 6X6 weight matrix (mass matrix divided by g).

Parts are defined similarly to bodies. In particular, the command to describe a part is:


     &DESCRIBE PART, PART_NAME, PART_TYPE, -OPTIONS

and the available options are:


     -MOVE, NX, NY, NZ, NRX, NRY, NRZ

or


     -MOVE, NX, NY, NZ, *PT(1), *PT(2), *PT(3), *PT(4)

Here, PART_NAME is the name to be given to the part, and PART_TYPE is the part type. The values one can use for PART_TYPE are somewhat arbitrary, but the two types of JACKET and PCONNECT have special significance. The part type, JACKET, is used to denote the portion of the system which will be treated differently when the special transportation facilities of MOSES are employed. To avoid confusion, elements which connect parts (elements which are connected to nodes in different parts) must belong to a part with a type of PCONNECT. Thus, the only elements which can span parts are connectors or PCONNECTors. A PCONNECT part should not have any nodes which belong to it. There is a special part, GROUND, which does not belong to any body, and it is in this part that elements which connect bodies reside. These elements which are called connectors are quite important, since they define both the boundary conditions for a stress analysis, and the constraints on the bodies for a simulation.

In most cases, the body system of a body will be coincident with the part system of all parts belonging to the body. When certain types of connections (launch legs) are defined, however, the body system will be altered as described later. Also, the user can alter a part system using the -MOVE option. Here, NX, NY, and NZ are the location (feet or meters) of the origin of the part system with respect to the reference, and NRX, NRY, and NRZ are a set of Euler angles which defines the new orientation of the part system. Alternately, if the second form of the command is used, the four points define the orientation of the part system. Here, the part X axis will be from the midpoint of the segment connecting *PT(4) and *PT(2) to the midpoint of the segment connecting *PT(3) and *PT(1). The part Z axis is defined by the cross product of the X axis with the vector from *PT(4) to *PT(2), and the Y axis is given by the right hand rule. This option can be used both in defining a model, and when editing one, but one can move a "body part" (a part with the same name as a body) only while editing. Moving a body part is equivalent to changing the orientation of all of the parts of the body. When one is moving a part, the above data defines the part system with respect to the "body part" system and when moving a "body part", it defines the body part with respect to the body system. To orient the part system, suppose that the part and the reference systems are aligned, and that the part system is rotated an amount NRZ about the reference Z axis. Next, rotate the part system about the current part Y axis, and amount NRY, and finally rotate an amount NRX about the new part X axis.

The string function:


     &PART(ACTION, PART_NAME, -OPTION)

returns the current data about a part. Here, PART_NAME is the name of the part for which data is desired and ACTION must be either: CURRENT, MAX_CB, MAX_BUOYANCY, CG, WEIGHT, RADII, or E_NODES. The action CURRENT returns the name of current part, while the WEIGHT, CG, and RADII actions simply return the current weight, CG, and radii of gyration of the part. These are the "dry" values of the part, without any compartment contents. The MAX_BUOYANCY and MAX_CB return the non-compartment buoyancy its center when the part is totally submerged. If no option is specified, then the results are in the part system. Alternately, one can specify -BODY or -GLOBAL to return the values in another system. The action E_NODES returns the names of the extreme nodes for the part.

After a set of bodies have been defined, it is necessary to place them in space as the point of departure for a simulation. This is accomplished via the command:


     &INSTATE, -OPTIONS

where the options are:


     -LOCATE, NAME, X, Y, Z, RX, RY, RZ

     -MOVE, NAME, DX, DY, DZ, DRX, DRY, DRZ

     -CONDITION, NAME, DRAFT, ROLL, TRIM

     -POINT, *PNT(1), H(1), *PNT(2), H(2), .... *PNT(n), H(n)

     -DRAFT, DMARK(1), D(1), DMARK(2), D(2), .... DMARK(n), D(n)

     -GUESS, *NODE(1), *NODE(2), *NODE(3)

     -VELOCITY, NAME, VX, VY, VZ, VRX, VRY, VRZ

     -SL_SET

     -LINES, :ACTIVE, :LSEL(1), TEN(1), :LSEL(2), TEN(2), ......

     -EVENT, EVE_NUM

     -PREVIOUS

     -C_FORCE, FLAG

The uses of the option keywords are: -LOCATE positions a body in space absolutely; X, Y, and Z are the global coordinates of a point on the body, and RX, RY, and RZ are the new Euler angles. The -MOVE option moves a body relative to its last known position; in this case, the parameters are changes in position and orientation. -CONDITION is the same as -LOCATE except that only 3 degrees of freedom are necessary. Here, NAME is the name of either a body or a report point. If a point name is specified, then the position specified will be for that point. If a body is specified, then the location will be the location of the origin of the body. All of the units for these options are feet or meters and degrees. The three options -POINT, -DRAFT, and -GUESS all set the body according to the positions of a set of points. With the -GUESS option, MOSES will change the orientation of the body so that the three nodes *NODE(1), *NODE(2), and *NODE(3) will lie in the waterplane. Here, the three nodes cannot be colinear, and one cannot rotate a body ninety degrees. With -DRAFT, one specifies a set of draft marks and the draft readings at the marks and with -POINTS, one specifies a set of points and the height of these points above the water. MOSES then finds the draft, trim, and heel of the body that gives a "best fit" to the data specified. The -VELOCITY option defines the initial velocities of a body. Here again, the velocities specified are for a point, a node, or the origin of the body in ft/sec or m/sec and degrees/second.

In general, when rigid constraints have been defined between two bodies, it is necessary to locate only one of the bodies. If one attempts to specify both, he may have a difficult time in locating the various bodies without violating a constraint. In other words, if only one body is specified, MOSES will locate this body and locate the other bodies in such a way as to satisfy the constraints. Also, one may not give a body a yaw (RZ) after you have connected launchways to it.

Positioning a system of bodies with connections is not a trivial task. The next two options are designed to minimize this difficulty. With these options, not only is the configuration of the system altered, but the lengths of some of the connectors are also changed. The objective is to have the system be in equilibrium. The -SL_SET option simply computes the proper length for the tip-hook element of each tip-hook set so that the lines have no slack in the specified configuration. This will probably not be an equilibrium configuration, but it will be a good starting place for one.

The -LINES option instructs MOSES to alter the lengths of the flexible connectors which match :ACTIVE so the system will be as close to equilibrium as possible. The additional data controls the operation of the algorithm so that the connectors which match :LSEL(i) are altered to make the resulting tension (compression) in the connector "as close as possible" to that specified by TENS(i). For connectors which are not selected by any of the selectors, the algorithm will attempt to make the tension as close as possible to the current tension. As mentioned above, the objective is an equilibrium configuration, but this cannot always be achieved. In particular, "anchor lines" cannot be used to alter the vertical force on a body, so that if one has only anchor lines, then there is no guarantee that the vertical forces will balance at the conclusion of the command. Likewise, if one has only "vertical" connectors, the horizontal forces may be out of balance.

The -EVENT option sets the initial configuration to be the one at event EVE_NUM of the current process, and -PREVIOUS is used to replace the initial state with the "previous" one. Here, "previous" is the state existing before the last command which changed the state before -EVENT was issued.

Finally, the -C_FORCE option computes an "extra" force on each body which makes the specified configuration an equilibrium configuration. This action occurs if FLAG is COMPUTE. If FLAG is NO, the extra force will be set to zero.

In addition to the weights which were defined for elements and load groups, MOSES employs an additional weight which can be applied to any part. This is called a "defined" weight and is controlled with the command:


     &WEIGHT, -OPTIONS

where the available options are:


     -COMPUTE, BODY_NAME, ZCG, KX, KY, KZ

     -DEFINE, PART_NAME, WEIGHT, XCG, YCG, ZCG, KX, KY, KZ

     -TOTAL, PART_NAME, WEIGHT, XCG, YCG, ZCG, KX, KY, KZ

The first of these options is restricted to bodies while the others can be used with parts. For the first option, all data given should be in the body coordinate system of the body, BODY_NAME. For the others, all data should be in the part system of the part PART_NAME. The -COMPUTE option instructs MOSES to compute the weight so that, in the initial condition, the gravitational force will be equal to the sum of the other forces. The local Z center of gravity of the computed weight will be placed at the specified location (ZCG). Alternately, a -DEFINE option defines a load with the weight and center of gravity specified. The option -TOTAL creates an additional weight so that the total weight, center, and radii of gyration of the part will be that specified. In either case, the weight which is defined will have radii of gyration KX, KY, and KZ with respect to the point of application. Here the location of the cg and the magnitude of the radii of gyration are to be interpreted in the Body System. If bending moments are computed, the load will be represented as a trapezoidal load acting over the entire body length. By default the loads resulting from the defined weight will be distributed to all nodes in the body part of BODY_NAME or the part PART_NAME.

As was implied above, while bodies are the basic ingredients of simulations, they have virtually no properties other than the parts which belong to them, and all of the physical properties of the bodies are inherited from their parts. This is quite important since one can move parts between bodies, create new bodies, etc. While it may seem to be of limited use, this is not really the case. Suppose that one wishes to investigate the behavior of a jacket throughout its installation. First, one may wish to examine the loadout where the only thing of interest is the jacket itself. Here, a single body of "jacket" is needed. Next, however, one wants to consider the transportation. Here, a new body composed of the two parts: jacket and the barge would be of interest. Finally, during launch, two bodies, the jacket and barge would be used. The activity of bodies and parts is controlled with the command:


     &DESCRIBE ACTIVITY,  -OPTION1, -OPTION2 :SEL(1), :SEL(2), ..

and the available options are -BODY, -PART, -ACTIVE, and -INACTIVE. Here, one first uses either -BODY or -PART to specify what type of entity will be changed. Next, he specifies either -ACTIVE or -INACTIVE to specify the activity status. Any body (or part) selected after the second option will have its activity status set according to the option. As many options as one wants can be used on a single command. When a body is set inactive, its parts are not set inactive. There is no reason for this since only active bodies will be considered and this would make it more difficult to reactivate a body.

In addition to the above, the entire system can be redefined with the command:


     &DESCRIBE SYSTEM,  -BODY, BODY_NAME(1), PART(1), ..., PART(i), \
     -BODY, BODY_NAME(2), PART(1), ..., PART(i)

When this command is issued, all bodies and parts are set to inactive. Then the bodies named (BODY_NAME(1), ....) are either activated or defined, and the parts specified after the BODY_NAME(i) and before the next -BODY are activated and associated with the body BODY_NAME(i).