A Scatter Diagram Approach to the Selection of Design Currents for Prediction of Marine Riser Vortex-Induced Vibration by Jessica Mary Donnelly B.S., Ocean Engineering Massachusetts Institute of Technology, 2002 SUBMITTED TO THE DEPARTMENT OF OCEAN ENGINEERING IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF MASTER OF SCIENCE IN OCEAN ENGINEERING AT THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY MASSACHUSETTS INSTITLUTE1 FEBRUARY 2004 OF TECHNOLOGY SEP 0 1 2005 2004 Massachusetts Institute of Technology All rights reserved LIBRARIES Signature of Author f Department ofi9ean Engineering January 16 th 2004 Certified By J. Kim Vandiver Professor of Ocean Engineering Thesis Supervisor Accepted By Michael Triantafyllou Professor of Ocean Engineering Chair, Departmental Committee on Graduate Studies Room 14-0551 MITLibraries Document Services 77 Massachusetts Avenue Cambridge, MA 02139 Ph: 617.253.2800 Email: docs@mit.edu http://Iibraries.mit.edu/docs DISCLAIMER OF QUALITY Due to the condition of the original material, there are unavoidable flaws in this reproduction. We have made every effort possible to provide you with the best copy available. If you are dissatisfied with this product and find it unusable, please contact Document Services as soon as possible. Thank you. The images contained in this document are of the best quality available. A Scatter Diagram Approach to the Selection of Design Currents for Prediction of Marine Riser Vortex-Induced Vibration by Jessica Mary Donnelly B.S., Ocean Engineering Massachusetts Institute of Technology, 2002 Submitted to the Department of Ocean Engineering on January 16 th, 2004 in Partial Fulfillment of the Requirements for the Degree of Master of Science in Ocean Engineering ABSTRACT This paper describes a scatter diagram approach for the classification of large numbers of current profiles for use in the prediction of riser fatigue damage due to vortex-induced vibration. Scatter diagrams have long been used to characterize the probability of various combinations of wave height and period, which are then used to assess wave forces. To predict VIV fatigue damage the designer needs to know which current profiles have the combined property of long regions of relatively constant velocity and relatively high speed. A sorting algorithm is proposed which searches every current profile for long regions of relatively constant flow speed. The probability of each length and speed combination is assessed and the data is used to populate the bins of the scatter diagram. The designer need only select relatively few representative profiles for detailed VIV analysis from those bins that would account for the most damage. The method is tested by making comparison to a brute force approach in which each of many thousands of profiles is evaluated for fatigue damage by running it in the SHEAR7 VIV response prediction program. This scatter diagram method could reduce the cost of risers by reducing the overconservatism that is introduced by the common practice of using an envelope design current profile. It also reduces the analysis time required for the brute force approach by allowing the designer to focus on only the most relevant profiles. Thesis Supervisor: Title: J. Kim Vandiver Professor of Ocean Engineering 2 Biographical Note Jessica Mary Donnelly received her B.S. from the MIT Department of Ocean Engineering in 2002. She is the recipient of undergraduate scholarship awards from Niagara Mohawk Power Corporation and the Society of Naval and Marine Engineers, and the winner of the 2002 Course 13 Student Engineering Association (13SEAs) Spirit of Ocean Engineering Undergraduate Award. She was named an MIT Presidential Fellow in 2003. Her first publication, "The Use of Velocity Profile Scatter Diagrams in the Prediction of Vortex-Induced Vibration," co-authored by J. Kim Vandiver, was included in the Proceedings of the 2003 Offshore Technology Conference, Houston, TX. 3 Acknowledgements First, I would like to thank my advisor, J. Kim Vandiver, whose wonderful teaching in the Ocean Engineering undergraduate program inspired me to study dynamics and vibration. I am grateful for his support and guidance, and for the opportunity to be the first person to develop an idea. I would like to thank the Trinidad and Tobago Ministry of Energy and Energy Industries, ExxonMobil, BP and Shell for providing the data used in this report. I also like to thank Alex Vandiver for the use of his Shear7-related perl scripts. I am indebted to the MIT Presidential Fellowship program, whose financial support allowed me to focus on my research during the first year of my graduate studies. I would like to thank the faculty and staff of the MIT Department of Ocean Engineering for a fine and personal education. I owe much of my success to the Bennett Park Montessori Center and the Buffalo Seminary of Buffalo, NY. The nurturing, freedom and opportunities they gave me allowed my education to be a wild adventure. I am grateful to Jonathan Reed for his support and patience during the most stressful times. I would like to thank my father and stepmother, Michael and Charmaine Donnelly, for their love and pride. Above all, I am indebted to my mother, Christina Donnelly who encouraged without pushing, helped me find the Divine Order in any situation, and always believed that I could achieve the impossible. 4 Table of Contents ABSTRACT ................................................................................................................................................... 2 BIOGRAPH ICAL NO TE ............................................................................................................................. 3 ACKNO W LEDGEM ENTS .......................................................................................................................... 4 TABLE OF CONTEN TS .............................................................................................................................. 5 NOM ENCLATURE ...................................................................................................................................... 7 1 INTRODUCTIO N ...................................................................................................................................... 8 M OT IV A TIO N ............................................................................................................................................... 8 PROPOSED SOLUTION ................................................................................................................................... 9 S c atte r p lo t ............................................................................................................................................. 9 Pa ram e ters............................................................................................................................................. 9 U T ILIT Y ..................................................................................................................................................... 10 11THEO RY ................................................................................................................................................. 11 OVERVIEW OF VIV THEORY AND TERMINOLOGY ...................................................................................... I I Strouhal Relationship .......................................................................................................................... I I Lo c k -in ................................................................................................................................................. 1 2 Lock-in criterion: reduced velocity bandwidth.................................................................................... 12 IDENTIFYING THE POWER-IN REGION ......................................................................................................... 13 111PRO CEDURE ........................................................................................................................................ 16 A L G O R IT H M .............................................................................................................................................. V A L IDA TIO N .............................................................................................................................................. P roced ure ............................................................................................................................................ R iser Mo d el.......................................................................................................................................... Da ta S e t ............................................................................................................................................... 16 18 18 19 19 IV RESULTS AND ANALYSIS ................................................................................................................ 20 VALIDATION RESULTS .............................................................................................................................. L en gth R a tio ........................................................................................................................................ F re quency ............................................................................................................................................ DAMAGE RATE DISTRIBUTION ................................................................................................................... CONSERVATISM ......................................................................................................................................... SCATTER DIAGRAM USE IN DESIGN ............................................................................................................ 20 20 21 22 22 23 V RECO M M ENDATIO NS ........................................................................................................................ 23 EXPLORE BIN SIZING .................................................................................................................................. Absolute vs. scaleable bin boundaries................................................................................................. Nu m b e r of b in s ..................................................................................................................................... OUTLIER PATTERNS ................................................................................................................................... M ULTI-MODE SITUATIONS ......................................................................................................................... 23 23 23 24 24 REFERENCES ............................................................................................................................................ 25 APPENDICES ............................................................................................................................................. 26 APPENDix A: USER GUIDE ....................................................................................................................... 26 Installing the sifterfiles ....................................................................................................................... 26 Preparinginput matrices ..................................................................................................................... 26 Running the program........................................................................................................................... 28 APPENDix B: SOURCE CODE ..................................................................................................................... 32 N ew runp r( fi les .................................................................................................................................... 3 2 N ew idw in n e r ........................................................................................................................................ 3 3 T rimran ge 6 .......................................................................................................................................... 3 5 Trimin .................................................................................................................................................. Trimlo w 2 .............................................................................................................................................. Trimh ig h 2 ............................................................................................................................................ S trca lc .................................................................................................................................................. 36 37 39 41 Idw ino u ts ............................................................................................................................................. 4 2 S ca tterprep2 ......................................................................................................................................... 4 3 Co lo rc o de 3 .......................................................................................................................................... 4 6 Nomenclature AID = amplitude to diameter ratio [-I CL= Lift Coefficient [-] CRH= high reduced velocity damping coefficient [-I CRL= low reduced velocity damping coefficient [-1 D = hydrodynamic diameter [in] dVR = reduced velocity bandwidth [-I naturalfrequency [Hz] fN= fs= vortex sheddingfrequency [Hz] fv= vibrationfrequency [Hz] HighVR= the region in which the reduced velocity is higher than the greatestfound in the power-in region LowVR= the region in which the reduced velocity is lower than the lowest found in the power-in region <Pi>= the average mechanical power dissipated over a vibration cycle [ft-lb/si QN= the modal force estimate [lb/mi RHigI= high reduced velocity dampingforce per unit length per unit speed [lb s/im2 RLoW= low reduced velocity dampingforce per unit length per unit speed [lb -s/im2 RN= the modal damping estimate [lb s/m2 Rsw= still water damping force per unit length per unit speed [lb s/im 2 St = Strouhal number [-] V(x)= local flow velocity [ft/s] Vc= the center velocity of a power-in region[ft/s] VIV = Vortex-Induced Vibration VMAX= the greatestflow speed included in a power-in region [ft/si VMJN the lowest flow speed included in a power-in region [ft/si VR,center= the reduced velocity associated with the center velocity of a power-in region [-i VR= reduced velocity [-] = x=relative position of measurementpoint on the riser[-] $(x) = local mode shape [-] w= angularfrequency of vibration[radians/s] p- fluid density [slugs/ft3 ] v= fluid kinematic viscosity [ft2/sec] 7 I Introduction Motivation Before a riser can be designed for deployment in a new location, information on the local currents must be obtained. Because this data often consists of tens of thousands of measured current profiles, it is difficult to know which ones are important for riser design. To overcome this difficulty, common industry practice is to prescribe a conservative design profile based on the data set. One type of design profile is the envelope of maximum values. This profile is found by plotting the maximum velocity found in the data set at each measured depth, and incorporating these points into a single "envelope profile". Therefore, at any point along the riser, the greatest velocity to be found at that depth in the entire data set will be used. Sometimes a "slab" of constant velocity is drawn in the region of the peak of the envelope profile, the area of highest velocities. An example of each method is shown in Figure 1. In this case, the slab's magnitude is equal to the highest velocity found in the data set. These conservative, artificial design profiles don't occur in nature, and usually result in much higher damage rates due to vortex-induced vibration (VIV) than any of the measured profiles. The slab profile is particularly inaccurate, as demonstrated by the damage rate comparisons shown in Figure 5. Any riser designed to this specification will be built far more conservatively and, therefore, more expensively than the actual currents in the region require. Slab Envelope Velocity Figure 1: envelope and slab design profiles 8 Another option is the "brute force" approach, which requires computing the riser response to each profile using a numerical analysis tool. However, this takes too long due to the large effort required to prepare and process the tens of thousands of individual program runs. This study alternative an presents method, which sorts the entire set of profiles in order to identify those that are likely to cause significant fatigue damage. This information can be used to create more meaningful design criteria. Proposed solution Scatter plot The solution proposed here is to sort all the profiles into a scatter diagram, which identifies those profiles likely to cause the greatest fatigue damage. The scatter diagram is based on two parameters known to be indicators of significant VIV response: the length of the VIV power-in region and its velocity. The scatter diagram has rows and columns representing ranges of the two parameters. In each bin space is recorded the number of profiles in the data set with that particular combination of length and velocity. A sample scatter diagram, including a color-coded overlay of fatigue life data found by SHEAR7, can be found in Figure 2. Once the profiles have been sorted into bins, the designer can select those bins most likely to be associated with significant damage rates due to VIV and use only their profiles to perform a more detailed analysis. Length Ratio 0.010.08 0.54- 0.91 0.92- 1.28 Center Velocity 2.04- 2.41 2.42- 2.79 (ftlsec) 2.80-3 .16 0.090.16 173 27 0.170.24 634 10 604 8 0.250.32 0.330.40 594 42 0.410.49 574 26 0.500.58 443 97 641 0.580.65 0.660.73 20g. 36 61 2 13 0 0 0 0 0 0 3 ______0 4.30-4467230 4.68-5.04 5.05-5 .42 5.43-5.91 0.740.82 __ _ 11 0 0 *0 0 0 0 0 0 0 0 0 0 10-100 0 100-1000 0 1000+ Figure 2: Scatter diagram for 15,000+ data set Color-coded using Shear7 fatigue life predictions Parameters Successful VIV prediction depends on identifying the power-in region of the dominant mode. A power-in region includes those portions of the riser in which the vortex shedding excites a particular mode at its resonant frequency. For this study, the two parameters chosen to characterize this region were the length of the power-in region deemed most likely to drive VIV and the flow speed that excites the dominant mode in that region. The length is expressed in terms of the non-dimensional length ratio, LR, which is the percentage of the riser length occupied by the power-in region. The flow velocity that excites the dominant mode is commonly called the center velocity, Vc. These parameters are shown in Figure 3 and defined in more detail in section II. 9 L Power-in Region Vc Figure 3: Length ratio and center velocity. Power-in region indicated by the heavier line Utility The scatter diagram is a familiar concept to ocean engineers because it has been used to present the probability of occurrence of wave height and period combinations, which are then used in wave force computations. Similarly, center velocity and length ratio can be used to define a two-parameter scatter diagram. If the current profile measurements are equally spaced in time, the scatter diagram presents the probability of occurrence of profiles that cause significant fatigue damage due to VIV. Furthermore, a relative damage rate ranking of the current profiles can be inferred from the scatter diagram without doing any further calculations, because profiles with larger center velocity and length ratio values tend to cause the greatest damage rates, when applied to a riser. 10 11 Theory Overview of VIV theory and terminology Strouhal Relationship Vortex-induced vibration is vibration of a body caused by the shedding of vortices by a passing fluid flow. When the body is cylindrical, as in the case of a typical oil riser, the Strouhal number relates the flow velocity and the vortex-shedding frequency, sometimes called the Strouhal frequency: = StV(x) D .'.'.'..'.''.'''.''....'.''.'..(1 ) fS (X) Where x is the location of a measurement point on the riser, V(x) is the local flow velocity, D is the riser's hydrodynamic diameter, fs(x) is the local shedding frequency, and St is the Strouhal number, which is a function of the Reynolds number. This relationship is also shown in Figure 4. Strouhal Frequency V fs PP_ Figure 4: Strouhal relationship The Strouhal number is approximately 0.2 for most riser-scale Reynolds numbers. 11 Lock-in When a riser is in a sheared (non-uniform) flow, V varies continuously along its length, and so the riser could be excited at an infinite number of frequencies. In random vibration at a large number of frequencies, the motions due to different modes tend to cancel each other out. However, risers in vortex-induced vibration often do not vibrate randomly. When the vortex shedding frequency coincides with one of the riser's natural frequencies, the resulting resonant motion may cause the vortex shedding in a section of the wake to synchronize; the shedding in that region will no longer occur with random phase. Portions of the riser with similar (but not identical) flow velocities may be "locked in" to this shedding regime. They will be forced to shed vortices at this dominant frequency, rather than at the Strouhal frequency that corresponds to their local flow velocity, and they do so in phase with the rest of the synchronized wake. This synchronized shedding causes the lift forces to act in concert, encouraging the riser to vibrate at resonance, which, in turn, keeps the wake locked in to its shedding regime. The shedding and vibration form a self-exciting system, and the sustained resonant response can produce a large accumulation of fatigue damage. This wake synchronization, or "lock-in" may only occur over a region in which the flow velocity varies slightly about the velocity whose Strouhal frequency corresponds to the excited natural frequency. This "ideal" velocity shall be called the center velocity, Vc. The center velocity is shown in Figure 3. The wake synchronization region is defined as the "power-in region" in this paper, because only in this region is the flow velocity sufficiently close to the center velocity that the vortex shedding acts as excitation to the mode. Lock-in criterion: the reduced velocity bandwidth A velocity may contribute to the power-in region if its corresponding reduced velocity, falls within an acceptable tolerance. The reduced velocity can be calculated using equation 2: VR, R(X)V (x) VR (x = f D ................................ (2) Here, fv is the vibration frequency, not the shedding frequency. However, in this analysis, it is assumed that they are the same, and both will be referred to as f. The greatest response will occur when the shedding and vibration frequencies are identical, and so this assumption builds conservatism into the scatter diagram method. 12 The allowable tolerance is often expressed in terms of a user-defined reduced velocity bandwidth, dVR, given by Equations 3 and 4: dV- AVR VRcenter VR~etr......... St R,center (3) AU C ..................... (4) dVR is a double-sided bandwidth, so a value of 0.4 means that a velocity can contribute to the power-in region if its reduced velocity is within +/- 20% of the center velocity's. The power-in region does not need to be a continuous segment of the riser length; it can include several separate regions. The percentage of the riser's length occupied by all segments of the power-in region is known as the length ratio, LR. It is shown in Figure 3. The center velocity and length ratio were chosen as the scatter diagram parameters because they are correlated to the damage rate, as demonstrated in Figure 5. The center velocity's correlation is particularly strong. The damage rate's correlation to the damage rate is less strong than the center velocity's for length ratios less than 0.3, but it is still good. The correlation between damage rate and length ratio is very weak for length ratios greater 0.3. This is because of the distribution of damage rate and length ratio in the data set: most of the cases with long length ratios in this data set had slow center velocities. This can be confirmed by examining the scatter diagram in Figure 2. There are very few high-velocity cases in the right-hand side of the scatter diagram, which corresponds to long length ratios. Slow currents excite lower modes with less curvature in their mode shapes and less frequent loading cycles, and so it makes sense that these cases should have lower damage rates. Identifying the power-in region The center velocity and length ratio parameters allow us to describe a given power-in region. However, the sifter method requires describing the dominant power-in region of each current profile. Identifying this is a complicated task; there are several different selection criteria in use. In this paper, it is assumed that the dominant power-in region will be the one with that dissipates the most mechanical power (averaged over a full cycle). The algorithm used for estimating this quantity is presented in section III. Criteria related to the maximum available lift force and maximum amplitude were also explored. However, the power criterion showed the best agreement with Shear7's length ratio and center velocity predictions, and so it was chosen to predict the dominant power-in region. 13 - I.. I I I I I - -~ correlation between damage rate and length ratio * U 9 15,000+ data set slab profile 8 7 6 5 E 4 3 2 -0 1 0 0 0 0.1 0 6 0.7 0.8 0.9 length ratio correlation between damage rate and center velocity U 9 * N 8 15,000+ data set slab profile 7 6 E 10 5 4 0 * ,ur. 3 0- ok - - 0.0 2- Vb * -. 4 I- .0. S0 L 0 6 7 center velocity (ft/sec) Figure 5: Correlation between sifter parameters and damage rate. 15,000+ real profiles and artificial slab design profile shown. 14 FOR EACH POINT IN PROFILE: Calculate VmAx, VMIN values for the active point's Vc Find all points with velocities between VmAx and VMIN, inclusive. (Points in the power-in region) Add up the incremental lengths associated with each point in the power-in region. Calculate the contribution of each point in the power-in region to the modal force estimate, and their sum, QNCompute vibration frequency from St , D, and V, Find all points in the profile less than VMIN (low-VR power-out region) Find the incremental contribution of each point in the low-VR region to the damping coefficient, dRNLOW. Sum to find RNLOW Find all points in the profile > VmAx (high-VR power-out region) Find maximum and minimum Vc and Length Ratio values in the entire data set. Divide evenly into bin boundaries. Find the incremental contribution of each point in the high-VR region to the damping coefficient, dRNHIGH. Sum to find RNHIGH- -A Calculate QN, RN and <Pi> for this center velocity FOR EACH BIN: Find all profiles whose parameter values fall within this bin. Count them. Record the count in the corresponding element in scatter diagram matrix. OUPUT: POPULATED SCATTER DIAGRAM Figure 6: Sifter algorithm conceptual flowchart 15 III Procedure A Matlab routine was developed to "sift" the velocity profiles into their respective bins in the scatter diagram. The general algorithm is described below and shown in the flow chart in Figure 6. The complete Matlab routines are included in Appendix B. The sifter algorithm's results were compared to those of the VIV prediction program Shear7 in order to validate the method. Algorithm The sifter attempts to identify the dominant power-in region of each velocity profile. It is assumed that the mode that dissipates the most mechanical power (averaged over a full cycle) will dominate. The sifter then finds the center velocity and length ratio for that power-in region and assigns the profile to a bin. Finally, the total number of profiles that fall within each bin is counted, populating the scatter diagram. In order to do this, each profile is subjected to the following procedure. In each profile, the sifter temporarily treats the velocity at each depth point as if it were the center velocity that corresponds to the dominant mode. Then it uses the reduced velocity bandwidth, dVR, specified by the user to find the bounding velocity values of the power-in region, VMAx and VMIN, given by equations 5 and 6: =V (1 - dVR) ........................... (5) VMa, =VC(1+ dVR) .......................... (6) V i The sifter then identifies all points in the velocity profile whose velocities are greater than VMIN and less than VMAx. The length ratio is found by calculating the percentage of the riser length occupied by these points. It is important that the velocity measurement points be relatively evenly spaced, because sparsely spaced sections may occupy too large a portion of the riser, and so may bias the length ratio calculation. To prevent this, the sifter interpolates the velocity profiles into closely spaced points. In order to identify the region most likely to excite the dominant mode, the average dissipated power, <Pi>,must be calculated for each center velocity and associated points in the power-in region. This is done using equation 7, and requires estimating the equivalent modal force and modal damping associated with the power in region. 2 < Pi >= N (7) 2RN Where QN is the modal force estimate and RN is the modal damping estimate. These are given by equations 8 and 9, respectively: QN f pCLDV 2 (X)(X)dX ........ (8) Lin2 16 Where Li, is the power-in region, p is the fluid density, CL is the average lift coefficient over the power-in region, and # is the local mode shape. The average lift coefficient, the diameter and the density of water are all assumed to be constant for the purpose of comparing potential power-in regions, and are moved outside of the integral. The QN integral is then evaluated numerically by adding up the incremental contributions from each point in the power-in region. Turning next to the estimation of modal damping: J& RN = (x)dx+ Rg(x)dA .... (9) HighVr LowVr LowVR is the portion of the power-out region over which the reduced velocity is lower than the minimum power-in reduced velocity, and HighVR is the portion of the power-out region in which the reduced velocity is higher than the maximum power-in reduced velocity. RLOw and RHIGH are the damping coefficients for the LowVR and HighVR regions, respectively. They are given by equations 10 and 11, respectively, [2,3]: RL. =r , + CRLpDU(x) CRHpU 2(X). =igh R ................ (10) ............... 0) Where CRL and CRH are the low and high reduced velocity damping coefficients, and are assumed to be 0.18 and 0.2, respectively [2,3]. o is the vibration frequency in radians per second. Because it is assumed that the vibration and vortex-shedding frequencies are identical, o is a function of the center velocity, as given in equation 12: _ 2RStVc D Where r, S (12) is the stillwater damping coefficient, and is given by equation 13 [2,3]: opTD 2 r =K +0.2 0 .............................. 2 2)A2 .(13) Dlo) D Where v is the kinematic viscosity of the fluid. Because no information about actual riser modes is known, a rigid cylinder mode shape is assumed for the power dissipation calculations. Therefore # is assumed to be 1.0 17 at all points on the riser. AID is the ratio of the vibration amplitude to the diameter, and is assumed to be 0.5 in all cases. The RN integrals are evaluated numerically by adding up the incremental modal damping contributions of each point in the high and low reduced velocity regions. Once QN and RN are known for each potential center velocity, the average dissipated power, <Pi>is calculated, using equation 7. The velocity producing the largest <Pi> value in each profile is assumed to drive the dominant power-in region, and is dubbed the center velocity, Vc, for that profile. It is assumed that if a real riser with many modes were exposed to the same velocity profile, the dominant VIV mode would correspond to approximately this center velocity. Once the "winning" power-in region has been identified for each profile, the profiles are sorted into bins according to their center velocities and length ratios. The bins are divided into ranges of each parameter. These ranges are divided evenly among a userspecified number of bins, with boundaries ranging between the minimum and maximum parameter values found in the data set. For each bin, the number of profiles that fall into that combination of parameter ranges is found, and that number is put into the scatter diagram. For each bin the number of occurrences divided by the total number of velocity profiles is the probability of occurrence of profiles that belong in that bin. Validation Procedure An objective of this paper is to show that a simple sifting algorithm requiring only the information contained in a current profile is able to identify that portion of the profile most likely to incur fatigue damage when applied to a real riser of a given diameter. To test the validity of this assertion, the response of a riser model to a large set of current profiles was computed using the VIV response prediction program SHEAR7, which was written at MIT [1]. The SHEAR7 program uses a more complex set of criteria and algorithms to find the mode with the greatest response to VIV and its corresponding power-in region. For every profile, SHEAR7 version 4.2d was used to determine the length ratio, center velocity and damage rate for the dominant mode. In all cases, Shear7 was forced to assume single-mode behavior, and was run using a double-sided reduced velocity bandwidth of 0.4. 18 Shear7's Vc and LR predictions were compared to the sifter's prediction in order to establish their validity. SHEAR7 does not directly report center velocity, but it does report a closely related quantity, the natural frequency of the dominant mode. Knowing the Strouhal number and the natural frequency, the center velocity corresponding to the center of the power-in region may be found by rearranging equation 1 as follows: V= Df . St .................. (14) SHEAR7 does report the length ratio for each power-in region. Also, Shear7's damage rate predictions were overlaid onto a populated scatter diagram in order to demonstrate that it truly sifts the most damaging profiles into the lower-right-hand corner of the diagram. Riser Model To run SHEAR7 requires that a real riser model be specified. For the purposes of this comparison, it was desirable to select a small-diameter riser. Such a riser would have closely-spaced natural frequencies and, therefore, a large number of modes that could be excited by the velocities found in typical current data. With a large number of potentially excited modes, the center velocity found by the sifter would be more likely to correspond to a natural frequency found by SHEAR7. A slender pinned-pinned riser model was used to meet these criteria. The riser had an outer diameter of 13.375 inches and inner diameter of 12.375 inches. It had a length of 3350 feet and a bottom tension of 300,000 lb.-f. Data Set This model was subjected to a set of current profiles associated with the Northern Brazil current rings. Over 15,000 Acoustic Doppler Current Profiles were obtained at one site over a period of more than one year. The site was near Trinidad. A consortium made up of Shell, ExxonMobil, and BP funded the measurement program, which is referred to by the acronym TACOS. The data included the passage of current rings on several occasions. More information on the rings of the North Brazil Current may be found on the web site of The Atlantic Oceanographic and Meteorological Laboratory (AOML) at http://www.aoml.noaa.gov/phod/nbc/index.html. Each profile consisted of measurements at 41 different depths up to 3350 feet. The current data were sparsely spaced near the bottom and more regularly spaced in the upper part of the profile. An acoustic Doppler Current Profiler was used to gather the data in the upper part of the water column. Moored current meters were used near the bottom. The profile was interpolated in regions with spatially sparse current measurements, in order to avoid bias in the sifter's length ratio predictions. 19 III -~-~-i--r~~---- - -- IV Results and Analysis Validation Results Length Ratio Figure 7 shows a comparison between the SHEAR7 and sifter length ratio predictions. Each point corresponds to one of the 15,000+ current profiles. The value of the length ratio as obtained by the sifter program is plotted against SHEAR7's length ratio prediction. Perfect agreement would cause all points to fall on a 45-degree line. The right-hand graph shows only those cases with fatigue lives under 100 years, and are grouped by symbols, which indicate the order of magnitude of the fatigue life, as predicted by SHEAR7. From these graphs, it is clear that while there are many cases that show large scatter, most of these correspond to profiles with very long predicted fatigue lives. Most of the points with very long fatigue lives correspond to current profiles with very low maximum velocities, which do not produce significant responses or fatigue damage, and so are not important in establishing design profiles for VIV. It is important to note that when the sifter program disagrees with Shear7's length ratio predictions in high-damage cases, it tends to over-estimate the length ratio compared to SHEAR7. This indicates that when the sifter program predicts a different power-in region, its prediction is more conservative than SHEAR7's. The predictions for profiles whose fatigue lives are short enough to be of concern agree very well. Length Ratio Comparision Length Ratio Comparison: Significant Damage Rate Cases Only 0.9SFull 0.8 -- 0.9 Set deal0.8 0.7C 0 00 00 0.7 00 00~o .0. 0 0.1 0 , , 0.2 0.3 0.2 , , 0.4 0.5 , 0 ,0 0 0.6 0.7 0.8 O 0*0 + 1-10 yr ~~~0.3 eu o1y 0.2 - 04 0.9 0 0.1 0.2 0.3 ideal g- 0.4 0. 0.6 0.7 0.8 Sifter Sifter Prediction Figure 7: Length ratio prediction comparison. The left graph shows all cases, while the right shows cases with fatigue lives under 100 years. 20 - ~0.1- 0.3 0.9 - I. Frequency Figure 8 shows a comparison between the dominant response frequency predictions. As in the length ratio comparison chart, each of the individual points corresponds to one of the 15,000+ profiles. The right-hand graph shows only cases with fatigue lives greater than 100 years, grouped by the order of magnitude of the predicted fatigue life according to SHEAR7. Again, the greatest scatter occurs in those cases with extremely long fatigue lives. A bias is apparent; the sifter seems to be consistently choosing higher frequencies than SHEAR7. This is acceptable because higher frequencies tend to produce higher damage rates, due to their mode shapes' greater curvature and their more frequent cycles. This bias ensures that any error in the sifter's prediction makes the prediction more conservative, which is desirable. Innocuous profiles are more likely to be sorted into a bin for which we predict higher damage rates, rather than dangerous profiles mistakenly being classified as harmless. For cases with very short fatigue lives, there is very good agreement. Frequency Comparision 1.2 0 N1 Frequency Comparison: Significant Damage Rate Cases Only -. 1.21 o 10-100yr Full Set * 1-10 yr 1 Ideal * up to 1 yr ZCO I . - - 1.4 -- 0, Ideal -I 0.8 0 0.8 Mia U 0.6 - t. 0.6 0.4 0.4 03ED C3 Y.2 0.2 0 0 0.2 0.4 0.6 0.8 1 1.2 1.4 Sifter Prediction (Hz) Q Q 0 0.2 0.4 0.6 0.8 sifter (Hz) 1 1.2 Figure 8: Frequency Prediction comparison. The left graph shows all cases, while the right shows cases with fatigue lives under 100 years. 21 1.4 Damage rate distribution As expected, the highest damage rate cases fall in the high velocity, higher length ratio portions of the scatter diagram, as shown in Figure 2. Sample velocity profiles are shown from one of the higher damage rate bins in Figure 9. The dominant power-in region of one profile is indicated by the heavy line, showing that higher damage rates do correspond to high center velocities. The profiles in this bin are examples of TACOS profiles that would contribute to high fatigue damage rate predictions. However, the profiles shown are not the worst profiles to be found in the data set. These profiles are only examples and should not be assumed to be valid as conservative design profiles for Northern Brazil current rings. 0.010.090.170.08 0.16 0.24 0.16-0.53 . . ... 0.54-0.91 ... 0.92- 1.28 1309 9 1.29- 1.66 1094 102!1.67- 2.03 2.04- 2.41 64 2.42-2.79 3 3 2.80 3.6 4 12 Velocity profile with power-in region . 0.9r 08L Profile 1 Profile 2 Profile 2's Power-In Region 0 Profile 3 ' Center Velocity (ftlsec) 0r6 Z 0.5 034 Power-in Region Zoom 0.2 0 . 0 0 0 12 3 4 5 Velocity (ft/sec) . 31.65- 3.921 3.93- 4.29 4.30- 4.67 4.68-5.04 5.06- 5.42 5.43- 6.91 Figure 9: Three profiles that fall within a high damage-rate bin. These profiles have high center velocities. Conservatism As mentioned earlier, the scatter diagram method incorporates conservatism in several ways. When it disagrees with Shear7, it tends to select higher winning frequencies and longer length ratios. This implies that the sifter errs in such a way that the profiles are put into bins that will produce higher damage rates than would be found by running the profile in a response prediction program. The method also assumes that the riser will always have a mode that could be excited by the center velocity found by the sifter program. This may not always be the case, and so, in reality, most profiles would result in lower fatigue damage. Making this assumption ensures that the profiles are classified by the worst damage rate they could inflict on a riser of a given diameter. 22 Scatter diagram use in design It is up to the designer to determine how to incorporate the scatter diagram into the design process. One method would be to use it to identify potentially dangerous profiles to be analyzed with a numerical analysis program such as Shear7. Based on the sample data set, the profiles that would result in the shortest fatigue lives are expected to have high center velocities and larger length ratios. These bins fall in the lower region of the scatter diagram (the high-velocity bins), especially those that fall on the right-hand side of that region (the longer length-ratio bins). Therefore, the designer could analyze these profiles first, and then move to bins with lower length ratios and center velocities until the damage rates found by running the profiles in the response prediction programs are acceptable. In the particular example shown in Figure 2, it would only be necessary to analyze at one quarter of the data set in order to capture all cases with fatigue lives of less than 10 years. The remaining profiles contribute a negligible amount to the total fatigue damage. For larger-diameter risers, which are far more common, the damage rates predicted for the same current profiles would be lower, due to their lower frequencies, and so even fewer bins and fewer cases would need to be examined in order to reach an acceptable damage rate. V Recommendations Several avenues remain open for further exploration. The choice of bin sizing, the pattern of the frequency outliers, and the behavior of the riser in multi-mode situations would all benefit from further inquiry. Explore bin sizing There are many options for bin sizing. For this study, evenly spaced bins were chosen, with scalable bounds ranging from the lowest parameter value found in the data set to the highest. This method was chosen purely for simplicity; other schemes may give more meaningful results. Absolute vs. scaleable bin boundaries In this study, scalable bounds were used when creating the scatter plot. However, if this method is to be used widely, it may be desirable to establish industry- or organizationstandard, absolute bin sizes. This would facilitate communication between different groups. Number of bins In this study, ten length ratio and fifteen center velocity bin divisions were used. This was selected for simplicity, but in the Matlab routine, the user specifies the number of bins. This leaves open the question of how many bins are needed to provide the most meaningful information in the scatter plot. When fewer bins are used, less resolution is provided, and more profiles will fall within a particular bin. Similarly, when more bins are used, there is greater resolution, causing fewer profiles to fall within a given bin. However, the natural frequencies of the riser place an absolute limit on the meaningfulness of the Vc parameter. A false precision 23 would be produced if center velocities that fall within the double-sided reduced velocity bandwidth were allowed to straddle more than one Vc bin. Also, including more bins is more time-consuming; it may require analyzing more profiles. Therefore, it is worth investigating alternate bin distributions, particularly when the riser's natural frequencies are known and can be used to specify the resolution of the center velocity bins. Outlier patterns In section IV, it was pointed out that for several profiles, Shear7 and the sifter chose different winning center velocities (corresponding to different modes). This does not create vulnerability in the method, because the sifter tends to give the more conservative results. However, because the sifter tends to choose a higher mode than Shear7, it is clear that this is not a random variation, and the source of the discrepancy should be explored in greater detail. It would be useful, for example, to find common properties of velocity profiles that are classified differently by Shear7 and the sifter. Some potential indicators in each profile include the Reynolds number, maximum profile velocity, center velocity, slope, length ratio, and competition between potential power-in regions. Once suitable indicators were determined, a check could be incorporated into the sifter routine, warning the user when a profile is likely to be classified differently. The designer could then choose to examine the profile in greater detail by running it through Shear7, or to simply accept the conservative results given by the sifter. Multi-mode situations This study was limited to single-mode response, assuming in each case that only one mode was excited, or that the response due to the other modes was negligible. It would be wise to explore the accuracy of this method in cases where there are two are more competing modes. If it proves insufficient and cannot be adapted to a multi-mode situation, a method should be developed for identifying profiles that are likely to have a multi-mode response, and warn the user, so that those cases can be examined more closely. 24 References 1. Vandiver, J.K., Lee, L., "Shear7 User Guide: 2002", MIT Department of Ocean Engineering, Cambridge. MA. 2. Venugopal, M.: "Damping and Response of a Flexible Cylinder in a Current", Ph.D. thesis, Dept. of Ocean Eng., MIT, USA, 1996. 3. Vikestad, K., Larsen, C.M., Vandiver, J.K., "Norwegian Deepwater Riser and Mooring: Damping of Vortex-Induced Vibrations", Proceedings of the 2000 Offshore Technology Conference, Paper No. 11998, Houston, TX, May 1-4, 2000. 25 Appendices Appendix A: User Guide Installing the sifter files The sifter algorithm is executed by a series of Matlab functions, stored as m-files. The following m-files are needed: * * * * * * * * * * * colorcode3.m idwinouts.m newidwinner.m newrunprofiles.m plotprofiles.m scatterprep2.m strcalc.m trimhigh2.m trimin.m trimlow2.m trimrange6.m These files are included in Appendix B, and may also be requested in m-file form from the author by sending email to imdonnelly@mit.edu. In order for these functions to be accessible to Matlab, their location must be added to Matlab's list of search paths. In Matlab Release 13, this can be accomplished using the following command: >>addpath path Where path is the path to the directory that contains the sifter's m-files. For example, in Windows, this may look like: >>addpath D:\matlab_sv13\toobox\viv The command may differ for other versions and platforms. For further assistance, see the Mathworks' web site at: http://www.mathworks.com/ Preparing input matrices The sifter algorithm takes as its inputs two scalar values, the riser diameter, D, and the double-sided reduced velocity bandwidth, dVr, and one matrix containing the current profile data, profilesall. The riser diameter should be given in inches. 26 The first column of the current profile matrix should contain the non-dimensional location (x/L) of the current measurements. Its values should vary from zero (the bottom of the riser) to 1 (the top of the riser). Each subsequent column should contain a current profile, giving the velocity in ft/second at each measurement point. So a matrix representing 100 profiles measured at 40 locations would contain 40 rows and 101 columns. An example for three profiles is shown below: x/L 0 0.25 0.5 0.75 1 Profile 1 Profile 2 Profile 3 (ft/sec) (ft/sec) (ft/sec) 0 0.25 0.75 1 1 0 0.3 1 1.75 1.5 0 0.1 0.5 0.75 1.5 (This table contains dummy data created to show the form of the input matrix. It does not correspond to any real profiles.) The optional fatigue-life color-coding function, colorcode3.m, requires a two-column input matrix. The first column should contain the profile number, and the second should contain that profile's damage rate (expressed in failures per year), as predicted by Shear7 or another VIV prediction program. An example for three profiles is shown below: Profile Damage Rate (failures/yr.) 1 2 3 1.5e-05 9.0e-01 1.5e+00 (This table contains dummy data created to show the form of the input matrix. It does not correspond to any real values.) 27 Running the program Producing a populated scatter diagram requires entering two of the sifter algorithm's Matlab commands, newrunprofiles, and scatterprep2. If a damage rate prediction is available for each profile, an optional color-coded fatigue life overlay may be applied using the function colorcode3. >> done = newrunprofiles(profilesall, D, dVr) >> [ScatMat, VcBounds, LrBounds, wheresit, check] = scatterprep2(numVcBins, numLrBins) >> [colors, rangedivs]= colorcode3(wheresit, damage, numrows, numcols) STEP 1 - IDENTIFY THE POWER-IN REGION: >> done = newrunprofiles(profilesall, D, dVr) Which identifies the dominant power-in region in each current profile given in the matrix profilesall, given a riser diameter, D, and double-sided reduced velocity bandwidth, dVr. The following data for each profile is appended to a tab-delimited text file called winnersinfo.txt: * * The profile number The first location (given non-dimensionally as x/L) at which the center velocity is found The center velocity in ft/sec The length ratio of the dominant power-in region The <Pi> value The Strouhal frequency (given in Hz) associated with the center velocity. * * * * Sample contents of winnersinfo.txt for a three-profile case are found below: Profile Location Vc LR <Pi> fs 1 2 3 0.922145 0.872564 0.95 1.532 1.957 1.625 0.2 0.18 0.09 0.023673 0.065874 0.015478 1.5 2.3 1.7 (This table contains dummy data created to show the form of the winnersinfo.txt file. It does not correspond to any real results.) The variable done will be assigned the value 1 if the sifter worked properly. 28 STEP 2 - POPULATE THE SCATTER DIAGRAM: >> [ScatMat, VcBounds, LrBounds, wheresit, check] = scatterprep2(numVcBins, numLrBins) This command requires the user to input the number of center velocity bins, numVcBins, and the number of length ratio bins, numLrBins. The scatter diagram bin values are given in the matrix ScatMat, and also output to the tab-delimited text file scatterinfo.txt. The contents of ScatMat for a scatter diagram with three rows and two columns would look like: 1 1 1 1 2 3 (This table contains dummy data created to show the form of the scatterinfo.txt file. It does not correspond to any real results.) The boundary values of the center velocity and length ratio bins are given in the vectors VcBounds and LrBounds, respectively. This data is also output to the tab-delimited text files VcBounds.txt and LrBounds.txt, respectively. The wheresit matrix contains the bin locations of each profile. Its first column is a vector containing the numbers of the profiles that were sifted into that bin. The vector is padded with zeros to ensure that each vector is of the same length. The contents of each bin in the first row are given, followed by the contents of each bin in the second row, and so on. The wheresit matrix produced for the same scatter diagram with three rows and two columns would be made up of the following columns: Bin 1,1 Bin 1,2 Bin 2,1 Bin 2,2 29 Bin 3,1 Bin 3,2 And it could look like: 3 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 1 5 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 7 8 9 0 0 0 0 0 0 (This table contains dummy data created to show the form of the wheresit matrix. It does not correspond to any real results.) So Bin 1,1 would contain profile #3, and Bin 3,2 would contain profiles #7, 8 and 9. This data is also output to a tab-delimited text file, wheresit.txt. Check is a scalar variable. Its value should equal the number of current profiles, if the sifting was performed successfully. STEP 3- ADDING OPTIONAL COLOR-CODED FATIGUE LIFE OVERLAY Adding a color-coded fatigue life overlay requires the use of the following command: >> [colors, rangedivs]= colorcode3(wheresit, damage, numrows, numcols) Where wheresit is the matrix output by scatterprep2,damage is the damage rate matrix, and numrows and numcols are the number of rows and columns in the scatter diagram, respectively. The outputs of colorcode3 are the colors matrix (also output as a tab-delimited text file, colorcodes.txt), and the rangedivs vector. Rangedivs gives the boundary values for each color code. Colorcode3 is set to give the following 5 ranges: Fatigue Life Range Less than 1 yr. 1-10 yrs 10-100 yrs 100-1000 yrs More than 1000 yrs Color Code 1 2 3 4 5 (The number of ranges and their boundary values can be changed by editing the file colorcode3.m.) 30 Corresponding to rangedivs values of: 0 1 10 100 1000 10A256 10A256 is chosen as an upper bound, rather than infinity for practical programming purposes. Colors is a matrix of the same dimensions as ScatMat, and contains the color code assigned to each bin. The contents of Colors for a scatter diagram with three rows and two columns would look like: 1 3 2 4 3 5 (This table contains dummy data created to show the form of the colorcodes.txt file. It does not correspond to any real results.) 31 Appendix B: Source Code Newrunprofiles function [done] = newrunprofiles(profilesall, D, dVr) %NEWRUNPROFILES takes a user-inputed velocity matrix, and runs each profile %through idwinner. % inputs are: % user-inputed velocity matrix, profilesall, % with 1st column x/L of each node, and one column for each profile velocity. % Profiles must have top line (probability info for S7) removed when % input into matlab. % D should be the diameter in inches. % dVr is the double-sided reduced % velocity bandwidth % Jessica Mary Donnelly % MIT Department of Ocean Engineering % 11/18/02 % set "did I work?" value done=0; % set density and kinematic viscosity for seawater at 50 degrees rho= 1.9924; %lbsecA2/ftA4 nu=1.4572* 10A(-5); % set index vector Index = profilesall(:,1); ProfileNum = 1; for n=2:(size(profilesall, 2)) P(:, 1)=Index; P(:,2)=profilesall(:,n); %find winner, selecting for dissipated power newidwinner(P, ProfileNum, D, dVr, rho, nu); ProfileNum = ProfileNum + 1; end done=1; 32 Newidwinner function [Voutmat, WinnerInfo, Powerin] = newidwinner(Vall, ProfileNum, D, dVr, rho, nu) %NEWIDWINNER identifies the center velocity candidate with % the greatest <Pi> value (dissipated power) % It estimates the length ratio of this region and its center velocity % Plots full velocity profile in *s, highlighting the power-in region in red % Also estimates the vortex-shedding frequency that corresponds to Vcwinner, % so that it can be compared to the output of Shear7 % D should be in inches % Includes the option to interpolate linearly, so that regions where % data-collection is sparse don't falsely dominate % outputs WinnerInfo to tab-delimited file 'winnersinfo.txt' % Vall should be a matrix with 1st column = position along riser % and 2nd column = velocity profile % Motivation: to estimate the power-in region of a riser experiencing % vortex-induced vibration. % Jessica Mary Donnelly % MIT Department of Ocean Engineering % 11/18/02 % updated 11/25/02 % Set plotting mode flag plotflag = 0; % 0=plot nothing % 1=plot profile with power-in region highlighted, % 2=plot profile w/ power-in region, without asking for profile name % Set interpolation flag intflag = 1; % 0=no interpolation 1=linear interpolation interpinterv = 0.05; % set interval for interpolation in terms of x/L % Interpolate profile if intflag==l Dpth=Vall(:, 1); Vlcty=Vall(:,2); % Create fake velocity profile that won't need interpolation FalseVlcty=ones(length(Vlcty), 1); % Interpolate Depth using fake velocity profile [DpthInterp, Vinterp] = interpm(Dpth, FalseVIcty, interpinterv); % Interpolate for Velocity corresponding to interpolated depth Vlctylnt=interp 1 (Dpth,Vlcty,Dpthlnterp); Vprofile = VlctyInt; indx = DpthInterp; 33 else Vprofile = Vall(:,2); indx = Vall(:,1); end Vnew(:, 1)=indx; Vnew(:,2)=Vprofile; % Create a new matrix by tacking the the velocity vector to the index vector. Voutmat(:,1) = indx; % col. 1= position along riser Voutmat(:,2) = Vprofile; % col. 2= velocities % Find power-in region, Qn, Rnh & Rnl [Lin, Qn, Rnh, Rnl] = trimrange6(Vnew, D, dVr, rho, nu); % find total Rn Rn=Rnl+Rnh; % if Rn=O, then Vc must be zero, and so this profile can't be the winner. %(since Vc=O means no excitation). % BUT, if Rn=O, then QnA2/2Rn gives div by zero error. %To keep the algorithm for selecting these cases, % let's make Rn incredibly large. for n=1:length(Rn) if Rn(n)==O Rn(n)= 10A256; end end % Find <pi> PiDisp = (Qn.^2)./(2.*Rn); Voutmat(:,3) = Lin'; Voutmat(:,4) = PiDisp'; % col. 3= length ratio % col. 4= dissipated power % Find the greatest dissipated power (the "winner") [PiWinner, indxWinner] = max(abs(PiDisp)); LocationWinner = Voutmat(indxWinner, 1); VcWinner = Voutmat(indxWinner, 2); LratioWinner = Voutmat(indxWinner, 3); % Plot the full profile, highlighting the power-in region if ((plotflag==1)I(plotflag==2)) 34 [done] = plotprofiles(Vall, VcWinner, dVr, Vprofile, Vnew, Powerin, plotflag); end % Calculate the strouhal number and frequency associated with each profile's VcWinner Str = strcalc(VcWinner, D, nu); ODft=D/12; WinFreq = Str.*VcWinner/ODft; WinnerInfo = [ProfileNum, LocationWinner, VcWinner, LratioWinner, PiWinner, WinFreq]; % Output WinnerInfo to file filename = 'winnersinfo.txt'; filename = idwinouts(Winnerlnfo,filename); Trimrange6 function [Lin, Qn, Rnh, Rnl] = trimrange6(V, D, dVr, rho, nu) %TRIMRANGE6 trims a velocity matrix V = [position, velocity] to only those vectors % within +/- dVr of Vci (each point along the vector). % Calculates length ratio within the trimmed region, and the Qn, Rnh & Rnl values % associated with each Vci. % No reordering of the velocity vector is necessary. % Motivation: to estimate the power-in region of a riser experiencing % vortex-induced vibration. % Jessica Mary Donnelly % MIT Department of Ocean Engineering % 11/18/2002 % Split position and velocity from the V matrix position = V(:,I); velocity = V(:,2); % Establish boundary values (vector values- same length as Viordered) Vmin = velocity.*(1-(dVr/2)); Vmax = velocity.*(1+(dVr/2)); % Calculate Qn and dLength for power-in region [Lin, Qn] = trimin(velocity, position, Vmin, Vmax, D, dVr, rho); % Get strouhal number for each potential center velocity 35 Str = strcalc(velocity, D, nu); % Find the length and Rnl of the low-Vr region [lowregion, Rnl] = trimlow2(velocity, position, Vmin, D, dVr, rho, nu, Str); % Find the length and Rnh of the high-Vr region [highregion, Rnh] = trimhigh2(velocity, position, Vmax, D, dVr, rho, nu, Str); Trimin function [Lin, Qn] = trimin(velocity, position, Vmin, Vmax, D, dVr, rho) %TRIMIN finds the length and location of the portion of the power-in region. %It also calculates Qn for this region % Motivation: to estimate the power-in region of a riser experiencing % vortex-induced vibration. % Jessica Mary Donnelly % MIT Department of Ocean Engineering % 11/18/02 ODft=D/12; % Select all values >= Vmin and <= Vmax and calculate the length ratio for i= 1:length(velocity) % Find the points in the profile withing +/- dVr/2 of Vci [index, onesies]=find((velocity>=Vmin(i))&(velocity<=Vmax(i))); % Starting the j loop (within the INDEX vector) %runningtotal(i) = 0; dX(1)=0; % Find the length before the first point in the INDEX vector, if it isn't the % first point in the velocity profile if (index(1) -= 1) dX(1) = (position(index(1))-position(index(1)-i))/2; end for j=2:length(index) dX(j)=0; % check for continuity between current point and previous point if (index(j-1)==(index(j)-1)) % Add the length between the current point and the previous point dX(j) = dX(j) + (position(index(j))-position(index(j-1))); % if not continuous else 36 % Add half length after previous point dX(j) = dX(j) + (position(index(j-1)) - position(index(j-1)+1))/2; % Add half length before current point dX(j) = dX(j) + (position(index(j)) - position(index(j)-1))/2; % end if statement end % end j loop (j = location in index loop) end - % Add length after last point in the INDEX vector, if it isn't the last point % in the velocity vector if (index(length(index)) ~= length(position)) dX(length(index)) = dX(length(index)) + (position(index(length(index))+1) position(index(length(index))))/2; end %Note the power-in length for each i (location in velocity profile) Lin(i)=sum(dX); % calculate dQn for each pt. in power-in region for k =1:length(index) dQn(k)=O.5*rho*ODft*velocity(index(k)).^2*dX(k); end Qn(i)=sum(dQn); % end i loop (i = location in velocity profile) end Trimlow2 function [lowregion, Rnl] = trimlow2(velocity, position, Vmin, D, dVr, rho, nu, Str) %TRIMLOW2 finds the length and location of the portion of the power-out region % in which the reduced velocity is lower than in the power-in region. It also % calculates Rn for this region (Rnl) % Motivation: to estimate the power-in region of a riser experiencing % vortex-induced vibration. % Jessica Mary Donnelly % MIT Department of Ocean Engineering % 11/18/02 ODft=D/12; w=2*pi*Str.*velocity./ODft; %velocity(i) = present Vc candidate % Calculate w, Rcm 37 Rcm=w*ODftA2/nu; % Select all values less than Vmin and calculate the length ratio for i= 1: length(velocity) % Find the points in the profile less than -dVr/2 of Vci [index, onesies]=find(velocity<Vmin(i)); if isempty(index) Rnl(i)=O; dLength(i)=O; else % Starting the j loop (within the INDEX vector) %runningtotal(i) = 0; dX(1)=O; % Find the length before the first point in the INDEX vector, if it isn't the % first point in the velocity profile if (index(1) ~ 1) dX(1) = (position(index(1))-position(index(1)-i))/2; end for j=2:length(index) dX(j)=0; % check for continuity between current point and previous point if (index(j-1)==(index(j)-1)) % Add the length between the current point and the previous point dX(j) = dX(j) + (position(index(j))-position(index(j-1))); % if not continuous else % Add half length after previous point dX(j) = dX(j) + (position(index(j-1)) - position(index(j-1)+1))/2; % Add half length before current point dX(j) = dX(j) + (position(index(j)) - position(index(j)-1))/2; end % end if statement end % end j loop (j = location in index loop) - % Add length after last point in the INDEX vector, if it isn't the last point % in the velocity vector if (index(length(index)) -= length(position)) dX(length(index)) = dX(length(index)) + (position(index(length(index))+1) position(index(length(index))))/2; end % end if statement %Note the length of the region for each i (location in velocity profile) dLength(i)=sum(dX); if w(i)==0 Rn(i)=0; 38 else % calculate dRnl for each pt. in low-Vr region for k = 1:length(index) dRnl(k)= (0.18*rho*ODft*velocity(index(k)) + 0.5*rho*pi*ODftA2*(2*sqrt(2)/sqrt(Rcm(i)) + 0.1)).*dX(k); end Rnl(i)=sum(dRnl); end %end if w(i) statement end %end if isempty(index) statement % end i loop (i = location in velocity profile) end lowregion = (abs(dLength))'; %changed here Trimhigh2 function [highregion, Rnh] = trimhigh2(velocity, position, Vmax, D, dVr, rho, nu, Str) %TRIMHIGH2 finds the length and location of the portion of the power-out region % in which the reduced velocity is higher than in the power-in region. It also % calculates Rn for this region (Rnh) % Motivation: to estimate the power-in region of a riser experiencing % vortex-induced vibration. % Jessica Mary Donnelly % MIT Department of Ocean Engineering % 11/18/02 ODft=D/12; w=2*pi*Str.*velocity./ODft; %velocity(i) = present Vc candidate % Select all values greater than Vmax and calculate the length ratio for i= 1:length(velocity) % Find the points in the profile withing +/- dVr/2 of Vci [index, onesies]=find(velocity>Vmax(i)); if isempty(index) Rnh(i)=0; dLength(i)=0; else % Starting the j loop (within the INDEX vector) %runningtotal(i) = 0; 39 dX(1)=0; % Find the length before the first point in the INDEX vector, if it isn't the % first point in the velocity profile if (index(1) ~ 1) dX(1) = (position(index(1))-position(index(1)-i))/2; end for j=2:length(index) dX(j)=0; % check for continuity between current point and previous point if (index(j-1)==(index(j)-1)) % Add the length between the current point and the previous point dX(j) = dX(j) + (position(index(j))-position(index(j- 1))); % if not continuous else % Add half length after previous point dX(j) = dX(j) + (position(index(j-1)) - position(index(j-1)+1))/2; % Add half length before current point dX(j) = dX(j) + (position(index(j)) - position(index(j)-1))/2; end % end if statement end % end j loop (j = location in index loop) % Add length after last point in the INDEX vector, if it isn't the last point % in the velocity vector if (index(length(index)) -= length(position)) dX(length(index)) = dX(length(index)) + (position(index(length(index))+1) - position(index(length(index))))/2; end % end if statement %Note the length of the region for each i (location in velocity profile) dLength(i)=sum(dX); if w(i)==0 Rnh(i)=0; else % calculate dRnl for each pt. in high-vr region for k =1:length(index) dRnh(k)= (0.2 *rho*(velocity(index(k)))A2/w(i)).*dX(k); end Rnh(i)=sum(dRnh); end % end if w(i) statement end %end if isempty(index) statement % end i loop (i = location in velocity profile) end highregion = (abs(dLength))'; %changed here 40 Plotprofiles function [done] = plotprofiles(Vall, VcWinner, dVr, Vprofile, Vnew, Powerin, plotflag) %PLOTPROFILES plots velocity profiles with their power-in regions % highlighted. % Jessica Mary Donnelly % MIT Department of Ocean Engineering % 11/18/02 % plot full profile plot (Vall(:,2),Vall(:,1),'k') % if linearly interp., will be same as plotting Vnew hold on plot (Vnew(:,2),Vnew(:,1),'k*') % find points on power-in region (again) % Find the points in the profile withing +/- dVr/2 of VcWinner Vcmin = VcWinner*(1-dVr/2); Vcmax = VcWinner*(1+dVr/2); [index, onesies]=find((Vprofile>=Vcmin)&(Vprofile<=Vcmax)); % Plot points of power-in region on profile plot Powerin=[Vnew(index, 1) Vnew(index,2)]; plot (Powerin(:,2),Powerin(:,1),'r*') % add title and labels if plotflag==1 % prompt user for profile name profilename = input('What is the name of this velocity profile? \n(Please put it in ... single quotes)\n'); titlewords = strcat(Velocity profile :', profilename,' with power-in region'); title(titlewords); else title('Velocity profile with power-in region'); end xlabel('Velocity (ft/sec)') ylabel('Relative position along riser') Strcalc function [St] = strcalc(Vcs, D, nu) %STRCALC estimates the Strouhal numbers that correspond to % Vcs, using the Str vs. Re table that corresponds to Shear7 Str code % 200. % Vcwinner must be entered in ft/sec % D should be entered in inches 41 % Motivation: to estimate the power-in region of a riser experiencing % vortex-induced vibration. % Jessica Mary Donnelly % MIT Department of Ocean Engineering % 10/29/02 % set outer diameter of the cylinder ODin=D; % Change this line ODft=D/12; % Str curve 200 from S7- corresponds to rough cylinder Curve200=[0 0.17; 20000 0.17; 30000 0.18; 40000 0.19; 50000 0.2;... 60000 0.21; 70000 0.22; 80000 0.23; 90000 0.24; 100000 0.24;... 110000 0.24; 120000 0.24; 130000 0.24; 140000 0.24;... 150000 0.24; 160000 0.24; 170000 0.24; 180000 0.24;... 190000 0.24; 200000 0.24; 210000 0.24; 220000 0.24;... 230000 0.24; 240000 0.24; 300000 0.24; 400000 0.24;... 500000 0.24; 600000 0.24; 800000 0.24; 1000000 0.24;... 2000000 0.24; 3000000 0.24; 4000000 0.24]; % Find Re for each Vc Re=(Vcs*ODft)./nu; % Find strouhal number for each Vcwinner by interpolation St=interp1(Curve200(:, 1), Curve200(:,2), Re); Idwinouts function [FileName] = idwinouts(WinnerInfo, FileName) %IDWINOUTS appends the contents of the WinnerInfo to a text file, % resulting in a tab-delimited file. This can then be exported to % Excel, making it easy to compare the results of idwinner to Shear7 % Motivation: to estimate the power-in region of a riser experiencing % vortex-induced vibration. % Jessica Mary Donnelly % MIT Department of Ocean Engineering % 4/6/2002 FID=fopen(FileName,'a'); % opens file in "append" mode fprintf(FID,'%f\t',WinnerInfo); fprintf(FID,'\n'); % saves contents of WinnerInfo with % tabs between entries % adds carriage return fclose(FID); % releases file 42 Scatterprep2 function [ScatMat, VcBounds, LrBounds, wheresit, check] = scatterprep2(numVcBins, numLrBins) %SCATTERPREP2 loads the output file from idwinner8noplot, and counts the % number of profiles (rows) that fit into numVcBins bins in center % velocity and numLrBins in length ratio. % Outputs the probability matrix (in # of profiles), the matrix of Vc bin % boundaries, and the matrix of Lratio bin boundaries. % Also outputs a matrix with the indices of the profiles included in each bin % Jessica Mary Donnelly % MIT Department of Ocean Engineering % Undergraduate, class of 2002 % 4/20/2002 % load the winnersinfo matrix from the output file load winnersinfo.txt; % trim it to just the profile number, Vc, and Lratio CountMat(:,1) = winnersinfo(:,1); % profile number % Vc winner CountMat(:,2) = winnersinfo(:,3); CountMat(:,3) = winnersinfo(:,4); % Length Ratio numprofiles = length(winnersinfo(:,3)); % Establish upper & lower bounds VcMax=max(winnersinfo(:,3)); VcMin=min(winnersinfo(:,3)); LrMax = max(winnersinfo(:,4)); LrMin=min(winnersinfo(:,4)); % Establish bin intervals VcInt = (VcMax-VcMin)/numprofiles; LrInt = (LrMax-LrMin)/numprofiles; % Make bin boundary matrices VcBounds = linspace(VcMin, VcMax,(numVcBins+1))'; LrBounds = linspace(LrMin, LrMax,(numLrBins+ 1))'; % Create empty ScatMat matrix ScatMat = zeros(numVcBins, numLrBins); % Start search loop 43 % set ColCount, the variable that keeps track of which column we're in % in the wheresit matrix, which tells us which bin we're refering to ColCount = 1; % initialize the wheresit matrix wheresit = zeros(numprofiles, (numVcBins*numLrBins)); % i loop - one i is one Vc row i= 1; % set the (1,1) bin number = find( (CountMat(:,2)>=VcBounds(1))&(CountMat(:,2)<=VcBounds(2)) (CountMat(:,3)>=LrBounds(1))&(CountMat(:,3)<=LrBounds(2))); & j=1; if (isempty(number)) padded=zeros(numprofiles, 1); else padded = wextend('c', 'zpd', number, (numprofiles-length(number)), ''); end wheresit(:,ColCount) = padded; % set the rest of the (1,j) row - each j refers to an Lratio column for j=2:(numLrBins) ColCount = ColCount+ 1; number = find( (CountMat(:,2)>=VcBounds(1))&(CountMat(:,2)<=VcBounds(2)) (CountMat(:,3)>LrBounds(j))&(CountMat(:,3)<=LrBounds(j+ 1))); & ScatMat(1,1)= ScatMat(1,1) + length(number); if (isempty(number)) padded=zeros(numprofiles, 1); else padded = wextend(c', 'zpd', number, (numprofiles-length(number)), ''); end wheresit(:,ColCount) = padded; ScatMat(1,j)= ScatMat(1,j) + length(number); end % set the rest of the rows for i=2:(numVcBins) j=1; & ColCount = ColCount+ 1; number = find( (CountMat(:,2)>VcBounds(i))&(CountMat(:,2)<=VcBounds(i+ 1)) (CountMat(:,3)>=LrBounds(j))&(CountMat(:,3)<=LrBounds(j+ 1))); if (isempty(number)) padded=zeros(numprofiles, 1); 44 else padded = wextend(c', 'zpd', number, (numprofiles-length(number)), 'r'); end wheresit(:,ColCount) = padded; for j=2:(numLrBins) ColCount = ColCount+1; number = find( (CountMat(:,2)>VcBounds(i))&(CountMat(:,2)<=VcBounds(i+1)) (CountMat(:,3)>LrBounds(j))&(CountMat(:,3)<=LrBounds(j+1))); if (isempty(number)) padded=zeros(numprofiles, 1); else padded = wextend('c', 'zpd', number, (numprofiles-length(number)), 'r'); end wheresit(:,ColCount) = padded; ScatMat(i,j)= ScatMat(ij) + length(number); end end check = sum(sum(ScatMat)); % Output ScatMat to file FID=fopen('scatterinfo.txt','a'); % opens file in "append" mode for counter = 1:size(ScatMat,1) fprintf(FID,'%f\t',ScatMat(counter,:)); fprintf(FID,'\n'); end fclose(FID); % saves contents of ScatMat with % tabs between entries % adds carriage return % releases file % Output whereis to file FID=fopen('wheresit.txt','a'); % opens file in "append" mode for counter2 = 1:size(wheresit,1) fprintf(FID,'%f\t',wheresit(counter2,:)); fprintf(FID,'\n'); end % saves contents of wheresit with % tabs between entries % adds carriage return 45 & ScatMat(i,j)= ScatMat(ij) + length(number); % releases file fclose(FID); % Output VcBounds to file FID=fopen('VcBounds.txt','a'); % opens file in "append" mode for counter3 = 1:length(VcBounds) fprintf(FID,'%f\t',VcBounds(counter3,:)); fprintf(FID,'\n'); end fclose(FID); % saves contents of VcBounds with % tabs between entries % adds carriage return % releases file % Output LrBounds to file FID=fopen('LrBounds.txt','a'); % opens file in "append" mode for counter4 = 1:length(LrBounds) fprintf(FID,'%f\t',LrBounds(counter4,:)); % saves contents of LrBounds with % tabs between entries % adds carriage return fprintf(FID,'\n'); end % releases file fclose(FID); Colorcode3 function [colors, rangedivs] = colorcode3(wheresit, damage, numrows, numcols) %COLORCODE3 takes the wheresit matrix (one column for each bin, containing % the index numbers of the profiles that fall within that bin), and a two% column matrix containing the profile index (1st column) and the damage rate % associated with that profile found by shear7. It calculates the average and % maximum damage rates belonging to each bin, and then sorts each bin into a % particular damage range, assigning it a color code number according to its % damage rate. % A damage flag is set, allowing the user to choose whether to color code by the % average damage rate value or the maximum damage rate value. In the interests % of conservatism, this value is pre-set ot use the maximum value. % An output flag is set, allowing the user to specify whether to output the % color codes for "colors" as a matrix, or to also output it to a file. It is set % to output the color codes to a file by default. % The bins are calculated: creating 5 bins between the max and min damage rates. 46 % Look into absolute bin boundaries for the future (standardization). % The outputs are a numrows by numcols matrix, containing the color code for each bin, % (i.e., formatted to be the same shape as the scatterplot matrix and a horizontal vector, % rangedivs, containing the boundaries of each damage rate range. % Jessica Mary Donnelly % MIT Department of Ocean Engineering % 4/29/2002 % Flag average damage rate vs. max damage rate for color coding damageflag=2; % 1=use average value 2=use maximum value % Flag the ouput type outputflag=3; % 1=output color codes only 2=not used in this version % 3=output color codes only, to file % Set number of color codes. I use 5. numcodes = 5; % Start the damage rate-finding procedure % initialize dmgvals matrix dmgvals = zeros((size(wheresit, 1)),2); % Start j loop (j= each bin) for j=1:(size(wheresit,2)) % changed from 1 % strip out column w/ indices of profiles in bin tempcolumn=wheresit(:,j); tempdmg=zeros(length(tempcolumn), 1); %make empty column to hold damage values % Start i loop (i= each element in vector) for i=1:(length(tempcolumn)) if tempcolumn(i)-=0 tempdmg(i)=damage(tempcolumn(i),2); else tempdmg(i)=0; end % end if loop % end i loop end tempdmg; % put bin's mean & max damage rate in dmgvals matrix dmgvals(j,1) = mean(tempdmg); dmgvals(j,2) = max(tempdmg); end % endj loop % Calculate the damage range dividers 47 % Establish bounding method % bounding = 1; % sets even bins in damage rate bounding =0; % uses order of magnitude in fatigue life if bounding ==1 % Establish upper & lower bounds dmgMax=max(dmgvals(:,damageflag)); dmgMin=min(dmgvals(:,damageflag)); % Make bin boundary matrices rangedivs = linspace(dmgMin, dmgMax,(numcodes+1))'; elseif bounding ==0 dmgvals = 1 ./dmgvals; % coverts damage rate to fatigue life rangedivs = [0 1 10 100 1000 10A256]'; %assumes 5 bins end % start color-coding process % start k loop (k= each bin in damage matrix) %for k= 1: (size(dmgvals, 1)) for k=1:(numrows*numcols) if ( (dmgvals(k,damageflag)>= rangedivs(1)) & (dmgvals(k,damageflag) < rangedivs(2))) colors(k)= 1; elseif ( (dmgvals(k,damageflag)>= rangedivs(2)) & (dmgvals(k,damageflag) < rangedivs(3))) colors(k)=2; elseif ( (dmgvals(k,damageflag)>= rangedivs(3)) & (dmgvals(k,damageflag) < rangedivs(4))) colors(k)=3; elseif ( (dmgvals(k,damageflag)>= rangedivs(4)) & (dmgvals(k,damageflag) < rangedivs(5))) colors(k)=4; elseif ( (dmgvals(k,damageflag)>= rangedivs(5)) & (dmgvals(k,damageflag) <= rangedivs(6))) colors(k)=5; else colors(k)=0; end % endif loop end % end k loop colors %debug % reformat colors to numrows by numcols matrix colors = reshape(colors,numcols,numrows)'; % output color codes to file, if desired if (outputflag==3) 48 size(colors, 1) FID=fopen('colorcodesformatted.txt','a'); % opens file in "append" mode for counter = 1: size(colors, 1) fprintf(FID,'%f\t',colors(counter,:)); % saves contents of wheresit with % tabs between entries fprintf(FID,'\n'); end % end for loop % adds carriage return fclose(FID); % releases file end % end if loop 49