The ASME pressure vessel code is based on the observed safety of vessels. It is a real world working standard - its roots were born of failed vessels and dead operators in an era long before concepts like stress concentrations were even known. At its birth theory ran out when items got more complex than cylinders and spheres.
When rules were required for items like flanged and dished heads, models and full sized vessels were made and tested. The observations were turned into design rules. Vessels became safer through their efforts - but why did they work?
Later generations of vessel engineers developed magical tools like finite element analysis that allowed them to see stresses inside vessel components. They had to learn why we got away with weird rules like area replacement on nozzles. Different types of stresses were found to have different safety implications. Also, the location of the stress was very important.
They observed that a bending stress is less dangerous than a membrane stress - it is allowed to be 1.5x higher in VIII-1. Local stresses around nozzles or transitions could be higher than global stresses - sometimes 2x as high, depending on the location and cause. They wrote the VIII-2 rules and developed the stress linearization method.
More decades have passed. Finite element analysis is no longer a magical tool hiding in research labs. Many engineers and technologists now have access to it. But analyzing the stresses found in a pressure vessel is still a difficult task. Running a finite element model and looking for the highest stresses is not adequate.
This article is a guide to how the stress linearization tool works to separate stresses into membrane and bending. Examples are provided along with sample data and a spreadsheet based stress linearization tool. The programming code is explained in the appendixes and can be examined in the spreadsheet.
This article does not discuss whether the stresses are local or global and which allowable stresses should be used for where. This is a topic for a later article.
A Stress Classification Line or SCL is a straight line running from the inside to outside of a vessel. It is perpendicular to both the inside and outside surfaces. Finite Element Analysis provides the raw stress data at nodes along this line. The stress linearization tool takes the nodal data for the complex stress pattern found along this line and breaks it down into components:
Membrane - or average stress - always positive. You can not tell from stress classification whether the average stress is compressive or tension. This is the same problem as looking at Tresca or von-Mises plots. Magnitudes are provided but directions are missing. The membrane stress is usually equal to the code allowable stress for global areas and 1.5 as much for local areas.
Bending - is the difference in stress from inside to outside - always positive (a better definition follows).
Membrane + Bending - sum of the above two numbers - The ASME code allows the membrane + bending stress to be higher than the membrane only. In some local locations, the membrane + bending stress can be higher than the yield point for the material.
Peak - or highest stress found along the line. This is also always positive but not necessarily higher than the membrane + bending number. Peak stress is usually used to determine the fatigue life at the SCL.
ASME VIII-2 chart Figure 5.1 provides a guide to what the maximum allowed stresses are allowed for different locations. The combination of this chart and the output from the stress classification tool can be used to produce pass fail judgments on the component under study.
Warning - Figure 5.1 provides pass/fail criteria on vessel design, however thought is still required! Have the critical areas of the vessel been studied? Is the failure mechanism understood - some mechanisms such as snap through or external pressure buckling will not be detected by this analysis tool.
This spherical head has a heavy nozzle full penetration welded into its crown. To know if the design is adequate, the membrane and membrane + bending stresses are required. A 5& slice of the model will represent the whole head. The slice has a split line near the weld to ensure that when meshed, the nodes at this location line up straight - the Stress Classification Line.
The utility determined the membrane, bending, membrane + bending and peak stresses along the SCL. The membrane and membrane + bending stresses have been compared with the code allowed limits. The complex stresses found in the finite model have been reduced to pass/fail criteria.
It can also be seen that the stress classification line did not pass through the area of highest stresses - the user repeated the analysis through a higher stress area - see the following page.
Some Stress Linearization utilities can interpolate data through areas where no nodes are found - no split lines are required. Where to put the split lines and how to interpret the results are not in the scope of this report - this report is concerned with how the stress linearization utility works.
What is happening under the hood when your stress linearization utility presents results? (Per ASME VIII-2 5.A.4 or "Stress Integration Method") A spreadsheet stress linearization utility is attached that allows you to try this for your self.
The model might not provide nodes at the location where they are required. They might not exist, or the nodes might not line up in a straight line. In this case, the user splits the model to provide a line where a row of nodes stretching from the inside to the outside of the model.
The required location of the line might not be known until the model is run. Multiple lines might be required (Some programs provide tools to extract data where there are no nodes and without splitting models).
Caution - splitting a model to create stress classification locations can increase the number of surfaces with force loads. The forces that might be correct before the split can now be too large. Don't forget to re-check your reaction force balances after spitting a model!
The FEA program exports results for each node in the model. When using high order elements, intermediated nodes are also generated. The required data is:
The FEA program solves for the above stresses, but usually translates the results into vonMises or Tresca results which are more commonly viewed.
The utility included with this report is written to import data from Cosomos Designer. The code can be viewed by pressing Alt+F11 in Excel. It is up to the user to translate it to read other FEA outputs.
The data will probably be imported in nodal order. The program needs to arrange the nodes on the SCL from inside to outside. The stress linearization tool will determine the ends of the line, and sort the nodes between them.
The program finds the maximum and minimum x, y and z coordinates and decides which end will be the start (end i or inside) and which the finish (end j or outside). Usually the node closest to (0,0,0) is the start end (or end i). The distance from i to j is the length of the stress classification line or t. Half way between i and j is the center of the line.
Caution - the program might not order the data in the direction that you were expecting. If you are looking at graphical results, the stress classification line results might be the reverse of what was expected. Know which end of the line matches the inside of your vessel (coordinates for the lines can be found below the graph)...
The sample utility included with this report has a box that allows the direction of the line in the graph to be reversed (normal or reverse) - note: which end is chosen as end i or j has no impact on the calculated results.
When the data is imported, 6 stress components are read for each node on the SCL. The stress components are aligned with the global coordinate system of the model. The data for each node needs to be translated along the line ij. Instead of directions x, y and z, we now have N, T and H.
Theoretically, N stands for Normal, T Tangential and H Hoop stress directions. However, when the program reads and translates the data, the only guaranty is that the tangential stress is aligned to the SCL running from ij and N and T are at 90 degrees to it and each other.
Step 3b - interpolate the data points.
This utility uses cubic splines to interpolate more data points along the SCL. 71 equally spaced nodes are used to reduce integration errors caused by too few data points. See Appendix 3.
The distance between each node along the SCL is the dimension dx. dx usually varies between nodes depending on how the model is meshed. Sum (integrate) dx*Sn over the length of the SCL from i to j. Repeat for each of the other 5 local stress components. This produces 6 stress components (Snm, Stm, Shm, Tntm, Tnhm, Thtm). These 6 components are either fed into a Tresca routine (ASME VIII-2 2006 edition) or von Mises (ASME VIII-2 2007 edition). The output is a single value for the membrane stress.
Note - von Mises stresses can be 85% to 100% of the reported Tresca stress for the same input data. Von Mises stress criteria of VIII-2 2007 edition is less conservative than the 2006 Tresca criteria.
The membrane stress (and other intermediate stresses) can be found to the right of the output section of the sheet.
The bending component is perpendicular to the SCL. Only components Sn, Sh and Tnt are perpendicular to the line running from i to j. The program integrates the "linear varying portion" of these stresses along the line and produces Snb, Shb and Tnhb bending components. See the section "IntegrateMembraneAndBendingStress" in the code to see how the membrane and bending components are calculated.
The utility uses the three components to calculate the bending only stress.
The Pb stress has no real application in pressure vessels on its own. The code rules for determining the acceptability of stresses refer to membrane + bending stress...
The membrane + Bending stress needs to be calculated for each end of the SCL.
The end with the larger stress is reported. The utility included with this report interpolates the membrane + bending stress from i to j.
The actual stress at each node is known from step 3. The SCL utility calculates and plots the von Mises or the Tresca stress for each node. The peak stress is simply the highest calculated stress along the line from i to j.
Note: The peak stress can be higher or lower than the membrane + bending stress. Two pages follow - in the first, the peak stress in a wide flange beam under bending load is slightly less than the membrane + bending stress. In the second, the peak stress in a heavy wall pipe is much higher than the membrane + bending stress.
Note - the Pm and Pm+Pb stress is primarily used to determine if the stress is below the code allowed limits. Peak stress is normally used to predict the cycle life of the vessel.
The shear stress can be used to judge the quality of the SCL. For many pressure vessel applications, the shear stress is expected to be zero at the inner and outer surface of a pressure vessel. The following 2 examples show an SCL firstly perpendicular to the surface and in the second example slanted. The components of shear in the second example are clearly not zero at each end.
For this very simple example, the shear stresses could be used to pick between a good SCL and a bad one. Some locations on a vessel have surface shear stresses so this rule will not always work.
...and think about it. The SCL utility is just a tool - use your brain!
Laurence Brundrett P. Eng. July 2008
The data is imported from the FEA program in nodal order. The nodal order has no relation to the order that the elements are needed for analysis. The nodes must be arranged from inside (i) of the model to outside (j). The endpoints have to be found, and the nodes ranked from i to j.
This utility sorts the imported nodes to find the two nodes with the largest distance from all the other imported nodes. These nodes are the endpoints i and j. The node closer to the origin is assigned as i.
Note: the use of i as the inside and j as the outside is an arbitrary but convenient notation. Identical results will be obtained if i and j are reversed.
See the routine ChooseNodeij for more details. This routine can handle distorted stress classification lines and individual nodes that are located off the true SCL. Curved SCLs could also be used.
These routines are programmed into the sample excel spreadsheets. Von Mises is easy. Tresca is bear involving finding the principle stresses (Mohr's circle). Look for the routines VonMisesStress and TrescaStress
The quality of results obtained from stress classification are strongly dependent upon the number of nodes found on the SCL. When insufficient nodes are present, the linearization tool will typically over-report the membrane and the membrane+ bending stress.
The above membrane stress data is from the thick walled pipe sample. The stress linearization utility included with this report uses 71 node cubic spline interpolation along the imported SCL data. This original data set has 17 nodes from i to j. In the above graph, nodes are dropped from the data set to produce SCLs with 17, 9, 5, 3 and 2 nodes. Without interpolation 9 nodes are required to reduce the error level to below 5%. With cubic spline interpolation, this level of accuracy is reached with about 4-5 nodes. The more complex the stress pattern, the more pronounced the effect.
Typically the stresses in an object are highest at the surface. This effect causes the linearization tool to over-report stresses in the middle of the object when insufficient nodes are used. The end result is reported membrane and bending stresses that are higher than actual.
This is only one cause of bad results with few nodes. The other is the integration mathematics. Bending stresses calculations use both the distance from the center of the line and the magnitude at the point. These calculations are more accurate as the distance between points is decreased. Doubling the amount of data points on a SCL by simple linear interpolation between each given point increases the accuracy of the results. Using spline interpolation is better. For this utility 71 nodes are used to provide good quality graphs.
Here the results are shown for the same thick walled pipe sample. 17 nodes are read from the SCL. Cubic spline interpolation is used to setup new evenly spaced nodes along the line. The error from integration drops to less than 1% at 17 nodes. This error occurs for complex or simple stress patterns. Interpolation increases the accuracy of results.
71 nodes are used in the sample program. This corresponds to an expected integration error of 0.04% and provides plenty of nodes for a good graphing. An odd number of nodes are used to provide a middle node for the M+B graph. This same result using linear instead of cubic spline interpolation requires about 500 interpolated nodes.