Bläddra i källkod

svg -> eps & emf

master
gtheler 6 år sedan
förälder
incheckning
7d00f6bb77
35 ändrade filer med 4797 tillägg och 3141 borttagningar
  1. +12
    -0
      .gitignore
  2. Binär
      B.emf
  3. +1414
    -1027
      B.eps
  4. Binär
      M.emf
  5. +1386
    -1530
      M.eps
  6. +1
    -1
      SN.eps
  7. Binär
      acumulada.emf
  8. +1252
    -0
      acumulada.eps
  9. +1
    -1
      case-scls.eps
  10. +1
    -1
      case-spectrum.eps
  11. +1
    -1
      dominio-continuo.eps
  12. +1
    -1
      dominio-estructurado.eps
  13. +1
    -1
      dominio-no-estructurado.eps
  14. +1
    -1
      error-M-vs-cpu-small.eps
  15. +1
    -1
      error-M-vs-cpu.eps
  16. +1
    -1
      error-MB-vs-cpu-small.eps
  17. +1
    -1
      error-MB-vs-cpu.eps
  18. +1
    -1
      infinite-pipe.eps
  19. +1
    -1
      isometric.eps
  20. +1
    -1
      make.sh
  21. +106
    -105
      nafems4-emf.md
  22. Binär
      nafems4-eps.docx
  23. +106
    -105
      nafems4-eps.md
  24. +1
    -1
      nureg1.eps
  25. +1
    -1
      nureg2.eps
  26. +1
    -1
      nureg3.eps
  27. +1
    -1
      simple.eps
  28. +1
    -1
      slab-1-0.eps
  29. +1
    -1
      slab-1-1.eps
  30. +1
    -1
      slab-2-0.eps
  31. +1
    -1
      slab-2-1.eps
  32. Binär
      spectrum.emf
  33. +498
    -351
      spectrum.eps
  34. +1
    -1
      valve-scls1.eps
  35. +1
    -1
      weldolet-scls.eps

+ 12
- 0
.gitignore Visa fil

@@ -17,3 +17,15 @@ nafems4.docx
nafems4.epub
nafems4.nafems4.docx
nafems4.odt
nafems4-eps.html
nafems4-eps.tex
nafems4-eps.pdf
nafems4-eps.epub
nafems4-eps.docx
nafems4-eps.odt
nafems4-emf.html
nafems4-emf.tex
nafems4-emf.pdf
nafems4-emf.epub
nafems4-emf.docx
nafems4-emf.odt

Binär
B.emf Visa fil


+ 1414
- 1027
B.eps
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


Binär
M.emf Visa fil


+ 1386
- 1530
M.eps
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 1
SN.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:56 2019
%%CreationDate: Wed Oct 16 09:15:19 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

Binär
acumulada.emf Visa fil


+ 1252
- 0
acumulada.eps
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 1
case-scls.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:42 2019
%%CreationDate: Wed Oct 16 09:15:05 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 3

+ 1
- 1
case-spectrum.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:42 2019
%%CreationDate: Wed Oct 16 09:15:05 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
dominio-continuo.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:44 2019
%%CreationDate: Wed Oct 16 09:15:07 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 3

+ 1
- 1
dominio-estructurado.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:45 2019
%%CreationDate: Wed Oct 16 09:15:09 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 3

+ 1
- 1
dominio-no-estructurado.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:47 2019
%%CreationDate: Wed Oct 16 09:15:10 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 3

+ 1
- 1
error-M-vs-cpu-small.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:48 2019
%%CreationDate: Wed Oct 16 09:15:12 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
error-M-vs-cpu.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:49 2019
%%CreationDate: Wed Oct 16 09:15:12 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
error-MB-vs-cpu-small.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:47 2019
%%CreationDate: Wed Oct 16 09:15:11 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
error-MB-vs-cpu.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:48 2019
%%CreationDate: Wed Oct 16 09:15:11 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
infinite-pipe.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:49 2019
%%CreationDate: Wed Oct 16 09:15:13 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 3

+ 1
- 1
isometric.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:50 2019
%%CreationDate: Wed Oct 16 09:15:14 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
make.sh Visa fil

@@ -9,7 +9,7 @@ for i in m4 pandoc pandoc-crossref pandoc-citeproc xelatex locale grep wc; do
done

# the document name is the current directory name
name=`basename $PWD`
name=`basename $PWD`-emf
if [ ! -e ${name}.md ]; then
echo "error: ${name}.md does not exist"
exit 1

+ 106
- 105
nafems4-emf.md Visa fil

@@ -13,7 +13,7 @@

First of all, please take this text as a written chat between you an me, i.e. an average engineer that has already taken the journey from college to performing actual engineering works using finite element analysis and has something to say about it. Picture yourself in a coffee bar, talking and discussing concepts and ideas with me. Maybe needing to go to a blackboard (or notepad?). Even using a tablet to illustrate some three-dimensional results. But always as a chat between colleagues.

Please also note that I am not a mechanical engineer, although I shared many undergraduate courses with some of them. I am a nuclear engineer with a strong background on mathematics and computer programming. I went to college between 2002 and 2008. Probably a lot of things have changed since then---at least that is what these “millennial” guys and girls seem to be boasting about---but chances are we all studied solid mechanics and heat transfer with a teacher using a piece of chalk on a blackboard while we as students wrote down notes with pencils on paper sheets. And there is really not much that one can do with pencil and paper regarding mechanical analysis. Any actual case worth the time of an engineer need to be more complex than an ideal canonical case with analytical solution.
Please also note that I am not a mechanical engineer, although I shared many undergraduate courses with some of them. I am a nuclear engineer with a strong background in mathematics and computer programming. I went to college between 2002 and 2008. Probably a lot of things have changed since then---at least that is what these “millennial” guys and girls seem to be boasting about---but chances are we all studied solid mechanics and heat transfer with a teacher using a piece of chalk on a blackboard while we as students wrote down notes with pencils on paper sheets. And there is really not much that one can do with pencil and paper regarding mechanical analysis. Any actual case worth the time of an engineer needs to be more complex than an ideal canonical case with analytical solution.

Whether you are a student or a seasoned engineer with many years of experience, you might recall from first year physics courses the introduction of the [simple pendulum](https://en.wikipedia.org/wiki/Pendulum) as a case study\ ([@fig:simple]). You learned that the period does not depend on the hanging mass because the weight and the inertia exactly cancelled each other. Also, that [Galileo](https://en.wikipedia.org/wiki/Galileo_Galilei) said (and [Newton proved](https://www.seamplex.com/wasora/realbook/real-012-mechanics.html)) that for small oscillations the period does not even depend on the amplitude. Someone showed you why it worked this way: because if\ $\sin \theta \approx \theta$ then the motion equations converge to an [harmonic oscillator](https://en.wikipedia.org/wiki/Harmonic_oscillator). It might have been a difficult subject for you back in those days when you were learning physics and calculus at the same time. You might have later studied the [Lagrangian](https://en.wikipedia.org/wiki/Lagrangian_mechanics) and even the [Hamiltonian](https://en.wikipedia.org/wiki/Hamiltonian_mechanics) formulations, added a [parametric excitation](https://en.wikipedia.org/wiki/Parametric_oscillator) and analysed the [chaotic double pendulum](https://www.seamplex.com/wasora/realbook/real-017-double-pendulum.html). But it was probably after college, say when you took your first son to a swing on a windy day ([@fig:hamaca]), that you were faced with a real pendulum worth your full attention. Yes, this is my personal story but it could have easily been yours as well. My point is that the very same distance between what I imagined studying a pendulum was and what I saw that day at the swing (namely that the period _does_ depend on the hanging mass) is the same distance between the mechanical problems studied in college and the actual cases encountered during a professional engineer’s lifetime ([@fig:pipes]). In this regard, I am referring only to technical issues. The part of dealing with clients, colleagues, bosses, etc. which is definitely not taught in engineering schools (you can get a heads up in business schools, but again it would be a theoretical pendulum) is way beyond the scope of both this article and my own capacities.

@@ -21,7 +21,7 @@ Whether you are a student or a seasoned engineer with many years of experience,
![Simple pendulum](simple.emf){#fig:simple width=35%}\
![Real pendulum](hamaca.jpg){#fig:hamaca width=60%}

A simple pendulum from college physics courses and a real-life pendulum. Hint: the swing’s period _does_ depend on the hanging mass. See the [actual video](hamaca.webm)
A [simple pendulum from college physics courses](https://www.seamplex.com/wasora/doc/realbook/012-mechanics/) and a real-life pendulum. Hint: the swing’s period _does_ depend on the hanging mass as shown in\ <https://youtu.be/Q-lKK4A2OzA>
:::::

::::: {#fig:pipes}
@@ -31,7 +31,7 @@ A simple pendulum from college physics courses and a real-life pendulum. Hint: t
An infinitely-long pressurised thick pipe as taught in college and an isometric drawing of a section of a real-life piping system
:::::

Like the pendulums above, we will be swinging back and forth between a case study about fatigue assessment of piping systems in a nuclear power plant and more generic and even romantic topics related to finite elements and computational mechanics. These latter regressions will not remain just as abstract theoretical ideas. Not only will they be directly applicable to the development of the main case, but they will also apply to a great deal of other engineering problems tackled with the finite element method (and its cousins, [@sec:formulations]).
Like the pendulums above, we will be swinging back and forth between a case study about fatigue assessment of piping systems in a nuclear power plant and more generic topics related to finite elements and computational mechanics. These latter regressions will not remain just as abstract theoretical ideas. Not only will they be directly applicable to the development of the main case, but they will also apply to a great deal of other engineering problems tackled with the finite element method (and its cousins, [@sec:formulations]).

\medskip

@@ -47,28 +47,24 @@ There are some useful tricks that come handy when trying to solve a mechanical p


One of the most important ones to use your _imagination_. You will need a lot of imagination to “see” what it is actually going on when analysing an engineering problem. This skill comes from my background in nuclear engineering where I had no choice but to imagine a [positron-electron annihilation](https://en.wikipedia.org/wiki/Electron%E2%80%93positron_annihilation) or an [spontaneous fission](https://en.wikipedia.org/wiki/Spontaneous_fission). But in mechanical engineering, it is likewise important to be able to imagine how the loads “press” one element with the other, how the material reacts depending on its properties, how the nodal displacements generate stresses (both normal and shear), how results converge, etc. And what these results actually mean besides the pretty-coloured figures.^[A former boss once told me “I need the CFD” when I handed in some results. I replied that I did not do computational fluid-dynamics but computed the neutron flux kinetics within a nuclear reactor core. He joked “I know, what I need are the _Colors For Directors_, those pretty-coloured figures along with your actual results to convince the managers.”]
This journey will definitely need your imagination. We will see equations, numbers, plots, schematics, CAD geometries, 3D\ views, etc. Still, when the theory says “thermal expansion produces normal stresses” you have to picture in your head three little arrows pulling away from the same point in three directions, or whatever mental picture you have about what you understand thermally-induced stresses are. What comes to your mind when someone says that out of the nine elements of the [stress tensor](https://en.wikipedia.org/wiki/Cauchy_stress_tensor) ([@sec:tensor]) there are only six that are independent? Whatever it is, try to practice that kind of graphical thoughts with every new concept. Nevertheless, there will be particular locations of the text where imagination will be most useful. I will bring the subject up.
This journey will definitely need your imagination. We will take a look at equations, numbers, plots, schematics, CAD geometries, 3D\ views, etc. Still, when the theory says “thermal expansion produces normal stresses” you have to picture in your head three little arrows pulling away from the same point in three directions, or whatever mental picture you have about what you understand thermally-induced stresses are. What comes to your mind when someone says that out of the nine elements of the [stress tensor](https://en.wikipedia.org/wiki/Cauchy_stress_tensor) ([@sec:tensor]) there are only six that are independent? Whatever it is, try to practice that kind of graphical thoughts with every new concept. Nevertheless, there will be particular locations of the text where imagination will be most useful. I will bring the subject up then and again.

Another heads up is that we will be digging into some mathematics. Probably they would be be simple and you would deal with them very easily. But chances are you do not like equations. No problem! Just ignore them for now. Read the text skipping them, it should work as well.
Łukasz Skotny says [you do not need to know maths to perform finite-element analysis](https://enterfea.com/math-behind-fea/). And he is right, in the sense that you do not need to know thermodynamics to drive a car. It is fine to ignore maths for now.
But, eventually, a time will come in which it cannot (or should not) be avoided. If you want to go to space, you will definitely have to learn thermodynamics.

So here comes another experience tip: do not fear equations. Even more, keep exercising. You have used [differences of squares](https://en.wikipedia.org/wiki/Difference_of_two_squares) in high school, didn’t you?. You know (or at least knew) how to [integrate by parts](https://en.wikipedia.org/wiki/Integration_by_parts). Do you remember what [Laplace transforms](https://en.wikipedia.org/wiki/Laplace_transform) are used for? Once in a while, perform a division of polynomials using [Ruffini’s rule](https://en.wikipedia.org/wiki/Ruffini's_rule). Or compute the second [derivative of the quotient of two functions](https://en.wikipedia.org/wiki/Quotient_rule). Whatever. It should be like doing crosswords on the newspaper. Grab those old physics college books and read the exercises at the end of each chapter. It will pay off later on.
Another heads up is that we will be digging into some mathematics. Probably they would be simple and you would deal with them very easily. But chances are you do not like equations. No problem! Just ignore them for now. Read the text skipping them, it should work as well.
Anyhow, here comes another experience tip: keep exercising mathematics. You have used [differences of squares](https://en.wikipedia.org/wiki/Difference_of_two_squares) in high school, didn’t you?. You know (or at least knew) how to [integrate by parts](https://en.wikipedia.org/wiki/Integration_by_parts). Do you remember what [Laplace transforms](https://en.wikipedia.org/wiki/Laplace_transform) are used for? Once in a while, perform a division of polynomials using [Ruffini’s rule](https://en.wikipedia.org/wiki/Ruffini's_rule). Or compute the second [derivative of the quotient of two functions](https://en.wikipedia.org/wiki/Quotient_rule). Whatever. It should be like doing crosswords on the newspaper. Grab those old physics college books and solve the exercises at the end of each chapter. All the effort will pay off later on.

One final comment: throughout the text I will be referring to “your favourite FEM program.” I bet you do have one. Mine is [CAEplex](https://caeplex.com) (it works on top of [Fino](https://www.seamplex.com/fino)). We will be using it to perform some tests and play a little bit. And we will also use it to think about what it means to use a FEM program to generate results that will eventually end up in a written project with your signature. Keep that in mind.
One final comment: throughout the text I will be referring to “your favourite FEM program.” I bet you do have one. Mine is [CAEplex](https://caeplex.com) (it works on top of [Fino](https://www.seamplex.com/fino), which is free and open source). We will be using it to perform some tests and play a little bit. And we will also use it to think about what it means to use a FEM program to generate results that will eventually end up in a written project with your signature. Keep that in mind.


## Case study: reactors, pipes and fatigue {#sec:case}

Piping systems in sensitive industries like nuclear or oil & gas should be designed and analysed following the recommendations of an appropriate set of codes and norms, such as the [ASME\ Boiler and Pressure Vessel Code](https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code).
This code of practice was born during the late\ XIX century, before finite-element methods for solving partial differential equations were even developed. And much longer before they were available for the general engineering community. Therefore, much of the code assumes design and verification is not necessarily performed numerically but with paper and pencil (yes, like in college). However, it still provides genuine guidance in order to ensure pressurised systems behave safely and properly without needing to resort to computational tools. Combining finite-element analysis with the ASME code gives the cognisant engineer a unique combination of tools to tackle the problem of designing and/or verifying pressurised piping systems.
This code of practice was born during the late\ 19th century, before finite-element methods for solving partial differential equations were even developed. And much longer before they were available for the general engineering community. Therefore, much of the code assumes design and verification is not necessarily performed numerically but with paper and pencil (yes, like in college). However, it still provides genuine guidance in order to ensure pressurised systems behave safely and properly without needing to resort to computational tools. Combining finite-element analysis with the ASME code gives the cognisant engineer a unique combination of tools to tackle the problem of designing and/or verifying pressurised piping systems.

In the years following [Enrico Fermi](https://en.wikipedia.org/wiki/Enrico_Fermi)’s demonstration that a self-sustainable [fission reaction](https://en.wikipedia.org/wiki/Nuclear_fission) chain was possible (actually, in fact, after WWII was over), people started to build plants in order to transform the energy stored within the atoms nuclei into usable electrical power. They quickly reached the conclusion that high-pressure heat exchangers and turbines were needed. So they started to follow codes of practise like the aforementioned ASME\ B&PVC. They also realised that some requirements did not fit the needs of the nuclear industry. But instead of writing a new code from scratch, they added a new chapter to the existing body of knowledge: the celebrated [ASME Section\ III](https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code#ASME_BPVC_Section_III_-_Rules_for_Construction_of_Nuclear_Facility_Components).

After further years passed by, engineers (probably the same people that forked section\ III) noticed that fatigue in nuclear power plants was not exactly the same as in other piping systems. There were some environmental factors directly associated to the power plant that were not taken into account by the regular ASME code. Again, instead of writing a new code from scratch, people decided to add correction factors to the previously-amended body of knowledge. This is how (sometimes) knowledge evolves, and it is this kind of complexities that engineers are faced with during their professional lives. We have to admit it, it would be a very difficult task to re-write everything from scratch every time something changes.

Actually, this article does not focus on a single case study but on some general ideas regarding analysis of fatigue in piping systems in nuclear power plants. There is no single case study but a compendium of ideas obtained by studying many different systems which are directly related to the safety of a real nuclear reactor.

![Three-dimensional CAD model for the piping system of\ [@fig:isometric]](real-piping.png){#fig:real-life width=75%}

### Nuclear reactors
@@ -98,7 +94,7 @@ For the case study, as the loads come principally from operational loads, the AS

![A fatigue or $S$-$N$ curve for two steels.](SN.emf){#fig:SN width=75%}

It should be noted that the fatigue curves are obtained in a particular load case, namely purely-periodic and one-dimensional, which cannot be directly generalised to other three-dimensional cases. Also, any real-life case will be subject to a mixture of complex cycles given by a stress time history and not to pure periodic conditions. The application of the curve data implies a set of simplifications and assumptions that are translated into different possible “rules” for composing real-life cycles. There also exist two safety factors which increase the stress amplitude and reduce the number of cycles respectively. All these intermediate steps render the analysis of fatigue into a conservative computation scheme ([@sec:kinds]). Therefore, when a fatigue assessment performed using the fatigue curve method arrives at the conclusion that “fatigue is expected to occur after ten thousand cycles” what it actually means is “we are sure fatigue will not occur before ten thousand cycles, yet it may not occur before one hundred thousand or even more.”
It should be noted that the fatigue curves are obtained in a particular load case, namely purely-periodic and one-dimensional, which cannot be directly generalised to other three-dimensional cases. Also, any real-life case will be subject to a mixture of complex cycles given by a stress time history and not to pure periodic conditions. The application of the curve data implies a set of simplifications and assumptions that are translated into different possible “rules” for composing real-life cycles. There also exist two safety factors which increase the stress amplitude and reduce the number of cycles respectively. All these intermediate steps render the analysis of fatigue into a conservative computation scheme. Therefore, when a fatigue assessment performed using the fatigue curve method arrives at the conclusion that “fatigue is expected to occur after ten thousand cycles” what it actually means is “we are sure fatigue will not occur before ten thousand cycles, yet it may not occur before one hundred thousand or even more.”

## Solid mechanics, or what we are taught at college

@@ -142,7 +138,10 @@ What does this all have to do with mechanical engineering? Well, once we know wh

### An infinitely-long pressurised pipe {#sec:infinite-pipe}

Let us proceed to our second step, and consider the infinite pipe subject to uniform internal pressure already introduced in\ [@fig:infinite-pipe]. Actually, we are going to solve the mechanical problem on an infinite hollow cylinder, which looks like pipe. This case is usually tackled in college courses, and chances are you already solved it. In fact, the first (and simpler) problem is the “thin cylinder problem.” Then, the “thick cylinder problem” is introduced (the one we solve below), which is slightly more complex. Nevertheless, it has an analytical solution which is derived [here](https://www.seamplex.com/fino/doc/pipe-linearized/). For the present case, let us consider an infinite pipe (i.e. a hollow cylinder) of internal radius $a$ and external radius $b$ with uniform mechanical properties---Young modulus $E$ and Poisson’s ratio $\nu$---subject to an internal uniform pressure $p$.
Let us proceed to our second step, and consider the infinite pipe subject to uniform internal pressure already introduced in\ [@fig:infinite-pipe]. Actually, we are going to solve the mechanical problem on an infinite hollow cylinder, which looks like pipe. This case is usually tackled in college courses, and chances are you already solved it. In fact, the first (and simpler) problem is the “thin cylinder problem.” Then, the “thick cylinder problem” is introduced (the one we solve below), which is slightly more complex. Nevertheless, it has an [analytical solution](https://www.seamplex.com/fino/doc/pipe-linearized/). For the present case, let us consider an infinite pipe (i.e. a hollow cylinder) of internal radius $a$ and external radius $b$ with uniform mechanical properties---Young’s modulus $E$ and Poisson’s ratio $\nu$---subject to an internal uniform pressure $p$.

What follows is more or less what we are taught in school: some equations with a brief explanation of the results. And then we move on to the next subject.


#### Displacements

@@ -159,7 +158,7 @@ Remember that when any solid body is subject to external forces, it has to react
What does this mean? Well, that overall the whole pipe expands a little bit radially with the inner face being displaced more than the external surface (use your imagination!). How much?

1. linearly with the pressure, i.e. twice the pressure means twice the displacement, and
2. inversely proportional to the Young Modulus\ $E$ divided by $1+\nu$, i.e. the more resistant the material, the less radial displacements.
2. inversely proportional to the Young’s Modulus\ $E$ divided by $1+\nu$, i.e. the more resistant the material, the less radial displacements.

That is how an infinite pipe withstands internal pressure.

@@ -183,9 +182,9 @@ We can note that
That is all what we can say about an infinite pipe with uniform material properties subject to an uniform internal pressure\ $p$. If

* the pipe was not infinite (say any real pipe that has to start and end somewhere), or
* the cross-section of the pipe is not constant along the axis (say there is an elbow or even a reduction), or
* the cross-section of the pipe was not constant along the axis (say there is an elbow or even a reduction), or
* there was more than one pipe (say there is a tee), or
* the material properties are not uniform (say the pipe does not have an uniform temperature but a distribution), or
* the material properties were not uniform (say the pipe does not have an uniform temperature but a distribution), or
* the pressure was not uniform (say because there is liquid inside and its weight cannot be neglected),

\noindent then we would no longer be able to fully solve the problem with paper and pencil and draw all the conclusions above. However, at least we have a start because we know that if the pipe is finite but long enough or the temperature is not uniform but almost, we still can use the analytical equations as approximations. After all, [Enrico Fermi](https://en.wikipedia.org/wiki/Enrico_Fermi) managed to reach criticality in the [Chicago Pile-1](https://en.wikipedia.org/wiki/Chicago_Pile-1) with paper and pencil. But what happens if the pipe is short, there are branches and temperature changes like during a transient in a nuclear reactor? Well, that is why we have finite elements. And this is where what we learned at college pretty much ends.
@@ -196,6 +195,7 @@ That is all what we can say about an infinite pipe with uniform material propert

Besides infinite pipes (both thin and thick), spheres and a couple of other geometries, there are no other cases for which we can obtain analytical expressions for the elements of the stress tensor. To get results for a solid with real engineering interest, we need to use numerical methods to solve the equilibrium equations. It is not that the equations are hard _per se_. It is that the mechanical parts we engineers like to design (which are of course more complex than cylinders and spheres) are so intricate that render simple equations into monsters which are unsolvable with pencil and paper. Hence, finite elements enter into the scene.


### The name of the game {#sec:formulations}

But before turning our attention directly into finite elements (and leaving college, at least undergraduate) it is worth some time to think about other alternatives. Are we sure we are tackling your problems in the best possible way? I mean, not just engineering problems. Do we take a break, step back for a while and see the whole picture looking at all the alternatives so we can choose the best cost-effective one?
@@ -233,6 +233,7 @@ Before proceeding, I would like to make two comments about common nomenclature.

The second one is more philosophical and refers to the word “simulation” which is often used to refer to solving a problem using a numerical scheme such as the finite element method. [I am against at using this word for this endeavour](https://www.seamplex.com/blog/say-modeling-not-simulation.html). The term simulation has a connotation of both “pretending” and “faking” something, that is definitely not what we are doing when we solve an engineering problem with finite elements. Sure, there are some cases in which we simulate, such as using the [Monte Carlo method](https://en.wikipedia.org/wiki/Monte_Carlo_method) (originally used by Fermi as an attempt to understand how neutrons behave in the core of nuclear reactors). But when solving deterministic mechanical engineering problems I would rather say “modelling” than “simulation.”

divert(-1)
### Kinds of finite elements {#sec:kinds}

This section is not (just) about different kinds of elements like tetrahedra, hexahedra, pyramids and so on. It is about the different kinds of analysis there are. Indeed, there is a whole plethora of particular types of calculations we can perform, all of which can be called “finite element analysis.” For instance, for the mechanical problem, we can have different kinds of
@@ -244,7 +245,6 @@ This section is not (just) about different kinds of elements like tetrahedra, he

And then there exist different pre-processors, meshers, solvers, pre-conditioners, post-processing steps, etc. A similar list can be made for the [heat conduction problem](https://en.wikipedia.org/wiki/Thermal_conduction), [electromagnetism](https://en.wikipedia.org/wiki/Electromagnetism), the [Schröedinger equation](https://en.wikipedia.org/wiki/Schr%C3%B6dinger_equation), [neutron transport](https://en.wikipedia.org/wiki/Neutron_transport), etc. But there is also another level of “kind of problem,” which is related to how much accuracy and precision we are to willing sacrifice in order to have a (probably very much) simpler problem to solve. Again, there are different combinations here but a certain problem can be solved using any of the following three approaches, listed in increasing amount of difficulty and complexity: conservative, best-estimate or probabilistic.

divert(-1)
The first one is the easiest because we are allowed to choose parameters and to make engineering decisions that may simplify the computation as long as they give results towards the worst-case scenario. More often than not, a conservative _estimation_ is enough in order to consider a problem as solved. Note that this is actually how fatigue results are obtained using fatigue curves, as discussed in\ [@sec:fatigue]. A word of care should be taken when considering what the “worst-case scenario” is. For instance, if we are analysing the temperature distribution in a mechanical part subject to convection boundary conditions, we might take either a very large or a very low convection coefficient as the conservative case. If we needed to design fins to dissipate heat then a low coefficient would be the conservative choice. But if the mechanical properties deteriorated with high temperatures then the conservative way to go would be to set a high convection coefficient. A common practice is to have a fictitious set of parameters, each of them being conservative leading individually to the worst case even if the overall combination is not physically feasible.

As neat and tempting as conservative computations may be, sometimes the assumptions may be too biased toward the bad direction and there might be no way of justifying certain designs with conservative computations. It is then time to sharpen our pencils and perform a best-estimate computation. This time, we should stick to the most-probable values of the parameters and even use more complex models that can better represent the physical phenomena that are going on in our problem. Sometimes best-estimate computations are just slightly more complex than conservative models. But more often than not, best-estimates get far more complicated. And these complications come not just in the finite-element model of the elastic problem but in the dependence of properties with space, time and/or temperature, in non-trivial relationships between macro and microscopic parameters, in more complicated algorithms for post-processing data, etc.
@@ -256,11 +256,9 @@ Finally, when then uncertainties associated to the parameters, methods and model
3. combining all the results into to obtain a best-estimate value plus uncertainty.

This kind of computation is usually required by the nuclear regulatory authorities when power plant designers need to address the safety of the reactors. What is the heat capacity of uranium above 1000ºC? What is the heat transfer coefficient when approaching the [critical heat flux](https://en.wikipedia.org/wiki/Critical_heat_flux) before the [Leidenfrost effect](https://en.wikipedia.org/wiki/Leidenfrost_effect) occurs? A certain statistical analysis has to be done prior to actually parametrically sweeping (see\ [@sec:parametric]) the input parameters so as to obtain a distribution of possible outcomes.
divert(0)

We might get into a an infinite taxonomic loop if we continue down this path. So let us move one step closer to our case study in this journey from college theory to an actual engineering problem.

divert(-1)
### Five whys {#sec:five}

So we know we need a numerical scheme to solve our mechanical problem because anything slightly more complex than an infinite pipe does not have analytical solution. We need an unstructured grid because we would not use Legos to discretise cylindrical pipes. We selected the finite elements method over the finite volumes method, because FEM is the king. Can we pause again and ask ourselves why is it that we want to do finite-element analysis?
@@ -291,7 +289,7 @@ You get the point, even though we know thanks to [Richard Feynmann](https://en.w

\medskip

Getting back to the case study: do we need to do FEM analysis? Well, it does not look like we can obtain the stresses of the transient cycles with just pencil and paper. But how much complexity should we add? We might do as little as axisymmetric linear steady-state conservative studies or as much as full three-dimensional non-linear transient best-estimate plus uncertainties computations. And here is where good engineers stand out: in putting their engineering judgment (call it experience or hunches) into defining _what_ to solve. And it is not (just) because the first option is faster to solve than the latter. Involving many complex methods need more engineering time
Getting back to the case study: do we need to do FEM analysis? Well, it does not look like we can obtain the stresses of the transient cycles with just pencil and paper. But how much complexity should we add? We might do as little as axisymmetric linear steady-state conservative studies or as much as full three-dimensional non-linear transient best-estimate plus uncertainties computations. And here is where good engineers stand out: in putting their engineering judgement (call it experience or hunches) into defining _what_ to solve. And it is not (just) because the first option is faster to solve than the latter. Involving many complex methods need more engineering time

1. to prepare the input data and set up the algorithms,
2. to cope with the many more mistakes that will inevitable appear during the computation, and
@@ -313,7 +311,7 @@ So we need to address the issue of fatigue in nuclear reactor pipes that
c. seismic loads.

dnl As I wanted to illustrate in [@sec:five], it is very important to decide what kind of problem (actually problems) we should be dealing with.
As a nuclear engineer, I learned (theoretically in college but practically after college) that there are some models that let you see some effects and some that let you see other effects (please [say “modelling” not “simulation.”](https://www.seamplex.com/blog/say-modeling-not-simulation.html)). And even if, in principle, it is true that more complex models should let you see more stuff, they definitely might show you nothing at all if the model is so big and complex that it does not fit into a computer (say because it needs hundreds of gigabytes of RAM to run) or because it takes more time to compute than you may have before the final report is expected.
As a nuclear engineer, I learned (theoretically in college but practically after college) that there are some models that let you see some effects and some that let you see other effects (please [say “modelling” not “simulation.”](https://www.seamplex.com/blog/say-modeling-not-simulation.html)). And even if, in principle, it is true that more complex models should allow you compute more stuff, they definitely might show you nothing at all if the model is so big and complex that it does not fit into a computer (say because it needs hundreds of gigabytes of RAM to run) or because it takes more time to compute than you may have before the final report is expected.

First of all, we should note that we need to solve

@@ -373,7 +371,7 @@ dnl ![Temperature distribution for a certain time within the transient computed

### Seismic loads {#sec:seismic}

Before considering the actual mechanical problem that will give us the stress tensor at the SCLs, and besides needing to solve the transient thermal problem to get the temperature distributions, we need to address the loads that arise due to a postulated earthquake during a certain part of the operational transients. The full computation of a mechanical transient problem using the earthquake time-dependent displacements is off the table for two reasons. First, because again the computation would take more time than we might have to deliver the report. And secondly and more importantly, because civil engineers do not compute earthquakes in the time domain but in the frequency domain using the [response spectrum method](https://en.wikipedia.org/wiki/Response_spectrum). Time to revisit our [Fourier transform](https://en.wikipedia.org/wiki/Fourier_transform) exercises from undergraduate math courses.
Before considering the actual mechanical problem that will give us the stress tensor at the SCLs, and besides needing to solve the transient thermal problem to get the temperature distributions, we need to address the loads that arise due to a postulated earthquake during a certain part of the operational transients. The full computation of a mechanical transient problem using the earthquake time-dependent displacements is off the table for two reasons. First, because again the computation would take more time than we might have to deliver the report. And secondly and more importantly, because civil engineers do not compute earthquakes in the time domain but in the frequency domain using the [response spectrum method](https://en.wikipedia.org/wiki/Response_spectrum), provided the case is linear (see\ [@sec:linearity]). Time to revisit our [Fourier transform](https://en.wikipedia.org/wiki/Fourier_transform) exercises from undergraduate math courses.

#### Earthquake spectra

@@ -397,22 +395,25 @@ Practically, these problems are solved using the same mechanical finite-element
1. The computation of the natural frequencies is “load free”, i.e. there can be no surface nor volumetric loads, and
2. The displacement boundary conditions ought to be homogeneous, i.e. only displacements equal to zero can be given. We may fix only one of the three degrees of freedom in certain surfaces and leave the others free, as long as all the rigid body motions are removed as usual.

A real continuous solid has infinite modes of oscillation. A discretised one (using the most common and efficient FEM formulation, the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf)) has three times the number of nodes modes. In any case, one is usually interested only in a few of them, namely those with the lower frequencies because they take away most of the energy with them. Each mode has two associated parameters called modal mass and excitation that reflect how “important” the mode is regarding the absorption of energy from an external oscillatory source. Usually a couple of dozens of modes are enough to take up more than 90% of the earthquake energy. Figure\ [-@fig:modes] shows the first six natural modes of a sample piping section.
A real continuous solid has infinite modes of oscillation. A discretised one (using the most common and efficient FEM formulation, the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf)) has three times the number of nodes modes. In any case, one is usually interested only in a few of them, namely those with the lower frequencies because they take away most of the energy with them. Each mode has two associated parameters called modal mass and excitation that reflect how “important” the mode is regarding the absorption of energy from an external oscillatory source. Usually a couple dozens of modes are enough to take up more than 90% of the earthquake energy as illustrated by\ [@fig:acumulada].

![Effective accumulated mass fraction up to the $i$-th mode of oscillation.](acumulada.emf){#fig:acumulada}

::::: {#fig:modes}
![](mode1.png){width=48%}\
![](mode2.png){width=48%}
![$f_1 \approx 30$\ [Hz](https://www.seamplex.com/docs/nafems4/mode1.webm)](mode1.png){width=48%}\
![$f_2 \approx 60$\ [Hz](https://www.seamplex.com/docs/nafems4/mode2.webm)](mode2.png){width=48%}

![](mode3.png){width=48%}\
![](mode4.png){width=48%}
![$f_3 \approx 70$\ [Hz](https://www.seamplex.com/docs/nafems4/mode3.webm)](mode3.png){width=48%}\
![$f_4 \approx 75$\ [Hz](https://www.seamplex.com/docs/nafems4/mode5.webm)](mode4.png){width=48%}

![](mode5.png){width=48%}\
![](mode6.png){width=48%}
![$f_5 \approx 100$\ [Hz](https://www.seamplex.com/docs/nafems4/mode5.webm)](mode5.png){width=48%}\
![$f_6 \approx 130$\ [Hz](https://www.seamplex.com/docs/nafems4/mode6.webm)](mode6.png){width=48%}

First six natural oscillation modes for a piping section
First six natural oscillation modes for a piping section between axial supports. Blue-red color scale shows magnitude of deformation, as compared to the original geometry (grey). Animations can be seen at links like <https://www.seamplex.com/docs/nafems4/mode1.webm>.
:::::

These first modes that take up most of the energy are then used to take into account the earthquake load. There are several ways of performing this computation, but the ASME\ III code states that the method known as SRSS (for Square Root of Sum of Squares) can be safely used. This method mixes the eigenvectors with the floor response spectra through the eigenvalues and gives a spatial (actually nodal) distribution of three accelerations (one for each direction) that, when multiplied by the density of the material, give a vector of a distributed force (in units of Newton per cubic millimetre for example) which is statically equivalent to the load coming from the postulated earthquake.

These first modes, shown in\ [@fig:modes], that take up most of the energy are then used to take into account the earthquake load. There are several ways of performing this computation, but the ASME\ III code states that the method known as SRSS (for Square Root of Sum of Squares) can be used. This method mixes the eigenvectors with the floor response spectra through the eigenvalues and gives a spatial (actually nodal) distribution of three accelerations (one for each direction) that, when multiplied by the density of the material, give a vector of a distributed force (in units of Newton per cubic millimetre for example) which is statically equivalent to the load coming from the postulated earthquake.

::::: {#fig:acceleration}
![$a_x$](ax.png){width=80%}
@@ -424,18 +425,18 @@ These first modes that take up most of the energy are then used to take into acc
The equivalent accelerations for the piping section of [@fig:modes] for the spectra of\ [@fig:spectrum]
:::::

The ASME code says that these accelerations (depicted in [@fig:acceleration]) ought to be applied twice: once with the original sign and once with all the elements with the opposite sign. Each application should last two seconds.
The ASME code says that these accelerations (depicted in [@fig:acceleration]) ought to be applied twice: once with the original sign and once with all the elements with the opposite sign, as SRSS “looses signs.” The application of each of these equivalent loads should last two seconds in the original time domain.


### Linearity (not yet linearisation) {#sec:linearity}

Even though we did not yet discuss it in detail, we want to solve an elastic problem subject to an internal pressure condition, with a non-uniform temperature distribution that leads to both thermal stresses and variations in the mechanical properties of the materials. And as if this was not enough, we want to add during a couple of seconds a statically-equivalent distributed load arising from a design earthquake. This last point means that at the transient instant where the stresses (from the fatigue’s point of view) are maximum we have to add the distributed loads that we computed from the seismic spectra to the other thermal and pressure loads. But we have a linear elastic problem (well, we still do not have it but we will in\ [@sec:break]), so we might be tempted to exploit the problem’s linearity and compute all the effects separately and then sum them up to obtain the whole combination. We may thus compute just the stresses due to the seismic loads and then add these stresses to the stresses at any time of the transient, in particular to the one with the highest ones. After all, in linear problems the result of the sum of two cases is the result of the sum of the cases, right? Not always.

Let us jump out of our nuclear piping problem and step back into the general finite-element theory ground for a moment (remember we were going to jump back and forth). Assume you want to know how much your dog weights. One thing you can do is to weight yourself (let us say you weight 81.2\ kg), then to grab your dog and to weight both yourself and your dog (let us say you and your dog weight 87.3\ kg). Do you swear your dog weights 6.1\ kg plus/minus the scale’s uncertainty? I can tell you that the weight of two individual protons and two individual neutrons in not the same as the weight of an\ [$\alpha$ particle](https://en.wikipedia.org/wiki/Alpha_particle). Would not there be a master-pet interaction that renders the weighting problem non-linear?
Let us jump out of our nuclear piping problem and step back into the general finite-element theory ground for a moment (remember we were going to jump back and forth). Assume you want to know how much your dog weighs. One thing you can do is to weigh yourself (let us say you weigh 81.2\ kg), then to grab your dog and to weigh both yourself and your dog (let us say you and your dog weigh 87.3\ kg). Would you swear your dog weighs 6.1\ kg plus/minus the scale’s uncertainty? I can tell you that the weight of two individual protons and two individual neutrons in not the same as the weight of an\ [$\alpha$ particle](https://en.wikipedia.org/wiki/Alpha_particle). Would not there be a master-pet interaction that renders the weighting problem non-linear?

\medskip

Time for both of us to make an experiment. Grab your favourite FEM program for the first time (remember mine is [CAEplex](https://caeplex.com)) and create a 1mm $\times$ 1mm $\times$ 1mm cube. Set any values for the Young Modulus and Poisson ratio as you want. I chose\ $E=200$\ GPa and\ $\nu=0.28$. Restrict the three faces pointing to the negative axes to their planes, i.e.
Time for both of us to make an experiment. Grab your favourite FEM program for the first time (remember mine is [CAEplex](https://caeplex.com)) and create a 1mm $\times$ 1mm $\times$ 1mm cube. Set any values for the Young’s Modulus and Poisson ratio as you want. I chose\ $E=200$\ GPa and\ $\nu=0.28$. Restrict the three faces pointing to the negative axes to their planes, i.e.

* in face “left” ($x<0$), set null displacement in the $x$ direction ($u=0$),
* in face “front” ($y<0$), set null displacement in the $y$ direction ($v=0$),
@@ -443,9 +444,9 @@ Time for both of us to make an experiment. Grab your favourite FEM program for t

Now we are going to create and compare three load cases:

a. Pure normal loads (<https://caeplex.com/p?d8f>)
b. Pure shear loads (<https://caeplex.com/p?b494>)
c. The combination of A & B (<https://caeplex.com/p?989>)
a. Pure normal loads (<https://caeplex.com/p/d8f>)
b. Pure shear loads (<https://caeplex.com/p/b494>)
c. The combination of A & B (<https://caeplex.com/p/989>)

The loads in each cases are applied to the three remaining faces, namely “right” ($x>0$), “back” ($y>0$) and “top,” ($z>0$). Their magnitude in Newtons are:

@@ -549,15 +550,15 @@ The moral of this fable is that if we have a case that is the combination of two

After discussing linearity, let us now dig into linearisation. The name is similar but these two animals are very different beasts. We said in\ [@sec:case] that the ASME Boiler and Pressure Vessel Code was born long before modern finite-elements methods were developed and of course being massively available for general engineering analysis (democratised?). Yet the code provides a comprehensive, sound and, more importantly, a widely and commonly-accepted body of knowledge as for the regulatory authorities to require its enforcement to nuclear plant owners. One of the main issues of the ASME code refers to what is known as “membrane” and “bending” stresses. These are defined in [section\ VIII](https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code#ASME_BPVC_Section_VIII_-_Rules_for_Construction_of_Pressure_Vessels) annex 5-A, although they are widely used in other sections, particularly [section\ III](https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code#ASME_BPVC_Section_III_-_Rules_for_Construction_of_Nuclear_Facility_Components). Briefly, they give the zeroth-order (membrane) and first-order (bending) [moments](https://en.wikipedia.org/wiki/Moment_(mathematics)) (in the statistical sense) of the stress distribution along a so-called Stress Classification Line or SCL, which should be chosen depending on the type of problem under analysis.

The computation of these membrane and bending stresses are called [“stress linearisation”](https://www.ramsay-maunder.co.uk/knowledge-base/technical-notes/stress-linearisation-for-practising-engineers/) because (I am guessing) it is like computing the [Taylor expansion](https://en.wikipedia.org/wiki/Taylor_series) (or for the case, expansion in [Legendre polynomials](https://en.wikipedia.org/wiki/Legendre_polynomials)) of an arbitrary stress distribution along a line, and retaining the first two terms. That is to say, to obtain a linear approximation. More (optional) mathematical details below.
The computation of these membrane and bending stresses are called [“stress linearisation”](https://www.ramsay-maunder.co.uk/knowledge-base/technical-notes/stress-linearisation-for-practising-engineers/) because it is like computing the [Taylor expansion](https://en.wikipedia.org/wiki/Taylor_series) (or for the case, expansion in [Legendre polynomials](https://en.wikipedia.org/wiki/Legendre_polynomials)) of an arbitrary stress distribution along a line, and retaining the first two terms. That is to say, to obtain a _linear approximation_. There are physical interpretations for both membrane and bending stresses, which are beyond the scope of this chapter. As for the ASME requirements, they are a way of having the mean and linear contributions of a certain stress distribution along the pipe’s wall thickness.


So what about the SCLs? Well, the ASME standard says that they are lines that go through a wall of the pipe (or vessel or pump, which is what the ASME code is for) from the inside to the outside and ought to be normal to the iso-stress curves. Stop. Picture yourself a stress field, draw the iso-stress curves (those would be the lines that have the same colour in your picture) and then imagine a set of lines that travel in a perpendicular direction to them. Finally, choose the one that seems the prettiest (which most of the time is the one that seems the easiest). There you go! You have an SCL. But there is a catch. So far, we have referred to a generic concept of “stress.” Which of the several stresses out there should you picture? One of the three normals, the three shear, Von\ Mises, Tresca? Well, actually you will have to imagine tensors instead of scalars. And there might not be such a thing as “iso-stress” curves, let alone normal directions. So pick any radial straight line through the pipe wall at a location that seems relevant and now you are done. In our case study, there will be a few different locations around the material interfaces where high stresses due to differential thermal expansion are expected to occur.
So what about the SCLs? Well, the ASME standard says that they are lines that go through a wall of the pipe (or vessel or pump, which is what the ASME code is for) from the inside to the outside and ought to be normal to the iso-stress curves. Stop. Picture yourself a stress field, draw the iso-stress curves (those would be the lines that have the same colour in your picture) and then imagine a set of lines that travel in a perpendicular direction to them. Finally, choose the one that seems the prettiest (which most of the time is the one that seems the easiest). There you go! You have an SCL. But there is a catch. So far, we have referred to a generic concept of “stress.” Which of the several stresses out there should you picture? One of the three normals, the three shear, Von\ Mises, Tresca? Well, actually you will have to imagine tensors instead of scalars. And there might not be such a thing as “iso-stress” curves, let alone normal directions. So pick any radial straight line through the pipe wall at a location that seems relevant and now you are done. In our case study, there will be a few different locations around the material interfaces where high stresses due to differential thermal expansion are expected to occur. Just keep this though with you: it is very important to define where the SCLs are located, as they will define the “quality” of the obtained results.

divert(-1)
\medskip

Now the optional (but recommended) mathematical details. Accoding to ASME\ VIII Div.\ 2 Annex\ 5-A, the expression for computing the $i$-$j$-th element of the membrane tensor is
Now the optional (but recommended) mathematical details. According to ASME\ VIII Div.\ 2 Annex\ 5-A, the expression for computing the $i$-$j$-th element of the membrane tensor is

$$
\text{M}_{ij} = \frac{1}{t} \cdot \int_0^t \sigma_{ij}(t^\prime) \, dt^\prime
@@ -573,7 +574,7 @@ For the fatigue assessment, it is the sum\ $\text{MB}$ that measures the stress
$$
\text{MB}_{ij} = \text{M}_{ij} \pm \text{B}_{ij}
$$
where the sign should be taken such that the resulting stress intensity (i.e. Tresca, Von Mises, Principal\ 1, etc.) represents the worst-case scenario. Older versions of ASME\ VIII preferred the [Tresca criterion](https://en.wikipedia.org/wiki/Henri_Tresca), while newer versions switched to [Von\ Mises](https://en.wikipedia.org/wiki/Von_Mises_yield_criterion). ASME\ III sticked to Tresca.
where the sign should be taken such that the resulting stress intensity (i.e. Tresca, Von Mises, Principal\ 1, etc.) represents the worst-case scenario. Older versions of ASME\ VIII preferred the [Tresca criterion](https://en.wikipedia.org/wiki/Henri_Tresca), while newer versions switched to [Von\ Mises](https://en.wikipedia.org/wiki/Von_Mises_yield_criterion). Nevertheless, ASME\ III still uses Tresca.

In any case, $\text{MB}_{ij}$ should be taken as a measure of the primary stress at the internal surface of the pipe. In effect, let us assume we have a stress distribution\ $\sigma(t^\prime)$ along a certain line of length $t$ such that\ $\sigma(0)$ and $\sigma(t)$ are the stresses at the internal and external surfaces, respectively. The primary stress distribution, i.e. the stress that is not self balancing will be of the simple linear form

@@ -606,7 +607,7 @@ divert(0)

## The infinite pipe revisited after college {#sec:infinite-pipe-fem}

Let us now make a (tiny) step from the general and almost philosophical subject from the last section down to the particular case study, and reconsider the infinite pressurised pipe once again. It is time to solve the problem with a computer using finite elements and to obtain some funny coloured pictures instead of just equations.
Let us now make a (tiny) step from the general and almost philosophical subject from the last section down to the particular case study, and reconsider the infinite pressurised pipe once again. It is time to solve the problem with a computer using finite elements and to obtain some funny coloured pictures instead of just equations (like we did in [@sec:infinite-pipe]).

The first thing that has to be said is that, as with any interesting problem, there are literally hundreds or different ways of solving it, each of them throwing particular conclusions. For example, one can:

@@ -654,15 +655,15 @@ dnl * The finite-element results for the displacements are similar to the analyt
Error in the computation of the linearised stresses vs. CPU time needed to solve the infinite pipe problem using the finite element method
:::::

An additional note should be added. The FEM solution, which not only gives the nodal displacements but also a method to interpolate these values inside the elements, does not fully satisfy the original equilibrium equations at every point (i.e. the strong formulation). It is an approximation to the solution of the [weak formulation](https://en.wikipedia.org/wiki/Weak_formulation) that is close (measured in the vector space spanned by the [shape functions](https://www.quora.com/What-is-a-shape-function-in-FEM)) to the real solution. Mechanically, this means that the FEM solution leads only to nodal equilibrium but not pointwise equilibrium.
An additional note should be added. The FEM solution, which not only gives the nodal displacements but also a method to interpolate these values inside the elements, does not fully satisfy the original equilibrium equations at every point (i.e. the strong formulation). It is an approximation to the solution of the [weak formulation](https://en.wikipedia.org/wiki/Weak_formulation) that is close (measured in the vector space spanned by the [shape functions](https://www.quora.com/What-is-a-shape-function-in-FEM)) to the real solution. Mechanically, this means that the FEM solution leads only to nodal equilibrium but not point-wise equilibrium.

### Elements, nodes and CPU {#sec:elements-nodes}

The last two bullets above lead to an issue that has come many times when discussing the issue of convergence with respect to the mesh size with other colleagues. There apparently exists a common misunderstanding that the number of elements is the main parameter that defines how complex a FEM model is. This is strange, because even in college we are taught that the most important parameter is the _size_ of the stiffness matrix, which is three times (for 3D problems with the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf) formulation) the number of _nodes_.
dnl The last two bullets above lead to an issue that has come many times when discussing the issue of convergence with respect to the mesh size with other colleagues. There apparently exists a common misunderstanding that the number of elements is the main parameter that defines how complex a FEM model is. This is strange, because even in college we are taught that the most important parameter is the _size_ of the stiffness matrix, which is three times (for 3D problems with the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf) formulation) the number of _nodes_.

Let us pretend we are given the task of comparing two different FEM programs. So we solve the same problem in each one and see what the results are. I have seen many times the following situation: the user loads the same geometry in both programs, run the meshing step in both of them so that the number of elements is more or less them same (because she wants to be “fair”) and then solves the problem. Voilà! It turns out that the first program defaults to first-order elements and the second one to second-order elements. So if the first one takes one minute to obtain a solution, the second one should take nearly four minutes. How come that is a fair comparison? Or it might be the case that one program uses tetrahedra while the other one defaults to hexahedra. Or any other combination. In general, there is no single problem parameter that can be fixed to have a “fair” comparison, but if there was, it would definitely be the number of _nodes_ rather than the number of _elements_. Let us see why.
dnl Let us pretend we are given the task of comparing two different FEM programs. So we solve the same problem in each one and see what the results are. I have seen many times the following situation: the user loads the same geometry in both programs, run the meshing step in both of them so that the number of elements is more or less them same (because she wants to be “fair”) and then solves the problem. Voilà! It turns out that the first program defaults to first-order elements and the second one to second-order elements. So if the first one takes one minute to obtain a solution, the second one should take nearly four minutes. How come that is a fair comparison? Or it might be the case that one program uses tetrahedra while the other one defaults to hexahedra. Or any other combination. In general, there is no single problem parameter that can be fixed to have a “fair” comparison, but if there was, it would definitely be the number of _nodes_ rather than the number of _elements_. Let us see why.

\medskip
dnl \medskip

Fire up your imagination again and make a [thought experiment](https://en.wikipedia.org/wiki/Thought_experiment) in which you have to compare say a traditional FEM approach with a new radical formulation that a crazy mathematician from central Asia came up with claiming it is a far superior theory than our beloved finite elements (or for the case, any other formulation from\ [@sec:formulations]). How can we tell if the guy is really a genius or purely nuts? Well, we could solve a problem which we can compute the analytical solution (for example the infinite pipe from\ [@sec:infinite-pipe]) first with the traditional method ([@sec:infinite-pipe-fem]) and then with the program which uses the new formulation. Say the traditional FEM gives an error between 1% and 5% running in a few seconds depending on the mesh size. The new program from the crazy guy takes no input parameters and gives an error of 0.1%, but it takes one week of computation to produce a result. Would you say that the new radical formulation is really far superior?

@@ -687,7 +688,7 @@ For a fixed number of nodes, first-order grids have far more elements than secon

#### Solving {#sec:solving}

The linear FEM problem leads of course of a system of\ $NG$ linear equations, cast in matrix form by the stiffness matrix\ $K$ and a right-hand size vector\ $\mathbf{b}$ containing the loads (both volumetric and the ones at the surfaces from the boundary conditions):
The linear FEM problem leads of course to a system of\ $NG$ linear equations, cast in matrix form by the stiffness matrix\ $K$ and a right-hand size vector\ $\mathbf{b}$ containing the loads (both volumetric and the ones at the surfaces from the boundary conditions):

$$K \cdot \mathbf{u} = \mathbf{b}$${#eq:kub}

@@ -696,7 +697,7 @@ The objective of the solver is to find the vector\ $\mathbf{u}$ of nodal displac
* [direct](https://en.wikipedia.org/wiki/Frontal_solver), where a rather complex algorithm for building partial decompositions ([LU](https://en.wikipedia.org/wiki/LU_decomposition), [QR](https://en.wikipedia.org/wiki/QR_decomposition), [Cholesky](https://en.wikipedia.org/wiki/Cholesky_decomposition), etc.) are used in order to avoid needing aforementioned the 700\ Gb of RAM, or
* [iterative](https://en.wikipedia.org/wiki/Iterative_method), meaning that at each step of the iteration the numerical answer improves, i.e. $\left|K \cdot \mathbf{u} - \mathbf{b}\right| \rightarrow 0$. Even though in particular for [Krylov-subspace](https://en.wikipedia.org/wiki/Krylov_subspace) methods, $K \cdot \mathbf{u} - \mathbf{b} = \mathbf{0}$ after\ $NG$ steps, a few dozen of iterations are usually enough to assume that the problem is effectively solved (i.e. the residual is less than a certain threshold).

So the question is... how hard is to solve a sparse linear problem? Well, the number of iterations and the complexity of the partial decompositions needed to attain convergence depends on the [spectral radius](https://en.wikipedia.org/wiki/Spectral_radius) of the stiffness matrix\ $K$, which in turns depend on the elements themselves, which depend mainly on the parameters of the elastic problem. But it also depends on how sparse\ $K$ is, which changes with the element topology and order. [@Fig:test] shows the structure of two stiffness matrices for the same linear elastic problem discretised using exactly the same number of nodes but using linear and quadratic elements respectively. The matrices have the same size (because the number of nodes is the same) but the former is more sparse than the latter. Hence, it would be harder (in computational terms of CPU and RAM) to solve the second-order case.
So the question is... how hard is it to solve a sparse linear problem? Well, the number of iterations and the complexity of the partial decompositions needed to attain convergence depends on the [spectral radius](https://en.wikipedia.org/wiki/Spectral_radius) of the stiffness matrix\ $K$, which in turns depend on the elements themselves, which depend mainly on the parameters of the elastic problem. But it also depends on how sparse\ $K$ is, which changes with the element topology and order. [@Fig:test] shows the structure of two stiffness matrices for the same linear elastic problem discretised using exactly the same number of nodes but using linear and quadratic elements respectively. The matrices have the same size (because the number of nodes is the same) but the former is more sparse than the latter. Hence, it would be harder (in computational terms of CPU and RAM) to solve the second-order case.

::::: {#fig:test}
![42k first-order elements](test1.png){#fig:test1 width=48%}\
@@ -709,7 +710,7 @@ In a similar way, different types of elements will give rise to different sparsi

#### Stress computation {#sec:stress-computation}

In the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf), the solver finds the displacements\ $\mathbf{u}(\mathbf{x})$ that satisfy [@eq:kub], which are the principal unknowns. But from\ [@sec:tensor] we know that we actually have solved the problem after we have the stress tensors at every location\ $\mathbf{x}$, which are the secondary unknowns. So the FEM program has to compute the stresses out of the displacements. It first computes the strain tensor, which is composed of the nine partial derivatives of the three displacements with respect to the three coordinates. Then it computes the stress tensor (atready introduced in\ [@sec:tensor]) using the materials’ [strain-stress constitutive equations](https://en.wikipedia.org/wiki/Constitutive_equation#Stress_and_strain) which involve the Young Modulus\ $E$, the Poisson ratio\ $\nu$ and the spatial derivatives of the displacements\ $\mathbf{u}=[u,v,w]$. This sounds easy, as we (well, the solver) knows what the shape functions are for each element and then it is a matter of computing nine derivatives and multiplying by something involving\ $E$ and\ $\nu$. Yes, but there is a catch. As the displacements\ $u$, $v$ and\ $w$ are computed at the nodes, we would like to also have the stresses at the nodes. However,
In the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf), the solver finds the displacements\ $\mathbf{u}(\mathbf{x})$ that satisfy [@eq:kub], which are the principal unknowns. But from\ [@sec:tensor] we know that we actually have solved the problem after we have the stress tensors at every location\ $\mathbf{x}$, which are the secondary unknowns. So the FEM program has to compute the stresses out of the displacements. It first computes the strain tensor, which is composed of the nine partial derivatives of the three displacements with respect to the three coordinates. Then it computes the stress tensor (already introduced in\ [@sec:tensor]) using the materials’ [strain-stress constitutive equations](https://en.wikipedia.org/wiki/Constitutive_equation#Stress_and_strain) which involve the Young’s Modulus\ $E$, the Poisson ratio\ $\nu$ and the spatial derivatives of the displacements\ $\mathbf{u}=[u,v,w]$. This sounds easy, as we (well, the solver) knows what the shape functions are for each element and then it is a matter of computing nine derivatives and multiplying by something involving\ $E$ and\ $\nu$. Yes, but there is a catch. As the displacements\ $u$, $v$ and\ $w$ are computed at the nodes, we would like to also have the stresses at the nodes. However,

i. the displacements\ $\mathbf{u}(\mathbf{x})$ are not differentiable at the nodes, and
ii. if the node belongs to a material interface, neither\ $E$ nor\ $\nu$ are defined.
@@ -728,7 +729,7 @@ Solution of a problem using FEM using eight linear/quadratic uniform/non-uniform

Now proceed to picturing the general three-dimensional cases with unstructured tetrahedra. What is the derivative of the displacement\ $v$ in the\ $y$ direction with respect to the $z$ coordinate at a certain node shared by many tetrahedra? What if one of the elements is very small? Or it has a very bad quality (i.e. it is deformed in one direction) and its derivatives cannot be trusted? Should we still average? Should this average be weighted? How?

Detailed mathematics show that the location where the derivatives of the interpolated displacements are closer to the real (i.e. the analytical ones in problems that have it) solution are the elements’ [Gauss points](https://en.wikipedia.org/wiki/Gaussian_quadrature). Even better, the material properties at these points are continuous (they are usually uniform but they can depend on temperature for example) because, unless we are using weird elements, there are no material interfaces inside elements. But how to manage a set of stresses given at the Gauss points instead of at the nodes? Should we use one mesh for the input and another one for the output? What happens when we need to know the stresses on a surface and not just in the bulk of the solid? There are still no one-size-fits-all answers. There is a very interesting [blog post](http://tor-eng.com/2017/11/practical-tips-dealing-stress-singularities/) by Nick Stevens that addresses the issue of stresses computed at sharp corners. What does your favourite FEM program do with such a case?
Detailed mathematics show that the location where the derivatives of the interpolated displacements are closer to the real (i.e. the analytical ones in problems that have it) solution are the elements’ [Gauss points](https://en.wikipedia.org/wiki/Gaussian_quadrature). Even better, the material properties at these points are continuous (they are usually uniform but they can depend on temperature for example) because, unless we are using weird elements, there are no material interfaces inside elements. But how to manage a set of stresses given at the Gauss points instead of at the nodes? Should we use one mesh for the input and another one for the output? What happens when we need to know the stresses on a surface and not just in the bulk of the solid? There are still no one-size-fits-all answers. There is a very interesting [blog post](https://nickjstevens.netlify.com/post/2019/stress-singularities/) by Nick Stevens that addresses the issue of stresses computed at sharp corners. What does your favourite FEM program do with such a case?

In any case, this step takes a non-negligible amount of time. The most-common approach, i.e. the node-averaging method is driven mainly by the number of nodes of course. So all-in-all, these are the reasons to use the number of nodes instead of the numbers of elements as a basic parameter to measure the complexity of a FEM problem.

@@ -739,7 +740,7 @@ Let us review some issues that appear when solving our case study and that might

### Two (or more) materials {#sec:two-materials}

The main issue with fatigue in nuclear piping during operational transients is that at the welds between two materials with different thermal expansion coefficients there can appear potentially-high stresses during temperature changes. If these transients are repeated cyclically, fatigue may occur. We already have risen a warning flag about stresses at material interfaces in\ [@sec:two-materials]. Besides all the open questions about computing stresses at nodes, this case also adds the fact that the material properties (say the Young Modulus\ $E$) is different in the elements that are at each side of the interface.
The main issue with fatigue in nuclear piping during operational transients is that at the welds between two materials with different thermal expansion coefficients there can appear potentially-high stresses during temperature changes. If these transients are repeated cyclically, fatigue may occur. We already have risen a warning flag about stresses at material interfaces in\ [@sec:two-materials]. Besides all the open questions about computing stresses at nodes, this case also adds the fact that the material properties (say the Young’s Modulus\ $E$) is different in the elements that are at each side of the interface.

::::: {#fig:two-cubes}
![Surface grid showing the fixed face (magenta), the load face (green) and the shared face in the middle](two-cubes2.png){#fig:two-cubes2 width=48%}\
@@ -765,7 +766,7 @@ Faced with the problem of computing the stress\ $\sigma$ at one node shared by m
There might be other choices as well. Do you know what your favourite FEM program does? Now follow up with these questions:

a. Does the manual say?
b. Does it tell you the details like how it weights the averages?
b. Does it tell you the details like how it weighs the averages?
c. Does it discard values that are beyond a number of standard deviations away?
d. How many standard deviations?
e. ...
@@ -783,13 +784,13 @@ In effect, a couple of years ago Angus Ramsay noted [a weird behaviour](https://

> Do you trust your favourite FEM program?

Back to the two-material problem, all the discussion above in\ [@sec:two-materials] about non-continuous derivatives applies to a sharp abrupt interface. In the study case the junctions are welded so there is a [heat-affected zone](https://en.wikipedia.org/wiki/Heat-affected_zone) with changes in the material micro structure. Therefore, there exists a smooth transition from the mechanical properties of one material to the other one in a way that is very hard to predict and to model. In principle, the assumption of a sharp interface is conservative (in the sense of\ [@sec:kinds]). There cannot be an SCL exactly on a material interface so there should be at least two SCLs, one at each side of the junctions as\ [@fig:weldolet-scls] illustrates. The actual distance would have to be determined first as an educated guess, then via trial and error and finally in accordance with the regulator.
Back to the two-material problem, all the discussion above in\ [@sec:two-materials] about non-continuous derivatives applies to a sharp abrupt interface. In the study case the junctions are welded so there is a [heat-affected zone](https://en.wikipedia.org/wiki/Heat-affected_zone) with changes in the material micro structure. Therefore, there exists a smooth transition from the mechanical properties of one material to the other one in a way that is very hard to predict and to model. In principle, the assumption of a sharp interface is conservative in the sense that it is expected the computed stresses to be larger than the actual ones. There cannot be an SCL exactly on a material interface so there should be at least two SCLs, one at each side of the junctions as\ [@fig:weldolet-scls] illustrates. The actual distance would have to be determined first as an educated guess, then via trial and error and finally in accordance with the regulator.

divert(-1)
### A parametric tee {#sec:parametric}

Time for another experiment. We know (more or less) what to expect from an infinite pressurised pipe from\ [@sec:infinite-pipe] and [@sec:infinite-pipe-fem]. What if we added a branch to such pipe? Even more, what if we successively varied the diameter of the branch to see what happens? This is called parametric analysis, and sooner or later (if not now) you will find yourself performing this kind of computations more often than any other one.

divert(-1)
So here come the five Feynmann-Ohno questions:

1. Why do you want to perform a parametric computation?
@@ -806,7 +807,7 @@ So here come the five Feynmann-Ohno questions:

5. Why do you want to understand what is going on?
For the same reason you are now reading this chapter.
divert(0)

Let us solve the following mock-up case: a long main 12-inch schedule\ 80 pipe has an orthogonal branch of a certain nominal diameter of\ $d_b$\ inches (it seems that the [SI](https://en.wikipedia.org/wiki/International_System_of_Units) did not do well amongst the piping engineering community). Both the main line and the branch are pressurised with\ $p=10$\ MPa. The main pipe is aligned with the\ $x$ axis and the branch coincides with the\ $z$ axis. Thus, the $x$-$z$ plane acts as a symmetry plane and we only need to model two octants of the full geometry, as shown in\ [@fig:tee-geo]. Note that the tee is modelled as the boolean intersection of two cylinders. There are no filleted edges nor rounded corners or any other smoothing. A real CAD file containing the appropriate geometry needs to be built for the real case study.

@@ -835,11 +836,10 @@ Location of the three radial SCLs: cyan, yellow and green
:::::

::::: {#fig:tee-MB}
![Membrane stress](M.emf){#fig:M width=90%}

![Bending stress](B.emf){#fig:B width=90%}
![Membrane stress](M.emf){#fig:M width=48%}\
![Bending stress](B.emf){#fig:B width=48%}

Parametric membrane and bending stresses as a function of the nominal diameter\ $d_b$ of the branch
Parametric stresses as a function of the nominal diameter\ $d_b$ of the branch
:::::


@@ -861,10 +861,10 @@ Do you now see the added value of training throw-ins with watermelons? We might
* using distributed forces from earthquakes,
* etc.

Most of the time at college we would barely do what is needed to be approved in one course and move on to the next one. If you have the time and consider a career related to finite-element analysis, please do not. Clone the repository^[<https://bitbucket.org/seamplex/tee>] with the input files for [Fino](https://www.seamplex.com/fino) and start playing. If you are stuck, do not hesitate asking for help in [wasora’s mailing list](https://www.seamplex.com/lists.html).
Most of the time at college we would barely do what is needed to be approved in one course and move on to the next one. If you have the time and consider a career related to finite-element analysis, please do not. Clone the repository^[<https://github.com/seamplex/tee>] with the input files for [Fino](https://www.seamplex.com/fino) and start playing. If you are stuck, do not hesitate asking for help in [wasora’s mailing list](https://www.seamplex.com/lists.html).

One further detail: it is always a sane check to try to explain the numerical results based on physical reasoning (i.e. “with your fingers”) as we did two paragraphs above. Most of the time you will be solving problems whilst already knowing what the result would (or ought to) be.
divert(0)

### Bake, shake and break {#sec:break}

@@ -894,7 +894,7 @@ Is the last bullet right? [Surely you’re joking, Mr.\ Theler!](https://en.wiki

The first one is easy. Due to the fact that the pipes are made of steel, it is expected that the actual deformations are relatively small compared to the original dimensions. This leads to the fact that the mechanical rigidity (i.e. the stiffness matrix) does not change significantly when the loads are applied. Therefore, we can safely assume that the problem is geometrically linear.

Let us now address material non-linearities. On the one hand we have the temperature-dependent issue. According to ASME\ II part\ D, what depends on temperature\ $T$ is the Young Modulus\ $E$. But the stress-strain relationship is yet
Let us now address material non-linearities. On the one hand we have the temperature-dependent issue. According to ASME\ II part\ D, what depends on temperature\ $T$ is the Young’s Modulus\ $E$. But the stress-strain relationship is yet

$$ \sigma = E(T) \cdot \epsilon $$

@@ -930,22 +930,23 @@ Temperature distribution for a certain instant of the transient, computed in the
:::::

::::: {#fig:case-mode}
![](case-mode1.png){#fig:case-mode-1 width=30%}\
![](case-mode2.png){#fig:case-mode-2 width=30%}\
![](case-mode3.png){#fig:case-mode-3 width=30%}
![$f_1 \approx 60$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode1.webm)](case-mode1.png){#fig:case-mode-1 width=30%}\
![$f_1 \approx 130$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode2.webm)](case-mode2.png){#fig:case-mode-2 width=30%}\
![$f_1 \approx 200$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode3.webm)](case-mode3.png){#fig:case-mode-3 width=30%}

![](case-mode4.png){#fig:case-mode-4 width=30%}\
![](case-mode5.png){#fig:case-mode-5 width=30%}\
![](case-mode6.png){#fig:case-mode-6 width=30%}
![$f_1 \approx 270$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode4.webm)](case-mode4.png){#fig:case-mode-4 width=30%}\
![$f_1 \approx 330$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode5.webm)](case-mode5.png){#fig:case-mode-5 width=30%}\
![$f_1 \approx 560$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode6.webm)](case-mode6.png){#fig:case-mode-6 width=30%}

![](case-mode7.png){#fig:case-mode-7 width=30%}\
![](case-mode8.png){#fig:case-mode-8 width=30%}\
![](case-mode9.png){#fig:case-mode-9 width=30%}
![$f_1 \approx 660$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode7.webm)](case-mode7.png){#fig:case-mode-7 width=30%}\
![$f_1 \approx 730$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode8.webm)](case-mode8.png){#fig:case-mode-8 width=30%}\
![$f_1 \approx 930$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode9.webm)](case-mode9.png){#fig:case-mode-9 width=30%}

First nine natural modes of oscillation of the piping system subject to the boundary conditions the supports provide
First nine natural modes of oscillation of the piping system subject to the boundary conditions the supports provide.
Animations can be seen at links like <https://www.seamplex.com/docs/nafems4/case-mode1.webm>.
:::::

![Floor response spectrum.](case-spectrum.emf){#fig:case-spectrum width=70%}
dnl ![Floor response spectrum.](case-spectrum.emf){#fig:case-spectrum width=70%}

To recapitulate, the figures in this section show some partial non-dimensional results of an actual system of a certain nuclear power plant. The main issues to study were the interfaces between a carbon-steel pipe and a stainless-steel orifice plate used to measure the (heavy) water flow through the line. The steps discussed so far include

@@ -955,13 +956,13 @@ To recapitulate, the figures in this section show some partial non-dimensional r
4. computing a heat conduction (bake) transient problem with temperatures as a function of time from the operational transient in a simple domain using temperature-dependent thermal conduction coefficients from ASME\ II\ part D ([@fig:case-temp] or [@fig:valve-temp])
5. generalising the temperature distribution as a function of time to the general domain ([@fig:case-temp2] or [@fig:real])
6. performing a modal analysis (shake) on the main domain to obtain the main oscillation frequencies and modes ([@fig:case-mode] or [@fig:modes])
7. using the floor response spectra ([@fig:case-spectrum] or [@fig:spectrum]) and the SRSS method to obtain a distributed force statically-equivalent to the earthquake load ([@fig:case-acceleration] or [@fig:acceleration])
7. using the floor response spectra ([@fig:spectrum]) and the SRSS method to obtain a distributed force statically-equivalent to the earthquake load ([@fig:case-acceleration] or [@fig:acceleration])
8. successively solving the linear elastic problem for different times using the generalised temperature distribution taking into account
a. the dependence of the Young Modulus\ $E$ and the thermal expansion coefficient\ $\alpha$ with temperature,
a. the dependence of the Young’s Modulus\ $E$ and the thermal expansion coefficient\ $\alpha$ with temperature,
b. the thermal expansion effect itself
c. the instantaneous pressure exerted in the internal faces of the pipes at the time\ $t$ according to the definition of the operational transient
d. the restriction of the degrees of freedom of those faces, lines or points that correspond to mechanical supports located both within and at the ends of the CAD model
e. the earthquake load, which according to ASME should be present only during four seconds of the transient: two seconds with one sign and the other two seconds with the opposite sing. This period should be selected to coincide with the instant of highest mechanical stress (conservative computation)
e. the earthquake load, which according to ASME should be present only during four seconds of the transient: two seconds with one sign and the other two seconds with the opposite sign. This period should be selected to coincide with the instant of highest mechanical stress (conservative computation)
9. computing the linearised stresses (membrane and membrane plus bending) at the SCLs combining them as Principal\ 1, Principal\ 2, Principal\ 3 and Tresca
10. juxtaposing these linearised stresses for each time of the transient and for each transient so as to obtain a single time-history of stresses including all the operational and/or incidental transients under study, which is what stress-based fatigue assessment needs (recall\ [@sec:fatigue] and go on to\ [@sec:usage]).

@@ -973,7 +974,7 @@ A pretty nice list of steps, which definitely I would not have been able to tack
![$a_y$](case-ay.png){width=33%}
![$a_z$](case-az.png){width=33%}

The static equivalent accelerations for the spectra of\ [@fig:case-spectrum] computed using the SRSS method
The static equivalent accelerations computed using the SRSS method
:::::

## Cumulative usage factors {#sec:usage}
@@ -992,24 +993,26 @@ We already said in\ [@sec:fatigue] that the stress-life fatigue assessment metho

$$U_j = \frac{n_j}{N_j}$$

The overall cumulative usage factor is then the algebraic sum of the partial contributions
The overall cumulative usage factor is then the algebraic sum of the partial contributions, a.k.a. [Miner’s rule](https://en.wikipedia.org/wiki/Fatigue_%28material%29%23Miner%27s_rule) as learned in college:

$$\text{CUF} = U_1 + U_2 + \dots + U_j + \dots$$

When\ $\text{CUF} < 1$, then the part under analysis can withstand the proposed cyclic operation.
When\ $\text{CUF} < 1$, then the part under analysis can withstand the proposed cyclic operation. Now, if the extrema of the partial stress amplitude correspond to different transients, then the following note in ASME III’s NB-3224(5) should be followed:

![A low-alloy steel vessel nozzle (blue) welded to a stainless steel pipe (grey) for the “EAF Sample Problem 2-Rev.\ 2 (10/21/2011)”](axi-inches-3d.png){#fig:axi-inches-3d width=60%}

Now, if the extrema of the partial stress amplitude correspond to different transients, then the following note in ASME III’s NB-3224(5) should be followed:

> In determining $n_1$, $n_2$, $n_3$, $\dots$, $n_j$ consideration shall be given to the superposition of cycles of various origins which produce a total stress difference range greater than the stress difference ranges of the individual cycles. For example, if one type of stress cycle produces 1,000 cycles of a stress difference variation from zero to +60,000\ psi and another type of stress cycle produces 10,000 cycles of a stress difference variation from zero to −50,000\ psi, the two types of cycle to be considered are defined by the following parameters:
>
> (a) for type 1 cycle, $n_1 =$ 1,000 and $S_{\text{alt},1} = (60,000 + 50,000)/2;
> (b) for type 2 cycle, $n_2 =$ 9,000 and $S_{\text{alt},2} = (50,000 + 0)/2.
> (a) for type 1 cycle, $n_1 =$ 1,000 and $S_{\text{alt},1} = (60,000 + 50,000)/2$;
> (b) for type 2 cycle, $n_2 =$ 9,000 and $S_{\text{alt},2} = (50,000 + 0)/2$.


This cryptic paragraph can be better explained by using a clearer example. To avoid using actual sensitive data from a real power plant, let us use the same test case used by both the [US Nuclear Regulatory Commission](https://en.wikipedia.org/wiki/Nuclear_Regulatory_Commission) (in its report NUREG/CR-6909) and the [Electric Power Institute](https://en.wikipedia.org/wiki/Electric_Power_Research_Institute) (report 1025823) called “EAF (Environmentally-Assisted Fatigue) Sample Problem 2-Rev.\ 2 (10/21/2011)”.

It consists of a typical vessel (NB-3200) nozzle with attached piping (NB-3600) as illustrated in\ [@fig:axi-inches-3d]. These components are subject to four transients\ $k=1,2,3,4$ that give rise to linearised stress histories (slightly modified according to NB-3216.2) which are given as individual stress values juxtaposed so as to span a time range of about 36,000 seconds ([@fig:nureg1]). As the time steps is not constant, each stress value has an integer index\ $i$ that uniquely identifies it:

![A low-alloy steel vessel nozzle (blue) welded to a stainless steel pipe (grey)](axi-inches-3d.png){#fig:axi-inches-3d width=25%}


It consists of a typical vessel nozzle with attached piping as illustrated in\ [@fig:axi-inches-3d]. These components are subject to four transients\ $k=1,2,3,4$ that give rise to linearised stress histories (slightly modified according to NB-3216.2) which are given as individual stress values juxtaposed so as to span a time range of about 36,000 seconds ([@fig:nureg1]). As the time steps is not constant, each stress value has an integer index\ $i$ that uniquely identifies it:

| $k$ | Time range [s] | Index range | Cycles\ $n_k$ |
|:-----:|:--------------:|:-----------:|:----------------:|
@@ -1018,7 +1021,8 @@ It consists of a typical vessel (NB-3200) nozzle with attached piping (NB-3600)
| 3 | 6450--9970 | 960--1595 | 20 |
| 4 | 9970--35971 | 1596--2215 | 100 |

A design-basis earthquake was assumed to occur briefly during one second (sic) at around\ $t=3470$\ seconds, and it is assigned a number of cycles\ $n_e=5$. The detailed stress history for one of the SCLs including both the principal and lineariased stresses, which are already offset following NB-3216.2 so as to have a maximum stress equal to zero, can be found as an appendix in NRC's NUREG/CR-6909 report, or in the repository with the scripts I prepared for you to play with this problem.^[<https://bitbucket.org/seamplex/cufen>]
A design-basis earthquake was assumed to occur briefly during one second (sic) at around\ $t=3470$\ seconds, and it is assigned a number of cycles\ $n_e=5$. The detailed stress history for one of the SCLs including both the principal and lineariased stresses, which are already offset following NB-3216.2 so as to have a maximum stress equal to zero, can be found as an appendix in NRC's NUREG/CR-6909 report, or in the repository with the scripts I prepared for you to play with this problem.^[<https://github.com/seamplex/cufen>]


::::: {#fig:nureg}
![Full time range of the juxtaposed transients spanning $\approx$ 36,000 seconds](nureg1.emf){#fig:nureg1 width=70%}
@@ -1030,18 +1034,13 @@ A design-basis earthquake was assumed to occur briefly during one second (sic) a
Time history of the linearised stress\ $\text{MB}_{31}$ corresponding to the example problem from NRC and EPRI. The indexes\ $i$ of the extrema are shown in green (minimums) and red (maximums)
:::::

\medskip

To compute the global usage factor, we first need to find all the combinations of local extrema pairs and then sort them in decreasing order of stress difference. For example, the largest stress amplitude is found between $i=447$ and $i=694$. The second one is 447--699. Then 699--1020, 699--899, etc. For each of these pairs, defined by the indexes\ $i_{1,j}$ and $i_{2,j}$, a partial usage factor\ $U_j$ should computed. The stress amplitude\ $S_{\text{alt},j}$ which should be used to enter into the $S$-$N$ curve is

$$
S_{\text{alt},j} = \frac{1}{2} \cdot k_{e,j} \cdot \left| MB^\prime_{i_{1,j}} - MB^\prime_{i_{2,j}} \right| \cdot \frac{E_\text{SN}}{E(T_{\text{max}_j})}
$$
where $k_e$ is a plastic correction factor for large loads (NB-3228.5), $E_\text{SN}$ is the Young Modulus used to create the $S$-$N$ curve (provided in the ASME fatigue curves) and\ $E(T_{\text{max}_j})$ is the material’s Young Modulus at the maximum temperature within the\ $j$-th interval.

\medskip

We now need to comply with ASME’s obscure note about the number of cycles to assign a proper value of\ $n_j$. Back to the largest pair 447-694, we see that 447 belongs to transient\ #1 which has assigned 20 cycles and 694 belongs to the earthquake with 5 cycles. Therefore\ $n_1=5$, and the cycles associated to each index are decreased in five. So $i=694$ disappears and the number of cycles associated to $i=447$ are decreased from 20 to 15. The second largest pair is now 447-699, with 15 (because we just spent 5 in the first pair) and 50 cycles respectively. Now $n_2=15$, point\ 447 disappears and 699 remains with 35 cycles. The next pair is 699-1020, with number of cycles 35 and 20 so $n_3=20$, point 1020 disappears and 699 remains with 15 cycles. And so on, down to the last pair.
where $k_e$ is a plastic correction factor for large loads (NB-3228.5), $E_\text{SN}$ is the Young’s Modulus used to create the $S$-$N$ curve (provided in the ASME fatigue curves) and\ $E(T_{\text{max}_j})$ is the material’s Young’s Modulus at the maximum temperature within the\ $j$-th interval.

::::: {#fig:cuf}
![Reference from NUREG/CR6909](cuf-nrc.png){#fig:cuf-nrc width=100%}
@@ -1051,15 +1050,17 @@ We now need to comply with ASME’s obscure note about the number of cycles to a
Tables of individual usage factors for the NRC/EPRI “EAF Sample Problem 2-Rev.\ 2 (10/21/2011).” One table is taken from a document issued by almost-a-billion-dollar-year-budget government agency from the most powerful country in the world and the other one is from a third-world engineering startup. Guess which is which.
:::::

Why all these details? Not because I want to teach you how to perform fatigue evaluations just reading this section without resorting to ASME, fatigue books and even other colleagues. It is to show that even though these computation can be made “by hand” (i.e. using a calculator or, God forbids, a spreadsheet) when having to evaluate a few SCLs within several piping systems it is far (and I mean really far) better to automatise all these steps by writing a set of scripts. Not only will the time needed to process the information be reduced, but also the introduction of human errors will be minimised and repeatability of results will be assured---especially if working under a [distributed version control](https://en.wikipedia.org/wiki/Distributed_version_control) system such as [Git](https://en.wikipedia.org/wiki/Git). This is true in general, so here is another tip: learn to write scripts to post-process your FEM results (you will need to use a script-friendly FEM program) and you will gain considerable margins regarding time and quality.
We now need to comply with ASME’s obscure note about the number of cycles to assign a proper value of\ $n_j$. Back to the largest pair 447-694, we see that 447 belongs to transient\ #1 which has assigned 20 cycles and 694 belongs to the earthquake with 5 cycles. Therefore\ $n_1=5$, and the cycles associated to each index are decreased in five. So $i=694$ disappears and the number of cycles associated to $i=447$ are decreased from 20 to 15. The second largest pair is now 447-699, with 15 (because we just spent 5 in the first pair) and 50 cycles respectively. Now $n_2=15$, point\ 447 disappears and 699 remains with 35 cycles. The next pair is 699-1020, with number of cycles 35 and 20 so $n_3=20$, point 1020 disappears and 699 remains with 15 cycles. And so on, down to the last pair.

Why all these details? Not because I want to teach you how to perform fatigue evaluations just reading this section without resorting to ASME, fatigue books and even other colleagues. It is to show that even though these computation can be made “by hand” (i.e. using a calculator or, God forbids, a spreadsheet) when having to evaluate a few SCLs within several piping systems it is far (and I mean really far) better to automate all these steps by writing a set of scripts. Not only will the time needed to process the information be reduced, but also the introduction of human errors will be minimised and repeatability of results will be assured---especially if working under a [distributed version control](https://en.wikipedia.org/wiki/Distributed_version_control) system such as [Git](https://en.wikipedia.org/wiki/Git). This is true in general, so here is another tip: learn to write scripts to post-process your FEM results (you will need to use a script-friendly FEM program) and you will gain considerable margins regarding time and quality.

### In water (NRC’s extension) {#sec:in-water}

The fatigue curves and ASME’s (both\ III and VIII) methodology to analyse cyclic operations assume the parts under study are in contact with air, which is not the case of nuclear reactor pipes. Instead of building a brand new body of knowledge to replace ASME, the NRC decided to modify the former adding environmentally-assisted fatigue multipliers to the traditional usage factors, formally defined as
The fatigue curves and ASME’s (both\ III and\ VIII) methodology to analyse cyclic operations assume the parts under study are in contact with air, which is not the case of nuclear reactor pipes. Instead of building a brand new body of knowledge to replace ASME, the NRC decided to modify the former adding environmentally-assisted fatigue multipliers to the traditional usage factors, formally defined as

$$F_\text{en} = \frac{N_\text{air}}{N_\text{water}} \geq 1$$

This way, the environmentally-assisted usage factor for the $j$-th load pair is $\text{CUF}_\text{en,j} = U_j \cdot {F_\text{en},j}$ and the global cumulative usage factor in water is the sum of these partial contributions
This way, the environmentally-assisted usage factor for the $j$-th load pair is $\text{CUF}_\text{en,j} = U_j \cdot F_{\text{en},j}$ and the global cumulative usage factor in water is the sum of these partial contributions

$$\text{CUF}_\text{en} = U_1 \cdot F_{\text{en},1} + U_2 \cdot F_{\text{en},2} + \dots + U_j \cdot F_{\text{en},j} + \dots$${#eq:cufen}

@@ -1081,7 +1082,7 @@ The NRC has performed a comprehensive set of theoretical and experimental tests

Apparently it makes no difference whether the environment is composed of either light or heavy water. There are somewhat different sets of non-dimensional analytical expressions that estimate the value of\ $F_{\text{en}}(t)$ as a function of\ $O(t)$, $T(t)$, $\dot{\epsilon}(t)$ and $S(t)$, both in the few revisions of NUREG/CR-6909 and in EPRI’s report\ #1025823. Although they are not important now, the actual expressions should be defined and agreed with the plant owner and the regulator. The main result to take into account is that\ $F_{\text{en}}(t)=1$ if\ $\dot{\epsilon}(t)\leq0$, i.e. there are no environmental effects during the time intervals where the material is being compressed.

Once we have the instantaneous factor\ $F_{\text{en}}(t)$, we need to obtain an average value\ $F_{\text{en},j}$ which should be applied to the\ $j$-th load pair. Again, there are a few different ways of lumping the time-dependent\ $F_{\text{en}}(t)$ into a single $F_{\text{en},j}$ for each interval. Both NRC and EPRI give simple equations that depend on a particular time discretisation of the stress histories that, in my view, are all ill-defined. My guess is that they underestimated they audience and feared readers would not understand the slightly-more complex mathematics needed to correctly define the problem. The result is that they introduced a lot of ambiguities (and even technical errors) just not to offend the maths illiterate. A decision I do not share, and a another reason to keep on learning and practising math.
Once we have the instantaneous factor\ $F_{\text{en}}(t)$, we need to obtain an average value\ $F_{\text{en},j}$ which should be applied to the\ $j$-th load pair. Again, there are a few different ways of lumping the time-dependent\ $F_{\text{en}}(t)$ into a single $F_{\text{en},j}$ for each interval. Both NRC and EPRI give simple equations that depend on a particular time discretisation of the stress histories that, in my view, are all ill-defined. My guess is that they underestimated their audience and feared readers would not understand the slightly-more complex mathematics needed to correctly define the problem. The result is that they introduced a lot of ambiguities (and even technical errors) just not to offend the maths illiterate. A decision I do not share, and a another reason to keep on learning and practising math.

When faced for the first time with the case study, I have come up with a weighting method that I claim is less ill-defined (it still is for border-line cases) and which the plant owner accepted as valid. [@Fig:cufen] shows the reference results of the problem (based on computing two correction factors and then taking the maximum) and the ones obtained with the proposed method (by computing a weighted integral between the valley and the peak). Note how in\ [@fig:cufen-nrc], pairs 694-447 and 699-447 have the same\ $F_\text{en}$ even though they are (marginally) different. The results from\ [@fig:cufen-seamplex] give two (marginally) different correction factors.

@@ -1100,25 +1101,25 @@ Back in college, we all learned how to solve engineering problems. And once we g
* use and exercise your imagination
* practise math
* start with simple cases first
dnl * grasp the dependence of results with independent variables
* keep in mind there are other methods beside finite elements
* grasp the dependence of results with independent variables
* remember there are other methods beside finite elements
* take into account that even within the finite element method, there is a wide variety of complexity in the problems that can be solved
dnl * follow the “five whys rule” before compute anything, probably you do not need to
* use engineering judgment and make sure understand Asimov’s [“wronger than wrong”](https://en.wikipedia.org/wiki/Wronger_than_wrong) concept
* play with your favourite FEM solver (mine is [CAEplex](https://caeplex.com)) solving simple cases, trying to predict the results and picturing the stress tensor and its eigenvectors in your imagination
* prove (with pencil and paper) that even though the principal stresses are not linear with respect to summation, they are linear with respect to multiplication
* grab any stress distribution from any of your FEM projects, compute the iso-stress curves and the draw normal lines to them to get acquainted with SCLs
dnl * first search online for “stress linearisation” (or “linearization” if you want) and then get a copy of ASME\ VIII Div\ 2 Annex 5-A
* keep in mind that FEM solutions lead only to nodal equilibrium but not pointwise equilibrium
* search online for “stress linearisation” (or “linearization” if you want) and then get a copy of ASME\ VIII Div\ 2 Annex 5-A
* take into account that FEM solutions lead only to nodal equilibrium but not point-wise equilibrium
* measure the time needed to generate grids of different sizes and kinds with your favourite mesher
* learn this by heart: the complexity of a FEM problem is given mainly by the number of _nodes_, not by the number of elements
* remember that welded materials with different thermal expansion coefficients may lead to fatigue under cyclic temperature changes
dnl * if you have time, try to get out of your comfort zone and do more than what others expect from you (like parametric computations)
dnl * clone the [parametric tee repository](https://bitbucket.org/seamplex/tee), understand how the figures from\ [@sec:parametric] were built and expand them to cover “we might go on...” bullets
dnl * try to find an explanation of the results obtained, just like we did when we explained the parametric curves from\ [@fig:tee-MB ] with two opposing effects which were equal in magnitude around $d_b=5$\ inches
* clone the [parametric tee repository](https://github.com/seamplex/tee), understand how the figures from\ [@sec:parametric] were built and expand them to cover “we might go on...” bullets
* try to find an explanation of the results obtained, just like we did when we explained the parametric curves from\ [@fig:tee-MB ] with two opposing effects which were equal in magnitude around $d_b=5$\ inches
* think thermal-mechanical plus earthquakes as “bake, break and shake” problems
* understand why the elastic problem of the case study is still linear after all
* keep in mind that finite-elements are a mean to get an engineering solution, not and end by themselves
* keep in mind that finite-elements are a means to get an engineering solution, not an end by themselves
* learn to write scripts to post-process FEM results (from a script-friendly FEM program)
* work under a [distributed version control](https://en.wikipedia.org/wiki/Distributed_version_control) system such as [Git](https://en.wikipedia.org/wiki/Git), even when just editing input files or writing reports
dnl * clone the [environmental fatigue sample problem repository](https://bitbucket.org/seamplex/cufen) and obtain a nicely-formatted table with the results of the “EAF Sample Problem 2-Rev.\ 2 (10/21/2011)” from\ [@sec:in-air;@sec:in-water].
@@ -1134,7 +1135,7 @@ About your favourite FEM program, ask yourself these two questions:
3. Do you trust your favourite FEM program?


And finally, make sure that at the end of the journey from college theory to an actual engineering problem your conscience, is clear knowing that there exists a report with your signature on it. That is why we all went to college in the first place.
And finally, make sure that at the end of the journey from college theory to an actual engineering problem your conscience is clear knowing that there exists a report with your signature on it. That is why we all went to college in the first place.


# Concluding Remarks

Binär
nafems4-eps.docx Visa fil


+ 106
- 105
nafems4-eps.md Visa fil

@@ -13,7 +13,7 @@

First of all, please take this text as a written chat between you an me, i.e. an average engineer that has already taken the journey from college to performing actual engineering works using finite element analysis and has something to say about it. Picture yourself in a coffee bar, talking and discussing concepts and ideas with me. Maybe needing to go to a blackboard (or notepad?). Even using a tablet to illustrate some three-dimensional results. But always as a chat between colleagues.

Please also note that I am not a mechanical engineer, although I shared many undergraduate courses with some of them. I am a nuclear engineer with a strong background on mathematics and computer programming. I went to college between 2002 and 2008. Probably a lot of things have changed since then---at least that is what these “millennial” guys and girls seem to be boasting about---but chances are we all studied solid mechanics and heat transfer with a teacher using a piece of chalk on a blackboard while we as students wrote down notes with pencils on paper sheets. And there is really not much that one can do with pencil and paper regarding mechanical analysis. Any actual case worth the time of an engineer need to be more complex than an ideal canonical case with analytical solution.
Please also note that I am not a mechanical engineer, although I shared many undergraduate courses with some of them. I am a nuclear engineer with a strong background in mathematics and computer programming. I went to college between 2002 and 2008. Probably a lot of things have changed since then---at least that is what these “millennial” guys and girls seem to be boasting about---but chances are we all studied solid mechanics and heat transfer with a teacher using a piece of chalk on a blackboard while we as students wrote down notes with pencils on paper sheets. And there is really not much that one can do with pencil and paper regarding mechanical analysis. Any actual case worth the time of an engineer needs to be more complex than an ideal canonical case with analytical solution.

Whether you are a student or a seasoned engineer with many years of experience, you might recall from first year physics courses the introduction of the [simple pendulum](https://en.wikipedia.org/wiki/Pendulum) as a case study\ ([@fig:simple]). You learned that the period does not depend on the hanging mass because the weight and the inertia exactly cancelled each other. Also, that [Galileo](https://en.wikipedia.org/wiki/Galileo_Galilei) said (and [Newton proved](https://www.seamplex.com/wasora/realbook/real-012-mechanics.html)) that for small oscillations the period does not even depend on the amplitude. Someone showed you why it worked this way: because if\ $\sin \theta \approx \theta$ then the motion equations converge to an [harmonic oscillator](https://en.wikipedia.org/wiki/Harmonic_oscillator). It might have been a difficult subject for you back in those days when you were learning physics and calculus at the same time. You might have later studied the [Lagrangian](https://en.wikipedia.org/wiki/Lagrangian_mechanics) and even the [Hamiltonian](https://en.wikipedia.org/wiki/Hamiltonian_mechanics) formulations, added a [parametric excitation](https://en.wikipedia.org/wiki/Parametric_oscillator) and analysed the [chaotic double pendulum](https://www.seamplex.com/wasora/realbook/real-017-double-pendulum.html). But it was probably after college, say when you took your first son to a swing on a windy day ([@fig:hamaca]), that you were faced with a real pendulum worth your full attention. Yes, this is my personal story but it could have easily been yours as well. My point is that the very same distance between what I imagined studying a pendulum was and what I saw that day at the swing (namely that the period _does_ depend on the hanging mass) is the same distance between the mechanical problems studied in college and the actual cases encountered during a professional engineer’s lifetime ([@fig:pipes]). In this regard, I am referring only to technical issues. The part of dealing with clients, colleagues, bosses, etc. which is definitely not taught in engineering schools (you can get a heads up in business schools, but again it would be a theoretical pendulum) is way beyond the scope of both this article and my own capacities.

@@ -21,7 +21,7 @@ Whether you are a student or a seasoned engineer with many years of experience,
![Simple pendulum](simple.eps){#fig:simple width=35%}\
![Real pendulum](hamaca.jpg){#fig:hamaca width=60%}

A simple pendulum from college physics courses and a real-life pendulum. Hint: the swing’s period _does_ depend on the hanging mass. See the [actual video](hamaca.webm)
A [simple pendulum from college physics courses](https://www.seamplex.com/wasora/doc/realbook/012-mechanics/) and a real-life pendulum. Hint: the swing’s period _does_ depend on the hanging mass as shown in\ <https://youtu.be/Q-lKK4A2OzA>
:::::

::::: {#fig:pipes}
@@ -31,7 +31,7 @@ A simple pendulum from college physics courses and a real-life pendulum. Hint: t
An infinitely-long pressurised thick pipe as taught in college and an isometric drawing of a section of a real-life piping system
:::::

Like the pendulums above, we will be swinging back and forth between a case study about fatigue assessment of piping systems in a nuclear power plant and more generic and even romantic topics related to finite elements and computational mechanics. These latter regressions will not remain just as abstract theoretical ideas. Not only will they be directly applicable to the development of the main case, but they will also apply to a great deal of other engineering problems tackled with the finite element method (and its cousins, [@sec:formulations]).
Like the pendulums above, we will be swinging back and forth between a case study about fatigue assessment of piping systems in a nuclear power plant and more generic topics related to finite elements and computational mechanics. These latter regressions will not remain just as abstract theoretical ideas. Not only will they be directly applicable to the development of the main case, but they will also apply to a great deal of other engineering problems tackled with the finite element method (and its cousins, [@sec:formulations]).

\medskip

@@ -47,28 +47,24 @@ There are some useful tricks that come handy when trying to solve a mechanical p


One of the most important ones to use your _imagination_. You will need a lot of imagination to “see” what it is actually going on when analysing an engineering problem. This skill comes from my background in nuclear engineering where I had no choice but to imagine a [positron-electron annihilation](https://en.wikipedia.org/wiki/Electron%E2%80%93positron_annihilation) or an [spontaneous fission](https://en.wikipedia.org/wiki/Spontaneous_fission). But in mechanical engineering, it is likewise important to be able to imagine how the loads “press” one element with the other, how the material reacts depending on its properties, how the nodal displacements generate stresses (both normal and shear), how results converge, etc. And what these results actually mean besides the pretty-coloured figures.^[A former boss once told me “I need the CFD” when I handed in some results. I replied that I did not do computational fluid-dynamics but computed the neutron flux kinetics within a nuclear reactor core. He joked “I know, what I need are the _Colors For Directors_, those pretty-coloured figures along with your actual results to convince the managers.”]
This journey will definitely need your imagination. We will see equations, numbers, plots, schematics, CAD geometries, 3D\ views, etc. Still, when the theory says “thermal expansion produces normal stresses” you have to picture in your head three little arrows pulling away from the same point in three directions, or whatever mental picture you have about what you understand thermally-induced stresses are. What comes to your mind when someone says that out of the nine elements of the [stress tensor](https://en.wikipedia.org/wiki/Cauchy_stress_tensor) ([@sec:tensor]) there are only six that are independent? Whatever it is, try to practice that kind of graphical thoughts with every new concept. Nevertheless, there will be particular locations of the text where imagination will be most useful. I will bring the subject up.
This journey will definitely need your imagination. We will take a look at equations, numbers, plots, schematics, CAD geometries, 3D\ views, etc. Still, when the theory says “thermal expansion produces normal stresses” you have to picture in your head three little arrows pulling away from the same point in three directions, or whatever mental picture you have about what you understand thermally-induced stresses are. What comes to your mind when someone says that out of the nine elements of the [stress tensor](https://en.wikipedia.org/wiki/Cauchy_stress_tensor) ([@sec:tensor]) there are only six that are independent? Whatever it is, try to practice that kind of graphical thoughts with every new concept. Nevertheless, there will be particular locations of the text where imagination will be most useful. I will bring the subject up then and again.

Another heads up is that we will be digging into some mathematics. Probably they would be be simple and you would deal with them very easily. But chances are you do not like equations. No problem! Just ignore them for now. Read the text skipping them, it should work as well.
Łukasz Skotny says [you do not need to know maths to perform finite-element analysis](https://enterfea.com/math-behind-fea/). And he is right, in the sense that you do not need to know thermodynamics to drive a car. It is fine to ignore maths for now.
But, eventually, a time will come in which it cannot (or should not) be avoided. If you want to go to space, you will definitely have to learn thermodynamics.

So here comes another experience tip: do not fear equations. Even more, keep exercising. You have used [differences of squares](https://en.wikipedia.org/wiki/Difference_of_two_squares) in high school, didn’t you?. You know (or at least knew) how to [integrate by parts](https://en.wikipedia.org/wiki/Integration_by_parts). Do you remember what [Laplace transforms](https://en.wikipedia.org/wiki/Laplace_transform) are used for? Once in a while, perform a division of polynomials using [Ruffini’s rule](https://en.wikipedia.org/wiki/Ruffini's_rule). Or compute the second [derivative of the quotient of two functions](https://en.wikipedia.org/wiki/Quotient_rule). Whatever. It should be like doing crosswords on the newspaper. Grab those old physics college books and read the exercises at the end of each chapter. It will pay off later on.
Another heads up is that we will be digging into some mathematics. Probably they would be simple and you would deal with them very easily. But chances are you do not like equations. No problem! Just ignore them for now. Read the text skipping them, it should work as well.
Anyhow, here comes another experience tip: keep exercising mathematics. You have used [differences of squares](https://en.wikipedia.org/wiki/Difference_of_two_squares) in high school, didn’t you?. You know (or at least knew) how to [integrate by parts](https://en.wikipedia.org/wiki/Integration_by_parts). Do you remember what [Laplace transforms](https://en.wikipedia.org/wiki/Laplace_transform) are used for? Once in a while, perform a division of polynomials using [Ruffini’s rule](https://en.wikipedia.org/wiki/Ruffini's_rule). Or compute the second [derivative of the quotient of two functions](https://en.wikipedia.org/wiki/Quotient_rule). Whatever. It should be like doing crosswords on the newspaper. Grab those old physics college books and solve the exercises at the end of each chapter. All the effort will pay off later on.

One final comment: throughout the text I will be referring to “your favourite FEM program.” I bet you do have one. Mine is [CAEplex](https://caeplex.com) (it works on top of [Fino](https://www.seamplex.com/fino)). We will be using it to perform some tests and play a little bit. And we will also use it to think about what it means to use a FEM program to generate results that will eventually end up in a written project with your signature. Keep that in mind.
One final comment: throughout the text I will be referring to “your favourite FEM program.” I bet you do have one. Mine is [CAEplex](https://caeplex.com) (it works on top of [Fino](https://www.seamplex.com/fino), which is free and open source). We will be using it to perform some tests and play a little bit. And we will also use it to think about what it means to use a FEM program to generate results that will eventually end up in a written project with your signature. Keep that in mind.


## Case study: reactors, pipes and fatigue {#sec:case}

Piping systems in sensitive industries like nuclear or oil & gas should be designed and analysed following the recommendations of an appropriate set of codes and norms, such as the [ASME\ Boiler and Pressure Vessel Code](https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code).
This code of practice was born during the late\ XIX century, before finite-element methods for solving partial differential equations were even developed. And much longer before they were available for the general engineering community. Therefore, much of the code assumes design and verification is not necessarily performed numerically but with paper and pencil (yes, like in college). However, it still provides genuine guidance in order to ensure pressurised systems behave safely and properly without needing to resort to computational tools. Combining finite-element analysis with the ASME code gives the cognisant engineer a unique combination of tools to tackle the problem of designing and/or verifying pressurised piping systems.
This code of practice was born during the late\ 19th century, before finite-element methods for solving partial differential equations were even developed. And much longer before they were available for the general engineering community. Therefore, much of the code assumes design and verification is not necessarily performed numerically but with paper and pencil (yes, like in college). However, it still provides genuine guidance in order to ensure pressurised systems behave safely and properly without needing to resort to computational tools. Combining finite-element analysis with the ASME code gives the cognisant engineer a unique combination of tools to tackle the problem of designing and/or verifying pressurised piping systems.

In the years following [Enrico Fermi](https://en.wikipedia.org/wiki/Enrico_Fermi)’s demonstration that a self-sustainable [fission reaction](https://en.wikipedia.org/wiki/Nuclear_fission) chain was possible (actually, in fact, after WWII was over), people started to build plants in order to transform the energy stored within the atoms nuclei into usable electrical power. They quickly reached the conclusion that high-pressure heat exchangers and turbines were needed. So they started to follow codes of practise like the aforementioned ASME\ B&PVC. They also realised that some requirements did not fit the needs of the nuclear industry. But instead of writing a new code from scratch, they added a new chapter to the existing body of knowledge: the celebrated [ASME Section\ III](https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code#ASME_BPVC_Section_III_-_Rules_for_Construction_of_Nuclear_Facility_Components).

After further years passed by, engineers (probably the same people that forked section\ III) noticed that fatigue in nuclear power plants was not exactly the same as in other piping systems. There were some environmental factors directly associated to the power plant that were not taken into account by the regular ASME code. Again, instead of writing a new code from scratch, people decided to add correction factors to the previously-amended body of knowledge. This is how (sometimes) knowledge evolves, and it is this kind of complexities that engineers are faced with during their professional lives. We have to admit it, it would be a very difficult task to re-write everything from scratch every time something changes.

Actually, this article does not focus on a single case study but on some general ideas regarding analysis of fatigue in piping systems in nuclear power plants. There is no single case study but a compendium of ideas obtained by studying many different systems which are directly related to the safety of a real nuclear reactor.

![Three-dimensional CAD model for the piping system of\ [@fig:isometric]](real-piping.png){#fig:real-life width=75%}

### Nuclear reactors
@@ -98,7 +94,7 @@ For the case study, as the loads come principally from operational loads, the AS

![A fatigue or $S$-$N$ curve for two steels.](SN.eps){#fig:SN width=75%}

It should be noted that the fatigue curves are obtained in a particular load case, namely purely-periodic and one-dimensional, which cannot be directly generalised to other three-dimensional cases. Also, any real-life case will be subject to a mixture of complex cycles given by a stress time history and not to pure periodic conditions. The application of the curve data implies a set of simplifications and assumptions that are translated into different possible “rules” for composing real-life cycles. There also exist two safety factors which increase the stress amplitude and reduce the number of cycles respectively. All these intermediate steps render the analysis of fatigue into a conservative computation scheme ([@sec:kinds]). Therefore, when a fatigue assessment performed using the fatigue curve method arrives at the conclusion that “fatigue is expected to occur after ten thousand cycles” what it actually means is “we are sure fatigue will not occur before ten thousand cycles, yet it may not occur before one hundred thousand or even more.”
It should be noted that the fatigue curves are obtained in a particular load case, namely purely-periodic and one-dimensional, which cannot be directly generalised to other three-dimensional cases. Also, any real-life case will be subject to a mixture of complex cycles given by a stress time history and not to pure periodic conditions. The application of the curve data implies a set of simplifications and assumptions that are translated into different possible “rules” for composing real-life cycles. There also exist two safety factors which increase the stress amplitude and reduce the number of cycles respectively. All these intermediate steps render the analysis of fatigue into a conservative computation scheme. Therefore, when a fatigue assessment performed using the fatigue curve method arrives at the conclusion that “fatigue is expected to occur after ten thousand cycles” what it actually means is “we are sure fatigue will not occur before ten thousand cycles, yet it may not occur before one hundred thousand or even more.”

## Solid mechanics, or what we are taught at college

@@ -142,7 +138,10 @@ What does this all have to do with mechanical engineering? Well, once we know wh

### An infinitely-long pressurised pipe {#sec:infinite-pipe}

Let us proceed to our second step, and consider the infinite pipe subject to uniform internal pressure already introduced in\ [@fig:infinite-pipe]. Actually, we are going to solve the mechanical problem on an infinite hollow cylinder, which looks like pipe. This case is usually tackled in college courses, and chances are you already solved it. In fact, the first (and simpler) problem is the “thin cylinder problem.” Then, the “thick cylinder problem” is introduced (the one we solve below), which is slightly more complex. Nevertheless, it has an analytical solution which is derived [here](https://www.seamplex.com/fino/doc/pipe-linearized/). For the present case, let us consider an infinite pipe (i.e. a hollow cylinder) of internal radius $a$ and external radius $b$ with uniform mechanical properties---Young modulus $E$ and Poisson’s ratio $\nu$---subject to an internal uniform pressure $p$.
Let us proceed to our second step, and consider the infinite pipe subject to uniform internal pressure already introduced in\ [@fig:infinite-pipe]. Actually, we are going to solve the mechanical problem on an infinite hollow cylinder, which looks like pipe. This case is usually tackled in college courses, and chances are you already solved it. In fact, the first (and simpler) problem is the “thin cylinder problem.” Then, the “thick cylinder problem” is introduced (the one we solve below), which is slightly more complex. Nevertheless, it has an [analytical solution](https://www.seamplex.com/fino/doc/pipe-linearized/). For the present case, let us consider an infinite pipe (i.e. a hollow cylinder) of internal radius $a$ and external radius $b$ with uniform mechanical properties---Young’s modulus $E$ and Poisson’s ratio $\nu$---subject to an internal uniform pressure $p$.

What follows is more or less what we are taught in school: some equations with a brief explanation of the results. And then we move on to the next subject.


#### Displacements

@@ -159,7 +158,7 @@ Remember that when any solid body is subject to external forces, it has to react
What does this mean? Well, that overall the whole pipe expands a little bit radially with the inner face being displaced more than the external surface (use your imagination!). How much?

1. linearly with the pressure, i.e. twice the pressure means twice the displacement, and
2. inversely proportional to the Young Modulus\ $E$ divided by $1+\nu$, i.e. the more resistant the material, the less radial displacements.
2. inversely proportional to the Young’s Modulus\ $E$ divided by $1+\nu$, i.e. the more resistant the material, the less radial displacements.

That is how an infinite pipe withstands internal pressure.

@@ -183,9 +182,9 @@ We can note that
That is all what we can say about an infinite pipe with uniform material properties subject to an uniform internal pressure\ $p$. If

* the pipe was not infinite (say any real pipe that has to start and end somewhere), or
* the cross-section of the pipe is not constant along the axis (say there is an elbow or even a reduction), or
* the cross-section of the pipe was not constant along the axis (say there is an elbow or even a reduction), or
* there was more than one pipe (say there is a tee), or
* the material properties are not uniform (say the pipe does not have an uniform temperature but a distribution), or
* the material properties were not uniform (say the pipe does not have an uniform temperature but a distribution), or
* the pressure was not uniform (say because there is liquid inside and its weight cannot be neglected),

\noindent then we would no longer be able to fully solve the problem with paper and pencil and draw all the conclusions above. However, at least we have a start because we know that if the pipe is finite but long enough or the temperature is not uniform but almost, we still can use the analytical equations as approximations. After all, [Enrico Fermi](https://en.wikipedia.org/wiki/Enrico_Fermi) managed to reach criticality in the [Chicago Pile-1](https://en.wikipedia.org/wiki/Chicago_Pile-1) with paper and pencil. But what happens if the pipe is short, there are branches and temperature changes like during a transient in a nuclear reactor? Well, that is why we have finite elements. And this is where what we learned at college pretty much ends.
@@ -196,6 +195,7 @@ That is all what we can say about an infinite pipe with uniform material propert

Besides infinite pipes (both thin and thick), spheres and a couple of other geometries, there are no other cases for which we can obtain analytical expressions for the elements of the stress tensor. To get results for a solid with real engineering interest, we need to use numerical methods to solve the equilibrium equations. It is not that the equations are hard _per se_. It is that the mechanical parts we engineers like to design (which are of course more complex than cylinders and spheres) are so intricate that render simple equations into monsters which are unsolvable with pencil and paper. Hence, finite elements enter into the scene.


### The name of the game {#sec:formulations}

But before turning our attention directly into finite elements (and leaving college, at least undergraduate) it is worth some time to think about other alternatives. Are we sure we are tackling your problems in the best possible way? I mean, not just engineering problems. Do we take a break, step back for a while and see the whole picture looking at all the alternatives so we can choose the best cost-effective one?
@@ -233,6 +233,7 @@ Before proceeding, I would like to make two comments about common nomenclature.

The second one is more philosophical and refers to the word “simulation” which is often used to refer to solving a problem using a numerical scheme such as the finite element method. [I am against at using this word for this endeavour](https://www.seamplex.com/blog/say-modeling-not-simulation.html). The term simulation has a connotation of both “pretending” and “faking” something, that is definitely not what we are doing when we solve an engineering problem with finite elements. Sure, there are some cases in which we simulate, such as using the [Monte Carlo method](https://en.wikipedia.org/wiki/Monte_Carlo_method) (originally used by Fermi as an attempt to understand how neutrons behave in the core of nuclear reactors). But when solving deterministic mechanical engineering problems I would rather say “modelling” than “simulation.”

divert(-1)
### Kinds of finite elements {#sec:kinds}

This section is not (just) about different kinds of elements like tetrahedra, hexahedra, pyramids and so on. It is about the different kinds of analysis there are. Indeed, there is a whole plethora of particular types of calculations we can perform, all of which can be called “finite element analysis.” For instance, for the mechanical problem, we can have different kinds of
@@ -244,7 +245,6 @@ This section is not (just) about different kinds of elements like tetrahedra, he

And then there exist different pre-processors, meshers, solvers, pre-conditioners, post-processing steps, etc. A similar list can be made for the [heat conduction problem](https://en.wikipedia.org/wiki/Thermal_conduction), [electromagnetism](https://en.wikipedia.org/wiki/Electromagnetism), the [Schröedinger equation](https://en.wikipedia.org/wiki/Schr%C3%B6dinger_equation), [neutron transport](https://en.wikipedia.org/wiki/Neutron_transport), etc. But there is also another level of “kind of problem,” which is related to how much accuracy and precision we are to willing sacrifice in order to have a (probably very much) simpler problem to solve. Again, there are different combinations here but a certain problem can be solved using any of the following three approaches, listed in increasing amount of difficulty and complexity: conservative, best-estimate or probabilistic.

divert(-1)
The first one is the easiest because we are allowed to choose parameters and to make engineering decisions that may simplify the computation as long as they give results towards the worst-case scenario. More often than not, a conservative _estimation_ is enough in order to consider a problem as solved. Note that this is actually how fatigue results are obtained using fatigue curves, as discussed in\ [@sec:fatigue]. A word of care should be taken when considering what the “worst-case scenario” is. For instance, if we are analysing the temperature distribution in a mechanical part subject to convection boundary conditions, we might take either a very large or a very low convection coefficient as the conservative case. If we needed to design fins to dissipate heat then a low coefficient would be the conservative choice. But if the mechanical properties deteriorated with high temperatures then the conservative way to go would be to set a high convection coefficient. A common practice is to have a fictitious set of parameters, each of them being conservative leading individually to the worst case even if the overall combination is not physically feasible.

As neat and tempting as conservative computations may be, sometimes the assumptions may be too biased toward the bad direction and there might be no way of justifying certain designs with conservative computations. It is then time to sharpen our pencils and perform a best-estimate computation. This time, we should stick to the most-probable values of the parameters and even use more complex models that can better represent the physical phenomena that are going on in our problem. Sometimes best-estimate computations are just slightly more complex than conservative models. But more often than not, best-estimates get far more complicated. And these complications come not just in the finite-element model of the elastic problem but in the dependence of properties with space, time and/or temperature, in non-trivial relationships between macro and microscopic parameters, in more complicated algorithms for post-processing data, etc.
@@ -256,11 +256,9 @@ Finally, when then uncertainties associated to the parameters, methods and model
3. combining all the results into to obtain a best-estimate value plus uncertainty.

This kind of computation is usually required by the nuclear regulatory authorities when power plant designers need to address the safety of the reactors. What is the heat capacity of uranium above 1000ºC? What is the heat transfer coefficient when approaching the [critical heat flux](https://en.wikipedia.org/wiki/Critical_heat_flux) before the [Leidenfrost effect](https://en.wikipedia.org/wiki/Leidenfrost_effect) occurs? A certain statistical analysis has to be done prior to actually parametrically sweeping (see\ [@sec:parametric]) the input parameters so as to obtain a distribution of possible outcomes.
divert(0)

We might get into a an infinite taxonomic loop if we continue down this path. So let us move one step closer to our case study in this journey from college theory to an actual engineering problem.

divert(-1)
### Five whys {#sec:five}

So we know we need a numerical scheme to solve our mechanical problem because anything slightly more complex than an infinite pipe does not have analytical solution. We need an unstructured grid because we would not use Legos to discretise cylindrical pipes. We selected the finite elements method over the finite volumes method, because FEM is the king. Can we pause again and ask ourselves why is it that we want to do finite-element analysis?
@@ -291,7 +289,7 @@ You get the point, even though we know thanks to [Richard Feynmann](https://en.w

\medskip

Getting back to the case study: do we need to do FEM analysis? Well, it does not look like we can obtain the stresses of the transient cycles with just pencil and paper. But how much complexity should we add? We might do as little as axisymmetric linear steady-state conservative studies or as much as full three-dimensional non-linear transient best-estimate plus uncertainties computations. And here is where good engineers stand out: in putting their engineering judgment (call it experience or hunches) into defining _what_ to solve. And it is not (just) because the first option is faster to solve than the latter. Involving many complex methods need more engineering time
Getting back to the case study: do we need to do FEM analysis? Well, it does not look like we can obtain the stresses of the transient cycles with just pencil and paper. But how much complexity should we add? We might do as little as axisymmetric linear steady-state conservative studies or as much as full three-dimensional non-linear transient best-estimate plus uncertainties computations. And here is where good engineers stand out: in putting their engineering judgement (call it experience or hunches) into defining _what_ to solve. And it is not (just) because the first option is faster to solve than the latter. Involving many complex methods need more engineering time

1. to prepare the input data and set up the algorithms,
2. to cope with the many more mistakes that will inevitable appear during the computation, and
@@ -313,7 +311,7 @@ So we need to address the issue of fatigue in nuclear reactor pipes that
c. seismic loads.

dnl As I wanted to illustrate in [@sec:five], it is very important to decide what kind of problem (actually problems) we should be dealing with.
As a nuclear engineer, I learned (theoretically in college but practically after college) that there are some models that let you see some effects and some that let you see other effects (please [say “modelling” not “simulation.”](https://www.seamplex.com/blog/say-modeling-not-simulation.html)). And even if, in principle, it is true that more complex models should let you see more stuff, they definitely might show you nothing at all if the model is so big and complex that it does not fit into a computer (say because it needs hundreds of gigabytes of RAM to run) or because it takes more time to compute than you may have before the final report is expected.
As a nuclear engineer, I learned (theoretically in college but practically after college) that there are some models that let you see some effects and some that let you see other effects (please [say “modelling” not “simulation.”](https://www.seamplex.com/blog/say-modeling-not-simulation.html)). And even if, in principle, it is true that more complex models should allow you compute more stuff, they definitely might show you nothing at all if the model is so big and complex that it does not fit into a computer (say because it needs hundreds of gigabytes of RAM to run) or because it takes more time to compute than you may have before the final report is expected.

First of all, we should note that we need to solve

@@ -373,7 +371,7 @@ dnl ![Temperature distribution for a certain time within the transient computed

### Seismic loads {#sec:seismic}

Before considering the actual mechanical problem that will give us the stress tensor at the SCLs, and besides needing to solve the transient thermal problem to get the temperature distributions, we need to address the loads that arise due to a postulated earthquake during a certain part of the operational transients. The full computation of a mechanical transient problem using the earthquake time-dependent displacements is off the table for two reasons. First, because again the computation would take more time than we might have to deliver the report. And secondly and more importantly, because civil engineers do not compute earthquakes in the time domain but in the frequency domain using the [response spectrum method](https://en.wikipedia.org/wiki/Response_spectrum). Time to revisit our [Fourier transform](https://en.wikipedia.org/wiki/Fourier_transform) exercises from undergraduate math courses.
Before considering the actual mechanical problem that will give us the stress tensor at the SCLs, and besides needing to solve the transient thermal problem to get the temperature distributions, we need to address the loads that arise due to a postulated earthquake during a certain part of the operational transients. The full computation of a mechanical transient problem using the earthquake time-dependent displacements is off the table for two reasons. First, because again the computation would take more time than we might have to deliver the report. And secondly and more importantly, because civil engineers do not compute earthquakes in the time domain but in the frequency domain using the [response spectrum method](https://en.wikipedia.org/wiki/Response_spectrum), provided the case is linear (see\ [@sec:linearity]). Time to revisit our [Fourier transform](https://en.wikipedia.org/wiki/Fourier_transform) exercises from undergraduate math courses.

#### Earthquake spectra

@@ -397,22 +395,25 @@ Practically, these problems are solved using the same mechanical finite-element
1. The computation of the natural frequencies is “load free”, i.e. there can be no surface nor volumetric loads, and
2. The displacement boundary conditions ought to be homogeneous, i.e. only displacements equal to zero can be given. We may fix only one of the three degrees of freedom in certain surfaces and leave the others free, as long as all the rigid body motions are removed as usual.

A real continuous solid has infinite modes of oscillation. A discretised one (using the most common and efficient FEM formulation, the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf)) has three times the number of nodes modes. In any case, one is usually interested only in a few of them, namely those with the lower frequencies because they take away most of the energy with them. Each mode has two associated parameters called modal mass and excitation that reflect how “important” the mode is regarding the absorption of energy from an external oscillatory source. Usually a couple of dozens of modes are enough to take up more than 90% of the earthquake energy. Figure\ [-@fig:modes] shows the first six natural modes of a sample piping section.
A real continuous solid has infinite modes of oscillation. A discretised one (using the most common and efficient FEM formulation, the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf)) has three times the number of nodes modes. In any case, one is usually interested only in a few of them, namely those with the lower frequencies because they take away most of the energy with them. Each mode has two associated parameters called modal mass and excitation that reflect how “important” the mode is regarding the absorption of energy from an external oscillatory source. Usually a couple dozens of modes are enough to take up more than 90% of the earthquake energy as illustrated by\ [@fig:acumulada].

![Effective accumulated mass fraction up to the $i$-th mode of oscillation.](acumulada.eps){#fig:acumulada}

::::: {#fig:modes}
![](mode1.png){width=48%}\
![](mode2.png){width=48%}
![$f_1 \approx 30$\ [Hz](https://www.seamplex.com/docs/nafems4/mode1.webm)](mode1.png){width=48%}\
![$f_2 \approx 60$\ [Hz](https://www.seamplex.com/docs/nafems4/mode2.webm)](mode2.png){width=48%}

![](mode3.png){width=48%}\
![](mode4.png){width=48%}
![$f_3 \approx 70$\ [Hz](https://www.seamplex.com/docs/nafems4/mode3.webm)](mode3.png){width=48%}\
![$f_4 \approx 75$\ [Hz](https://www.seamplex.com/docs/nafems4/mode5.webm)](mode4.png){width=48%}

![](mode5.png){width=48%}\
![](mode6.png){width=48%}
![$f_5 \approx 100$\ [Hz](https://www.seamplex.com/docs/nafems4/mode5.webm)](mode5.png){width=48%}\
![$f_6 \approx 130$\ [Hz](https://www.seamplex.com/docs/nafems4/mode6.webm)](mode6.png){width=48%}

First six natural oscillation modes for a piping section
First six natural oscillation modes for a piping section between axial supports. Blue-red color scale shows magnitude of deformation, as compared to the original geometry (grey). Animations can be seen at links like <https://www.seamplex.com/docs/nafems4/mode1.webm>.
:::::

These first modes that take up most of the energy are then used to take into account the earthquake load. There are several ways of performing this computation, but the ASME\ III code states that the method known as SRSS (for Square Root of Sum of Squares) can be safely used. This method mixes the eigenvectors with the floor response spectra through the eigenvalues and gives a spatial (actually nodal) distribution of three accelerations (one for each direction) that, when multiplied by the density of the material, give a vector of a distributed force (in units of Newton per cubic millimetre for example) which is statically equivalent to the load coming from the postulated earthquake.

These first modes, shown in\ [@fig:modes], that take up most of the energy are then used to take into account the earthquake load. There are several ways of performing this computation, but the ASME\ III code states that the method known as SRSS (for Square Root of Sum of Squares) can be used. This method mixes the eigenvectors with the floor response spectra through the eigenvalues and gives a spatial (actually nodal) distribution of three accelerations (one for each direction) that, when multiplied by the density of the material, give a vector of a distributed force (in units of Newton per cubic millimetre for example) which is statically equivalent to the load coming from the postulated earthquake.

::::: {#fig:acceleration}
![$a_x$](ax.png){width=80%}
@@ -424,18 +425,18 @@ These first modes that take up most of the energy are then used to take into acc
The equivalent accelerations for the piping section of [@fig:modes] for the spectra of\ [@fig:spectrum]
:::::

The ASME code says that these accelerations (depicted in [@fig:acceleration]) ought to be applied twice: once with the original sign and once with all the elements with the opposite sign. Each application should last two seconds.
The ASME code says that these accelerations (depicted in [@fig:acceleration]) ought to be applied twice: once with the original sign and once with all the elements with the opposite sign, as SRSS “looses signs.” The application of each of these equivalent loads should last two seconds in the original time domain.


### Linearity (not yet linearisation) {#sec:linearity}

Even though we did not yet discuss it in detail, we want to solve an elastic problem subject to an internal pressure condition, with a non-uniform temperature distribution that leads to both thermal stresses and variations in the mechanical properties of the materials. And as if this was not enough, we want to add during a couple of seconds a statically-equivalent distributed load arising from a design earthquake. This last point means that at the transient instant where the stresses (from the fatigue’s point of view) are maximum we have to add the distributed loads that we computed from the seismic spectra to the other thermal and pressure loads. But we have a linear elastic problem (well, we still do not have it but we will in\ [@sec:break]), so we might be tempted to exploit the problem’s linearity and compute all the effects separately and then sum them up to obtain the whole combination. We may thus compute just the stresses due to the seismic loads and then add these stresses to the stresses at any time of the transient, in particular to the one with the highest ones. After all, in linear problems the result of the sum of two cases is the result of the sum of the cases, right? Not always.

Let us jump out of our nuclear piping problem and step back into the general finite-element theory ground for a moment (remember we were going to jump back and forth). Assume you want to know how much your dog weights. One thing you can do is to weight yourself (let us say you weight 81.2\ kg), then to grab your dog and to weight both yourself and your dog (let us say you and your dog weight 87.3\ kg). Do you swear your dog weights 6.1\ kg plus/minus the scale’s uncertainty? I can tell you that the weight of two individual protons and two individual neutrons in not the same as the weight of an\ [$\alpha$ particle](https://en.wikipedia.org/wiki/Alpha_particle). Would not there be a master-pet interaction that renders the weighting problem non-linear?
Let us jump out of our nuclear piping problem and step back into the general finite-element theory ground for a moment (remember we were going to jump back and forth). Assume you want to know how much your dog weighs. One thing you can do is to weigh yourself (let us say you weigh 81.2\ kg), then to grab your dog and to weigh both yourself and your dog (let us say you and your dog weigh 87.3\ kg). Would you swear your dog weighs 6.1\ kg plus/minus the scale’s uncertainty? I can tell you that the weight of two individual protons and two individual neutrons in not the same as the weight of an\ [$\alpha$ particle](https://en.wikipedia.org/wiki/Alpha_particle). Would not there be a master-pet interaction that renders the weighting problem non-linear?

\medskip

Time for both of us to make an experiment. Grab your favourite FEM program for the first time (remember mine is [CAEplex](https://caeplex.com)) and create a 1mm $\times$ 1mm $\times$ 1mm cube. Set any values for the Young Modulus and Poisson ratio as you want. I chose\ $E=200$\ GPa and\ $\nu=0.28$. Restrict the three faces pointing to the negative axes to their planes, i.e.
Time for both of us to make an experiment. Grab your favourite FEM program for the first time (remember mine is [CAEplex](https://caeplex.com)) and create a 1mm $\times$ 1mm $\times$ 1mm cube. Set any values for the Young’s Modulus and Poisson ratio as you want. I chose\ $E=200$\ GPa and\ $\nu=0.28$. Restrict the three faces pointing to the negative axes to their planes, i.e.

* in face “left” ($x<0$), set null displacement in the $x$ direction ($u=0$),
* in face “front” ($y<0$), set null displacement in the $y$ direction ($v=0$),
@@ -443,9 +444,9 @@ Time for both of us to make an experiment. Grab your favourite FEM program for t

Now we are going to create and compare three load cases:

a. Pure normal loads (<https://caeplex.com/p?d8f>)
b. Pure shear loads (<https://caeplex.com/p?b494>)
c. The combination of A & B (<https://caeplex.com/p?989>)
a. Pure normal loads (<https://caeplex.com/p/d8f>)
b. Pure shear loads (<https://caeplex.com/p/b494>)
c. The combination of A & B (<https://caeplex.com/p/989>)

The loads in each cases are applied to the three remaining faces, namely “right” ($x>0$), “back” ($y>0$) and “top,” ($z>0$). Their magnitude in Newtons are:

@@ -549,15 +550,15 @@ The moral of this fable is that if we have a case that is the combination of two

After discussing linearity, let us now dig into linearisation. The name is similar but these two animals are very different beasts. We said in\ [@sec:case] that the ASME Boiler and Pressure Vessel Code was born long before modern finite-elements methods were developed and of course being massively available for general engineering analysis (democratised?). Yet the code provides a comprehensive, sound and, more importantly, a widely and commonly-accepted body of knowledge as for the regulatory authorities to require its enforcement to nuclear plant owners. One of the main issues of the ASME code refers to what is known as “membrane” and “bending” stresses. These are defined in [section\ VIII](https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code#ASME_BPVC_Section_VIII_-_Rules_for_Construction_of_Pressure_Vessels) annex 5-A, although they are widely used in other sections, particularly [section\ III](https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code#ASME_BPVC_Section_III_-_Rules_for_Construction_of_Nuclear_Facility_Components). Briefly, they give the zeroth-order (membrane) and first-order (bending) [moments](https://en.wikipedia.org/wiki/Moment_(mathematics)) (in the statistical sense) of the stress distribution along a so-called Stress Classification Line or SCL, which should be chosen depending on the type of problem under analysis.

The computation of these membrane and bending stresses are called [“stress linearisation”](https://www.ramsay-maunder.co.uk/knowledge-base/technical-notes/stress-linearisation-for-practising-engineers/) because (I am guessing) it is like computing the [Taylor expansion](https://en.wikipedia.org/wiki/Taylor_series) (or for the case, expansion in [Legendre polynomials](https://en.wikipedia.org/wiki/Legendre_polynomials)) of an arbitrary stress distribution along a line, and retaining the first two terms. That is to say, to obtain a linear approximation. More (optional) mathematical details below.
The computation of these membrane and bending stresses are called [“stress linearisation”](https://www.ramsay-maunder.co.uk/knowledge-base/technical-notes/stress-linearisation-for-practising-engineers/) because it is like computing the [Taylor expansion](https://en.wikipedia.org/wiki/Taylor_series) (or for the case, expansion in [Legendre polynomials](https://en.wikipedia.org/wiki/Legendre_polynomials)) of an arbitrary stress distribution along a line, and retaining the first two terms. That is to say, to obtain a _linear approximation_. There are physical interpretations for both membrane and bending stresses, which are beyond the scope of this chapter. As for the ASME requirements, they are a way of having the mean and linear contributions of a certain stress distribution along the pipe’s wall thickness.


So what about the SCLs? Well, the ASME standard says that they are lines that go through a wall of the pipe (or vessel or pump, which is what the ASME code is for) from the inside to the outside and ought to be normal to the iso-stress curves. Stop. Picture yourself a stress field, draw the iso-stress curves (those would be the lines that have the same colour in your picture) and then imagine a set of lines that travel in a perpendicular direction to them. Finally, choose the one that seems the prettiest (which most of the time is the one that seems the easiest). There you go! You have an SCL. But there is a catch. So far, we have referred to a generic concept of “stress.” Which of the several stresses out there should you picture? One of the three normals, the three shear, Von\ Mises, Tresca? Well, actually you will have to imagine tensors instead of scalars. And there might not be such a thing as “iso-stress” curves, let alone normal directions. So pick any radial straight line through the pipe wall at a location that seems relevant and now you are done. In our case study, there will be a few different locations around the material interfaces where high stresses due to differential thermal expansion are expected to occur.
So what about the SCLs? Well, the ASME standard says that they are lines that go through a wall of the pipe (or vessel or pump, which is what the ASME code is for) from the inside to the outside and ought to be normal to the iso-stress curves. Stop. Picture yourself a stress field, draw the iso-stress curves (those would be the lines that have the same colour in your picture) and then imagine a set of lines that travel in a perpendicular direction to them. Finally, choose the one that seems the prettiest (which most of the time is the one that seems the easiest). There you go! You have an SCL. But there is a catch. So far, we have referred to a generic concept of “stress.” Which of the several stresses out there should you picture? One of the three normals, the three shear, Von\ Mises, Tresca? Well, actually you will have to imagine tensors instead of scalars. And there might not be such a thing as “iso-stress” curves, let alone normal directions. So pick any radial straight line through the pipe wall at a location that seems relevant and now you are done. In our case study, there will be a few different locations around the material interfaces where high stresses due to differential thermal expansion are expected to occur. Just keep this though with you: it is very important to define where the SCLs are located, as they will define the “quality” of the obtained results.

divert(-1)
\medskip

Now the optional (but recommended) mathematical details. Accoding to ASME\ VIII Div.\ 2 Annex\ 5-A, the expression for computing the $i$-$j$-th element of the membrane tensor is
Now the optional (but recommended) mathematical details. According to ASME\ VIII Div.\ 2 Annex\ 5-A, the expression for computing the $i$-$j$-th element of the membrane tensor is

$$
\text{M}_{ij} = \frac{1}{t} \cdot \int_0^t \sigma_{ij}(t^\prime) \, dt^\prime
@@ -573,7 +574,7 @@ For the fatigue assessment, it is the sum\ $\text{MB}$ that measures the stress
$$
\text{MB}_{ij} = \text{M}_{ij} \pm \text{B}_{ij}
$$
where the sign should be taken such that the resulting stress intensity (i.e. Tresca, Von Mises, Principal\ 1, etc.) represents the worst-case scenario. Older versions of ASME\ VIII preferred the [Tresca criterion](https://en.wikipedia.org/wiki/Henri_Tresca), while newer versions switched to [Von\ Mises](https://en.wikipedia.org/wiki/Von_Mises_yield_criterion). ASME\ III sticked to Tresca.
where the sign should be taken such that the resulting stress intensity (i.e. Tresca, Von Mises, Principal\ 1, etc.) represents the worst-case scenario. Older versions of ASME\ VIII preferred the [Tresca criterion](https://en.wikipedia.org/wiki/Henri_Tresca), while newer versions switched to [Von\ Mises](https://en.wikipedia.org/wiki/Von_Mises_yield_criterion). Nevertheless, ASME\ III still uses Tresca.

In any case, $\text{MB}_{ij}$ should be taken as a measure of the primary stress at the internal surface of the pipe. In effect, let us assume we have a stress distribution\ $\sigma(t^\prime)$ along a certain line of length $t$ such that\ $\sigma(0)$ and $\sigma(t)$ are the stresses at the internal and external surfaces, respectively. The primary stress distribution, i.e. the stress that is not self balancing will be of the simple linear form

@@ -606,7 +607,7 @@ divert(0)

## The infinite pipe revisited after college {#sec:infinite-pipe-fem}

Let us now make a (tiny) step from the general and almost philosophical subject from the last section down to the particular case study, and reconsider the infinite pressurised pipe once again. It is time to solve the problem with a computer using finite elements and to obtain some funny coloured pictures instead of just equations.
Let us now make a (tiny) step from the general and almost philosophical subject from the last section down to the particular case study, and reconsider the infinite pressurised pipe once again. It is time to solve the problem with a computer using finite elements and to obtain some funny coloured pictures instead of just equations (like we did in [@sec:infinite-pipe]).

The first thing that has to be said is that, as with any interesting problem, there are literally hundreds or different ways of solving it, each of them throwing particular conclusions. For example, one can:

@@ -654,15 +655,15 @@ dnl * The finite-element results for the displacements are similar to the analyt
Error in the computation of the linearised stresses vs. CPU time needed to solve the infinite pipe problem using the finite element method
:::::

An additional note should be added. The FEM solution, which not only gives the nodal displacements but also a method to interpolate these values inside the elements, does not fully satisfy the original equilibrium equations at every point (i.e. the strong formulation). It is an approximation to the solution of the [weak formulation](https://en.wikipedia.org/wiki/Weak_formulation) that is close (measured in the vector space spanned by the [shape functions](https://www.quora.com/What-is-a-shape-function-in-FEM)) to the real solution. Mechanically, this means that the FEM solution leads only to nodal equilibrium but not pointwise equilibrium.
An additional note should be added. The FEM solution, which not only gives the nodal displacements but also a method to interpolate these values inside the elements, does not fully satisfy the original equilibrium equations at every point (i.e. the strong formulation). It is an approximation to the solution of the [weak formulation](https://en.wikipedia.org/wiki/Weak_formulation) that is close (measured in the vector space spanned by the [shape functions](https://www.quora.com/What-is-a-shape-function-in-FEM)) to the real solution. Mechanically, this means that the FEM solution leads only to nodal equilibrium but not point-wise equilibrium.

### Elements, nodes and CPU {#sec:elements-nodes}

The last two bullets above lead to an issue that has come many times when discussing the issue of convergence with respect to the mesh size with other colleagues. There apparently exists a common misunderstanding that the number of elements is the main parameter that defines how complex a FEM model is. This is strange, because even in college we are taught that the most important parameter is the _size_ of the stiffness matrix, which is three times (for 3D problems with the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf) formulation) the number of _nodes_.
dnl The last two bullets above lead to an issue that has come many times when discussing the issue of convergence with respect to the mesh size with other colleagues. There apparently exists a common misunderstanding that the number of elements is the main parameter that defines how complex a FEM model is. This is strange, because even in college we are taught that the most important parameter is the _size_ of the stiffness matrix, which is three times (for 3D problems with the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf) formulation) the number of _nodes_.

Let us pretend we are given the task of comparing two different FEM programs. So we solve the same problem in each one and see what the results are. I have seen many times the following situation: the user loads the same geometry in both programs, run the meshing step in both of them so that the number of elements is more or less them same (because she wants to be “fair”) and then solves the problem. Voilà! It turns out that the first program defaults to first-order elements and the second one to second-order elements. So if the first one takes one minute to obtain a solution, the second one should take nearly four minutes. How come that is a fair comparison? Or it might be the case that one program uses tetrahedra while the other one defaults to hexahedra. Or any other combination. In general, there is no single problem parameter that can be fixed to have a “fair” comparison, but if there was, it would definitely be the number of _nodes_ rather than the number of _elements_. Let us see why.
dnl Let us pretend we are given the task of comparing two different FEM programs. So we solve the same problem in each one and see what the results are. I have seen many times the following situation: the user loads the same geometry in both programs, run the meshing step in both of them so that the number of elements is more or less them same (because she wants to be “fair”) and then solves the problem. Voilà! It turns out that the first program defaults to first-order elements and the second one to second-order elements. So if the first one takes one minute to obtain a solution, the second one should take nearly four minutes. How come that is a fair comparison? Or it might be the case that one program uses tetrahedra while the other one defaults to hexahedra. Or any other combination. In general, there is no single problem parameter that can be fixed to have a “fair” comparison, but if there was, it would definitely be the number of _nodes_ rather than the number of _elements_. Let us see why.

\medskip
dnl \medskip

Fire up your imagination again and make a [thought experiment](https://en.wikipedia.org/wiki/Thought_experiment) in which you have to compare say a traditional FEM approach with a new radical formulation that a crazy mathematician from central Asia came up with claiming it is a far superior theory than our beloved finite elements (or for the case, any other formulation from\ [@sec:formulations]). How can we tell if the guy is really a genius or purely nuts? Well, we could solve a problem which we can compute the analytical solution (for example the infinite pipe from\ [@sec:infinite-pipe]) first with the traditional method ([@sec:infinite-pipe-fem]) and then with the program which uses the new formulation. Say the traditional FEM gives an error between 1% and 5% running in a few seconds depending on the mesh size. The new program from the crazy guy takes no input parameters and gives an error of 0.1%, but it takes one week of computation to produce a result. Would you say that the new radical formulation is really far superior?

@@ -687,7 +688,7 @@ For a fixed number of nodes, first-order grids have far more elements than secon

#### Solving {#sec:solving}

The linear FEM problem leads of course of a system of\ $NG$ linear equations, cast in matrix form by the stiffness matrix\ $K$ and a right-hand size vector\ $\mathbf{b}$ containing the loads (both volumetric and the ones at the surfaces from the boundary conditions):
The linear FEM problem leads of course to a system of\ $NG$ linear equations, cast in matrix form by the stiffness matrix\ $K$ and a right-hand size vector\ $\mathbf{b}$ containing the loads (both volumetric and the ones at the surfaces from the boundary conditions):

$$K \cdot \mathbf{u} = \mathbf{b}$${#eq:kub}

@@ -696,7 +697,7 @@ The objective of the solver is to find the vector\ $\mathbf{u}$ of nodal displac
* [direct](https://en.wikipedia.org/wiki/Frontal_solver), where a rather complex algorithm for building partial decompositions ([LU](https://en.wikipedia.org/wiki/LU_decomposition), [QR](https://en.wikipedia.org/wiki/QR_decomposition), [Cholesky](https://en.wikipedia.org/wiki/Cholesky_decomposition), etc.) are used in order to avoid needing aforementioned the 700\ Gb of RAM, or
* [iterative](https://en.wikipedia.org/wiki/Iterative_method), meaning that at each step of the iteration the numerical answer improves, i.e. $\left|K \cdot \mathbf{u} - \mathbf{b}\right| \rightarrow 0$. Even though in particular for [Krylov-subspace](https://en.wikipedia.org/wiki/Krylov_subspace) methods, $K \cdot \mathbf{u} - \mathbf{b} = \mathbf{0}$ after\ $NG$ steps, a few dozen of iterations are usually enough to assume that the problem is effectively solved (i.e. the residual is less than a certain threshold).

So the question is... how hard is to solve a sparse linear problem? Well, the number of iterations and the complexity of the partial decompositions needed to attain convergence depends on the [spectral radius](https://en.wikipedia.org/wiki/Spectral_radius) of the stiffness matrix\ $K$, which in turns depend on the elements themselves, which depend mainly on the parameters of the elastic problem. But it also depends on how sparse\ $K$ is, which changes with the element topology and order. [@Fig:test] shows the structure of two stiffness matrices for the same linear elastic problem discretised using exactly the same number of nodes but using linear and quadratic elements respectively. The matrices have the same size (because the number of nodes is the same) but the former is more sparse than the latter. Hence, it would be harder (in computational terms of CPU and RAM) to solve the second-order case.
So the question is... how hard is it to solve a sparse linear problem? Well, the number of iterations and the complexity of the partial decompositions needed to attain convergence depends on the [spectral radius](https://en.wikipedia.org/wiki/Spectral_radius) of the stiffness matrix\ $K$, which in turns depend on the elements themselves, which depend mainly on the parameters of the elastic problem. But it also depends on how sparse\ $K$ is, which changes with the element topology and order. [@Fig:test] shows the structure of two stiffness matrices for the same linear elastic problem discretised using exactly the same number of nodes but using linear and quadratic elements respectively. The matrices have the same size (because the number of nodes is the same) but the former is more sparse than the latter. Hence, it would be harder (in computational terms of CPU and RAM) to solve the second-order case.

::::: {#fig:test}
![42k first-order elements](test1.png){#fig:test1 width=48%}\
@@ -709,7 +710,7 @@ In a similar way, different types of elements will give rise to different sparsi

#### Stress computation {#sec:stress-computation}

In the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf), the solver finds the displacements\ $\mathbf{u}(\mathbf{x})$ that satisfy [@eq:kub], which are the principal unknowns. But from\ [@sec:tensor] we know that we actually have solved the problem after we have the stress tensors at every location\ $\mathbf{x}$, which are the secondary unknowns. So the FEM program has to compute the stresses out of the displacements. It first computes the strain tensor, which is composed of the nine partial derivatives of the three displacements with respect to the three coordinates. Then it computes the stress tensor (atready introduced in\ [@sec:tensor]) using the materials’ [strain-stress constitutive equations](https://en.wikipedia.org/wiki/Constitutive_equation#Stress_and_strain) which involve the Young Modulus\ $E$, the Poisson ratio\ $\nu$ and the spatial derivatives of the displacements\ $\mathbf{u}=[u,v,w]$. This sounds easy, as we (well, the solver) knows what the shape functions are for each element and then it is a matter of computing nine derivatives and multiplying by something involving\ $E$ and\ $\nu$. Yes, but there is a catch. As the displacements\ $u$, $v$ and\ $w$ are computed at the nodes, we would like to also have the stresses at the nodes. However,
In the [displacement-based formulation](http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf), the solver finds the displacements\ $\mathbf{u}(\mathbf{x})$ that satisfy [@eq:kub], which are the principal unknowns. But from\ [@sec:tensor] we know that we actually have solved the problem after we have the stress tensors at every location\ $\mathbf{x}$, which are the secondary unknowns. So the FEM program has to compute the stresses out of the displacements. It first computes the strain tensor, which is composed of the nine partial derivatives of the three displacements with respect to the three coordinates. Then it computes the stress tensor (already introduced in\ [@sec:tensor]) using the materials’ [strain-stress constitutive equations](https://en.wikipedia.org/wiki/Constitutive_equation#Stress_and_strain) which involve the Young’s Modulus\ $E$, the Poisson ratio\ $\nu$ and the spatial derivatives of the displacements\ $\mathbf{u}=[u,v,w]$. This sounds easy, as we (well, the solver) knows what the shape functions are for each element and then it is a matter of computing nine derivatives and multiplying by something involving\ $E$ and\ $\nu$. Yes, but there is a catch. As the displacements\ $u$, $v$ and\ $w$ are computed at the nodes, we would like to also have the stresses at the nodes. However,

i. the displacements\ $\mathbf{u}(\mathbf{x})$ are not differentiable at the nodes, and
ii. if the node belongs to a material interface, neither\ $E$ nor\ $\nu$ are defined.
@@ -728,7 +729,7 @@ Solution of a problem using FEM using eight linear/quadratic uniform/non-uniform

Now proceed to picturing the general three-dimensional cases with unstructured tetrahedra. What is the derivative of the displacement\ $v$ in the\ $y$ direction with respect to the $z$ coordinate at a certain node shared by many tetrahedra? What if one of the elements is very small? Or it has a very bad quality (i.e. it is deformed in one direction) and its derivatives cannot be trusted? Should we still average? Should this average be weighted? How?

Detailed mathematics show that the location where the derivatives of the interpolated displacements are closer to the real (i.e. the analytical ones in problems that have it) solution are the elements’ [Gauss points](https://en.wikipedia.org/wiki/Gaussian_quadrature). Even better, the material properties at these points are continuous (they are usually uniform but they can depend on temperature for example) because, unless we are using weird elements, there are no material interfaces inside elements. But how to manage a set of stresses given at the Gauss points instead of at the nodes? Should we use one mesh for the input and another one for the output? What happens when we need to know the stresses on a surface and not just in the bulk of the solid? There are still no one-size-fits-all answers. There is a very interesting [blog post](http://tor-eng.com/2017/11/practical-tips-dealing-stress-singularities/) by Nick Stevens that addresses the issue of stresses computed at sharp corners. What does your favourite FEM program do with such a case?
Detailed mathematics show that the location where the derivatives of the interpolated displacements are closer to the real (i.e. the analytical ones in problems that have it) solution are the elements’ [Gauss points](https://en.wikipedia.org/wiki/Gaussian_quadrature). Even better, the material properties at these points are continuous (they are usually uniform but they can depend on temperature for example) because, unless we are using weird elements, there are no material interfaces inside elements. But how to manage a set of stresses given at the Gauss points instead of at the nodes? Should we use one mesh for the input and another one for the output? What happens when we need to know the stresses on a surface and not just in the bulk of the solid? There are still no one-size-fits-all answers. There is a very interesting [blog post](https://nickjstevens.netlify.com/post/2019/stress-singularities/) by Nick Stevens that addresses the issue of stresses computed at sharp corners. What does your favourite FEM program do with such a case?

In any case, this step takes a non-negligible amount of time. The most-common approach, i.e. the node-averaging method is driven mainly by the number of nodes of course. So all-in-all, these are the reasons to use the number of nodes instead of the numbers of elements as a basic parameter to measure the complexity of a FEM problem.

@@ -739,7 +740,7 @@ Let us review some issues that appear when solving our case study and that might

### Two (or more) materials {#sec:two-materials}

The main issue with fatigue in nuclear piping during operational transients is that at the welds between two materials with different thermal expansion coefficients there can appear potentially-high stresses during temperature changes. If these transients are repeated cyclically, fatigue may occur. We already have risen a warning flag about stresses at material interfaces in\ [@sec:two-materials]. Besides all the open questions about computing stresses at nodes, this case also adds the fact that the material properties (say the Young Modulus\ $E$) is different in the elements that are at each side of the interface.
The main issue with fatigue in nuclear piping during operational transients is that at the welds between two materials with different thermal expansion coefficients there can appear potentially-high stresses during temperature changes. If these transients are repeated cyclically, fatigue may occur. We already have risen a warning flag about stresses at material interfaces in\ [@sec:two-materials]. Besides all the open questions about computing stresses at nodes, this case also adds the fact that the material properties (say the Young’s Modulus\ $E$) is different in the elements that are at each side of the interface.

::::: {#fig:two-cubes}
![Surface grid showing the fixed face (magenta), the load face (green) and the shared face in the middle](two-cubes2.png){#fig:two-cubes2 width=48%}\
@@ -765,7 +766,7 @@ Faced with the problem of computing the stress\ $\sigma$ at one node shared by m
There might be other choices as well. Do you know what your favourite FEM program does? Now follow up with these questions:

a. Does the manual say?
b. Does it tell you the details like how it weights the averages?
b. Does it tell you the details like how it weighs the averages?
c. Does it discard values that are beyond a number of standard deviations away?
d. How many standard deviations?
e. ...
@@ -783,13 +784,13 @@ In effect, a couple of years ago Angus Ramsay noted [a weird behaviour](https://

> Do you trust your favourite FEM program?

Back to the two-material problem, all the discussion above in\ [@sec:two-materials] about non-continuous derivatives applies to a sharp abrupt interface. In the study case the junctions are welded so there is a [heat-affected zone](https://en.wikipedia.org/wiki/Heat-affected_zone) with changes in the material micro structure. Therefore, there exists a smooth transition from the mechanical properties of one material to the other one in a way that is very hard to predict and to model. In principle, the assumption of a sharp interface is conservative (in the sense of\ [@sec:kinds]). There cannot be an SCL exactly on a material interface so there should be at least two SCLs, one at each side of the junctions as\ [@fig:weldolet-scls] illustrates. The actual distance would have to be determined first as an educated guess, then via trial and error and finally in accordance with the regulator.
Back to the two-material problem, all the discussion above in\ [@sec:two-materials] about non-continuous derivatives applies to a sharp abrupt interface. In the study case the junctions are welded so there is a [heat-affected zone](https://en.wikipedia.org/wiki/Heat-affected_zone) with changes in the material micro structure. Therefore, there exists a smooth transition from the mechanical properties of one material to the other one in a way that is very hard to predict and to model. In principle, the assumption of a sharp interface is conservative in the sense that it is expected the computed stresses to be larger than the actual ones. There cannot be an SCL exactly on a material interface so there should be at least two SCLs, one at each side of the junctions as\ [@fig:weldolet-scls] illustrates. The actual distance would have to be determined first as an educated guess, then via trial and error and finally in accordance with the regulator.

divert(-1)
### A parametric tee {#sec:parametric}

Time for another experiment. We know (more or less) what to expect from an infinite pressurised pipe from\ [@sec:infinite-pipe] and [@sec:infinite-pipe-fem]. What if we added a branch to such pipe? Even more, what if we successively varied the diameter of the branch to see what happens? This is called parametric analysis, and sooner or later (if not now) you will find yourself performing this kind of computations more often than any other one.

divert(-1)
So here come the five Feynmann-Ohno questions:

1. Why do you want to perform a parametric computation?
@@ -806,7 +807,7 @@ So here come the five Feynmann-Ohno questions:

5. Why do you want to understand what is going on?
For the same reason you are now reading this chapter.
divert(0)

Let us solve the following mock-up case: a long main 12-inch schedule\ 80 pipe has an orthogonal branch of a certain nominal diameter of\ $d_b$\ inches (it seems that the [SI](https://en.wikipedia.org/wiki/International_System_of_Units) did not do well amongst the piping engineering community). Both the main line and the branch are pressurised with\ $p=10$\ MPa. The main pipe is aligned with the\ $x$ axis and the branch coincides with the\ $z$ axis. Thus, the $x$-$z$ plane acts as a symmetry plane and we only need to model two octants of the full geometry, as shown in\ [@fig:tee-geo]. Note that the tee is modelled as the boolean intersection of two cylinders. There are no filleted edges nor rounded corners or any other smoothing. A real CAD file containing the appropriate geometry needs to be built for the real case study.

@@ -835,11 +836,10 @@ Location of the three radial SCLs: cyan, yellow and green
:::::

::::: {#fig:tee-MB}
![Membrane stress](M.eps){#fig:M width=90%}

![Bending stress](B.eps){#fig:B width=90%}
![Membrane stress](M.eps){#fig:M width=48%}\
![Bending stress](B.eps){#fig:B width=48%}

Parametric membrane and bending stresses as a function of the nominal diameter\ $d_b$ of the branch
Parametric stresses as a function of the nominal diameter\ $d_b$ of the branch
:::::


@@ -861,10 +861,10 @@ Do you now see the added value of training throw-ins with watermelons? We might
* using distributed forces from earthquakes,
* etc.

Most of the time at college we would barely do what is needed to be approved in one course and move on to the next one. If you have the time and consider a career related to finite-element analysis, please do not. Clone the repository^[<https://bitbucket.org/seamplex/tee>] with the input files for [Fino](https://www.seamplex.com/fino) and start playing. If you are stuck, do not hesitate asking for help in [wasora’s mailing list](https://www.seamplex.com/lists.html).
Most of the time at college we would barely do what is needed to be approved in one course and move on to the next one. If you have the time and consider a career related to finite-element analysis, please do not. Clone the repository^[<https://github.com/seamplex/tee>] with the input files for [Fino](https://www.seamplex.com/fino) and start playing. If you are stuck, do not hesitate asking for help in [wasora’s mailing list](https://www.seamplex.com/lists.html).

One further detail: it is always a sane check to try to explain the numerical results based on physical reasoning (i.e. “with your fingers”) as we did two paragraphs above. Most of the time you will be solving problems whilst already knowing what the result would (or ought to) be.
divert(0)

### Bake, shake and break {#sec:break}

@@ -894,7 +894,7 @@ Is the last bullet right? [Surely you’re joking, Mr.\ Theler!](https://en.wiki

The first one is easy. Due to the fact that the pipes are made of steel, it is expected that the actual deformations are relatively small compared to the original dimensions. This leads to the fact that the mechanical rigidity (i.e. the stiffness matrix) does not change significantly when the loads are applied. Therefore, we can safely assume that the problem is geometrically linear.

Let us now address material non-linearities. On the one hand we have the temperature-dependent issue. According to ASME\ II part\ D, what depends on temperature\ $T$ is the Young Modulus\ $E$. But the stress-strain relationship is yet
Let us now address material non-linearities. On the one hand we have the temperature-dependent issue. According to ASME\ II part\ D, what depends on temperature\ $T$ is the Young’s Modulus\ $E$. But the stress-strain relationship is yet

$$ \sigma = E(T) \cdot \epsilon $$

@@ -930,22 +930,23 @@ Temperature distribution for a certain instant of the transient, computed in the
:::::

::::: {#fig:case-mode}
![](case-mode1.png){#fig:case-mode-1 width=30%}\
![](case-mode2.png){#fig:case-mode-2 width=30%}\
![](case-mode3.png){#fig:case-mode-3 width=30%}
![$f_1 \approx 60$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode1.webm)](case-mode1.png){#fig:case-mode-1 width=30%}\
![$f_1 \approx 130$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode2.webm)](case-mode2.png){#fig:case-mode-2 width=30%}\
![$f_1 \approx 200$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode3.webm)](case-mode3.png){#fig:case-mode-3 width=30%}

![](case-mode4.png){#fig:case-mode-4 width=30%}\
![](case-mode5.png){#fig:case-mode-5 width=30%}\
![](case-mode6.png){#fig:case-mode-6 width=30%}
![$f_1 \approx 270$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode4.webm)](case-mode4.png){#fig:case-mode-4 width=30%}\
![$f_1 \approx 330$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode5.webm)](case-mode5.png){#fig:case-mode-5 width=30%}\
![$f_1 \approx 560$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode6.webm)](case-mode6.png){#fig:case-mode-6 width=30%}

![](case-mode7.png){#fig:case-mode-7 width=30%}\
![](case-mode8.png){#fig:case-mode-8 width=30%}\
![](case-mode9.png){#fig:case-mode-9 width=30%}
![$f_1 \approx 660$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode7.webm)](case-mode7.png){#fig:case-mode-7 width=30%}\
![$f_1 \approx 730$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode8.webm)](case-mode8.png){#fig:case-mode-8 width=30%}\
![$f_1 \approx 930$\ [Hz](https://www.seamplex.com/docs/nafems4/case-mode9.webm)](case-mode9.png){#fig:case-mode-9 width=30%}

First nine natural modes of oscillation of the piping system subject to the boundary conditions the supports provide
First nine natural modes of oscillation of the piping system subject to the boundary conditions the supports provide.
Animations can be seen at links like <https://www.seamplex.com/docs/nafems4/case-mode1.webm>.
:::::

![Floor response spectrum.](case-spectrum.eps){#fig:case-spectrum width=70%}
dnl ![Floor response spectrum.](case-spectrum.eps){#fig:case-spectrum width=70%}

To recapitulate, the figures in this section show some partial non-dimensional results of an actual system of a certain nuclear power plant. The main issues to study were the interfaces between a carbon-steel pipe and a stainless-steel orifice plate used to measure the (heavy) water flow through the line. The steps discussed so far include

@@ -955,13 +956,13 @@ To recapitulate, the figures in this section show some partial non-dimensional r
4. computing a heat conduction (bake) transient problem with temperatures as a function of time from the operational transient in a simple domain using temperature-dependent thermal conduction coefficients from ASME\ II\ part D ([@fig:case-temp] or [@fig:valve-temp])
5. generalising the temperature distribution as a function of time to the general domain ([@fig:case-temp2] or [@fig:real])
6. performing a modal analysis (shake) on the main domain to obtain the main oscillation frequencies and modes ([@fig:case-mode] or [@fig:modes])
7. using the floor response spectra ([@fig:case-spectrum] or [@fig:spectrum]) and the SRSS method to obtain a distributed force statically-equivalent to the earthquake load ([@fig:case-acceleration] or [@fig:acceleration])
7. using the floor response spectra ([@fig:spectrum]) and the SRSS method to obtain a distributed force statically-equivalent to the earthquake load ([@fig:case-acceleration] or [@fig:acceleration])
8. successively solving the linear elastic problem for different times using the generalised temperature distribution taking into account
a. the dependence of the Young Modulus\ $E$ and the thermal expansion coefficient\ $\alpha$ with temperature,
a. the dependence of the Young’s Modulus\ $E$ and the thermal expansion coefficient\ $\alpha$ with temperature,
b. the thermal expansion effect itself
c. the instantaneous pressure exerted in the internal faces of the pipes at the time\ $t$ according to the definition of the operational transient
d. the restriction of the degrees of freedom of those faces, lines or points that correspond to mechanical supports located both within and at the ends of the CAD model
e. the earthquake load, which according to ASME should be present only during four seconds of the transient: two seconds with one sign and the other two seconds with the opposite sing. This period should be selected to coincide with the instant of highest mechanical stress (conservative computation)
e. the earthquake load, which according to ASME should be present only during four seconds of the transient: two seconds with one sign and the other two seconds with the opposite sign. This period should be selected to coincide with the instant of highest mechanical stress (conservative computation)
9. computing the linearised stresses (membrane and membrane plus bending) at the SCLs combining them as Principal\ 1, Principal\ 2, Principal\ 3 and Tresca
10. juxtaposing these linearised stresses for each time of the transient and for each transient so as to obtain a single time-history of stresses including all the operational and/or incidental transients under study, which is what stress-based fatigue assessment needs (recall\ [@sec:fatigue] and go on to\ [@sec:usage]).

@@ -973,7 +974,7 @@ A pretty nice list of steps, which definitely I would not have been able to tack
![$a_y$](case-ay.png){width=33%}
![$a_z$](case-az.png){width=33%}

The static equivalent accelerations for the spectra of\ [@fig:case-spectrum] computed using the SRSS method
The static equivalent accelerations computed using the SRSS method
:::::

## Cumulative usage factors {#sec:usage}
@@ -992,24 +993,26 @@ We already said in\ [@sec:fatigue] that the stress-life fatigue assessment metho

$$U_j = \frac{n_j}{N_j}$$

The overall cumulative usage factor is then the algebraic sum of the partial contributions
The overall cumulative usage factor is then the algebraic sum of the partial contributions, a.k.a. [Miner’s rule](https://en.wikipedia.org/wiki/Fatigue_%28material%29%23Miner%27s_rule) as learned in college:

$$\text{CUF} = U_1 + U_2 + \dots + U_j + \dots$$

When\ $\text{CUF} < 1$, then the part under analysis can withstand the proposed cyclic operation.
When\ $\text{CUF} < 1$, then the part under analysis can withstand the proposed cyclic operation. Now, if the extrema of the partial stress amplitude correspond to different transients, then the following note in ASME III’s NB-3224(5) should be followed:

![A low-alloy steel vessel nozzle (blue) welded to a stainless steel pipe (grey) for the “EAF Sample Problem 2-Rev.\ 2 (10/21/2011)”](axi-inches-3d.png){#fig:axi-inches-3d width=60%}

Now, if the extrema of the partial stress amplitude correspond to different transients, then the following note in ASME III’s NB-3224(5) should be followed:

> In determining $n_1$, $n_2$, $n_3$, $\dots$, $n_j$ consideration shall be given to the superposition of cycles of various origins which produce a total stress difference range greater than the stress difference ranges of the individual cycles. For example, if one type of stress cycle produces 1,000 cycles of a stress difference variation from zero to +60,000\ psi and another type of stress cycle produces 10,000 cycles of a stress difference variation from zero to −50,000\ psi, the two types of cycle to be considered are defined by the following parameters:
>
> (a) for type 1 cycle, $n_1 =$ 1,000 and $S_{\text{alt},1} = (60,000 + 50,000)/2;
> (b) for type 2 cycle, $n_2 =$ 9,000 and $S_{\text{alt},2} = (50,000 + 0)/2.
> (a) for type 1 cycle, $n_1 =$ 1,000 and $S_{\text{alt},1} = (60,000 + 50,000)/2$;
> (b) for type 2 cycle, $n_2 =$ 9,000 and $S_{\text{alt},2} = (50,000 + 0)/2$.


This cryptic paragraph can be better explained by using a clearer example. To avoid using actual sensitive data from a real power plant, let us use the same test case used by both the [US Nuclear Regulatory Commission](https://en.wikipedia.org/wiki/Nuclear_Regulatory_Commission) (in its report NUREG/CR-6909) and the [Electric Power Institute](https://en.wikipedia.org/wiki/Electric_Power_Research_Institute) (report 1025823) called “EAF (Environmentally-Assisted Fatigue) Sample Problem 2-Rev.\ 2 (10/21/2011)”.

It consists of a typical vessel (NB-3200) nozzle with attached piping (NB-3600) as illustrated in\ [@fig:axi-inches-3d]. These components are subject to four transients\ $k=1,2,3,4$ that give rise to linearised stress histories (slightly modified according to NB-3216.2) which are given as individual stress values juxtaposed so as to span a time range of about 36,000 seconds ([@fig:nureg1]). As the time steps is not constant, each stress value has an integer index\ $i$ that uniquely identifies it:

![A low-alloy steel vessel nozzle (blue) welded to a stainless steel pipe (grey)](axi-inches-3d.png){#fig:axi-inches-3d width=25%}


It consists of a typical vessel nozzle with attached piping as illustrated in\ [@fig:axi-inches-3d]. These components are subject to four transients\ $k=1,2,3,4$ that give rise to linearised stress histories (slightly modified according to NB-3216.2) which are given as individual stress values juxtaposed so as to span a time range of about 36,000 seconds ([@fig:nureg1]). As the time steps is not constant, each stress value has an integer index\ $i$ that uniquely identifies it:

| $k$ | Time range [s] | Index range | Cycles\ $n_k$ |
|:-----:|:--------------:|:-----------:|:----------------:|
@@ -1018,7 +1021,8 @@ It consists of a typical vessel (NB-3200) nozzle with attached piping (NB-3600)
| 3 | 6450--9970 | 960--1595 | 20 |
| 4 | 9970--35971 | 1596--2215 | 100 |

A design-basis earthquake was assumed to occur briefly during one second (sic) at around\ $t=3470$\ seconds, and it is assigned a number of cycles\ $n_e=5$. The detailed stress history for one of the SCLs including both the principal and lineariased stresses, which are already offset following NB-3216.2 so as to have a maximum stress equal to zero, can be found as an appendix in NRC's NUREG/CR-6909 report, or in the repository with the scripts I prepared for you to play with this problem.^[<https://bitbucket.org/seamplex/cufen>]
A design-basis earthquake was assumed to occur briefly during one second (sic) at around\ $t=3470$\ seconds, and it is assigned a number of cycles\ $n_e=5$. The detailed stress history for one of the SCLs including both the principal and lineariased stresses, which are already offset following NB-3216.2 so as to have a maximum stress equal to zero, can be found as an appendix in NRC's NUREG/CR-6909 report, or in the repository with the scripts I prepared for you to play with this problem.^[<https://github.com/seamplex/cufen>]


::::: {#fig:nureg}
![Full time range of the juxtaposed transients spanning $\approx$ 36,000 seconds](nureg1.eps){#fig:nureg1 width=70%}
@@ -1030,18 +1034,13 @@ A design-basis earthquake was assumed to occur briefly during one second (sic) a
Time history of the linearised stress\ $\text{MB}_{31}$ corresponding to the example problem from NRC and EPRI. The indexes\ $i$ of the extrema are shown in green (minimums) and red (maximums)
:::::

\medskip

To compute the global usage factor, we first need to find all the combinations of local extrema pairs and then sort them in decreasing order of stress difference. For example, the largest stress amplitude is found between $i=447$ and $i=694$. The second one is 447--699. Then 699--1020, 699--899, etc. For each of these pairs, defined by the indexes\ $i_{1,j}$ and $i_{2,j}$, a partial usage factor\ $U_j$ should computed. The stress amplitude\ $S_{\text{alt},j}$ which should be used to enter into the $S$-$N$ curve is

$$
S_{\text{alt},j} = \frac{1}{2} \cdot k_{e,j} \cdot \left| MB^\prime_{i_{1,j}} - MB^\prime_{i_{2,j}} \right| \cdot \frac{E_\text{SN}}{E(T_{\text{max}_j})}
$$
where $k_e$ is a plastic correction factor for large loads (NB-3228.5), $E_\text{SN}$ is the Young Modulus used to create the $S$-$N$ curve (provided in the ASME fatigue curves) and\ $E(T_{\text{max}_j})$ is the material’s Young Modulus at the maximum temperature within the\ $j$-th interval.

\medskip

We now need to comply with ASME’s obscure note about the number of cycles to assign a proper value of\ $n_j$. Back to the largest pair 447-694, we see that 447 belongs to transient\ #1 which has assigned 20 cycles and 694 belongs to the earthquake with 5 cycles. Therefore\ $n_1=5$, and the cycles associated to each index are decreased in five. So $i=694$ disappears and the number of cycles associated to $i=447$ are decreased from 20 to 15. The second largest pair is now 447-699, with 15 (because we just spent 5 in the first pair) and 50 cycles respectively. Now $n_2=15$, point\ 447 disappears and 699 remains with 35 cycles. The next pair is 699-1020, with number of cycles 35 and 20 so $n_3=20$, point 1020 disappears and 699 remains with 15 cycles. And so on, down to the last pair.
where $k_e$ is a plastic correction factor for large loads (NB-3228.5), $E_\text{SN}$ is the Young’s Modulus used to create the $S$-$N$ curve (provided in the ASME fatigue curves) and\ $E(T_{\text{max}_j})$ is the material’s Young’s Modulus at the maximum temperature within the\ $j$-th interval.

::::: {#fig:cuf}
![Reference from NUREG/CR6909](cuf-nrc.png){#fig:cuf-nrc width=100%}
@@ -1051,15 +1050,17 @@ We now need to comply with ASME’s obscure note about the number of cycles to a
Tables of individual usage factors for the NRC/EPRI “EAF Sample Problem 2-Rev.\ 2 (10/21/2011).” One table is taken from a document issued by almost-a-billion-dollar-year-budget government agency from the most powerful country in the world and the other one is from a third-world engineering startup. Guess which is which.
:::::

Why all these details? Not because I want to teach you how to perform fatigue evaluations just reading this section without resorting to ASME, fatigue books and even other colleagues. It is to show that even though these computation can be made “by hand” (i.e. using a calculator or, God forbids, a spreadsheet) when having to evaluate a few SCLs within several piping systems it is far (and I mean really far) better to automatise all these steps by writing a set of scripts. Not only will the time needed to process the information be reduced, but also the introduction of human errors will be minimised and repeatability of results will be assured---especially if working under a [distributed version control](https://en.wikipedia.org/wiki/Distributed_version_control) system such as [Git](https://en.wikipedia.org/wiki/Git). This is true in general, so here is another tip: learn to write scripts to post-process your FEM results (you will need to use a script-friendly FEM program) and you will gain considerable margins regarding time and quality.
We now need to comply with ASME’s obscure note about the number of cycles to assign a proper value of\ $n_j$. Back to the largest pair 447-694, we see that 447 belongs to transient\ #1 which has assigned 20 cycles and 694 belongs to the earthquake with 5 cycles. Therefore\ $n_1=5$, and the cycles associated to each index are decreased in five. So $i=694$ disappears and the number of cycles associated to $i=447$ are decreased from 20 to 15. The second largest pair is now 447-699, with 15 (because we just spent 5 in the first pair) and 50 cycles respectively. Now $n_2=15$, point\ 447 disappears and 699 remains with 35 cycles. The next pair is 699-1020, with number of cycles 35 and 20 so $n_3=20$, point 1020 disappears and 699 remains with 15 cycles. And so on, down to the last pair.

Why all these details? Not because I want to teach you how to perform fatigue evaluations just reading this section without resorting to ASME, fatigue books and even other colleagues. It is to show that even though these computation can be made “by hand” (i.e. using a calculator or, God forbids, a spreadsheet) when having to evaluate a few SCLs within several piping systems it is far (and I mean really far) better to automate all these steps by writing a set of scripts. Not only will the time needed to process the information be reduced, but also the introduction of human errors will be minimised and repeatability of results will be assured---especially if working under a [distributed version control](https://en.wikipedia.org/wiki/Distributed_version_control) system such as [Git](https://en.wikipedia.org/wiki/Git). This is true in general, so here is another tip: learn to write scripts to post-process your FEM results (you will need to use a script-friendly FEM program) and you will gain considerable margins regarding time and quality.

### In water (NRC’s extension) {#sec:in-water}

The fatigue curves and ASME’s (both\ III and VIII) methodology to analyse cyclic operations assume the parts under study are in contact with air, which is not the case of nuclear reactor pipes. Instead of building a brand new body of knowledge to replace ASME, the NRC decided to modify the former adding environmentally-assisted fatigue multipliers to the traditional usage factors, formally defined as
The fatigue curves and ASME’s (both\ III and\ VIII) methodology to analyse cyclic operations assume the parts under study are in contact with air, which is not the case of nuclear reactor pipes. Instead of building a brand new body of knowledge to replace ASME, the NRC decided to modify the former adding environmentally-assisted fatigue multipliers to the traditional usage factors, formally defined as

$$F_\text{en} = \frac{N_\text{air}}{N_\text{water}} \geq 1$$

This way, the environmentally-assisted usage factor for the $j$-th load pair is $\text{CUF}_\text{en,j} = U_j \cdot {F_\text{en},j}$ and the global cumulative usage factor in water is the sum of these partial contributions
This way, the environmentally-assisted usage factor for the $j$-th load pair is $\text{CUF}_\text{en,j} = U_j \cdot F_{\text{en},j}$ and the global cumulative usage factor in water is the sum of these partial contributions

$$\text{CUF}_\text{en} = U_1 \cdot F_{\text{en},1} + U_2 \cdot F_{\text{en},2} + \dots + U_j \cdot F_{\text{en},j} + \dots$${#eq:cufen}

@@ -1081,7 +1082,7 @@ The NRC has performed a comprehensive set of theoretical and experimental tests

Apparently it makes no difference whether the environment is composed of either light or heavy water. There are somewhat different sets of non-dimensional analytical expressions that estimate the value of\ $F_{\text{en}}(t)$ as a function of\ $O(t)$, $T(t)$, $\dot{\epsilon}(t)$ and $S(t)$, both in the few revisions of NUREG/CR-6909 and in EPRI’s report\ #1025823. Although they are not important now, the actual expressions should be defined and agreed with the plant owner and the regulator. The main result to take into account is that\ $F_{\text{en}}(t)=1$ if\ $\dot{\epsilon}(t)\leq0$, i.e. there are no environmental effects during the time intervals where the material is being compressed.

Once we have the instantaneous factor\ $F_{\text{en}}(t)$, we need to obtain an average value\ $F_{\text{en},j}$ which should be applied to the\ $j$-th load pair. Again, there are a few different ways of lumping the time-dependent\ $F_{\text{en}}(t)$ into a single $F_{\text{en},j}$ for each interval. Both NRC and EPRI give simple equations that depend on a particular time discretisation of the stress histories that, in my view, are all ill-defined. My guess is that they underestimated they audience and feared readers would not understand the slightly-more complex mathematics needed to correctly define the problem. The result is that they introduced a lot of ambiguities (and even technical errors) just not to offend the maths illiterate. A decision I do not share, and a another reason to keep on learning and practising math.
Once we have the instantaneous factor\ $F_{\text{en}}(t)$, we need to obtain an average value\ $F_{\text{en},j}$ which should be applied to the\ $j$-th load pair. Again, there are a few different ways of lumping the time-dependent\ $F_{\text{en}}(t)$ into a single $F_{\text{en},j}$ for each interval. Both NRC and EPRI give simple equations that depend on a particular time discretisation of the stress histories that, in my view, are all ill-defined. My guess is that they underestimated their audience and feared readers would not understand the slightly-more complex mathematics needed to correctly define the problem. The result is that they introduced a lot of ambiguities (and even technical errors) just not to offend the maths illiterate. A decision I do not share, and a another reason to keep on learning and practising math.

When faced for the first time with the case study, I have come up with a weighting method that I claim is less ill-defined (it still is for border-line cases) and which the plant owner accepted as valid. [@Fig:cufen] shows the reference results of the problem (based on computing two correction factors and then taking the maximum) and the ones obtained with the proposed method (by computing a weighted integral between the valley and the peak). Note how in\ [@fig:cufen-nrc], pairs 694-447 and 699-447 have the same\ $F_\text{en}$ even though they are (marginally) different. The results from\ [@fig:cufen-seamplex] give two (marginally) different correction factors.

@@ -1100,25 +1101,25 @@ Back in college, we all learned how to solve engineering problems. And once we g
* use and exercise your imagination
* practise math
* start with simple cases first
dnl * grasp the dependence of results with independent variables
* keep in mind there are other methods beside finite elements
* grasp the dependence of results with independent variables
* remember there are other methods beside finite elements
* take into account that even within the finite element method, there is a wide variety of complexity in the problems that can be solved
dnl * follow the “five whys rule” before compute anything, probably you do not need to
* use engineering judgment and make sure understand Asimov’s [“wronger than wrong”](https://en.wikipedia.org/wiki/Wronger_than_wrong) concept
* play with your favourite FEM solver (mine is [CAEplex](https://caeplex.com)) solving simple cases, trying to predict the results and picturing the stress tensor and its eigenvectors in your imagination
* prove (with pencil and paper) that even though the principal stresses are not linear with respect to summation, they are linear with respect to multiplication
* grab any stress distribution from any of your FEM projects, compute the iso-stress curves and the draw normal lines to them to get acquainted with SCLs
dnl * first search online for “stress linearisation” (or “linearization” if you want) and then get a copy of ASME\ VIII Div\ 2 Annex 5-A
* keep in mind that FEM solutions lead only to nodal equilibrium but not pointwise equilibrium
* search online for “stress linearisation” (or “linearization” if you want) and then get a copy of ASME\ VIII Div\ 2 Annex 5-A
* take into account that FEM solutions lead only to nodal equilibrium but not point-wise equilibrium
* measure the time needed to generate grids of different sizes and kinds with your favourite mesher
* learn this by heart: the complexity of a FEM problem is given mainly by the number of _nodes_, not by the number of elements
* remember that welded materials with different thermal expansion coefficients may lead to fatigue under cyclic temperature changes
dnl * if you have time, try to get out of your comfort zone and do more than what others expect from you (like parametric computations)
dnl * clone the [parametric tee repository](https://bitbucket.org/seamplex/tee), understand how the figures from\ [@sec:parametric] were built and expand them to cover “we might go on...” bullets
dnl * try to find an explanation of the results obtained, just like we did when we explained the parametric curves from\ [@fig:tee-MB ] with two opposing effects which were equal in magnitude around $d_b=5$\ inches
* clone the [parametric tee repository](https://github.com/seamplex/tee), understand how the figures from\ [@sec:parametric] were built and expand them to cover “we might go on...” bullets
* try to find an explanation of the results obtained, just like we did when we explained the parametric curves from\ [@fig:tee-MB ] with two opposing effects which were equal in magnitude around $d_b=5$\ inches
* think thermal-mechanical plus earthquakes as “bake, break and shake” problems
* understand why the elastic problem of the case study is still linear after all
* keep in mind that finite-elements are a mean to get an engineering solution, not and end by themselves
* keep in mind that finite-elements are a means to get an engineering solution, not an end by themselves
* learn to write scripts to post-process FEM results (from a script-friendly FEM program)
* work under a [distributed version control](https://en.wikipedia.org/wiki/Distributed_version_control) system such as [Git](https://en.wikipedia.org/wiki/Git), even when just editing input files or writing reports
dnl * clone the [environmental fatigue sample problem repository](https://bitbucket.org/seamplex/cufen) and obtain a nicely-formatted table with the results of the “EAF Sample Problem 2-Rev.\ 2 (10/21/2011)” from\ [@sec:in-air;@sec:in-water].
@@ -1134,7 +1135,7 @@ About your favourite FEM program, ask yourself these two questions:
3. Do you trust your favourite FEM program?


And finally, make sure that at the end of the journey from college theory to an actual engineering problem your conscience, is clear knowing that there exists a report with your signature on it. That is why we all went to college in the first place.
And finally, make sure that at the end of the journey from college theory to an actual engineering problem your conscience is clear knowing that there exists a report with your signature on it. That is why we all went to college in the first place.


# Concluding Remarks

+ 1
- 1
nureg1.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:51 2019
%%CreationDate: Wed Oct 16 09:15:15 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
nureg2.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:52 2019
%%CreationDate: Wed Oct 16 09:15:15 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
nureg3.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:52 2019
%%CreationDate: Wed Oct 16 09:15:16 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
simple.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:53 2019
%%CreationDate: Wed Oct 16 09:15:16 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
slab-1-0.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:53 2019
%%CreationDate: Wed Oct 16 09:15:17 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
slab-1-1.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:54 2019
%%CreationDate: Wed Oct 16 09:15:17 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
slab-2-0.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:54 2019
%%CreationDate: Wed Oct 16 09:15:18 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

+ 1
- 1
slab-2-1.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:55 2019
%%CreationDate: Wed Oct 16 09:15:19 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2

Binär
spectrum.emf Visa fil


+ 498
- 351
spectrum.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:56 2019
%%CreationDate: Wed Oct 16 09:15:20 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
@@ -76,121 +76,132 @@ q 0 0 441 281 rectclip
0 J
0 j
[] 0.0 d
10 M q 1 0 0 1 0 0 cm
37.234 245.41 m 37.234 0.141 l S Q
q 1 0 0 1 0 0 cm
53.262 245.41 m 53.262 0.141 l S Q
q 1 0 0 1 0 0 cm
66.352 245.41 m 66.352 0.141 l S Q
q 1 0 0 1 0 0 cm
77.422 245.41 m 77.422 0.141 l S Q
q 1 0 0 1 0 0 cm
87.012 245.41 m 87.012 0.141 l S Q
q 1 0 0 1 0 0 cm
95.473 245.41 m 95.473 0.141 l S Q
q 1 0 0 1 0 0 cm
103.035 245.41 m 103.035 0.141 l S Q
q 1 0 0 1 0 0 cm
152.812 245.41 m 152.812 0.141 l S Q
q 1 0 0 1 0 0 cm
202.582 245.41 m 202.582 0.141 l S Q
q 1 0 0 1 0 0 cm
218.613 245.41 m 218.613 0.141 l S Q
q 1 0 0 1 0 0 cm
231.703 245.41 m 231.703 0.141 l S Q
q 1 0 0 1 0 0 cm
242.773 245.41 m 242.773 0.141 l S Q
q 1 0 0 1 0 0 cm
252.363 245.41 m 252.363 0.141 l S Q
q 1 0 0 1 0 0 cm
260.824 245.41 m 260.824 0.141 l S Q
q 1 0 0 1 0 0 cm
268.395 245.41 m 268.395 0.141 l S Q
q 1 0 0 1 0 0 cm
318.164 245.41 m 318.164 0.141 l S Q
q 1 0 0 1 0 0 cm
367.941 245.41 m 367.941 0.141 l S Q
q 1 0 0 1 0 0 cm
383.965 245.41 m 383.965 0.141 l S Q
q 1 0 0 1 0 0 cm
397.062 245.41 m 397.062 0.141 l S Q
q 1 0 0 1 0 0 cm
408.133 245.41 m 408.133 0.141 l S Q
q 1 0 0 1 0 0 cm
417.723 245.41 m 417.723 0.141 l S Q
q 1 0 0 1 0 0 cm
426.172 245.41 m 426.172 0.141 l S Q
q 1 0 0 1 0 0 cm
433.742 245.41 m 433.742 0.141 l S Q
10 M q 1 0 0 -1 0 0 cm
37.234 -245.41 m 37.234 -0.141 l S Q
q 1 0 0 -1 0 0 cm
53.262 -245.41 m 53.262 -0.141 l S Q
q 1 0 0 -1 0 0 cm
66.352 -245.41 m 66.352 -0.141 l S Q
q 1 0 0 -1 0 0 cm
77.422 -245.41 m 77.422 -0.141 l S Q
q 1 0 0 -1 0 0 cm
87.012 -245.41 m 87.012 -0.141 l S Q
q 1 0 0 -1 0 0 cm
95.473 -245.41 m 95.473 -0.141 l S Q
q 1 0 0 -1 0 0 cm
103.035 -245.41 m 103.035 -0.141 l S Q
q 1 0 0 -1 0 0 cm
152.812 -245.41 m 152.812 -0.141 l S Q
q 1 0 0 -1 0 0 cm
202.582 -245.41 m 202.582 -0.141 l S Q
q 1 0 0 -1 0 0 cm
218.613 -245.41 m 218.613 -0.141 l S Q
q 1 0 0 -1 0 0 cm
231.703 -245.41 m 231.703 -0.141 l S Q
q 1 0 0 -1 0 0 cm
242.773 -245.41 m 242.773 -0.141 l S Q
q 1 0 0 -1 0 0 cm
252.363 -245.41 m 252.363 -0.141 l S Q
q 1 0 0 -1 0 0 cm
260.824 -245.41 m 260.824 -0.141 l S Q
q 1 0 0 -1 0 0 cm
268.395 -245.41 m 268.395 -0.141 l S Q
q 1 0 0 -1 0 0 cm
318.164 -245.41 m 318.164 -0.141 l S Q
q 1 0 0 -1 0 0 cm
367.941 -245.41 m 367.941 -0.141 l S Q
q 1 0 0 -1 0 0 cm
383.965 -245.41 m 383.965 -0.141 l S Q
q 1 0 0 -1 0 0 cm
397.062 -245.41 m 397.062 -0.141 l S Q
q 1 0 0 -1 0 0 cm
408.133 -245.41 m 408.133 -0.141 l S Q
q 1 0 0 -1 0 0 cm
417.723 -245.41 m 417.723 -0.141 l S Q
q 1 0 0 -1 0 0 cm
426.172 -245.41 m 426.172 -0.141 l S Q
q 1 0 0 -1 0 0 cm
433.742 -245.41 m 433.742 -0.141 l S Q
0.65098 0.639216 0.65098 rg
0.566929 w
q 1 0 0 1 0 0 cm
103.035 245.41 m 103.035 0.141 l S Q
q 1 0 0 1 0 0 cm
181.934 245.41 m 181.934 0.141 l S Q
q 1 0 0 1 0 0 cm
268.395 245.41 m 268.395 0.141 l S Q
q 1 0 0 1 0 0 cm
347.285 245.41 m 347.285 0.141 l S Q
q 1 0 0 1 0 0 cm
433.742 245.41 m 433.742 0.141 l S Q
q 1 0 0 -1 0 0 cm
103.035 -245.41 m 103.035 -0.141 l S Q
q 1 0 0 -1 0 0 cm
181.934 -245.41 m 181.934 -0.141 l S Q
q 1 0 0 -1 0 0 cm
268.395 -245.41 m 268.395 -0.141 l S Q
q 1 0 0 -1 0 0 cm
347.285 -245.41 m 347.285 -0.141 l S Q
q 1 0 0 -1 0 0 cm
433.742 -245.41 m 433.742 -0.141 l S Q
0.870588 0.862745 0.862745 rg
0.283465 w
q 1 0 0 1 0 0 cm
36.895 234.258 m 433.742 234.258 l S Q
q 1 0 0 1 0 0 cm
36.895 223.109 m 433.742 223.109 l S Q
q 1 0 0 1 0 0 cm
36.895 211.961 m 433.742 211.961 l S Q
q 1 0 0 1 0 0 cm
36.895 200.82 m 433.742 200.82 l S Q
q 1 0 0 1 0 0 cm
36.895 178.52 m 433.742 178.52 l S Q
q 1 0 0 1 0 0 cm
36.895 167.371 m 433.742 167.371 l S Q
q 1 0 0 1 0 0 cm
36.895 156.219 m 433.742 156.219 l S Q
q 1 0 0 1 0 0 cm
36.895 145.07 m 433.742 145.07 l S Q
q 1 0 0 1 0 0 cm
36.895 122.781 m 433.742 122.781 l S Q
q 1 0 0 1 0 0 cm
36.895 111.629 m 433.742 111.629 l S Q
q 1 0 0 1 0 0 cm
36.895 100.48 m 433.742 100.48 l S Q
q 1 0 0 1 0 0 cm
36.895 89.332 m 433.742 89.332 l S Q
q 1 0 0 1 0 0 cm
36.895 67.031 m 433.742 67.031 l S Q
q 1 0 0 1 0 0 cm
36.895 55.891 m 433.742 55.891 l S Q
q 1 0 0 1 0 0 cm
36.895 44.738 m 433.742 44.738 l S Q
q 1 0 0 1 0 0 cm
36.895 33.59 m 433.742 33.59 l S Q
q 1 0 0 1 0 0 cm
36.895 11.289 m 433.742 11.289 l S Q
q 1 0 0 1 0 0 cm
36.895 0.141 m 433.742 0.141 l S Q
q 1 0 0 -1 0 0 cm
36.895 -234.258 m 433.742 -234.258 l S Q
q 1 0 0 -1 0 0 cm
36.895 -223.109 m 433.742 -223.109 l S Q
q 1 0 0 -1 0 0 cm
36.895 -211.961 m 433.742 -211.961 l S Q
q 1 0 0 -1 0 0 cm
36.895 -200.82 m 433.742 -200.82 l S Q
q 1 0 0 -1 0 0 cm
36.895 -178.52 m 433.742 -178.52 l S Q
q 1 0 0 -1 0 0 cm
36.895 -167.371 m 433.742 -167.371 l S Q
q 1 0 0 -1 0 0 cm
36.895 -156.219 m 433.742 -156.219 l S Q
q 1 0 0 -1 0 0 cm
36.895 -145.07 m 433.742 -145.07 l S Q
q 1 0 0 -1 0 0 cm
36.895 -122.781 m 433.742 -122.781 l S Q
q 1 0 0 -1 0 0 cm
36.895 -111.629 m 433.742 -111.629 l S Q
q 1 0 0 -1 0 0 cm
36.895 -100.48 m 433.742 -100.48 l S Q
q 1 0 0 -1 0 0 cm
36.895 -89.332 m 433.742 -89.332 l S Q
q 1 0 0 -1 0 0 cm
36.895 -67.031 m 433.742 -67.031 l S Q
q 1 0 0 -1 0 0 cm
36.895 -55.891 m 433.742 -55.891 l S Q
q 1 0 0 -1 0 0 cm
36.895 -44.738 m 433.742 -44.738 l S Q
q 1 0 0 -1 0 0 cm
36.895 -33.59 m 433.742 -33.59 l S Q
q 1 0 0 -1 0 0 cm
36.895 -11.289 m 433.742 -11.289 l S Q
q 1 0 0 -1 0 0 cm
36.895 -0.141 m 433.742 -0.141 l S Q
0.65098 0.639216 0.65098 rg
0.566929 w
q 1 0 0 1 0 0 cm
36.895 245.41 m 433.742 245.41 l S Q
q 1 0 0 1 0 0 cm
36.895 189.668 m 433.742 189.668 l S Q
q 1 0 0 1 0 0 cm
36.895 133.922 m 433.742 133.922 l S Q
q 1 0 0 1 0 0 cm
36.895 78.18 m 433.742 78.18 l S Q
q 1 0 0 1 0 0 cm
36.895 22.438 m 433.742 22.438 l S Q
q 1 0 0 -1 0 0 cm
36.895 -245.41 m 433.742 -245.41 l S Q
q 1 0 0 -1 0 0 cm
36.895 -189.668 m 433.742 -189.668 l S Q
q 1 0 0 -1 0 0 cm
36.895 -133.922 m 433.742 -133.922 l S Q
q 1 0 0 -1 0 0 cm
36.895 -78.18 m 433.742 -78.18 l S Q
q 1 0 0 -1 0 0 cm
36.895 -22.438 m 433.742 -22.438 l S Q
Q q
0 53.863 441 221 re W n
q
0 53 441 222 re W n
[ 1 0 0 1 0 0 ] concat
q
0.921569 0.0980392 0.137255 rg
2.83465 w
0 J
0 j
[ 5.67 5.67] 0 d
q 1 0 0 1 0 0 cm
37.234 234.258 m 123.512 217.539 l 244.293 133.922 l 268.395 133.922 l
289.941 94.91 l 325.012 94.91 l 358.352 178.52 l 383.965 200.82 l 433.742
200.82 l S Q
10 M q 1 0 0 -1 0 0 cm
37.234 -234.258 m 123.512 -217.539 l 244.293 -133.922 l 268.395 -133.922
l 289.941 -94.91 l 325.012 -94.91 l 358.352 -178.52 l 383.965 -200.82 l
433.742 -200.82 l S Q
Q
Q
0.921569 0.0980392 0.137255 rg
34.984 232.008 4.5 4.5 re f
121.262 215.289 4.5 4.5 re f
242.043 131.672 4.5 4.5 re f
@@ -200,14 +211,24 @@ q 1 0 0 1 0 0 cm
356.102 176.27 4.5 4.5 re f
381.715 198.57 4.5 4.5 re f
431.492 198.57 4.5 4.5 re f
Q q
12.738 0 428.262 258.863 re W n
q
12 0 429 259 re W n
[ 1 0 0 1 0 0 ] concat
q
0 0.65098 0.309804 rg
1.70079 w
1 J
0 j
[ 0 3.4] 0 d
q 1 0 0 1 0 0 cm
37.234 234.258 m 123.512 200.82 l 163.785 145.07 l 181.934 11.289 l 252.363
11.289 l 312.562 122.781 l 337.004 122.781 l 383.965 189.668 l 433.742
189.668 l S Q
10 M q 1 0 0 -1 0 0 cm
37.234 -234.258 m 123.512 -200.82 l 163.785 -145.07 l 181.934 -11.289 l
252.363 -11.289 l 312.562 -122.781 l 337.004 -122.781 l 383.965 -189.668
l 433.742 -189.668 l S Q
Q
Q
0 0.65098 0.309804 rg
39.707 234.258 m 39.707 232.895 38.598 231.785 37.234 231.785 c 35.867
231.785 34.758 232.895 34.758 234.258 c 34.758 235.625 35.867 236.734 37.234
236.734 c 38.598 236.734 39.707 235.625 39.707 234.258 c f
@@ -235,13 +256,24 @@ q 1 0 0 1 0 0 cm
436.219 189.668 m 436.219 188.305 435.109 187.195 433.742 187.195 c 432.375
187.195 431.27 188.305 431.27 189.668 c 431.27 191.035 432.375 192.145
433.742 192.145 c 435.109 192.145 436.219 191.035 436.219 189.668 c f
Q q
28.738 2.863 412.262 240 re W n
q
28 2 413 241 re W n
[ 1 0 0 1 0 0 ] concat
q
0.180392 0.188235 0.568627 rg
0.566929 w
1 J
0 j
[ 0 1.13 1.13 1.13] 0 d
q 1 0 0 1 0 0 cm
37.234 234.258 m 123.512 200.82 l 163.785 145.07 l 181.934 11.289 l 252.363
11.289 l 289.941 156.219 l 331.262 156.219 l 358.352 189.668 l 433.742
189.668 l S Q
10 M q 1 0 0 -1 0 0 cm
37.234 -234.258 m 123.512 -200.82 l 163.785 -145.07 l 181.934 -11.289 l
252.363 -11.289 l 289.941 -156.219 l 331.262 -156.219 l 358.352 -189.668
l 433.742 -189.668 l S Q
Q
Q
0.180392 0.188235 0.568627 rg
40.781 236.508 m 37.234 230.363 l 33.684 236.508 l f
127.062 203.07 m 123.512 196.922 l 119.965 203.07 l f
167.332 147.32 m 163.785 141.172 l 160.234 147.32 l f
@@ -251,15 +283,18 @@ q 1 0 0 1 0 0 cm
334.812 158.469 m 331.262 152.324 l 327.715 158.469 l f
361.902 191.918 m 358.352 185.773 l 354.805 191.918 l f
437.293 191.918 m 433.742 185.773 l 430.191 191.918 l f
Q q
0.129412 0.117647 0.117647 rg
429.312 245.41 m 428.203 247.711 l 433.742 245.41 l 428.203 243.109 l h
429.312 245.41 m f
0.566929 w
0 J
0 j
[] 0.0 d
q 1 0 0 1 0 0 cm
36.895 245.41 m 429.312 245.41 l S Q
q 1 0 0 1 0 0 cm
103.035 245.41 m 103.035 242.008 l S Q
10 M q 1 0 0 -1 0 0 cm
36.895 -245.41 m 429.312 -245.41 l S Q
q 1 0 0 -1 0 0 cm
103.035 -245.41 m 103.035 -242.008 l S Q
103.48 254.418 m 103.48 254.184 103.48 254.168 103.246 254.168 c 102.637
254.809 101.746 254.809 101.434 254.809 c 101.434 255.121 l 101.637 255.121
102.23 255.121 102.746 254.855 c 102.746 260.027 l 102.746 260.387 102.715
@@ -268,8 +303,8 @@ q 1 0 0 1 0 0 cm
260.824 c 104.73 260.512 l 104.418 260.512 l 103.512 260.512 103.48 260.402
103.48 260.027 c h
103.48 254.418 m f
q 1 0 0 1 0 0 cm
181.934 245.41 m 181.934 242.008 l S Q
q 1 0 0 -1 0 0 cm
181.934 -245.41 m 181.934 -242.008 l S Q
182.348 257.309 m 183.16 257.027 183.738 256.34 183.738 255.543 c 183.738
254.73 182.863 254.168 181.895 254.168 c 180.895 254.168 180.129 254.762
180.129 255.527 c 180.129 255.855 180.348 256.043 180.645 256.043 c 180.957
@@ -287,8 +322,8 @@ q 1 0 0 1 0 0 cm
184.004 260.137 184.004 259.121 c 184.004 258.293 183.379 257.512 182.348
257.309 c h
182.348 257.309 m f
q 1 0 0 1 0 0 cm
268.395 245.41 m 268.395 242.008 l S Q
q 1 0 0 -1 0 0 cm
268.395 -245.41 m 268.395 -242.008 l S Q
266.348 254.418 m 266.348 254.184 266.348 254.168 266.113 254.168 c 265.504
254.809 264.613 254.809 264.301 254.809 c 264.301 255.121 l 264.504 255.121
265.098 255.121 265.613 254.855 c 265.613 260.027 l 265.613 260.387 265.582
@@ -310,8 +345,8 @@ q 1 0 0 1 0 0 cm
272.176 257.512 c 272.176 258.262 272.176 258.934 272.066 259.574 c 271.926
260.527 271.348 260.824 270.895 260.824 c h
270.895 260.824 m f
q 1 0 0 1 0 0 cm
347.285 245.41 m 347.285 242.008 l S Q
q 1 0 0 -1 0 0 cm
347.285 -245.41 m 347.285 -242.008 l S Q
345.207 257.309 m 346.02 257.027 346.598 256.34 346.598 255.543 c 346.598
254.73 345.723 254.168 344.754 254.168 c 343.754 254.168 342.988 254.762
342.988 255.527 c 342.988 255.855 343.207 256.043 343.504 256.043 c 343.816
@@ -342,6 +377,13 @@ q 1 0 0 1 0 0 cm
257.512 c 351.066 258.262 351.066 258.934 350.957 259.574 c 350.816 260.527
350.238 260.824 349.785 260.824 c h
349.785 260.824 m f
Q q
426.738 253.863 14.262 8 re W n
q
426 253 15 9 re W n
[ 1 0 0 1 0 0 ] concat
q
0.129412 0.117647 0.117647 rg
429.207 254.418 m 429.207 254.184 429.207 254.168 428.973 254.168 c 428.363
254.809 427.473 254.809 427.16 254.809 c 427.16 255.121 l 427.363 255.121
427.957 255.121 428.473 254.855 c 428.473 260.027 l 428.473 260.387 428.441
@@ -376,193 +418,219 @@ q 1 0 0 1 0 0 cm
440.035 257.512 c 440.035 258.262 440.035 258.934 439.926 259.574 c 439.785
260.527 439.207 260.824 438.754 260.824 c h
438.754 260.824 m f
q 1 0 0 1 0 0 cm
37.234 245.41 m 37.234 243 l S Q
q 1 0 0 1 0 0 cm
53.262 245.41 m 53.262 243 l S Q
q 1 0 0 1 0 0 cm
66.352 245.41 m 66.352 243 l S Q
q 1 0 0 1 0 0 cm
77.422 245.41 m 77.422 243 l S Q
q 1 0 0 1 0 0 cm
87.012 245.41 m 87.012 243 l S Q
q 1 0 0 1 0 0 cm
95.473 245.41 m 95.473 243 l S Q
q 1 0 0 1 0 0 cm
103.035 245.41 m 103.035 243 l S Q
q 1 0 0 1 0 0 cm
152.812 245.41 m 152.812 243 l S Q
q 1 0 0 1 0 0 cm
202.582 245.41 m 202.582 243 l S Q
q 1 0 0 1 0 0 cm
218.613 245.41 m 218.613 243 l S Q
q 1 0 0 1 0 0 cm
231.703 245.41 m 231.703 243 l S Q
q 1 0 0 1 0 0 cm
242.773 245.41 m 242.773 243 l S Q
q 1 0 0 1 0 0 cm
252.363 245.41 m 252.363 243 l S Q
q 1 0 0 1 0 0 cm
260.824 245.41 m 260.824 243 l S Q
q 1 0 0 1 0 0 cm
268.395 245.41 m 268.395 243 l S Q
q 1 0 0 1 0 0 cm
318.164 245.41 m 318.164 243 l S Q
q 1 0 0 1 0 0 cm
367.941 245.41 m 367.941 243 l S Q
q 1 0 0 1 0 0 cm
383.965 245.41 m 383.965 243 l S Q
q 1 0 0 1 0 0 cm
397.062 245.41 m 397.062 243 l S Q
q 1 0 0 1 0 0 cm
408.133 245.41 m 408.133 243 l S Q
q 1 0 0 1 0 0 cm
417.723 245.41 m 417.723 243 l S Q
q 1 0 0 1 0 0 cm
426.172 245.41 m 426.172 243 l S Q
208.953 271.008 m 203.469 271.008 l 203.469 271.32 l 203.703 271.32 l 204.484
271.32 204.5 271.43 204.5 271.789 c 204.5 277.023 l 204.5 277.383 204.484
277.492 203.703 277.492 c 203.469 277.492 l 203.469 277.805 l 203.828 277.773
204.594 277.773 204.984 277.773 c 205.406 277.773 206.312 277.773 206.672
277.805 c 206.672 277.492 l 206.344 277.492 l 205.391 277.492 205.391 277.367
205.391 277.008 c 205.391 274.555 l 206.25 274.555 l 207.203 274.555 207.312
274.867 207.312 275.727 c 207.562 275.727 l 207.562 273.07 l 207.312 273.07
l 207.312 273.914 207.203 274.242 206.25 274.242 c 205.391 274.242 l 205.391
271.711 l 205.391 271.383 205.406 271.32 205.875 271.32 c 207.078 271.32
l 208.578 271.32 208.828 271.867 208.984 273.258 c 209.234 273.258 l h
208.953 271.008 m f
210.484 274.492 m 210.484 273.383 l 209.094 273.492 l 209.094 273.805 l
209.797 273.805 209.875 273.867 209.875 274.367 c 209.875 277.039 l 209.875
277.492 209.766 277.492 209.094 277.492 c 209.094 277.805 l 209.484 277.789
209.953 277.773 210.234 277.773 c 210.625 277.773 211.109 277.773 211.5
277.805 c 211.5 277.492 l 211.297 277.492 l 210.547 277.492 210.531 277.383
210.531 277.023 c 210.531 275.492 l 210.531 274.492 210.953 273.602 211.719
273.602 c 211.781 273.602 211.797 273.602 211.828 273.617 c 211.797 273.617
211.594 273.742 211.594 274.008 c 211.594 274.289 211.797 274.43 212.016
274.43 c 212.203 274.43 212.453 274.32 212.453 273.992 c 212.453 273.68
212.141 273.383 211.719 273.383 c 210.984 273.383 210.625 274.055 210.484
Q
Q
Q q
0.129412 0.117647 0.117647 rg
0.566929 w
0 J
0 j
[] 0.0 d
10 M q 1 0 0 -1 0 0 cm
37.234 -245.41 m 37.234 -243 l S Q
q 1 0 0 -1 0 0 cm
53.262 -245.41 m 53.262 -243 l S Q
q 1 0 0 -1 0 0 cm
66.352 -245.41 m 66.352 -243 l S Q
q 1 0 0 -1 0 0 cm
77.422 -245.41 m 77.422 -243 l S Q
q 1 0 0 -1 0 0 cm
87.012 -245.41 m 87.012 -243 l S Q
q 1 0 0 -1 0 0 cm
95.473 -245.41 m 95.473 -243 l S Q
q 1 0 0 -1 0 0 cm
103.035 -245.41 m 103.035 -243 l S Q
q 1 0 0 -1 0 0 cm
152.812 -245.41 m 152.812 -243 l S Q
q 1 0 0 -1 0 0 cm
202.582 -245.41 m 202.582 -243 l S Q
q 1 0 0 -1 0 0 cm
218.613 -245.41 m 218.613 -243 l S Q
q 1 0 0 -1 0 0 cm
231.703 -245.41 m 231.703 -243 l S Q
q 1 0 0 -1 0 0 cm
242.773 -245.41 m 242.773 -243 l S Q
q 1 0 0 -1 0 0 cm
252.363 -245.41 m 252.363 -243 l S Q
q 1 0 0 -1 0 0 cm
260.824 -245.41 m 260.824 -243 l S Q
q 1 0 0 -1 0 0 cm
268.395 -245.41 m 268.395 -243 l S Q
q 1 0 0 -1 0 0 cm
318.164 -245.41 m 318.164 -243 l S Q
q 1 0 0 -1 0 0 cm
367.941 -245.41 m 367.941 -243 l S Q
q 1 0 0 -1 0 0 cm
383.965 -245.41 m 383.965 -243 l S Q
q 1 0 0 -1 0 0 cm
397.062 -245.41 m 397.062 -243 l S Q
q 1 0 0 -1 0 0 cm
408.133 -245.41 m 408.133 -243 l S Q
q 1 0 0 -1 0 0 cm
417.723 -245.41 m 417.723 -243 l S Q
q 1 0 0 -1 0 0 cm
426.172 -245.41 m 426.172 -243 l S Q
208.535 271.008 m 203.051 271.008 l 203.051 271.32 l 203.285 271.32 l 204.066
271.32 204.082 271.43 204.082 271.789 c 204.082 277.023 l 204.082 277.383
204.066 277.492 203.285 277.492 c 203.051 277.492 l 203.051 277.805 l 203.41
277.773 204.176 277.773 204.566 277.773 c 204.988 277.773 205.895 277.773
206.254 277.805 c 206.254 277.492 l 205.926 277.492 l 204.973 277.492 204.973
277.367 204.973 277.008 c 204.973 274.555 l 205.832 274.555 l 206.785 274.555
206.895 274.867 206.895 275.727 c 207.145 275.727 l 207.145 273.07 l 206.895
273.07 l 206.895 273.914 206.785 274.242 205.832 274.242 c 204.973 274.242
l 204.973 271.711 l 204.973 271.383 204.988 271.32 205.457 271.32 c 206.66
271.32 l 208.16 271.32 208.41 271.867 208.566 273.258 c 208.816 273.258
l h
208.535 271.008 m f
210.066 274.492 m 210.066 273.383 l 208.676 273.492 l 208.676 273.805 l
209.379 273.805 209.457 273.867 209.457 274.367 c 209.457 277.039 l 209.457
277.492 209.348 277.492 208.676 277.492 c 208.676 277.805 l 209.066 277.789
209.535 277.773 209.816 277.773 c 210.207 277.773 210.691 277.773 211.082
277.805 c 211.082 277.492 l 210.879 277.492 l 210.129 277.492 210.113 277.383
210.113 277.023 c 210.113 275.492 l 210.113 274.492 210.535 273.602 211.301
273.602 c 211.363 273.602 211.379 273.602 211.41 273.617 c 211.379 273.617
211.176 273.742 211.176 274.008 c 211.176 274.289 211.379 274.43 211.598
274.43 c 211.785 274.43 212.035 274.32 212.035 273.992 c 212.035 273.68
211.723 273.383 211.301 273.383 c 210.566 273.383 210.207 274.055 210.066
274.492 c h
210.484 274.492 m f
213.848 275.289 m 213.91 273.789 214.738 273.539 215.082 273.539 c 216.113
273.539 216.207 274.898 216.207 275.289 c h
213.832 275.492 m 216.629 275.492 l 216.848 275.492 216.879 275.492 216.879
275.289 c 216.879 274.289 216.332 273.32 215.082 273.32 c 213.926 273.32
213.004 274.352 213.004 275.602 c 213.004 276.945 214.051 277.914 215.207
277.914 c 216.426 277.914 216.879 276.805 216.879 276.617 c 216.879 276.508
216.785 276.492 216.738 276.492 c 216.66 276.492 216.629 276.555 216.613
276.633 c 216.27 277.664 215.363 277.664 215.27 277.664 c 214.77 277.664
214.363 277.367 214.129 276.992 c 213.832 276.508 213.832 275.852 213.832
210.066 274.492 m f
213.43 275.289 m 213.492 273.789 214.32 273.539 214.664 273.539 c 215.695
273.539 215.789 274.898 215.789 275.289 c h
213.414 275.492 m 216.211 275.492 l 216.43 275.492 216.461 275.492 216.461
275.289 c 216.461 274.289 215.914 273.32 214.664 273.32 c 213.508 273.32
212.586 274.352 212.586 275.602 c 212.586 276.945 213.633 277.914 214.789
277.914 c 216.008 277.914 216.461 276.805 216.461 276.617 c 216.461 276.508
216.367 276.492 216.32 276.492 c 216.242 276.492 216.211 276.555 216.195
276.633 c 215.852 277.664 214.945 277.664 214.852 277.664 c 214.352 277.664
213.945 277.367 213.711 276.992 c 213.414 276.508 213.414 275.852 213.414
275.492 c h
213.832 275.492 m f
218.336 275.617 m 218.336 273.992 219.148 273.57 219.68 273.57 c 219.773
273.57 220.398 273.586 220.758 273.945 c 220.352 273.977 220.289 274.273
220.289 274.398 c 220.289 274.664 220.461 274.867 220.742 274.867 c 221.008
274.867 221.211 274.695 221.211 274.398 c 221.211 273.711 220.445 273.32
219.68 273.32 c 218.43 273.32 217.508 274.398 217.508 275.648 c 217.508
276.93 218.492 277.914 219.648 277.914 c 220.992 277.914 221.32 276.711
221.32 276.617 c 221.32 276.508 221.211 276.508 221.18 276.508 c 221.102
276.508 221.07 276.555 221.055 276.617 c 220.758 277.539 220.117 277.664
219.742 277.664 c 219.211 277.664 218.336 277.242 218.336 275.617 c h
218.336 275.617 m f
225.512 277.008 m 225.512 277.914 l 226.949 277.805 l 226.949 277.492 l
226.262 277.492 226.168 277.43 226.168 276.93 c 226.168 273.383 l 224.699
273.492 l 224.699 273.805 l 225.402 273.805 225.48 273.867 225.48 274.367
c 225.48 276.148 l 225.48 277.008 225.012 277.695 224.277 277.695 c 223.434
277.695 223.402 277.227 223.402 276.711 c 223.402 273.383 l 221.918 273.492
l 221.918 273.805 l 222.699 273.805 222.699 273.836 222.699 274.727 c 222.699
276.227 l 222.699 277.008 222.699 277.914 224.23 277.914 c 224.793 277.914
225.23 277.633 225.512 277.008 c h
225.512 277.008 m f
228.277 275.289 m 228.34 273.789 229.168 273.539 229.512 273.539 c 230.543
273.539 230.637 274.898 230.637 275.289 c h
228.262 275.492 m 231.059 275.492 l 231.277 275.492 231.309 275.492 231.309
275.289 c 231.309 274.289 230.762 273.32 229.512 273.32 c 228.355 273.32
227.434 274.352 227.434 275.602 c 227.434 276.945 228.48 277.914 229.637
277.914 c 230.855 277.914 231.309 276.805 231.309 276.617 c 231.309 276.508
231.215 276.492 231.168 276.492 c 231.09 276.492 231.059 276.555 231.043
276.633 c 230.699 277.664 229.793 277.664 229.699 277.664 c 229.199 277.664
228.793 277.367 228.559 276.992 c 228.262 276.508 228.262 275.852 228.262
213.414 275.492 m f
220.543 277.195 m 220.543 278.992 l 220.543 279.43 220.434 279.43 219.762
279.43 c 219.762 279.742 l 220.105 279.742 220.621 279.711 220.887 279.711
c 221.152 279.711 221.668 279.742 222.012 279.742 c 222.012 279.43 l 221.34
279.43 221.23 279.43 221.23 278.992 c 221.23 273.383 l 221.012 273.383
l 220.637 274.289 l 220.512 274.008 220.09 273.383 219.293 273.383 c 218.137
273.383 217.09 274.352 217.09 275.648 c 217.09 276.898 218.059 277.914
219.215 277.914 c 219.918 277.914 220.324 277.492 220.543 277.195 c h
220.574 275.039 m 220.574 276.445 l 220.574 276.758 220.402 277.039 220.184
277.289 c 220.043 277.43 219.73 277.695 219.262 277.695 c 218.527 277.695
217.918 276.805 217.918 275.648 c 217.918 274.461 218.621 273.633 219.355
273.633 c 220.152 273.633 220.574 274.508 220.574 275.039 c h
220.574 275.039 m f
225.922 277.008 m 225.922 277.914 l 227.359 277.805 l 227.359 277.492 l
226.672 277.492 226.578 277.43 226.578 276.93 c 226.578 273.383 l 225.109
273.492 l 225.109 273.805 l 225.812 273.805 225.891 273.867 225.891 274.367
c 225.891 276.148 l 225.891 277.008 225.422 277.695 224.688 277.695 c 223.844
277.695 223.812 277.227 223.812 276.711 c 223.812 273.383 l 222.328 273.492
l 222.328 273.805 l 223.109 273.805 223.109 273.836 223.109 274.727 c 223.109
276.227 l 223.109 277.008 223.109 277.914 224.641 277.914 c 225.203 277.914
225.641 277.633 225.922 277.008 c h
225.922 277.008 m f
228.688 275.289 m 228.75 273.789 229.578 273.539 229.922 273.539 c 230.953
273.539 231.047 274.898 231.047 275.289 c h
228.672 275.492 m 231.469 275.492 l 231.688 275.492 231.719 275.492 231.719
275.289 c 231.719 274.289 231.172 273.32 229.922 273.32 c 228.766 273.32
227.844 274.352 227.844 275.602 c 227.844 276.945 228.891 277.914 230.047
277.914 c 231.266 277.914 231.719 276.805 231.719 276.617 c 231.719 276.508
231.625 276.492 231.578 276.492 c 231.5 276.492 231.469 276.555 231.453
276.633 c 231.109 277.664 230.203 277.664 230.109 277.664 c 229.609 277.664
229.203 277.367 228.969 276.992 c 228.672 276.508 228.672 275.852 228.672
275.492 c h
228.262 275.492 m f
232.688 274.367 m 232.688 277.039 l 232.688 277.492 232.578 277.492 231.906
277.492 c 231.906 277.805 l 232.266 277.789 232.781 277.773 233.047 277.773
c 233.297 277.773 233.828 277.789 234.156 277.805 c 234.156 277.492 l 233.5
277.492 233.391 277.492 233.391 277.039 c 233.391 275.211 l 233.391 274.164
234.094 273.602 234.734 273.602 c 235.359 273.602 235.469 274.148 235.469
274.711 c 235.469 277.039 l 235.469 277.492 235.359 277.492 234.688 277.492
c 234.688 277.805 l 235.047 277.789 235.547 277.773 235.828 277.773 c 236.078
277.773 236.609 277.789 236.938 277.805 c 236.938 277.492 l 236.422 277.492
236.172 277.492 236.156 277.195 c 236.156 275.289 l 236.156 274.43 236.156
274.117 235.859 273.758 c 235.719 273.586 235.391 273.383 234.797 273.383
c 234.078 273.383 233.609 273.82 233.328 274.43 c 233.328 273.383 l 231.906
273.492 l 231.906 273.805 l 232.609 273.805 232.688 273.867 232.688 274.367
228.672 275.492 m f
233.098 274.367 m 233.098 277.039 l 233.098 277.492 232.988 277.492 232.316
277.492 c 232.316 277.805 l 232.676 277.789 233.191 277.773 233.457 277.773
c 233.707 277.773 234.238 277.789 234.566 277.805 c 234.566 277.492 l 233.91
277.492 233.801 277.492 233.801 277.039 c 233.801 275.211 l 233.801 274.164
234.504 273.602 235.145 273.602 c 235.77 273.602 235.879 274.148 235.879
274.711 c 235.879 277.039 l 235.879 277.492 235.77 277.492 235.098 277.492
c 235.098 277.805 l 235.457 277.789 235.957 277.773 236.238 277.773 c 236.488
277.773 237.02 277.789 237.348 277.805 c 237.348 277.492 l 236.832 277.492
236.582 277.492 236.566 277.195 c 236.566 275.289 l 236.566 274.43 236.566
274.117 236.27 273.758 c 236.129 273.586 235.801 273.383 235.207 273.383
c 234.488 273.383 234.02 273.82 233.738 274.43 c 233.738 273.383 l 232.316
273.492 l 232.316 273.805 l 233.02 273.805 233.098 273.867 233.098 274.367
c h
232.688 274.367 m f
238.316 275.617 m 238.316 273.992 239.129 273.57 239.66 273.57 c 239.754
273.57 240.379 273.586 240.738 273.945 c 240.332 273.977 240.27 274.273
240.27 274.398 c 240.27 274.664 240.441 274.867 240.723 274.867 c 240.988
274.867 241.191 274.695 241.191 274.398 c 241.191 273.711 240.426 273.32
239.66 273.32 c 238.41 273.32 237.488 274.398 237.488 275.648 c 237.488
276.93 238.473 277.914 239.629 277.914 c 240.973 277.914 241.301 276.711
241.301 276.617 c 241.301 276.508 241.191 276.508 241.16 276.508 c 241.082
276.508 241.051 276.555 241.035 276.617 c 240.738 277.539 240.098 277.664
239.723 277.664 c 239.191 277.664 238.316 277.242 238.316 275.617 c h
238.316 275.617 m f
245.742 274.445 m 245.992 273.82 246.508 273.805 246.664 273.805 c 246.664
273.492 l 246.43 273.508 246.148 273.523 245.914 273.523 c 245.742 273.523
245.273 273.508 245.039 273.492 c 245.039 273.805 l 245.352 273.82 245.523
273.992 245.523 274.242 c 245.523 274.336 245.508 274.352 245.461 274.477
c 244.445 276.93 l 243.336 274.242 l 243.289 274.148 243.273 274.102 243.273
274.07 c 243.273 273.805 243.648 273.805 243.836 273.805 c 243.836 273.492
l 243.57 273.508 242.914 273.523 242.742 273.523 c 242.477 273.523 242.07
273.508 241.773 273.492 c 241.773 273.805 l 242.258 273.805 242.445 273.805
242.586 274.148 c 244.086 277.805 l 244.039 277.93 243.898 278.258 243.836
278.398 c 243.617 278.945 243.336 279.633 242.695 279.633 c 242.648 279.633
242.414 279.633 242.227 279.461 c 242.539 279.414 242.617 279.195 242.617
279.039 c 242.617 278.773 242.43 278.617 242.195 278.617 c 241.992 278.617
241.773 278.742 241.773 279.039 c 241.773 279.492 242.195 279.852 242.695
279.852 c 243.32 279.852 243.742 279.289 243.977 278.711 c h
245.742 274.445 m f
252.625 280.305 m 252.625 279.898 l 251.656 279.898 l 251.656 270.711 l
252.625 270.711 l 252.625 270.305 l 251.266 270.305 l 251.266 280.305 l
233.098 274.367 m f
238.727 275.617 m 238.727 273.992 239.539 273.57 240.07 273.57 c 240.164
273.57 240.789 273.586 241.148 273.945 c 240.742 273.977 240.68 274.273
240.68 274.398 c 240.68 274.664 240.852 274.867 241.133 274.867 c 241.398
274.867 241.602 274.695 241.602 274.398 c 241.602 273.711 240.836 273.32
240.07 273.32 c 238.82 273.32 237.898 274.398 237.898 275.648 c 237.898
276.93 238.883 277.914 240.039 277.914 c 241.383 277.914 241.711 276.711
241.711 276.617 c 241.711 276.508 241.602 276.508 241.57 276.508 c 241.492
276.508 241.461 276.555 241.445 276.617 c 241.148 277.539 240.508 277.664
240.133 277.664 c 239.602 277.664 238.727 277.242 238.727 275.617 c h
238.727 275.617 m f
246.152 274.445 m 246.402 273.82 246.918 273.805 247.074 273.805 c 247.074
273.492 l 246.84 273.508 246.559 273.523 246.324 273.523 c 246.152 273.523
245.684 273.508 245.449 273.492 c 245.449 273.805 l 245.762 273.82 245.934
273.992 245.934 274.242 c 245.934 274.336 245.918 274.352 245.871 274.477
c 244.855 276.93 l 243.746 274.242 l 243.699 274.148 243.684 274.102 243.684
274.07 c 243.684 273.805 244.059 273.805 244.246 273.805 c 244.246 273.492
l 243.98 273.508 243.324 273.523 243.152 273.523 c 242.887 273.523 242.48
273.508 242.184 273.492 c 242.184 273.805 l 242.668 273.805 242.855 273.805
242.996 274.148 c 244.496 277.805 l 244.449 277.93 244.309 278.258 244.246
278.398 c 244.027 278.945 243.746 279.633 243.105 279.633 c 243.059 279.633
242.824 279.633 242.637 279.461 c 242.949 279.414 243.027 279.195 243.027
279.039 c 243.027 278.773 242.84 278.617 242.605 278.617 c 242.402 278.617
242.184 278.742 242.184 279.039 c 242.184 279.492 242.605 279.852 243.105
279.852 c 243.73 279.852 244.152 279.289 244.387 278.711 c h
246.152 274.445 m f
Q q
250.738 269.863 17 10.93 re W n
q
250 269 18 12 re W n
[ 1 0 0 1 0 0 ] concat
q
0.129412 0.117647 0.117647 rg
253.035 280.305 m 253.035 279.898 l 252.066 279.898 l 252.066 270.711 l
253.035 270.711 l 253.035 270.305 l 251.676 270.305 l 251.676 280.305 l
h
252.625 280.305 m f
258.973 271.758 m 258.973 271.398 259.004 271.289 259.77 271.289 c 260.004
271.289 l 260.004 270.977 l 259.66 271.008 258.91 271.008 258.535 271.008
c 258.16 271.008 257.41 271.008 257.051 270.977 c 257.051 271.289 l 257.301
271.289 l 258.066 271.289 258.082 271.398 258.082 271.758 c 258.082 274.102
l 255.098 274.102 l 255.098 271.758 l 255.098 271.398 255.113 271.289 255.895
271.289 c 256.129 271.289 l 256.129 270.977 l 255.785 271.008 255.035 271.008
254.66 271.008 c 254.285 271.008 253.535 271.008 253.176 270.977 c 253.176
271.289 l 253.41 271.289 l 254.191 271.289 254.207 271.398 254.207 271.758
c 254.207 277.023 l 254.207 277.383 254.191 277.492 253.41 277.492 c 253.176
277.492 l 253.176 277.805 l 253.535 277.773 254.27 277.773 254.645 277.773
c 255.035 277.773 255.785 277.773 256.129 277.805 c 256.129 277.492 l 255.895
277.492 l 255.113 277.492 255.098 277.383 255.098 277.023 c 255.098 274.398
l 258.082 274.398 l 258.082 277.023 l 258.082 277.383 258.066 277.492 257.301
277.492 c 257.051 277.492 l 257.051 277.805 l 257.41 277.773 258.145 277.773
258.535 277.773 c 258.91 277.773 259.66 277.773 260.004 277.805 c 260.004
277.492 l 259.77 277.492 l 259.004 277.492 258.973 277.383 258.973 277.023
253.035 280.305 m f
259.383 271.758 m 259.383 271.398 259.414 271.289 260.18 271.289 c 260.414
271.289 l 260.414 270.977 l 260.07 271.008 259.32 271.008 258.945 271.008
c 258.57 271.008 257.82 271.008 257.461 270.977 c 257.461 271.289 l 257.711
271.289 l 258.477 271.289 258.492 271.398 258.492 271.758 c 258.492 274.102
l 255.508 274.102 l 255.508 271.758 l 255.508 271.398 255.523 271.289 256.305
271.289 c 256.539 271.289 l 256.539 270.977 l 256.195 271.008 255.445 271.008
255.07 271.008 c 254.695 271.008 253.945 271.008 253.586 270.977 c 253.586
271.289 l 253.82 271.289 l 254.602 271.289 254.617 271.398 254.617 271.758
c 254.617 277.023 l 254.617 277.383 254.602 277.492 253.82 277.492 c 253.586
277.492 l 253.586 277.805 l 253.945 277.773 254.68 277.773 255.055 277.773
c 255.445 277.773 256.195 277.773 256.539 277.805 c 256.539 277.492 l 256.305
277.492 l 255.523 277.492 255.508 277.383 255.508 277.023 c 255.508 274.398
l 258.492 274.398 l 258.492 277.023 l 258.492 277.383 258.477 277.492 257.711
277.492 c 257.461 277.492 l 257.461 277.805 l 257.82 277.773 258.555 277.773
258.945 277.773 c 259.32 277.773 260.07 277.773 260.414 277.805 c 260.414
277.492 l 260.18 277.492 l 259.414 277.492 259.383 277.383 259.383 277.023
c h
258.973 271.758 m f
264.254 273.789 m 264.332 273.68 264.332 273.664 264.332 273.617 c 264.332
273.492 264.254 273.492 264.082 273.492 c 260.879 273.492 l 260.77 275.102
l 261.02 275.102 l 261.082 274.086 261.27 273.711 262.363 273.711 c 263.504
273.711 l 260.723 277.492 l 260.629 277.602 260.629 277.617 260.629 277.664
c 260.629 277.805 260.691 277.805 260.895 277.805 c 264.191 277.805 l 264.363
275.93 l 264.113 275.93 l 264.02 277.117 263.801 277.555 262.645 277.555
c 261.473 277.555 l h
264.254 273.789 m f
266.379 270.305 m 265.004 270.305 l 265.004 270.711 l 265.973 270.711 l
265.973 279.898 l 265.004 279.898 l 265.004 280.305 l 266.379 280.305 l
259.383 271.758 m f
264.664 273.789 m 264.742 273.68 264.742 273.664 264.742 273.617 c 264.742
273.492 264.664 273.492 264.492 273.492 c 261.289 273.492 l 261.18 275.102
l 261.43 275.102 l 261.492 274.086 261.68 273.711 262.773 273.711 c 263.914
273.711 l 261.133 277.492 l 261.039 277.602 261.039 277.617 261.039 277.664
c 261.039 277.805 261.102 277.805 261.305 277.805 c 264.602 277.805 l 264.773
275.93 l 264.523 275.93 l 264.43 277.117 264.211 277.555 263.055 277.555
c 261.883 277.555 l h
264.664 273.789 m f
266.789 270.305 m 265.414 270.305 l 265.414 270.711 l 266.383 270.711 l
266.383 279.898 l 265.414 279.898 l 265.414 280.305 l 266.789 280.305 l
h
266.379 270.305 m f
266.789 270.305 m f
Q
Q
Q q
0.129412 0.117647 0.117647 rg
36.895 4.582 m 39.191 5.688 l 36.895 0.141 l 34.594 5.688 l h
36.895 4.582 m f
q 1 0 0 1 0 0 cm
36.895 245.41 m 36.895 4.582 l S Q
q 1 0 0 1 0 0 cm
36.895 245.41 m 40.293 245.41 l S Q
0.566929 w
0 J
0 j
[] 0.0 d
10 M q 1 0 0 -1 0 0 cm
36.895 -245.41 m 36.895 -4.582 l S Q
q 1 0 0 -1 0 0 cm
36.895 -245.41 m 40.293 -245.41 l S Q
28.004 245.691 m 28.004 244.895 27.957 244.098 27.613 243.348 c 27.145
242.395 26.332 242.238 25.91 242.238 c 25.316 242.238 24.582 242.488 24.176
243.426 c 23.848 244.113 23.801 244.895 23.801 245.691 c 23.801 246.441
@@ -576,48 +644,127 @@ q 1 0 0 1 0 0 cm
c 27.176 246.332 27.176 247.004 27.066 247.645 c 26.926 248.598 26.348
248.895 25.895 248.895 c h
25.895 248.895 m f
q 1 0 0 1 0 0 cm
36.895 189.668 m 40.293 189.668 l S Q
q 1 0 0 1 0 0 cm
36.895 133.922 m 40.293 133.922 l S Q
q 1 0 0 1 0 0 cm
36.895 78.18 m 40.293 78.18 l S Q
q 1 0 0 1 0 0 cm
36.895 22.438 m 40.293 22.438 l S Q
q 1 0 0 1 0 0 cm
36.895 234.258 m 39.305 234.258 l S Q
q 1 0 0 1 0 0 cm
36.895 223.109 m 39.305 223.109 l S Q
q 1 0 0 1 0 0 cm
36.895 211.961 m 39.305 211.961 l S Q
q 1 0 0 1 0 0 cm
36.895 200.82 m 39.305 200.82 l S Q
q 1 0 0 1 0 0 cm
36.895 178.52 m 39.305 178.52 l S Q
q 1 0 0 1 0 0 cm
36.895 167.371 m 39.305 167.371 l S Q
q 1 0 0 1 0 0 cm
36.895 156.219 m 39.305 156.219 l S Q
q 1 0 0 1 0 0 cm
36.895 145.07 m 39.305 145.07 l S Q
q 1 0 0 1 0 0 cm
36.895 122.781 m 39.305 122.781 l S Q
q 1 0 0 1 0 0 cm
36.895 111.629 m 39.305 111.629 l S Q
q 1 0 0 1 0 0 cm
36.895 100.48 m 39.305 100.48 l S Q
q 1 0 0 1 0 0 cm
36.895 89.332 m 39.305 89.332 l S Q
q 1 0 0 1 0 0 cm
36.895 67.031 m 39.305 67.031 l S Q
q 1 0 0 1 0 0 cm
36.895 55.891 m 39.305 55.891 l S Q
q 1 0 0 1 0 0 cm
36.895 44.738 m 39.305 44.738 l S Q
q 1 0 0 1 0 0 cm
36.895 33.59 m 39.305 33.59 l S Q
q 1 0 0 1 0 0 cm
36.895 11.289 m 39.305 11.289 l S Q
q 1 0 0 -1 0 0 cm
36.895 -189.668 m 40.293 -189.668 l S Q
20.254 189.953 m 20.254 189.156 20.207 188.359 19.863 187.609 c 19.395
186.656 18.582 186.5 18.16 186.5 c 17.566 186.5 16.832 186.75 16.426 187.688
c 16.098 188.375 16.051 189.156 16.051 189.953 c 16.051 190.703 16.098
191.609 16.504 192.359 c 16.926 193.172 17.66 193.375 18.145 193.375 c 18.691
193.375 19.457 193.172 19.895 192.219 c 20.207 191.531 20.254 190.75 20.254
189.953 c h
18.145 193.156 m 17.754 193.156 17.176 192.906 16.988 191.953 c 16.879
191.344 16.879 190.422 16.879 189.844 c 16.879 189.203 16.879 188.531 16.957
188 c 17.145 186.812 17.895 186.719 18.145 186.719 c 18.473 186.719 19.145
186.891 19.332 187.891 c 19.426 188.453 19.426 189.203 19.426 189.844 c
19.426 190.594 19.426 191.266 19.316 191.906 c 19.176 192.859 18.598 193.156
18.145 193.156 c h
18.145 193.156 m f
22.582 192.625 m 22.582 192.344 22.348 192.094 22.051 192.094 c 21.754
192.094 21.52 192.344 21.52 192.625 c 21.52 192.922 21.754 193.156 22.051
193.156 c 22.348 193.156 22.582 192.922 22.582 192.625 c h
22.582 192.625 m f
27.914 191.141 m 27.914 189.953 27.102 188.953 26.023 188.953 c 25.539
188.953 25.117 189.109 24.742 189.469 c 24.742 187.516 l 24.945 187.578
25.273 187.641 25.602 187.641 c 26.836 187.641 27.523 186.734 27.523 186.609
c 27.523 186.547 27.492 186.5 27.43 186.5 c 27.414 186.5 27.398 186.5 27.352
186.531 c 27.148 186.609 26.664 186.812 25.992 186.812 c 25.586 186.812
25.133 186.75 24.664 186.531 c 24.586 186.5 24.555 186.5 24.539 186.5 c
24.445 186.5 24.445 186.594 24.445 186.75 c 24.445 189.703 l 24.445 189.891
24.445 189.969 24.586 189.969 c 24.648 189.969 24.664 189.938 24.711 189.875
c 24.82 189.719 25.195 189.172 25.992 189.172 c 26.523 189.172 26.773 189.641
26.852 189.812 c 27.008 190.188 27.023 190.578 27.023 191.078 c 27.023
191.422 27.023 192.031 26.789 192.453 c 26.555 192.844 26.18 193.094 25.727
193.094 c 24.992 193.094 24.414 192.562 24.242 191.969 c 24.273 191.984
24.305 192 24.414 192 c 24.742 192 24.914 191.75 24.914 191.5 c 24.914
191.266 24.742 191.016 24.414 191.016 c 24.273 191.016 23.93 191.094 23.93
191.547 c 23.93 192.406 24.617 193.375 25.742 193.375 c 26.898 193.375
27.914 192.422 27.914 191.141 c h
27.914 191.141 m f
q 1 0 0 -1 0 0 cm
36.895 -133.922 m 40.293 -133.922 l S Q
26.348 131 m 26.348 130.766 26.348 130.75 26.113 130.75 c 25.504 131.391
24.613 131.391 24.301 131.391 c 24.301 131.703 l 24.504 131.703 25.098
131.703 25.613 131.438 c 25.613 136.609 l 25.613 136.969 25.582 137.094
24.676 137.094 c 24.363 137.094 l 24.363 137.406 l 24.707 137.375 25.582
137.375 25.973 137.375 c 26.379 137.375 27.254 137.375 27.598 137.406 c
27.598 137.094 l 27.285 137.094 l 26.379 137.094 26.348 136.984 26.348
136.609 c h
26.348 131 m f
q 1 0 0 -1 0 0 cm
36.895 -78.18 m 40.293 -78.18 l S Q
18.598 75.258 m 18.598 75.023 18.598 75.008 18.363 75.008 c 17.754 75.648
16.863 75.648 16.551 75.648 c 16.551 75.961 l 16.754 75.961 17.348 75.961
17.863 75.695 c 17.863 80.867 l 17.863 81.227 17.832 81.352 16.926 81.352
c 16.613 81.352 l 16.613 81.664 l 16.957 81.633 17.832 81.633 18.223 81.633
c 18.629 81.633 19.504 81.633 19.848 81.664 c 19.848 81.352 l 19.535 81.352
l 18.629 81.352 18.598 81.242 18.598 80.867 c h
18.598 75.258 m f
22.582 81.133 m 22.582 80.852 22.348 80.602 22.051 80.602 c 21.754 80.602
21.52 80.852 21.52 81.133 c 21.52 81.43 21.754 81.664 22.051 81.664 c 22.348
81.664 22.582 81.43 22.582 81.133 c h
22.582 81.133 m f
27.914 79.648 m 27.914 78.461 27.102 77.461 26.023 77.461 c 25.539 77.461
25.117 77.617 24.742 77.977 c 24.742 76.023 l 24.945 76.086 25.273 76.148
25.602 76.148 c 26.836 76.148 27.523 75.242 27.523 75.117 c 27.523 75.055
27.492 75.008 27.43 75.008 c 27.414 75.008 27.398 75.008 27.352 75.039
c 27.148 75.117 26.664 75.32 25.992 75.32 c 25.586 75.32 25.133 75.258 24.664
75.039 c 24.586 75.008 24.555 75.008 24.539 75.008 c 24.445 75.008 24.445
75.102 24.445 75.258 c 24.445 78.211 l 24.445 78.398 24.445 78.477 24.586
78.477 c 24.648 78.477 24.664 78.445 24.711 78.383 c 24.82 78.227 25.195
77.68 25.992 77.68 c 26.523 77.68 26.773 78.148 26.852 78.32 c 27.008 78.695
27.023 79.086 27.023 79.586 c 27.023 79.93 27.023 80.539 26.789 80.961
c 26.555 81.352 26.18 81.602 25.727 81.602 c 24.992 81.602 24.414 81.07
24.242 80.477 c 24.273 80.492 24.305 80.508 24.414 80.508 c 24.742 80.508
24.914 80.258 24.914 80.008 c 24.914 79.773 24.742 79.523 24.414 79.523
c 24.273 79.523 23.93 79.602 23.93 80.055 c 23.93 80.914 24.617 81.883
25.742 81.883 c 26.898 81.883 27.914 80.93 27.914 79.648 c h
27.914 79.648 m f
q 1 0 0 -1 0 0 cm
36.895 -22.438 m 40.293 -22.438 l S Q
24.676 25.16 m 25.738 24.129 l 27.301 22.738 27.895 22.207 27.895 21.207
c 27.895 20.066 27.004 19.27 25.785 19.27 c 24.645 19.27 23.91 20.191 23.91
21.082 c 23.91 21.629 24.41 21.629 24.441 21.629 c 24.613 21.629 24.957
21.52 24.957 21.113 c 24.957 20.848 24.785 20.582 24.426 20.582 c 24.348
20.582 24.332 20.582 24.301 20.598 c 24.535 19.941 25.066 19.582 25.645
19.582 c 26.566 19.582 26.988 20.379 26.988 21.207 c 26.988 22.004 26.488
22.801 25.941 23.41 c 24.02 25.551 l 23.91 25.66 23.91 25.691 23.91 25.926
c 27.613 25.926 l 27.895 24.191 l 27.645 24.191 l 27.598 24.488 27.535
24.926 27.426 25.082 c 27.363 25.16 26.707 25.16 26.473 25.16 c h
24.676 25.16 m f
q 1 0 0 -1 0 0 cm
36.895 -234.258 m 39.305 -234.258 l S Q
q 1 0 0 -1 0 0 cm
36.895 -223.109 m 39.305 -223.109 l S Q
q 1 0 0 -1 0 0 cm
36.895 -211.961 m 39.305 -211.961 l S Q
q 1 0 0 -1 0 0 cm
36.895 -200.82 m 39.305 -200.82 l S Q
q 1 0 0 -1 0 0 cm
36.895 -178.52 m 39.305 -178.52 l S Q
q 1 0 0 -1 0 0 cm
36.895 -167.371 m 39.305 -167.371 l S Q
q 1 0 0 -1 0 0 cm
36.895 -156.219 m 39.305 -156.219 l S Q
q 1 0 0 -1 0 0 cm
36.895 -145.07 m 39.305 -145.07 l S Q
q 1 0 0 -1 0 0 cm
36.895 -122.781 m 39.305 -122.781 l S Q
q 1 0 0 -1 0 0 cm
36.895 -111.629 m 39.305 -111.629 l S Q
q 1 0 0 -1 0 0 cm
36.895 -100.48 m 39.305 -100.48 l S Q
q 1 0 0 -1 0 0 cm
36.895 -89.332 m 39.305 -89.332 l S Q
q 1 0 0 -1 0 0 cm
36.895 -67.031 m 39.305 -67.031 l S Q
q 1 0 0 -1 0 0 cm
36.895 -55.891 m 39.305 -55.891 l S Q
q 1 0 0 -1 0 0 cm
36.895 -44.738 m 39.305 -44.738 l S Q
q 1 0 0 -1 0 0 cm
36.895 -33.59 m 39.305 -33.59 l S Q
q 1 0 0 -1 0 0 cm
36.895 -11.289 m 39.305 -11.289 l S Q
0.203 145.797 m 0.062 145.844 0 145.875 0 146.031 c 0 146.188 0.062 146.219
0.203 146.266 c 6.172 148.344 l 6.688 148.516 6.844 148.922 6.844 149.469
c 7.156 149.469 l 7.141 149.234 7.125 148.797 7.125 148.438 c 7.125 148.125
@@ -740,8 +887,8 @@ c 5.844 129.465 5.906 129.496 5.984 129.512 c 7.016 129.855 7.016 130.762
0.921569 0.0980392 0.137255 rg
2.83465 w
[ 5.67 5.67] 0 d
q 1 0 0 1 0 0 cm
47.664 13.48 m 62.973 13.48 l S Q
q 1 0 0 -1 0 0 cm
47.664 -13.48 m 62.973 -13.48 l S Q
53.074 11.23 4.5 4.5 re f
0.129412 0.117647 0.117647 rg
71.977 12.488 m 71.695 12.488 71.508 12.707 71.508 12.926 c 71.508 13.066
@@ -809,8 +956,8 @@ c h
1.70079 w
1 J
[ 0 3.4] 0 d
q 1 0 0 1 0 0 cm
47.664 28.969 m 62.973 28.969 l S Q
q 1 0 0 -1 0 0 cm
47.664 -28.969 m 62.973 -28.969 l S Q
57.797 28.969 m 57.797 27.602 56.691 26.496 55.324 26.496 c 53.957 26.496
52.848 27.602 52.848 28.969 c 52.848 30.336 53.957 31.445 55.324 31.445
c 56.691 31.445 57.797 30.336 57.797 28.969 c f
@@ -880,8 +1027,8 @@ c 86.645 25.949 86.926 25.73 86.926 25.355 c 86.926 24.902 86.473 24.668
0.180392 0.188235 0.568627 rg
0.566929 w
[ 0 1.13 1.13 1.13] 0 d
q 1 0 0 1 0 0 cm
47.664 44.461 m 62.973 44.461 l S Q
q 1 0 0 -1 0 0 cm
47.664 -44.461 m 62.973 -44.461 l S Q
58.871 46.711 m 55.324 40.562 l 51.773 46.711 l f
0.129412 0.117647 0.117647 rg
71.977 43.473 m 71.695 43.473 71.508 43.691 71.508 43.91 c 71.508 44.051

+ 1
- 1
valve-scls1.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:57 2019
%%CreationDate: Wed Oct 16 09:15:21 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 3

+ 1
- 1
weldolet-scls.eps Visa fil

@@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Thu Aug 1 06:44:57 2019
%%CreationDate: Wed Oct 16 09:15:21 2019
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 3

Laddar…
Avbryt
Spara