Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

3074 lines
136KB

  1. \PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere
  2. \PassOptionsToPackage{hyphens}{url}
  3. \PassOptionsToPackage{usenames,dvipsnames,table}{color}
  4. %
  5. \documentclass[10pt,british,twoside]{book}
  6. \usepackage{lmodern}
  7. \usepackage{amssymb,amsmath}
  8. \usepackage{ifxetex,ifluatex}
  9. \usepackage{fixltx2e} % provides \textsubscript
  10. \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  11. \usepackage[T1]{fontenc}
  12. \usepackage[utf8]{inputenc}
  13. \else % if luatex or xelatex
  14. \ifxetex
  15. \usepackage{mathspec}
  16. \else
  17. \usepackage{unicode-math}
  18. \fi
  19. \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
  20. \setmainfont{LinLibertineO}
  21. \setsansfont{Carlito}
  22. \setmonofont[Mapping=tex-ansi]{DejaVuSansMono}
  23. \fi
  24. % use upquote if available, for straight quotes in verbatim environments
  25. \IfFileExists{upquote.sty}{\usepackage{upquote}}{}
  26. % use microtype if available
  27. \IfFileExists{microtype.sty}{%
  28. \usepackage[]{microtype}
  29. \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
  30. }{}
  31. % \IfFileExists{parskip.sty}{%
  32. % \usepackage{parskip}
  33. % }{% else
  34. % \setlength{\parindent}{0pt}
  35. % \setlength{\parskip}{6pt plus 2pt minus 1pt}
  36. % }
  37. \usepackage{hyperref}
  38. \hypersetup{
  39. pdftitle={The NAFEMS Benchmark Challenge Volume~1},
  40. pdfauthor={Angus Ramsay},
  41. colorlinks=true,
  42. linkcolor=Maroon,
  43. citecolor=Blue,
  44. urlcolor=Blue,
  45. breaklinks=true}
  46. \urlstyle{tt}
  47. \usepackage[a5paper, left=15mm, right=15mm, bottom=25mm, top=20mm, foot=15mm,
  48. head=15mm]{geometry}
  49. \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  50. \usepackage[shorthands=off,main=british]{babel}
  51. \else
  52. % load polyglossia as late as possible as it *could* call bidi if RTL lang (e.g. Hebrew or Arabic)
  53. \usepackage{polyglossia}
  54. \setmainlanguage[variant=british]{english}
  55. \fi
  56. \usepackage[sorting=none]{biblatex}
  57. \addbibresource{references.bib}
  58. \usepackage{listings}
  59. \usepackage[dvipsnames,table]{xcolor}
  60. \input{syntax.tex}
  61. \newcommand{\passthrough}[1]{\texttt{#1}}
  62. \usepackage{longtable,booktabs}
  63. % Fix footnotes in tables (requires footnote package)
  64. \IfFileExists{footnote.sty}{\usepackage{footnote}\makesavenoteenv{longtable}}{}
  65. \usepackage{graphicx,grffile}
  66. \makeatletter
  67. \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
  68. \def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
  69. \makeatother
  70. % Scale images if necessary, so that they will not overflow the page
  71. % margins by default, and it is still possible to overwrite the defaults
  72. % using explicit options in \includegraphics[width, height, ...]{}
  73. \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
  74. % headers y footers a medida
  75. \usepackage{lastpage}
  76. \usepackage{fancyhdr}
  77. \pagestyle{fancy}
  78. \fancyhf{} % clear all header and footer fields
  79. \renewcommand{\headrulewidth}{0.0pt}
  80. \fancyhead[RO]{\slshape \rightmark}
  81. \fancyhead[LE]{\slshape \leftmark}
  82. \fancyfoot[LE,RO]{\scriptsize{ 16/Oct/19 --- \texttt{2872090+\(\epsilon\)} }}
  83. \fancyfoot[C]{\thepage}
  84. \setlength{\emergencystretch}{3em} % prevent overfull lines
  85. \providecommand{\tightlist}{%
  86. \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
  87. \setcounter{secnumdepth}{5}
  88. % Redefines (sub)paragraphs to behave more like sections
  89. \ifx\paragraph\undefined\else
  90. \let\oldparagraph\paragraph
  91. \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
  92. \fi
  93. \ifx\subparagraph\undefined\else
  94. \let\oldsubparagraph\subparagraph
  95. \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
  96. \fi
  97. \usepackage{subfig}
  98. % SIunits
  99. \usepackage{siunitx}
  100. % set default figure placement to htbp
  101. \makeatletter
  102. \def\fps@figure{htbp}
  103. \pretocmd\env@cases{\def\@rowc@lors{}}{}{}
  104. \pretocmd\start@align{\def\@rowc@lors{}}{}{}
  105. \makeatother
  106. % fuente para los captions de figuras
  107. \usepackage{caption}
  108. \renewcommand{\captionfont}{\sf\small}
  109. % \renewcommand{\captionlabelfont}{\bf\sf}
  110. \makeatletter
  111. \@ifpackageloaded{subfig}{}{\usepackage{subfig}}
  112. \@ifpackageloaded{caption}{}{\usepackage{caption}}
  113. \captionsetup[subfloat]{margin=0.5em}
  114. \AtBeginDocument{%
  115. \renewcommand*\figurename{Figure}
  116. \renewcommand*\tablename{Table}
  117. }
  118. \AtBeginDocument{%
  119. \renewcommand*\listfigurename{List of Figures}
  120. \renewcommand*\listtablename{List of Tables}
  121. }
  122. \newcommand*\listoflistings\lstlistoflistings
  123. \AtBeginDocument{%
  124. \renewcommand*{\lstlistlistingname}{List of Listings}
  125. }
  126. \makeatother
  127. \title{The NAFEMS Benchmark Challenge Volume~1}
  128. \date{16/Oct/19}
  129. \author{Angus Ramsay}
  130. \include{syntax}
  131. \renewcommand\vec[1]{\mathbf{#1}}
  132. \begin{document}
  133. % \thispagestyle{empty}
  134. % \thispagestyle{plain}
  135. \maketitle
  136. {
  137. \hypersetup{linkcolor=black}
  138. \setcounter{tocdepth}{2}
  139. \tableofcontents
  140. \newpage
  141. }
  142. % vectors done right
  143. \renewcommand{\vec}[1]{\ensuremath\mathbf{#1}}
  144. % \setcounter{topnumber}{2}
  145. % \setcounter{bottomnumber}{2}
  146. % \setcounter{totalnumber}{4}
  147. % \renewcommand{\topfraction}{0.80}
  148. % \renewcommand{\bottomfraction}{0.80}
  149. % \renewcommand{\textfraction}{0.20}
  150. \renewcommand{\floatpagefraction}{0.65}
  151. \hypertarget{introduction}{%
  152. \chapter{Introduction}\label{introduction}}
  153. \hypertarget{cs1-design-of-a-bandsaw-pulley}{%
  154. \chapter{CS1: Design of a Bandsaw
  155. Pulley}\label{cs1-design-of-a-bandsaw-pulley}}
  156. \hypertarget{cs2-torsion-of-curved-beams}{%
  157. \chapter{CS2: Torsion of Curved
  158. Beams}\label{cs2-torsion-of-curved-beams}}
  159. \hypertarget{cs3-design-of-steel-silos}{%
  160. \chapter{CS3: Design of Steel Silos}\label{cs3-design-of-steel-silos}}
  161. \hypertarget{cs4-fatigue-assessment-in-nuclear-piping}{%
  162. \chapter{CS4: Fatigue Assessment in Nuclear
  163. Piping}\label{cs4-fatigue-assessment-in-nuclear-piping}}
  164. \hypertarget{from-college-theory-to-an-actual-engineering-problem}{%
  165. \section{From college theory to an actual engineering
  166. problem}\label{from-college-theory-to-an-actual-engineering-problem}}
  167. First of all, please take this text as a written chat between you an me,
  168. i.e.~an average engineer that has already taken the journey from college
  169. to performing actual engineering works using finite element analysis and
  170. has something to say about it. Picture yourself in a coffee bar, talking
  171. and discussing concepts and ideas with me. Maybe needing to go to a
  172. blackboard (or notepad?). Even using a tablet to illustrate some
  173. three-dimensional results. But always as a chat between colleagues.
  174. Please also note that I am not a mechanical engineer, although I shared
  175. many undergraduate courses with some of them. I am a nuclear engineer
  176. with a strong background on mathematics and computer programming. I went
  177. to college between 2002 and 2008. Probably a lot of things have changed
  178. since then---at least that is what these ``millennial'' guys and girls
  179. seem to be boasting about---but chances are we all studied solid
  180. mechanics and heat transfer with a teacher using a piece of chalk on a
  181. blackboard while we as students wrote down notes with pencils on paper
  182. sheets. And there is really not much that one can do with pencil and
  183. paper regarding mechanical analysis. Any actual case worth the time of
  184. an engineer need to be more complex than an ideal canonical case with
  185. analytical solution.
  186. Whether you are a student or a seasoned engineer with many years of
  187. experience, you might recall from first year physics courses the
  188. introduction of the \href{https://en.wikipedia.org/wiki/Pendulum}{simple
  189. pendulum} as a case study~(fig.~\ref{fig:simple}). You learned that the
  190. period does not depend on the hanging mass because the weight and the
  191. inertia exactly cancelled each other. Also, that
  192. \href{https://en.wikipedia.org/wiki/Galileo_Galilei}{Galileo} said (and
  193. \href{https://www.seamplex.com/wasora/realbook/real-012-mechanics.html}{Newton
  194. proved}) that for small oscillations the period does not even depend on
  195. the amplitude. Someone showed you why it worked this way: because
  196. if~\(\sin \theta \approx \theta\) then the motion equations converge to
  197. an \href{https://en.wikipedia.org/wiki/Harmonic_oscillator}{harmonic
  198. oscillator}. It might have been a difficult subject for you back in
  199. those days when you were learning physics and calculus at the same time.
  200. You might have later studied the
  201. \href{https://en.wikipedia.org/wiki/Lagrangian_mechanics}{Lagrangian}
  202. and even the
  203. \href{https://en.wikipedia.org/wiki/Hamiltonian_mechanics}{Hamiltonian}
  204. formulations, added a
  205. \href{https://en.wikipedia.org/wiki/Parametric_oscillator}{parametric
  206. excitation} and analysed the
  207. \href{https://www.seamplex.com/wasora/realbook/real-017-double-pendulum.html}{chaotic
  208. double pendulum}. But it was probably after college, say when you took
  209. your first son to a swing on a windy day (fig.~\ref{fig:hamaca}), that
  210. you were faced with a real pendulum worth your full attention. Yes, this
  211. is my personal story but it could have easily been yours as well. My
  212. point is that the very same distance between what I imagined studying a
  213. pendulum was and what I saw that day at the swing (namely that the
  214. period \emph{does} depend on the hanging mass) is the same distance
  215. between the mechanical problems studied in college and the actual cases
  216. encountered during a professional engineer's lifetime
  217. (fig.~\ref{fig:pipes}). In this regard, I am referring only to technical
  218. issues. The part of dealing with clients, colleagues, bosses, etc. which
  219. is definitely not taught in engineering schools (you can get a heads up
  220. in business schools, but again it would be a theoretical pendulum) is
  221. way beyond the scope of both this article and my own capacities.
  222. \begin{figure}
  223. \centering
  224. \subfloat[Simple
  225. pendulum]{\includegraphics[width=0.35\textwidth,height=\textheight]{simple.svg}\label{fig:simple}}~
  226. \subfloat[Real
  227. pendulum]{\includegraphics[width=0.6\textwidth,height=\textheight]{hamaca.jpg}\label{fig:hamaca}}
  228. \caption{A simple pendulum from college physics courses and a real-life
  229. pendulum. Hint: the swing's period \emph{does} depend on the hanging
  230. mass. See the \href{hamaca.webm}{actual video}}
  231. \label{fig:pendulum}
  232. \end{figure}
  233. \begin{figure}
  234. \centering
  235. \subfloat[College
  236. pipe]{\includegraphics[width=0.4\textwidth,height=\textheight]{infinite-pipe.svg}\label{fig:infinite-pipe}}
  237. \subfloat[Real-life
  238. pipe]{\includegraphics[width=0.58\textwidth,height=\textheight]{isometric.svg}\label{fig:isometric}}
  239. \caption{An infinitely-long pressurised thick pipe as taught in college
  240. and an isometric drawing of a section of a real-life piping system}
  241. \label{fig:pipes}
  242. \end{figure}
  243. Like the pendulums above, we will be swinging back and forth between a
  244. case study about fatigue assessment of piping systems in a nuclear power
  245. plant and more generic and even romantic topics related to finite
  246. elements and computational mechanics. These latter regressions will not
  247. remain just as abstract theoretical ideas. Not only will they be
  248. directly applicable to the development of the main case, but they will
  249. also apply to a great deal of other engineering problems tackled with
  250. the finite element method (and its cousins,
  251. sec.~\ref{sec:formulations}).
  252. \medskip
  253. Finite elements are like magic to me. I mean, I can follow the whole
  254. derivation of the equations, from the strong, weak and variational
  255. formulations of the equilibrium equations for the mechanical problem (or
  256. the energy conservation for heat transfer) down to the
  257. \href{https://en.wikipedia.org/wiki/Multigrid_method}{algebraic
  258. multigrid}
  259. \href{https://en.wikipedia.org/wiki/Preconditioner}{preconditioner} for
  260. the inversion of the
  261. \href{https://en.wikipedia.org/wiki/Stiffness_matrix}{stiffness matrix}
  262. passing through
  263. \href{https://en.wikipedia.org/wiki/Sobolev_space}{Sobolev spaces} and
  264. the \href{https://en.wikipedia.org/wiki/Mesh_generation}{grid
  265. generation}. Then I can sit down and program all these steps into a
  266. computer, including the
  267. \href{https://en.wikipedia.org/wiki/Finite_element_method_in_structural_mechanics\#Interpolation_or_shape_functions}{shape
  268. functions} and its derivatives, the assembly of the discretised
  269. stiffness matrix (sec.~\ref{sec:building}), the numerical solution of
  270. the system of equations (sec.~\ref{sec:solving}) and the computation of
  271. the gradient of the solution (sec.~\ref{sec:stress-computation}). Yet,
  272. the fact that all these a-priori unconnected steps give rise to pretty
  273. pictures that resemble reality is still astonishing to me.
  274. Again, take all this information as coming from a fellow that has
  275. already taken such a journey from college's pencil and paper to real
  276. engineering cases involving complex numerical calculations. And
  277. developing, in the meantime, both an actual working finite-element
  278. \href{https://www.seamplex.com/fino}{back-end} and
  279. \href{https://www.caeplex.com}{front-end} from scratch.\footnote{The
  280. dean of the engineering school I attended used to say ``It is not the
  281. same to read than to write manuals, and we should aim at writing
  282. them.''}
  283. \hypertarget{tips-and-tricks}{%
  284. \subsection{Tips and tricks}\label{tips-and-tricks}}
  285. There are some useful tricks that come handy when trying to solve a
  286. mechanical problem. Throughout this text, I will try to tell you some of
  287. them.
  288. One of the most important ones to use your \emph{imagination}. You will
  289. need a lot of imagination to ``see'' what it is actually going on when
  290. analysing an engineering problem. This skill comes from my background in
  291. nuclear engineering where I had no choice but to imagine a
  292. \href{https://en.wikipedia.org/wiki/Electron\%E2\%80\%93positron_annihilation}{positron-electron
  293. annihilation} or an
  294. \href{https://en.wikipedia.org/wiki/Spontaneous_fission}{spontaneous
  295. fission}. But in mechanical engineering, it is likewise important to be
  296. able to imagine how the loads ``press'' one element with the other, how
  297. the material reacts depending on its properties, how the nodal
  298. displacements generate stresses (both normal and shear), how results
  299. converge, etc. And what these results actually mean besides the
  300. pretty-coloured figures.\footnote{A former boss once told me ``I need
  301. the CFD'' when I handed in some results. I replied that I did not do
  302. computational fluid-dynamics but computed the neutron flux kinetics
  303. within a nuclear reactor core. He joked ``I know, what I need are the
  304. \emph{Colors For Directors}, those pretty-coloured figures along with
  305. your actual results to convince the managers.''} This journey will
  306. definitely need your imagination. We will see equations, numbers, plots,
  307. schematics, CAD geometries, 3D~views, etc. Still, when the theory says
  308. ``thermal expansion produces normal stresses'' you have to picture in
  309. your head three little arrows pulling away from the same point in three
  310. directions, or whatever mental picture you have about what you
  311. understand thermally-induced stresses are. What comes to your mind when
  312. someone says that out of the nine elements of the
  313. \href{https://en.wikipedia.org/wiki/Cauchy_stress_tensor}{stress tensor}
  314. (sec.~\ref{sec:tensor}) there are only six that are independent?
  315. Whatever it is, try to practice that kind of graphical thoughts with
  316. every new concept. Nevertheless, there will be particular locations of
  317. the text where imagination will be most useful. I will bring the subject
  318. up.
  319. Another heads up is that we will be digging into some mathematics.
  320. Probably they would be be simple and you would deal with them very
  321. easily. But chances are you do not like equations. No problem! Just
  322. ignore them for now. Read the text skipping them, it should work as
  323. well. Łukasz Skotny says
  324. \href{https://enterfea.com/math-behind-fea/}{you do not need to know
  325. maths to perform finite-element analysis}. And he is right, in the sense
  326. that you do not need to know thermodynamics to drive a car. It is fine
  327. to ignore maths for now. But, eventually, a time will come in which it
  328. cannot (or should not) be avoided. If you want to go to space, you will
  329. definitely have to learn thermodynamics.
  330. So here comes another experience tip: do not fear equations. Even more,
  331. keep exercising. You have used
  332. \href{https://en.wikipedia.org/wiki/Difference_of_two_squares}{differences
  333. of squares} in high school, didn't you?. You know (or at least knew) how
  334. to \href{https://en.wikipedia.org/wiki/Integration_by_parts}{integrate
  335. by parts}. Do you remember what
  336. \href{https://en.wikipedia.org/wiki/Laplace_transform}{Laplace
  337. transforms} are used for? Once in a while, perform a division of
  338. polynomials using
  339. \href{https://en.wikipedia.org/wiki/Ruffini's_rule}{Ruffini's rule}. Or
  340. compute the second
  341. \href{https://en.wikipedia.org/wiki/Quotient_rule}{derivative of the
  342. quotient of two functions}. Whatever. It should be like doing crosswords
  343. on the newspaper. Grab those old physics college books and read the
  344. exercises at the end of each chapter. It will pay off later on.
  345. One final comment: throughout the text I will be referring to ``your
  346. favourite FEM program.'' I bet you do have one. Mine is
  347. \href{https://caeplex.com}{CAEplex} (it works on top of
  348. \href{https://www.seamplex.com/fino}{Fino}). We will be using it to
  349. perform some tests and play a little bit. And we will also use it to
  350. think about what it means to use a FEM program to generate results that
  351. will eventually end up in a written project with your signature. Keep
  352. that in mind.
  353. \hypertarget{sec:case}{%
  354. \section{Case study: reactors, pipes and fatigue}\label{sec:case}}
  355. Piping systems in sensitive industries like nuclear or oil \& gas should
  356. be designed and analysed following the recommendations of an appropriate
  357. set of codes and norms, such as the
  358. \href{https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code}{ASME~Boiler
  359. and Pressure Vessel Code}. This code of practice was born during the
  360. late~XIX century, before finite-element methods for solving partial
  361. differential equations were even developed. And much longer before they
  362. were available for the general engineering community. Therefore, much of
  363. the code assumes design and verification is not necessarily performed
  364. numerically but with paper and pencil (yes, like in college). However,
  365. it still provides genuine guidance in order to ensure pressurised
  366. systems behave safely and properly without needing to resort to
  367. computational tools. Combining finite-element analysis with the ASME
  368. code gives the cognisant engineer a unique combination of tools to
  369. tackle the problem of designing and/or verifying pressurised piping
  370. systems.
  371. In the years following
  372. \href{https://en.wikipedia.org/wiki/Enrico_Fermi}{Enrico Fermi}'s
  373. demonstration that a self-sustainable
  374. \href{https://en.wikipedia.org/wiki/Nuclear_fission}{fission reaction}
  375. chain was possible (actually, in fact, after WWII was over), people
  376. started to build plants in order to transform the energy stored within
  377. the atoms nuclei into usable electrical power. They quickly reached the
  378. conclusion that high-pressure heat exchangers and turbines were needed.
  379. So they started to follow codes of practise like the aforementioned
  380. ASME~B\&PVC. They also realised that some requirements did not fit the
  381. needs of the nuclear industry. But instead of writing a new code from
  382. scratch, they added a new chapter to the existing body of knowledge: the
  383. celebrated
  384. \href{https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code\#ASME_BPVC_Section_III_-_Rules_for_Construction_of_Nuclear_Facility_Components}{ASME
  385. Section~III}.
  386. After further years passed by, engineers (probably the same people that
  387. forked section~III) noticed that fatigue in nuclear power plants was not
  388. exactly the same as in other piping systems. There were some
  389. environmental factors directly associated to the power plant that were
  390. not taken into account by the regular ASME code. Again, instead of
  391. writing a new code from scratch, people decided to add correction
  392. factors to the previously-amended body of knowledge. This is how
  393. (sometimes) knowledge evolves, and it is this kind of complexities that
  394. engineers are faced with during their professional lives. We have to
  395. admit it, it would be a very difficult task to re-write everything from
  396. scratch every time something changes.
  397. Actually, this article does not focus on a single case study but on some
  398. general ideas regarding analysis of fatigue in piping systems in nuclear
  399. power plants. There is no single case study but a compendium of ideas
  400. obtained by studying many different systems which are directly related
  401. to the safety of a real nuclear reactor.
  402. \begin{figure}
  403. \hypertarget{fig:real-life}{%
  404. \centering
  405. \includegraphics[width=0.75\textwidth,height=\textheight]{real-piping.png}
  406. \caption{Three-dimensional CAD model for the piping system
  407. of~fig.~\ref{fig:isometric}}\label{fig:real-life}
  408. }
  409. \end{figure}
  410. \hypertarget{nuclear-reactors}{%
  411. \subsection{Nuclear reactors}\label{nuclear-reactors}}
  412. In each of the countries that have at least one nuclear power plant
  413. there exists a national regulatory body who is responsible for allowing
  414. the owner to operate the reactor. These operating licenses are
  415. time-limited, with a range that can vary from 25 to 60 years, depending
  416. on the design and technology of the reactor. Once expired, the owner
  417. might be entitled to an extension, which the regulatory authority can
  418. accept provided it can be shown that a certain (and very detailed) set
  419. of safety criteria are met. One particular example of requirements is
  420. that of fatigue in pipes, especially those that belong to systems that
  421. are directly related to the reactor safety.
  422. \hypertarget{pressurised-pipes}{%
  423. \subsection{Pressurised pipes}\label{pressurised-pipes}}
  424. How come that pipes are subject to fatigue? Well, on the one hand and
  425. without getting into many technical details, the most common nuclear
  426. reactor design uses liquid water as coolant and moderator. On the other
  427. hand, nuclear power plants cannot by-pass the thermodynamics of the
  428. \href{https://en.wikipedia.org/wiki/Carnot_cycle}{Carnot cycle}, and in
  429. order to maximise the efficiency of the conversion of the energy stored
  430. in the uranium nuclei into electricity we need to reach temperatures as
  431. high as possible. So, if we want to have liquid water in the core as hot
  432. as possible, we need to increase the pressure. The limiting temperature
  433. and pressure are given by the
  434. \href{https://en.wikipedia.org/wiki/Critical_point_(thermodynamics)}{critical
  435. point of water}, which is around 374ºC and 22~MPa. It is therefore
  436. expected to have temperatures and pressures near those values in many
  437. systems of the plant, especially in the primary circuit and those that
  438. directly interact with it, such as pressure and inventory control
  439. system, decay power removal system, feedwater supply system, emergency
  440. core-cooling system, etc.
  441. Nuclear power plants are not always working at 100\% of their maximum
  442. power capacity. They need to be maintained and refuelled, they may
  443. undergo operational (and some incidental) transients, they might operate
  444. at a lower power due to load following conditions, etc. These transient
  445. cases involve changes both in temperatures and in pressures that the
  446. pipes are subject to, which in turn give rise to changes in the stresses
  447. within the pipes. As the transients are postulated to occur cyclically
  448. during a number of times during the life-time of the plant (plus its
  449. extension period), mechanical fatigue in these piping systems may arise,
  450. especially at the interfaces between materials with different thermal
  451. expansion coefficients.
  452. An important part of the analysis that almost always applies to nuclear
  453. power plants but usually also to other installations is the
  454. consideration of a possible seismic event. Given a postulated design
  455. earthquake, both the civil structures and the piping system itself need
  456. to be able to withstand such a load, even if it occurs at the moment of
  457. highest mechanical demand during one of the operational transients.
  458. \hypertarget{sec:fatigue}{%
  459. \subsection{Fatigue}\label{sec:fatigue}}
  460. Mechanical systems can fail due to a wide variety of reasons. The effect
  461. known as fatigue can create, migrate and grow microscopic cracks at the
  462. atomic level, called
  463. \href{https://en.wikipedia.org/wiki/Dislocations}{dislocations}. Once
  464. these cracks reach a critical size, then the material fails
  465. catastrophically even under stresses much lower than the tensile
  466. strength limits. There are not complete mechanistic models from first
  467. principles which can be used in general situations, and those that exist
  468. are very complex and hard to use. There are two main ways to approach
  469. practical fatigue assessment problems using experimental data very much
  470. like the \href{https://en.wikipedia.org/wiki/Hooke's_law}{Hooke's Law}
  471. experiment:
  472. \begin{enumerate}
  473. \def\labelenumi{\arabic{enumi}.}
  474. \tightlist
  475. \item
  476. stress life, or
  477. \item
  478. strain life
  479. \end{enumerate}
  480. The first one is suitable for cases where the loads are nowhere near the
  481. yield stress of the material. When plastic deformation is expected to
  482. occur, strain-life methods ought to be employed.
  483. For the case study, as the loads come principally from operational
  484. loads, the ASME~stress-life approach should be used. The stress
  485. amplitude of a periodic cycle can be related to the number of cycles
  486. where failure by fatigue is expected to occur. For each material, this
  487. dependence can be computed using normalised tests and a family of
  488. ``fatigue curves'' like the one depicted in~fig.~\ref{fig:SN} (also
  489. called \(S\)-\(N\) curve) for different temperatures can be obtained.
  490. \begin{figure}
  491. \hypertarget{fig:SN}{%
  492. \centering
  493. \includegraphics[width=0.75\textwidth,height=\textheight]{SN.svg}
  494. \caption{A fatigue or \(S\)-\(N\) curve for two steels.}\label{fig:SN}
  495. }
  496. \end{figure}
  497. It should be noted that the fatigue curves are obtained in a particular
  498. load case, namely purely-periodic and one-dimensional, which cannot be
  499. directly generalised to other three-dimensional cases. Also, any
  500. real-life case will be subject to a mixture of complex cycles given by a
  501. stress time history and not to pure periodic conditions. The application
  502. of the curve data implies a set of simplifications and assumptions that
  503. are translated into different possible ``rules'' for composing real-life
  504. cycles. There also exist two safety factors which increase the stress
  505. amplitude and reduce the number of cycles respectively. All these
  506. intermediate steps render the analysis of fatigue into a conservative
  507. computation scheme (sec.~\ref{sec:kinds}). Therefore, when a fatigue
  508. assessment performed using the fatigue curve method arrives at the
  509. conclusion that ``fatigue is expected to occur after ten thousand
  510. cycles'' what it actually means is ``we are sure fatigue will not occur
  511. before ten thousand cycles, yet it may not occur before one hundred
  512. thousand or even more.''
  513. \hypertarget{solid-mechanics-or-what-we-are-taught-at-college}{%
  514. \section{Solid mechanics, or what we are taught at
  515. college}\label{solid-mechanics-or-what-we-are-taught-at-college}}
  516. So, let us start our journey. Our starting place: undergraduate solid
  517. mechanics courses. Our goal: to obtain the internal state of a solid
  518. subject to a set of movement restrictions and loads (i.e.~to solve the
  519. solid mechanics problem). Our first step:
  520. \href{https://en.wikipedia.org/wiki/Newton's_laws_of_motion}{Newton's
  521. laws of motion}. For our purposes, we can recall them here like this:
  522. \begin{enumerate}
  523. \def\labelenumi{\arabic{enumi}.}
  524. \tightlist
  525. \item
  526. a solid is in equilibrium if it is not moving in at least one inertial
  527. coordinate system,
  528. \item
  529. in order for a solid not to move, the sum of all the forces ought to
  530. be equal to zero, and
  531. \item
  532. for every external load there exists an internal reaction with the
  533. same magnitude but opposite direction.
  534. \end{enumerate}
  535. We have to accept that there is certain intellectual beauty when complex
  536. stuff can be expressed in such simple terms. Yet, from now on,
  537. everything can be complicated at will. We can take the mathematical path
  538. like
  539. \href{https://en.wikipedia.org/wiki/Jean_le_Rond_d'Alembert}{D'Alembert}
  540. and his virtual displacements ideas (in his mechanical treatise, he
  541. brags that he does not need to use a single figure throughout the book).
  542. Or we can go graphical following
  543. \href{https://en.wikipedia.org/wiki/Carl_Culmann}{Culmann}. Or whatever
  544. other logic reasoning to end up with a set of actual equations which we
  545. need to solve in order to obtain engineering results.
  546. \hypertarget{sec:tensor}{%
  547. \subsection{The stress tensor}\label{sec:tensor}}
  548. In any case, what we should understand (and imagine) is that external
  549. forces lead to internal stresses. And in any three-dimensional body
  550. subject to such external loads, the best way to represent internal
  551. stresses is through a \(3 \times 3\) \emph{stress tensor}. This is the
  552. first point in which we should not fear mathematics. Trust me, it will
  553. pay back later on.
  554. Does the term \emph{tensor} scare you? It should not. A
  555. \href{https://en.wikipedia.org/wiki/Tensor}{tensor} is a general
  556. mathematical object and might get complex when dealing with many
  557. dimensions (as those encountered in weird stuff like
  558. \href{https://en.wikipedia.org/wiki/String_theory}{string theory}), but
  559. we will stick here to second-order tensors. They are slightly more
  560. complex than a vector, and I assume you are not afraid of vectors, are
  561. you? If you recall fresh-year algebra courses, a
  562. \href{https://en.wikipedia.org/wiki/Vector_(mathematics_and_physics)}{vector}
  563. somehow generalises the idea of a
  564. \href{https://en.wikipedia.org/wiki/Scalar_(mathematics)}{scalar} in the
  565. following sense: a given vector~\(\mathbf{v}\) can be projected into any
  566. direction~\(\mathbf{n}\) to obtain a scalar~\(p\). We call this
  567. scalar~\(p\) the ``projection'' of the vector~\(\mathbf{v}\) in the
  568. direction~\(\mathbf{n}\). Well, a tensor can be also projected into any
  569. direction~\(\mathbf{n}\). The difference is that instead of a scalar, a
  570. vector is now obtained.
  571. Let me introduce then the three-dimensional
  572. \href{https://en.wikipedia.org/wiki/Cauchy_stress_tensor}{stress tensor}
  573. (a.k.a
  574. \href{https://en.wikipedia.org/wiki/Augustin-Louis_Cauchy}{Cauchy}
  575. tensor):
  576. \[
  577. \begin{bmatrix}
  578. \sigma_x & \tau_{xy} & \tau_{xz} \\
  579. \tau_{yx} & \sigma_{y} & \tau_{yz} \\
  580. \tau_{zx} & \tau_{zy} & \sigma_{z} \\
  581. \end{bmatrix}
  582. \]
  583. It looks (and works) like a regular \(3 \times 3\) matrix. Some brief
  584. comments about it:
  585. \begin{itemize}
  586. \tightlist
  587. \item
  588. The \(\sigma\)s are normal stresses, i.e.~they try to stretch or
  589. tighten the material.
  590. \item
  591. The \(\tau\)s are shear stresses, i.e.~they try to twist the material.
  592. \item
  593. Due to rotational equilibrium requirements the conjugate shear
  594. stresses should be equal: \(\tau_{xy} = \tau_{yx}\),
  595. \(\tau_{yz} = \tau_{zy}\), and \(\tau_{zx} = \tau_{xz}\). Therefore,
  596. the stress tensor is symmetric i.e.~there are only six independent
  597. elements.
  598. \item
  599. The elements of the tensor depend on the orientation of the coordinate
  600. system.
  601. \item
  602. There exists a particular coordinate system in which the stress tensor
  603. is diagonal, i.e.~all the shear stresses are zero. In this case, the
  604. three diagonal elements are called the
  605. \href{https://en.wikipedia.org/wiki/Principal_stresses}{principal
  606. stresses}, which happen to be the three
  607. \href{https://en.wikipedia.org/wiki/Eigenvalues_and_eigenvectors}{eigenvalues}
  608. of the stress tensor. The basis of the coordinate system that renders
  609. the tensor diagonal are the eigenvectors.
  610. \end{itemize}
  611. What does this all have to do with mechanical engineering? Well, once we
  612. know what the stress tensor is for every point of a solid, in order to
  613. obtain the internal forces per unit area acting in a plane passing
  614. through that point and with a normal given by the
  615. direction~\(\mathbf{n}\), all we have to do is ``project'' the stress
  616. tensor through~\(\mathbf{n}\). In plain simple words:
  617. \begin{quote}
  618. If you can compute the stress tensor at each point of your geometry,
  619. then\ldots{} Congratulations! You have solved the solid mechanics
  620. problem.
  621. \end{quote}
  622. \hypertarget{sec:infinite-pipe}{%
  623. \subsection{An infinitely-long pressurised
  624. pipe}\label{sec:infinite-pipe}}
  625. Let us proceed to our second step, and consider the infinite pipe
  626. subject to uniform internal pressure already introduced
  627. in~fig.~\ref{fig:infinite-pipe}. Actually, we are going to solve the
  628. mechanical problem on an infinite hollow cylinder, which looks like
  629. pipe. This case is usually tackled in college courses, and chances are
  630. you already solved it. In fact, the first (and simpler) problem is the
  631. ``thin cylinder problem.'' Then, the ``thick cylinder problem'' is
  632. introduced (the one we solve below), which is slightly more complex.
  633. Nevertheless, it has an analytical solution which is derived
  634. \href{https://www.seamplex.com/fino/doc/pipe-linearized/}{here}. For the
  635. present case, let us consider an infinite pipe (i.e.~a hollow cylinder)
  636. of internal radius~\(a\) and external radius~\(b\) with uniform
  637. mechanical properties---Young modulus~\(E\) and Poisson's
  638. ratio~\(\nu\)---subject to an internal uniform pressure~\(p\).
  639. \hypertarget{displacements}{%
  640. \subsubsection{Displacements}\label{displacements}}
  641. Remember that when any solid body is subject to external forces, it has
  642. to react in such a way to satisfy the equilibrium conditions. The way
  643. solids do this is by deforming a little bit in such a way that the whole
  644. body acts as a compressed (or elongated) spring balancing the load. So
  645. it is worth to ask how a pressurised pipe deforms to counteract the
  646. internal pressure~\(p\).
  647. \begin{itemize}
  648. \tightlist
  649. \item
  650. There are no longitudinal displacements~\(u_l\) because the pipe is
  651. infinite in the axial direction.
  652. \item
  653. There are no azimuthal displacements~\(u_\theta\) because the pipe is
  654. fully symmetric around the axis.
  655. \item
  656. There are only radial displacements~\(u_r\) and they depend only on
  657. the radial coordinate~\(r\) and not on the axial position~\(z\) or on
  658. the azimuthal angle~\(\theta\). These displacements are
  659. \end{itemize}
  660. \[
  661. u_r(r) = p \cdot \frac{1+\nu}{E} \cdot \frac{a^2}{b^2-a^2} \cdot \left[ 1-2\nu + \frac{b^2}{r^2} \right]\cdot r
  662. \]
  663. What does this mean? Well, that overall the whole pipe expands a little
  664. bit radially with the inner face being displaced more than the external
  665. surface (use your imagination!). How much?
  666. \begin{enumerate}
  667. \def\labelenumi{\arabic{enumi}.}
  668. \tightlist
  669. \item
  670. linearly with the pressure, i.e.~twice the pressure means twice the
  671. displacement, and
  672. \item
  673. inversely proportional to the Young Modulus~\(E\) divided by
  674. \(1+\nu\), i.e.~the more resistant the material, the less radial
  675. displacements.
  676. \end{enumerate}
  677. That is how an infinite pipe withstands internal pressure.
  678. \hypertarget{stresses}{%
  679. \subsubsection{Stresses}\label{stresses}}
  680. As the solid is deformed, that is to say that different parts are
  681. relatively displaced one from another, strains and stresses appear. When
  682. seen from a cylindrical coordinate system, the stress tensor (recall
  683. sec.~\ref{sec:tensor}) has these features.
  684. \begin{itemize}
  685. \tightlist
  686. \item
  687. There are no shear stresses as there is no bending due to the fact
  688. that the pipe is infinite (so it cannot bend in the axial direction)
  689. and azimuthally symmetric (there is no particular direction so circles
  690. must remain circles).
  691. \item
  692. The normal stresses depend only on the radial coordinate~\(r\) and are
  693. \begin{itemize}
  694. \tightlist
  695. \item
  696. the radial
  697. stress~\(\sigma_r(r) = \frac{p \cdot a^2}{b^2-a^2} \cdot \left( 1 - \frac{b^2}{r^2}\right)\)
  698. \item
  699. the azimuthal (or hoop)
  700. stress~\(\sigma_\theta(r) =\frac{p \cdot a^2}{b^2-a^2} \cdot \left( 1 + \frac{b^2}{r^2}\right)\),
  701. and
  702. \item
  703. the longitudinal (or axial)
  704. stress~\(\sigma_l(r) = 2\nu \cdot \frac{p \cdot a^2}{b^2-a^2}\)
  705. \end{itemize}
  706. \end{itemize}
  707. We can note that
  708. \begin{enumerate}
  709. \def\labelenumi{\arabic{enumi}.}
  710. \tightlist
  711. \item
  712. The stresses do not depend on the mechanical properties~\(E\)
  713. and~\(\nu\) of the material (the displacements do).
  714. \item
  715. All the stresses are linear with the pressure~\(p\), i.e.~twice the
  716. pressure means twice the stress.
  717. \item
  718. The axial stress is uniform and does not depend on the radial
  719. coordinate~\(r\).
  720. \item
  721. As the stress tensor is diagonal, these three stresses happen to also
  722. be the principal stresses.
  723. \end{enumerate}
  724. That is all what we can say about an infinite pipe with uniform material
  725. properties subject to an uniform internal pressure~\(p\). If
  726. \begin{itemize}
  727. \tightlist
  728. \item
  729. the pipe was not infinite (say any real pipe that has to start and end
  730. somewhere), or
  731. \item
  732. the cross-section of the pipe is not constant along the axis (say
  733. there is an elbow or even a reduction), or
  734. \item
  735. there was more than one pipe (say there is a tee), or
  736. \item
  737. the material properties are not uniform (say the pipe does not have an
  738. uniform temperature but a distribution), or
  739. \item
  740. the pressure was not uniform (say because there is liquid inside and
  741. its weight cannot be neglected),
  742. \end{itemize}
  743. \noindent then we would no longer be able to fully solve the problem
  744. with paper and pencil and draw all the conclusions above. However, at
  745. least we have a start because we know that if the pipe is finite but
  746. long enough or the temperature is not uniform but almost, we still can
  747. use the analytical equations as approximations. After all,
  748. \href{https://en.wikipedia.org/wiki/Enrico_Fermi}{Enrico Fermi} managed
  749. to reach criticality in the
  750. \href{https://en.wikipedia.org/wiki/Chicago_Pile-1}{Chicago Pile-1} with
  751. paper and pencil. But what happens if the pipe is short, there are
  752. branches and temperature changes like during a transient in a nuclear
  753. reactor? Well, that is why we have finite elements. And this is where
  754. what we learned at college pretty much ends.
  755. \hypertarget{finite-elements-or-solving-actual-problems}{%
  756. \section{Finite elements, or solving actual
  757. problems}\label{finite-elements-or-solving-actual-problems}}
  758. Besides infinite pipes (both thin and thick), spheres and a couple of
  759. other geometries, there are no other cases for which we can obtain
  760. analytical expressions for the elements of the stress tensor. To get
  761. results for a solid with real engineering interest, we need to use
  762. numerical methods to solve the equilibrium equations. It is not that the
  763. equations are hard \emph{per se}. It is that the mechanical parts we
  764. engineers like to design (which are of course more complex than
  765. cylinders and spheres) are so intricate that render simple equations
  766. into monsters which are unsolvable with pencil and paper. Hence, finite
  767. elements enter into the scene.
  768. \hypertarget{sec:formulations}{%
  769. \subsection{The name of the game}\label{sec:formulations}}
  770. But before turning our attention directly into finite elements (and
  771. leaving college, at least undergraduate) it is worth some time to think
  772. about other alternatives. Are we sure we are tackling your problems in
  773. the best possible way? I mean, not just engineering problems. Do we take
  774. a break, step back for a while and see the whole picture looking at all
  775. the alternatives so we can choose the best cost-effective one?
  776. There are literally dozens of ways to numerically solve the equilibrium
  777. equations, but for the sake of brevity let us take a look at the three
  778. most famous ones. Coincidentally, they all contain the word ``finite''
  779. in their names. We will not dig into them, but it is nice to know they
  780. exist. We might use
  781. \begin{enumerate}
  782. \def\labelenumi{\arabic{enumi}.}
  783. \tightlist
  784. \item
  785. \href{https://en.wikipedia.org/wiki/Finite_difference}{Finite
  786. differences}
  787. \item
  788. \href{https://en.wikipedia.org/wiki/Finite_volume_method}{Finite
  789. volumes}
  790. \item
  791. \href{https://en.wikipedia.org/wiki/Finite_element_method}{Finite
  792. elements}
  793. \end{enumerate}
  794. Before proceeding, I would like to make two comments about common
  795. nomenclature. The first one is that if we exchanged the words
  796. ``volumes'' and ``elements'' in all the written books and articles,
  797. nobody would notice the difference. There is nothing particular in both
  798. theories that can justify why FVM use ``volumes'' and FEM use
  799. ``elements''. Actually volumes and elements are the same geometric
  800. constructions. As far as I know, the names were randomly assigned.
  801. The second one is more philosophical and refers to the word
  802. ``simulation'' which is often used to refer to solving a problem using a
  803. numerical scheme such as the finite element method.
  804. \href{https://www.seamplex.com/blog/say-modeling-not-simulation.html}{I
  805. am against at using this word for this endeavour}. The term simulation
  806. has a connotation of both ``pretending'' and ``faking'' something, that
  807. is definitely not what we are doing when we solve an engineering problem
  808. with finite elements. Sure, there are some cases in which we simulate,
  809. such as using the
  810. \href{https://en.wikipedia.org/wiki/Monte_Carlo_method}{Monte Carlo
  811. method} (originally used by Fermi as an attempt to understand how
  812. neutrons behave in the core of nuclear reactors). But when solving
  813. deterministic mechanical engineering problems I would rather say
  814. ``modelling'' than ``simulation.''
  815. \hypertarget{sec:kinds}{%
  816. \subsection{Kinds of finite elements}\label{sec:kinds}}
  817. This section is not (just) about different kinds of elements like
  818. tetrahedra, hexahedra, pyramids and so on. It is about the different
  819. kinds of analysis there are. Indeed, there is a whole plethora of
  820. particular types of calculations we can perform, all of which can be
  821. called ``finite element analysis.'' For instance, for the mechanical
  822. problem, we can have different kinds of
  823. \begin{itemize}
  824. \tightlist
  825. \item
  826. temporal dependence: steady-state, quasi-static, transient, \ldots{}
  827. \item
  828. main elements: 1D beam elements, 2D shell elements, 3D bulk elements,
  829. \ldots{}
  830. \item
  831. mathematical models: pure linear, material non-linear, geometrical
  832. non-linear, particular studies, buckling, modal, \ldots{}
  833. \item
  834. element features: isoparametric elements, serendipity elements,
  835. sub-integrated elements, incomplete elements, \ldots{}
  836. \end{itemize}
  837. And then there exist different pre-processors, meshers, solvers,
  838. pre-conditioners, post-processing steps, etc. A similar list can be made
  839. for the \href{https://en.wikipedia.org/wiki/Thermal_conduction}{heat
  840. conduction problem},
  841. \href{https://en.wikipedia.org/wiki/Electromagnetism}{electromagnetism},
  842. the
  843. \href{https://en.wikipedia.org/wiki/Schr\%C3\%B6dinger_equation}{Schröedinger
  844. equation},
  845. \href{https://en.wikipedia.org/wiki/Neutron_transport}{neutron
  846. transport}, etc. But there is also another level of ``kind of problem,''
  847. which is related to how much accuracy and precision we are to willing
  848. sacrifice in order to have a (probably very much) simpler problem to
  849. solve. Again, there are different combinations here but a certain
  850. problem can be solved using any of the following three approaches,
  851. listed in increasing amount of difficulty and complexity: conservative,
  852. best-estimate or probabilistic.
  853. We might get into a an infinite taxonomic loop if we continue down this
  854. path. So let us move one step closer to our case study in this journey
  855. from college theory to an actual engineering problem.
  856. \hypertarget{sec:piping-nuclear}{%
  857. \section{Piping in nuclear rectors}\label{sec:piping-nuclear}}
  858. So we need to address the issue of fatigue in nuclear reactor pipes that
  859. \begin{enumerate}
  860. \def\labelenumi{\arabic{enumi}.}
  861. \tightlist
  862. \item
  863. are not infinite and have cross-section changes, branches, valves,
  864. etc.
  865. \item
  866. are made of different materials,
  867. \item
  868. are fixed at different locations through piping supports,
  869. \item
  870. are subject to
  871. \begin{enumerate}
  872. \def\labelenumii{\alph{enumii}.}
  873. \tightlist
  874. \item
  875. pressure transients,
  876. \item
  877. heat transients, and
  878. \item
  879. seismic loads.
  880. \end{enumerate}
  881. \end{enumerate}
  882. As a nuclear engineer, I learned (theoretically in college but
  883. practically after college) that there are some models that let you see
  884. some effects and some that let you see other effects (please
  885. \href{https://www.seamplex.com/blog/say-modeling-not-simulation.html}{say
  886. ``modelling'' not ``simulation.''}). And even if, in principle, it is
  887. true that more complex models should let you see more stuff, they
  888. definitely might show you nothing at all if the model is so big and
  889. complex that it does not fit into a computer (say because it needs
  890. hundreds of gigabytes of RAM to run) or because it takes more time to
  891. compute than you may have before the final report is expected.
  892. First of all, we should note that we need to solve
  893. \begin{enumerate}
  894. \def\labelenumi{\roman{enumi}.}
  895. \tightlist
  896. \item
  897. the heat transfer equation to get the temperature distribution within
  898. the pipes,
  899. \item
  900. the natural frequencies and oscillation modes of the piping system to
  901. obtain the pseudo-accelerations generated by the design earthquake,
  902. and finally
  903. \item
  904. the elastic problem to obtain the stress tensor needed to compute the
  905. alternating stress to enter into the fatigue curve.
  906. \end{enumerate}
  907. So for each time~\(t\) of the operational transient, the pipes are
  908. subject to
  909. \begin{enumerate}
  910. \def\labelenumi{\alph{enumi}.}
  911. \tightlist
  912. \item
  913. an uniform internal pressure~\(p_i(t)\) that depends on time,
  914. \item
  915. a non-uniform internal temperature \(T_i(t)\) that gives rise to a
  916. non-trivial time-dependent temperature
  917. distribution~\(T(\mathbf{x},t)\) in the bulk of the pipes, and
  918. \item
  919. internal distributed forces~\(\mathbf{f}=\rho \cdot \mathbf{a}\) at
  920. those times where the design earthquake is assumed to occur.
  921. \end{enumerate}
  922. \hypertarget{sec:thermal}{%
  923. \subsection{Thermal transient}\label{sec:thermal}}
  924. Let us invoke our imagination once again. Assume in one part of the
  925. transients the temperature of the water inside the pipes falls from say
  926. 300ºC down to 100ºC in a couple of minutes, stays at 100ºC for another
  927. couple of minutes and then gets back to 300ºC. The temperature within
  928. the bulk of the pipes changes as times evolves. The internal wall of the
  929. pipes follow the transient temperature (it might be exactly equal or
  930. close to it through the
  931. \href{https://en.wikipedia.org/wiki/Newton\%27s_law_of_cooling}{Newton's
  932. law of cooling}). If the pipe was in a state of uniform temperature, the
  933. ramp in the internal wall will start cooling the bulk of the pipe
  934. creating a transient thermal gradient. Due to thermal inertia effects,
  935. the temperature can have a non-trivial dependence when the ramps start
  936. or end (think about it!). So we need to compute a real transient heat
  937. transfer problem with convective boundary conditions because any other
  938. usual tricks like computing a sequence of steady-state computations for
  939. different times would not be able to recover these non-trivial
  940. distributions.
  941. Remember the main issue of the fatigue analysis in these systems is to
  942. analyse what happens around the location of changes of piping classes
  943. where different materials (i.e.~different expansion coefficients) are
  944. present, potentially causing high stresses due to differential thermal
  945. expansion (or contraction) under transient conditions. Therefore, even
  946. though we are dealing with pipes we cannot use beam or circular shell
  947. elements, because we need to take into account the three-dimensional
  948. effects of the temperature distribution along the pipe thickness. And
  949. even if we could, there are some tees that connect pipes with different
  950. nominal diameters that have a non-trivial geometry, such as the
  951. weldolet-type junction shown
  952. in~figs.~\ref{fig:weldolet-cad}, \ref{fig:weldolet-mesh}. In this case,
  953. there are a number of SCLs (Stress Classification Lines) that go through
  954. the pipe's thickness at both sides of the material interface as
  955. illustrated in~fig.~\ref{fig:weldolet-scls}. It is in these locations
  956. that fatigue is to be evaluated.
  957. \begin{figure}
  958. \centering
  959. \subfloat[Overall
  960. view]{\includegraphics[width=0.65\textwidth,height=\textheight]{weldolet-cad1.png}\label{fig:weldolet-cad}}
  961. \subfloat[Unstructured tetrahedra-based
  962. grid]{\includegraphics[width=0.85\textwidth,height=\textheight]{weldolet-mesh2.png}\label{fig:weldolet-mesh}}
  963. \caption{CAD model of a piping system with a 3/4-inch weldolet-type fork
  964. (stainless steel) from a main 12-inch pipe (carbon steel)}
  965. \label{fig:weldolet}
  966. \end{figure}
  967. \begin{figure}
  968. \hypertarget{fig:weldolet-scls}{%
  969. \centering
  970. \includegraphics[width=0.75\textwidth,height=\textheight]{weldolet-scls-n.png}
  971. \caption{Location of six SCLs defined to analyse fatigue around a
  972. junction.}\label{fig:weldolet-scls}
  973. }
  974. \end{figure}
  975. On the one hand, a reasonable number of nodes (it is the number of nodes
  976. that defines the problem size, not the number of elements as discussed
  977. in sec.~\ref{sec:elements-nodes}) in order to get a decent grid is
  978. around 200k for each system. On the other hand, solving a couple of
  979. dozens of transient heat transfer problems (which we cannot avoid due to
  980. the large thermal inertia of the pipes) during a few thousands of
  981. seconds over a couple hundred of thousands of nodes might take more time
  982. and storage space to hold the results than we might expect.
  983. There is a wonderful essay by
  984. \href{https://en.wikipedia.org/wiki/Isaac_Asimov}{Isaac Asimov} called
  985. \href{https://en.wikipedia.org/wiki/The_Relativity_of_Wrong}{``The
  986. Relativity of Wrong''} where he introduces the idea that even if
  987. something cannot be computed exactly, there are different levels of
  988. error. For instance, believing that the Earth is a sphere is less wrong
  989. than believing that the Earth is flat, but wrong nonetheless, since it
  990. really deviates from a perfect sphere and resembles more an oblate
  991. spheroid.
  992. We can then merge this idea by Asimov with an adapted version of the
  993. \href{https://en.wikipedia.org/wiki/Saint-Venant\%27s_principle}{Saint-Venant's
  994. principle} and note that the detailed transient temperature distribution
  995. is important only around the location of the SCLs. We can then make an
  996. engineering approximation and
  997. \begin{enumerate}
  998. \def\labelenumi{\arabic{enumi}.}
  999. \tightlist
  1000. \item
  1001. compute the transient thermal problem using a reduced mesh around the
  1002. SCLs, and
  1003. \item
  1004. assume the part of the full system which is not contained in the
  1005. reduced mesh is at an uniform (though not constant) temperature equal
  1006. to the average of the inner and outer temperatures at each side of the
  1007. reduced mesh.
  1008. \end{enumerate}
  1009. \begin{figure}
  1010. \hypertarget{fig:valve}{%
  1011. \centering
  1012. \includegraphics[width=0.65\textwidth,height=\textheight]{valve-scls1-n.png}
  1013. \caption{An example case where the SCLs are located around the junction
  1014. between stainless-steel valves and carbon steel pipes at both sides of
  1015. the material interface in the vertical plane both at the top and at the
  1016. bottom of the pipe.}\label{fig:valve}
  1017. }
  1018. \end{figure}
  1019. As an example, let us consider the system depicted
  1020. in~fig.~\ref{fig:valve} where there is a stainless-carbon steel
  1021. interface at the discharge of the valves. Instead of solving the
  1022. transient heat-conduction problem with the internal temperature of the
  1023. pipes equal to the temperature of the water in the reference transient
  1024. condition of the power plant and an external condition of natural
  1025. convection to the ambient temperature in the whole mesh, a reduced model
  1026. consisting of half of one of the two valves and a small length of the
  1027. pipes at both the valve inlet and outlet is used. Once the temperature
  1028. distribution~\(\hat{T}(\mathbf{x},t)\) for each time is obtained in the
  1029. reduced mesh (fig.~\ref{fig:valve-temp}, which has the origin at the
  1030. centre of the valve), the actual temperature
  1031. distribution~\(T(\mathbf{x},t)\) is computed by an algebraic
  1032. generalisation of \(\hat{T}(\mathbf{x},t)\) in the full coordinate
  1033. system. As stated above, those locations which are not covered by the
  1034. reduced model are generalised with a time-dependent uniform temperature
  1035. which is the average of the inner and outer temperatures at the inlet
  1036. and outlet of the reduced mesh.
  1037. \begin{figure}
  1038. \hypertarget{fig:valve-temp}{%
  1039. \centering
  1040. \includegraphics[width=0.8\textwidth,height=\textheight]{valve-temp.png}
  1041. \caption{Reduced mesh around a valve refined around the interface where
  1042. the transient heat conduction problem is solved.}\label{fig:valve-temp}
  1043. }
  1044. \end{figure}
  1045. Note that there is no need to have a one-to-one correspondence between
  1046. the elements from the reduced mesh with the elements from the original
  1047. one. Actually, the reduced mesh contains first-order elements whilst the
  1048. former has second-order elements. Also the grid density is different.
  1049. Nevertheless, the finite-element solver
  1050. \href{https://www.seamplex.com/fino}{Fino} used to solve both the heat
  1051. and the mechanical problems, allows to read functions of space and time
  1052. defined over one mesh and continuously evaluate and use them into
  1053. another one even if the two grids have different elements, orders or
  1054. even dimensions. In effect, in the system from~fig.~\ref{fig:real-life}
  1055. the material interface is between a orifice plate made in stainless
  1056. steel that is welded to a carbon-steel pipe (fig.~\ref{fig:real}). The
  1057. thermal problem can be modelled using a two-dimensional axi-symmetric
  1058. grid and then generalised to the full three-dimensional mesh using the
  1059. algebraic manipulation capabilities provided by
  1060. \href{https://www.seamplex.com/fino}{Fino} (actually by
  1061. \href{https://www.seamplex.com/wasora}{wasora}) as shown
  1062. in~fig.~\ref{fig:real}.
  1063. \begin{figure}
  1064. \hypertarget{fig:real}{%
  1065. \centering
  1066. \includegraphics[width=0.85\textwidth,height=\textheight]{real-gen.png}
  1067. \caption{Temperature distribution for a certain time within the
  1068. transient computed on a reduced two-dimensional axi-symmetric mesh
  1069. modelling half the orifice plate and a length of the carbon pipe and
  1070. Generalisation of the temperature to the full three-dimensional
  1071. grid.}\label{fig:real}
  1072. }
  1073. \end{figure}
  1074. \hypertarget{sec:seismic}{%
  1075. \subsection{Seismic loads}\label{sec:seismic}}
  1076. Before considering the actual mechanical problem that will give us the
  1077. stress tensor at the SCLs, and besides needing to solve the transient
  1078. thermal problem to get the temperature distributions, we need to address
  1079. the loads that arise due to a postulated earthquake during a certain
  1080. part of the operational transients. The full computation of a mechanical
  1081. transient problem using the earthquake time-dependent displacements is
  1082. off the table for two reasons. First, because again the computation
  1083. would take more time than we might have to deliver the report. And
  1084. secondly and more importantly, because civil engineers do not compute
  1085. earthquakes in the time domain but in the frequency domain using the
  1086. \href{https://en.wikipedia.org/wiki/Response_spectrum}{response spectrum
  1087. method}. Time to revisit our
  1088. \href{https://en.wikipedia.org/wiki/Fourier_transform}{Fourier
  1089. transform} exercises from undergraduate math courses.
  1090. \hypertarget{earthquake-spectra}{%
  1091. \subsubsection{Earthquake spectra}\label{earthquake-spectra}}
  1092. Every nuclear power plant is designed to withstand earthquakes. Of
  1093. course, not all plants need the same level of reinforcements. Those
  1094. built in large quiet plains will be, seismically speaking, cheaper than
  1095. those located in geologically active zones. Keep in mind that all the 54
  1096. Japanese nuclear power plants did structurally resist the 2011
  1097. earthquake, and all of the reactors were safely shut down. What actually
  1098. happened in
  1099. \href{http://www.world-nuclear.org/information-library/safety-and-security/safety-of-plants/fukushima-accident.aspx}{Fukushima}
  1100. is that one hour after the main shake, a 14-metre tsunami splashed on
  1101. the coast, jumping over the 9-metre defences and flooding the emergency
  1102. \href{https://en.wikipedia.org/wiki/Diesel_generator}{Diesel generators}
  1103. that provided power to the pumps in charge of removing the remaining
  1104. \href{https://en.wikipedia.org/wiki/Decay_heat}{decay power} from the
  1105. already-stopped
  1106. \href{https://en.wikipedia.org/wiki/Nuclear_reactor_core}{reactor core}.
  1107. Back to our case study, the point is that each site where nuclear power
  1108. plants are built must have a geological study where a postulated
  1109. design-basis earthquake is to be defined. In other words, a theoretical
  1110. earthquake which the plant ought to withstand needs to be specified.
  1111. How? By giving a set of three spectra (one for each coordinate
  1112. direction) giving acceleration as a function of the frequency for each
  1113. level of the building. That is to say, once the earthquake hits the
  1114. power plant, depending on soil-structure interactions the energy will
  1115. shake the building foundations in a way that depends on the
  1116. characteristics of the earthquake, the soil and the concrete structure.
  1117. Afterwards, the way the oscillations travel upward and shake each of the
  1118. mechanical components erected in each floor level depends on the design
  1119. of the civil structure in a way which is fully determined by the floor
  1120. response spectra like the ones depicted in~fig.~\ref{fig:spectrum}.
  1121. \begin{figure}
  1122. \hypertarget{fig:spectrum}{%
  1123. \centering
  1124. \includegraphics[width=0.7\textwidth,height=\textheight]{spectrum.svg}
  1125. \caption{A sample spectrum for a certain floor level of a certain
  1126. nuclear power plant.}\label{fig:spectrum}
  1127. }
  1128. \end{figure}
  1129. \hypertarget{natural-frequencies}{%
  1130. \subsubsection{Natural frequencies}\label{natural-frequencies}}
  1131. As the earthquake excites some frequencies more than others, it is
  1132. mandatory to know which are the natural frequencies and modes of
  1133. oscillations of our piping system. Mathematically, this requires the
  1134. computation of an eigenvalue problem. Simply stated, we need to find all
  1135. the non-trivial solutions of the equation
  1136. \[
  1137. K \phi_i = \lambda_i \cdot M \phi_i
  1138. \] where \(K\) is the usual finite-element stiffness matrix, \(M\) is
  1139. the mass matrix, \(\lambda_i\) is the \(i\)-th natural frequency of the
  1140. structure and \(\phi_i\) is a vector containing the nodal displacement
  1141. corresponding to the \(i\)-th mode of oscillation.
  1142. Practically, these problems are solved using the same mechanical
  1143. finite-element program one would use to solve a standard elastic
  1144. problem, provided such program supports these kind of problems
  1145. (\href{https://www.seamplex.com/fino/}{Fino} does). There are only two
  1146. caveats we need to take into account:
  1147. \begin{enumerate}
  1148. \def\labelenumi{\arabic{enumi}.}
  1149. \tightlist
  1150. \item
  1151. The computation of the natural frequencies is ``load free'',
  1152. i.e.~there can be no surface nor volumetric loads, and
  1153. \item
  1154. The displacement boundary conditions ought to be homogeneous,
  1155. i.e.~only displacements equal to zero can be given. We may fix only
  1156. one of the three degrees of freedom in certain surfaces and leave the
  1157. others free, as long as all the rigid body motions are removed as
  1158. usual.
  1159. \end{enumerate}
  1160. A real continuous solid has infinite modes of oscillation. A discretised
  1161. one (using the most common and efficient FEM formulation, the
  1162. \href{http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf}{displacement-based
  1163. formulation}) has three times the number of nodes modes. In any case,
  1164. one is usually interested only in a few of them, namely those with the
  1165. lower frequencies because they take away most of the energy with them.
  1166. Each mode has two associated parameters called modal mass and excitation
  1167. that reflect how ``important'' the mode is regarding the absorption of
  1168. energy from an external oscillatory source. Usually a couple of dozens
  1169. of modes are enough to take up more than 90\% of the earthquake energy.
  1170. Figure~\ref{fig:modes} shows the first six natural modes of a sample
  1171. piping section.
  1172. \begin{figure}
  1173. \centering
  1174. \subfloat[]{\includegraphics[width=0.48\textwidth,height=\textheight]{mode1.png}}~
  1175. \subfloat[]{\includegraphics[width=0.48\textwidth,height=\textheight]{mode2.png}}
  1176. \subfloat[]{\includegraphics[width=0.48\textwidth,height=\textheight]{mode3.png}}~
  1177. \subfloat[]{\includegraphics[width=0.48\textwidth,height=\textheight]{mode4.png}}
  1178. \subfloat[]{\includegraphics[width=0.48\textwidth,height=\textheight]{mode5.png}}~
  1179. \subfloat[]{\includegraphics[width=0.48\textwidth,height=\textheight]{mode6.png}}
  1180. \caption{First six natural oscillation modes for a piping section}
  1181. \label{fig:modes}
  1182. \end{figure}
  1183. These first modes that take up most of the energy are then used to take
  1184. into account the earthquake load. There are several ways of performing
  1185. this computation, but the ASME~III code states that the method known as
  1186. SRSS (for Square Root of Sum of Squares) can be safely used. This method
  1187. mixes the eigenvectors with the floor response spectra through the
  1188. eigenvalues and gives a spatial (actually nodal) distribution of three
  1189. accelerations (one for each direction) that, when multiplied by the
  1190. density of the material, give a vector of a distributed force (in units
  1191. of Newton per cubic millimetre for example) which is statically
  1192. equivalent to the load coming from the postulated earthquake.
  1193. \begin{figure}
  1194. \centering
  1195. \subfloat[\(a_x\)]{\includegraphics[width=0.8\textwidth,height=\textheight]{ax.png}}
  1196. \subfloat[\(a_y\)]{\includegraphics[width=0.8\textwidth,height=\textheight]{ay.png}}
  1197. \subfloat[\(a_z\)]{\includegraphics[width=0.8\textwidth,height=\textheight]{az.png}}
  1198. \caption{The equivalent accelerations for the piping section of
  1199. fig.~\ref{fig:modes} for the spectra of~fig.~\ref{fig:spectrum}}
  1200. \label{fig:acceleration}
  1201. \end{figure}
  1202. The ASME code says that these accelerations (depicted in
  1203. fig.~\ref{fig:acceleration}) ought to be applied twice: once with the
  1204. original sign and once with all the elements with the opposite sign.
  1205. Each application should last two seconds.
  1206. \hypertarget{sec:linearity}{%
  1207. \subsection{Linearity (not yet linearisation)}\label{sec:linearity}}
  1208. Even though we did not yet discuss it in detail, we want to solve an
  1209. elastic problem subject to an internal pressure condition, with a
  1210. non-uniform temperature distribution that leads to both thermal stresses
  1211. and variations in the mechanical properties of the materials. And as if
  1212. this was not enough, we want to add during a couple of seconds a
  1213. statically-equivalent distributed load arising from a design earthquake.
  1214. This last point means that at the transient instant where the stresses
  1215. (from the fatigue's point of view) are maximum we have to add the
  1216. distributed loads that we computed from the seismic spectra to the other
  1217. thermal and pressure loads. But we have a linear elastic problem (well,
  1218. we still do not have it but we will in~sec.~\ref{sec:break}), so we
  1219. might be tempted to exploit the problem's linearity and compute all the
  1220. effects separately and then sum them up to obtain the whole combination.
  1221. We may thus compute just the stresses due to the seismic loads and then
  1222. add these stresses to the stresses at any time of the transient, in
  1223. particular to the one with the highest ones. After all, in linear
  1224. problems the result of the sum of two cases is the result of the sum of
  1225. the cases, right? Not always.
  1226. Let us jump out of our nuclear piping problem and step back into the
  1227. general finite-element theory ground for a moment (remember we were
  1228. going to jump back and forth). Assume you want to know how much your dog
  1229. weights. One thing you can do is to weight yourself (let us say you
  1230. weight 81.2~kg), then to grab your dog and to weight both yourself and
  1231. your dog (let us say you and your dog weight 87.3~kg). Do you swear your
  1232. dog weights 6.1~kg plus/minus the scale's uncertainty? I can tell you
  1233. that the weight of two individual protons and two individual neutrons in
  1234. not the same as the weight of
  1235. an~\href{https://en.wikipedia.org/wiki/Alpha_particle}{\(\alpha\)
  1236. particle}. Would not there be a master-pet interaction that renders the
  1237. weighting problem non-linear?
  1238. \medskip
  1239. Time for both of us to make an experiment. Grab your favourite FEM
  1240. program for the first time (remember mine is
  1241. \href{https://caeplex.com}{CAEplex}) and create a 1mm \(\times\) 1mm
  1242. \(\times\) 1mm cube. Set any values for the Young Modulus and Poisson
  1243. ratio as you want. I chose~\(E=200\)~GPa and~\(\nu=0.28\). Restrict the
  1244. three faces pointing to the negative axes to their planes, i.e.
  1245. \begin{itemize}
  1246. \tightlist
  1247. \item
  1248. in face ``left'' (\(x<0\)), set null displacement in the \(x\)
  1249. direction (\(u=0\)),
  1250. \item
  1251. in face ``front'' (\(y<0\)), set null displacement in the \(y\)
  1252. direction (\(v=0\)),
  1253. \item
  1254. in face ``bottom'' (\(z<0\)), set null displacement in the \(z\)
  1255. direction (\(w=0\)).
  1256. \end{itemize}
  1257. Now we are going to create and compare three load cases:
  1258. \begin{enumerate}
  1259. \def\labelenumi{\alph{enumi}.}
  1260. \tightlist
  1261. \item
  1262. Pure normal loads (\url{https://caeplex.com/p?d8f})
  1263. \item
  1264. Pure shear loads (\url{https://caeplex.com/p?b494})
  1265. \item
  1266. The combination of A \& B (\url{https://caeplex.com/p?989})
  1267. \end{enumerate}
  1268. The loads in each cases are applied to the three remaining faces, namely
  1269. ``right'' (\(x>0\)), ``back'' (\(y>0\)) and ``top,'' (\(z>0\)). Their
  1270. magnitude in Newtons are:
  1271. \rowcolors{2}{black!10}{black!0}
  1272. \begin{longtable}[]{@{}lccccccccc@{}}
  1273. \toprule
  1274. & & ``right'' & & & ``back'' & & & ``top'' &\tabularnewline
  1275. \midrule
  1276. \endhead
  1277. & \(F_x\) & \(F_y\) & \(F_z\) & \(F_x\) & \(F_y\) & \(F_z\) & \(F_x\) &
  1278. \(F_y\) & \(F_z\)\tabularnewline
  1279. Case A & +10 & 0 & 0 & 0 & +20 & 0 & 0 & 0 & +30\tabularnewline
  1280. Case B & 0 & +15 & -15 & +25 & 0 & -5 & -15 & +25 & 0\tabularnewline
  1281. Case C & +10 & +15 & -15 & +25 & +20 & -5 & -15 & +25 &
  1282. +30\tabularnewline
  1283. \bottomrule
  1284. \end{longtable}
  1285. In the first case, the principal stresses are uniform and equal to the
  1286. three normal loads. As the forces are in Newton and the area of each
  1287. face of the cube is 1~mm\(^2\), the usual sorting leads to
  1288. \[
  1289. \sigma_{1A} = 30~\text{MPa}
  1290. \] \[
  1291. \sigma_{2A} = 20~\text{MPa}
  1292. \] \[
  1293. \sigma_{3A} = 10~\text{MPa}
  1294. \]
  1295. \begin{figure}
  1296. \centering
  1297. \subfloat[Case B, pure-shear
  1298. loads]{\includegraphics[width=0.48\textwidth,height=\textheight]{cube-shear.png}\label{fig:cube-shear}}~
  1299. \subfloat[Case C, normal plus shear
  1300. loads]{\includegraphics[width=0.48\textwidth,height=\textheight]{cube-full.png}\label{fig:cube-full}}
  1301. \caption{Spatial distribution of principal stress~3 for cases~B and~C.
  1302. If linearity applied, case~C would be equal to case~B plus a constant}
  1303. \label{fig:cube}
  1304. \end{figure}
  1305. In the second case, the principal stresses are not uniform and have a
  1306. non-trivial distribution. Indeed, the distribution of~\(\sigma_3\)
  1307. obtained by \href{https://www.caeplex.com}{CAEplex} is shown
  1308. in~fig.~\ref{fig:cube-shear}. Now, if we indeed were facing a fully
  1309. linear problem then the results of the sum of two inputs would be equal
  1310. to the sum of the individual inputs. And~fig.~\ref{fig:cube-full}, which
  1311. shows the principal stress~3 of case~C is not the result from case~B
  1312. plus any of the three constants from case~A. Had it been, the colour
  1313. distribution would be \emph{exactly} the same as the scale goes
  1314. automatically from the most negative value in blue to the most positive
  1315. value in red. And 7+30~\(\neq\) 33. Alas, it seems that there exists
  1316. some kind of unexpected non-linearity (the feared master-pet
  1317. interaction?) that prevents us from from fully splitting the problem
  1318. into simpler chunks.
  1319. \medskip
  1320. So what is the source of this unexpected non-linear effect in an
  1321. otherwise nice and friendly linear formulation? Well, probably you
  1322. already know it because after all it is almost high-school mathematics.
  1323. But I learned long after college, when I had to face a real engineering
  1324. problem and not just back-of-the-envelope pencil-and-paper trivial
  1325. exercises.
  1326. Recall that principal stresses are the eigenvalues of the stress tensor.
  1327. And the fact that in a linear elastic formulation the stress tensor of
  1328. case~C above is the sum of the individual stress tensors from cases~A
  1329. and B does not mean that their eigenvalues can be summed (think about
  1330. it!). Again, imagine the eigenvalues and eigenvectors of cases A \& B.
  1331. Got it? Good. Now imagine the eigenvalues and eigenvectors for case~C.
  1332. Should they sum up? No, they should not! Let us make another experiment,
  1333. this time with matrices using
  1334. \href{https://www.gnu.org/software/octave/}{Octave} or whatever other
  1335. matrix-friendly program you want (try to avoid black boxes as explained
  1336. in~sec.~\ref{sec:two-materials}).
  1337. First, let us create a 3 \(\times\) 3 random matrix \(R\) and then
  1338. multiply it by its transpose~\(R^T\) to obtain a symmetric matrix~\(A\)
  1339. (recall that the stress tensor from sec.~\ref{sec:tensor} is symmetric):
  1340. \begin{lstlisting}[language=Octave, style=octave]
  1341. octave> R = rand(3); A = R*R'
  1342. A =
  1343. 2.08711 1.40929 1.31108
  1344. 1.40929 1.32462 0.57570
  1345. 1.31108 0.57570 1.09657
  1346. \end{lstlisting}
  1347. Do the same to obtain another 3 \(\times\) 3 symmetric matrix~B:
  1348. \begin{lstlisting}[language=Octave, style=octave]
  1349. octave> R = rand(3); B = R*R'
  1350. B =
  1351. 1.02619 0.73457 0.56903
  1352. 0.73457 0.53386 0.37772
  1353. 0.56903 0.37772 0.53141
  1354. \end{lstlisting}
  1355. Now compute the sum of the eigenvalues first and then the eigenvalues of
  1356. the sum:
  1357. \begin{lstlisting}[language=Octave, style=octave]
  1358. octave> eig(A)+eig(B)
  1359. ans =
  1360. 0.0075113
  1361. 0.8248395
  1362. 5.7674016
  1363. octave> eig(A+B)
  1364. ans =
  1365. 0.049508
  1366. 0.782990
  1367. 5.767255
  1368. \end{lstlisting}
  1369. Did I convince you? More or less, right? The third eigenvalue seems to
  1370. fit. Let us not throw all of our beloved linearity away and dig in
  1371. further into the subject. There are still two important issues to
  1372. discuss which can be easily addressed using fresh-year linear algebra
  1373. (remember not to fear maths!). First of all, even though principal
  1374. stresses are not linear with respect to the sum they are linear with
  1375. respect to pure multiplication. Once more, think what happens to the the
  1376. eigenvalues and eigenvectors of a single stress tensor as all its
  1377. elements are scaled up or down by a real scalar. They are the same! So,
  1378. for example, the
  1379. \href{https://en.wikipedia.org/wiki/Von_Mises_yield_criterion}{Von~Mises
  1380. stress} (which is a combination of the principal stresses) of a beam
  1381. loaded with a force~\(\alpha \cdot \mathbf{F}\) is~\(\alpha\) times the
  1382. stress of the beam loaded with a force~\(\mathbf{F}\). Please test this
  1383. hypothesis by playing with your favourite FEM solver. Or even better,
  1384. take a look at the stress invariants \(I_1\), \(I_2\) and \(I_3\) (you
  1385. can search online or peek into the source code of
  1386. \href{https://www.seamplex.com/fino}{Fino}, grep for the routine called
  1387. \passthrough{\lstinline!fino\_compute\_principal\_stress()!}) and see
  1388. (using paper and pencil!) how they scale up if the individual elements
  1389. of the stress tensor are scaled by a real factor~\(\alpha\).
  1390. The other issue is that even though in general the eigenvalues of the
  1391. sum of two matrices are not the same as the eigenvalues of the matrix
  1392. sum, there are some cases when they are. In effect, if two
  1393. matrices~\(A\) and~\(B\) commute, i.e.~their product is commutative
  1394. \[
  1395. A \cdot B = B \cdot A
  1396. \] then the sums (in plural because there are three eigenvalues) of
  1397. their eigenvalues are equal to the eigenvalues of the sums. In order for
  1398. this to happen, both~\(A\) and~\(B\) need to be diagonalisable using the
  1399. same basis. That is to say, the diagonalising matrix~\(P\) such that
  1400. \(P^{-1} A P\) is diagonal should be the same that
  1401. renders~\(P^{-1} B P\) also diagonal. What does this mechanically mean?
  1402. Well, if case~A has loads that are somehow ``independent'' from the ones
  1403. in case~B, then the principal stresses of the combination might be equal
  1404. to the sum of the individual principal stresses. A notable case is for
  1405. example a beam that is loaded vertically in case~A and horizontally in
  1406. case~B. I dare you to grab your FEM program one more time, run a test
  1407. and picture the eigenvalues and eigenvectors of the three cases in your
  1408. head.
  1409. \medskip
  1410. The moral of this fable is that if we have a case that is the
  1411. combination of two other simpler cases (say one with only surface loads
  1412. and one with only volumetric loads), in general we cannot just add the
  1413. principal stresses (or Von Mises) of two cases and expect to obtain a
  1414. correct answer. We have to solve the full case again (both the surface
  1415. and the volumetric loads at the same time). In case we are stubborn
  1416. enough and still want to stick to solving the cases separately, there is
  1417. a trick we can resort to. Instead of summing principal stresses, what we
  1418. can do is to sum either displacements or the individual stress
  1419. components, which are fully linear. So we might pre-deform (or
  1420. pre-stress) case B with the results from case A and then expect the FEM
  1421. program to obtain the correct stresses for the combined case. However,
  1422. this scheme is actually far more complex than just solving the combined
  1423. case in a single run and it also needs an educated guess and/or trial
  1424. and error to know at what time the pre-deformation or pre-stressing
  1425. should be applied to take into account the seismic load.
  1426. \hypertarget{asme-stress-linearisation-not-linearity}{%
  1427. \subsection{ASME stress linearisation (not
  1428. linearity!)}\label{asme-stress-linearisation-not-linearity}}
  1429. After discussing linearity, let us now dig into linearisation. The name
  1430. is similar but these two animals are very different beasts. We said
  1431. in~sec.~\ref{sec:case} that the ASME Boiler and Pressure Vessel Code was
  1432. born long before modern finite-elements methods were developed and of
  1433. course being massively available for general engineering analysis
  1434. (democratised?). Yet the code provides a comprehensive, sound and, more
  1435. importantly, a widely and commonly-accepted body of knowledge as for the
  1436. regulatory authorities to require its enforcement to nuclear plant
  1437. owners. One of the main issues of the ASME code refers to what is known
  1438. as ``membrane'' and ``bending'' stresses. These are defined in
  1439. \href{https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code\#ASME_BPVC_Section_VIII_-_Rules_for_Construction_of_Pressure_Vessels}{section~VIII}
  1440. annex 5-A, although they are widely used in other sections, particularly
  1441. \href{https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code\#ASME_BPVC_Section_III_-_Rules_for_Construction_of_Nuclear_Facility_Components}{section~III}.
  1442. Briefly, they give the zeroth-order (membrane) and first-order (bending)
  1443. \href{https://en.wikipedia.org/wiki/Moment_(mathematics)}{moments} (in
  1444. the statistical sense) of the stress distribution along a so-called
  1445. Stress Classification Line or SCL, which should be chosen depending on
  1446. the type of problem under analysis.
  1447. The computation of these membrane and bending stresses are called
  1448. \href{https://www.ramsay-maunder.co.uk/knowledge-base/technical-notes/stress-linearisation-for-practising-engineers/}{``stress
  1449. linearisation''} because (I am guessing) it is like computing the
  1450. \href{https://en.wikipedia.org/wiki/Taylor_series}{Taylor expansion} (or
  1451. for the case, expansion in
  1452. \href{https://en.wikipedia.org/wiki/Legendre_polynomials}{Legendre
  1453. polynomials}) of an arbitrary stress distribution along a line, and
  1454. retaining the first two terms. That is to say, to obtain a linear
  1455. approximation. More (optional) mathematical details below.
  1456. So what about the SCLs? Well, the ASME standard says that they are lines
  1457. that go through a wall of the pipe (or vessel or pump, which is what the
  1458. ASME code is for) from the inside to the outside and ought to be normal
  1459. to the iso-stress curves. Stop. Picture yourself a stress field, draw
  1460. the iso-stress curves (those would be the lines that have the same
  1461. colour in your picture) and then imagine a set of lines that travel in a
  1462. perpendicular direction to them. Finally, choose the one that seems the
  1463. prettiest (which most of the time is the one that seems the easiest).
  1464. There you go! You have an SCL. But there is a catch. So far, we have
  1465. referred to a generic concept of ``stress.'' Which of the several
  1466. stresses out there should you picture? One of the three normals, the
  1467. three shear, Von~Mises, Tresca? Well, actually you will have to imagine
  1468. tensors instead of scalars. And there might not be such a thing as
  1469. ``iso-stress'' curves, let alone normal directions. So pick any radial
  1470. straight line through the pipe wall at a location that seems relevant
  1471. and now you are done. In our case study, there will be a few different
  1472. locations around the material interfaces where high stresses due to
  1473. differential thermal expansion are expected to occur.
  1474. \hypertarget{sec:infinite-pipe-fem}{%
  1475. \section{The infinite pipe revisited after
  1476. college}\label{sec:infinite-pipe-fem}}
  1477. Let us now make a (tiny) step from the general and almost philosophical
  1478. subject from the last section down to the particular case study, and
  1479. reconsider the infinite pressurised pipe once again. It is time to solve
  1480. the problem with a computer using finite elements and to obtain some
  1481. funny coloured pictures instead of just equations.
  1482. The first thing that has to be said is that, as with any interesting
  1483. problem, there are literally hundreds or different ways of solving it,
  1484. each of them throwing particular conclusions. For example, one can:
  1485. \begin{enumerate}
  1486. \def\labelenumi{\arabic{enumi}.}
  1487. \tightlist
  1488. \item
  1489. solve a real 3D problem or a 2D axi-symmetric case (or even a 1D case
  1490. using the
  1491. \href{https://en.wikipedia.org/wiki/Collocation_method}{collocation
  1492. method} to solve the radial dependence),
  1493. \item
  1494. have a full cylindrical geometry or just a half (180º), or a quarter
  1495. (90º), or a thin slice (a small amount of degrees),
  1496. \item
  1497. use a structured or an unstructured grid,
  1498. \item
  1499. uniformly or locally-refine the mesh (with several choices of
  1500. refinement),
  1501. \item
  1502. use first or second-order (or higher) elements,
  1503. \item
  1504. use tetrahedra or hexahedra,
  1505. \item
  1506. in the case of second-order hexahedra, use complete (i.e.~27-node
  1507. hexahedron) or incomplete (i.e.~20-node hexahedron) elements,
  1508. \item
  1509. have different mesh sizes from very coarse to very fine,
  1510. \item
  1511. solve the same problem in a few different solvers,
  1512. \item
  1513. etc.
  1514. \end{enumerate}
  1515. \begin{figure}
  1516. \centering
  1517. \subfloat[Structured second-order incomplete
  1518. hexahedra]{\includegraphics[width=0.48\textwidth,height=\textheight]{quarter-struct.png}\label{fig:cube-struct}}~
  1519. \subfloat[Unstructured second-order
  1520. tetrahedra]{\includegraphics[width=0.48\textwidth,height=\textheight]{quarter-caeplex.png}\label{fig:quarter-caeplex}}
  1521. \caption{Two of the hundreds of different ways the infinite pressurised
  1522. pipe can be solved using FEM. The axial displacement at the ends is set
  1523. to zero, leading to a
  1524. \href{https://en.wikipedia.org/wiki/Plane_stress\#Plane_strain_(strain_matrix)}{plane-strain}
  1525. condition}
  1526. \label{fig:quarter}
  1527. \end{figure}
  1528. You can get both the exponential nature of each added bullet and how
  1529. easily we can add new further choices to solve a FEM problem. And each
  1530. of these choices will reveal you something about the nature of either
  1531. the mechanical problem or the numerical solution. It is not possible to
  1532. teach any possible lesson from every outcome in college, so you will
  1533. have to learn them by yourself getting your hands at them. I have
  1534. already tried to address the particular case of the infinite pipe in a
  1535. \href{https://www.seamplex.com/fino/doc/pipe-linearized/}{recent
  1536. report}\footnote{\url{https://www.seamplex.com/fino/doc/pipe-linearized/}}
  1537. that is worth reading before carrying on with this article. The main
  1538. conclusions of the report are:
  1539. \begin{itemize}
  1540. \tightlist
  1541. \item
  1542. For the same number of elements, second-order grids need more nodes
  1543. than linear ones, although they can better represent curved
  1544. geometries.
  1545. \item
  1546. The discretised problem size depends on the number of nodes and not on
  1547. the number of elements---more on the subject below
  1548. in~sec.~\ref{sec:elements-nodes}.
  1549. \item
  1550. The three stress distributions computed with the finite-element give
  1551. far more reasonable results for the second-order case than for the
  1552. first-order grid. This is qualitatively explained by the fact that
  1553. first-order tetrahedra have uniform derivatives and such the elements
  1554. located in both the external and external faces represent the stresses
  1555. not at the actual faces but at the barycentre of the elements.
  1556. \item
  1557. Membrane stresses converge well for both the first and second-order
  1558. cases because they represent a zeroth-order moment of the stress
  1559. distribution and the excess and defect errors committed by the
  1560. internal and external elements approximately cancel out.
  1561. \item
  1562. Membrane plus bending stresses converge very poorly with linear
  1563. elements because the excess and defect errors do not cancel out
  1564. because it is a first-order moment of the stress distribution.
  1565. \item
  1566. The computational effort to solve a given problem, namely the CPU time
  1567. and the needed RAM (fig.~\ref{fig:error-vs-cpu}) depend non-linearly
  1568. on various factors, but the most important one is the problem size
  1569. which is three times the number of nodes in the grid---more on the
  1570. subject below in~sec.~\ref{sec:elements-nodes}.
  1571. \item
  1572. The error with respect to the analytical solutions as a function of
  1573. the CPU time needed to compute the membrane stress is similar for both
  1574. first and second-order grids. But for the computation of the membrane
  1575. plus bending stress (fig.~\ref{fig:error-MB-vs-cpu}), first-order
  1576. grids give very poor results compared to second-order grids for the
  1577. same CPU time.
  1578. \end{itemize}
  1579. \begin{figure}
  1580. \centering
  1581. \subfloat[Membrane
  1582. \(\text{M}\)]{\includegraphics[width=0.49\textwidth,height=\textheight]{error-M-vs-cpu-small.svg}\label{fig:error-M-vs-cpu}}
  1583. \subfloat[Membrane plus bending
  1584. \(\text{MB}\)]{\includegraphics[width=0.49\textwidth,height=\textheight]{error-MB-vs-cpu-small.svg}\label{fig:error-MB-vs-cpu}}
  1585. \caption{Error in the computation of the linearised stresses vs.~CPU
  1586. time needed to solve the infinite pipe problem using the finite element
  1587. method}
  1588. \label{fig:error-vs-cpu}
  1589. \end{figure}
  1590. An additional note should be added. The FEM solution, which not only
  1591. gives the nodal displacements but also a method to interpolate these
  1592. values inside the elements, does not fully satisfy the original
  1593. equilibrium equations at every point (i.e.~the strong formulation). It
  1594. is an approximation to the solution of the
  1595. \href{https://en.wikipedia.org/wiki/Weak_formulation}{weak formulation}
  1596. that is close (measured in the vector space spanned by the
  1597. \href{https://www.quora.com/What-is-a-shape-function-in-FEM}{shape
  1598. functions}) to the real solution. Mechanically, this means that the FEM
  1599. solution leads only to nodal equilibrium but not pointwise equilibrium.
  1600. \hypertarget{sec:elements-nodes}{%
  1601. \subsection{Elements, nodes and CPU}\label{sec:elements-nodes}}
  1602. The last two bullets above lead to an issue that has come many times
  1603. when discussing the issue of convergence with respect to the mesh size
  1604. with other colleagues. There apparently exists a common misunderstanding
  1605. that the number of elements is the main parameter that defines how
  1606. complex a FEM model is. This is strange, because even in college we are
  1607. taught that the most important parameter is the \emph{size} of the
  1608. stiffness matrix, which is three times (for 3D problems with the
  1609. \href{http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf}{displacement-based
  1610. formulation} formulation) the number of \emph{nodes}.
  1611. Let us pretend we are given the task of comparing two different FEM
  1612. programs. So we solve the same problem in each one and see what the
  1613. results are. I have seen many times the following situation: the user
  1614. loads the same geometry in both programs, run the meshing step in both
  1615. of them so that the number of elements is more or less them same
  1616. (because she wants to be ``fair'') and then solves the problem. Voilà!
  1617. It turns out that the first program defaults to first-order elements and
  1618. the second one to second-order elements. So if the first one takes one
  1619. minute to obtain a solution, the second one should take nearly four
  1620. minutes. How come that is a fair comparison? Or it might be the case
  1621. that one program uses tetrahedra while the other one defaults to
  1622. hexahedra. Or any other combination. In general, there is no single
  1623. problem parameter that can be fixed to have a ``fair'' comparison, but
  1624. if there was, it would definitely be the number of \emph{nodes} rather
  1625. than the number of \emph{elements}. Let us see why.
  1626. \medskip
  1627. Fire up your imagination again and make a
  1628. \href{https://en.wikipedia.org/wiki/Thought_experiment}{thought
  1629. experiment} in which you have to compare say a traditional FEM approach
  1630. with a new radical formulation that a crazy mathematician from central
  1631. Asia came up with claiming it is a far superior theory than our beloved
  1632. finite elements (or for the case, any other formulation
  1633. from~sec.~\ref{sec:formulations}). How can we tell if the guy is really
  1634. a genius or purely nuts? Well, we could solve a problem which we can
  1635. compute the analytical solution (for example the infinite pipe
  1636. from~sec.~\ref{sec:infinite-pipe}) first with the traditional method
  1637. (sec.~\ref{sec:infinite-pipe-fem}) and then with the program which uses
  1638. the new formulation. Say the traditional FEM gives an error between 1\%
  1639. and 5\% running in a few seconds depending on the mesh size. The new
  1640. program from the crazy guy takes no input parameters and gives an error
  1641. of 0.1\%, but it takes one week of computation to produce a result.
  1642. Would you say that the new radical formulation is really far superior?
  1643. What I would do is to run a FEM program that takes also one week to
  1644. compute, and only then compare the errors. So that is
  1645. why~fig.~\ref{fig:error-vs-cpu} uses the CPU time in the abscissas
  1646. rather than the number of elements to compare first and second-order
  1647. formulations.
  1648. To fix ideas, let us stick to a linear elastic FEM problem. The CPU time
  1649. needed to completely solve such a problem can be divided into four
  1650. steps:
  1651. \begin{enumerate}
  1652. \def\labelenumi{\arabic{enumi}.}
  1653. \tightlist
  1654. \item
  1655. meshing the continuous geometry,
  1656. \item
  1657. building the stiffness matrix,
  1658. \item
  1659. solving the equations to obtain the displacements, and
  1660. \item
  1661. computing the stress from the displacements.
  1662. \end{enumerate}
  1663. \hypertarget{sec:meshing}{%
  1664. \subsubsection{Meshing}\label{sec:meshing}}
  1665. The effort needed to compute a discretisation of a continuous domain
  1666. depends on the meshing algorithm. But nearly all meshers first put nodes
  1667. on the edges (1D), then on the surfaces (2D) and finally on the volumes
  1668. (3D). Afterwards, they join the nodes to create the elements. Depending
  1669. on the topology (i.e.~tetrahedra, hexahedra, pyramids, etc) and the
  1670. order (i.e.~linear, quadratic, etc.) this last step will vary, but the
  1671. main driver here is the number of nodes. Try measuring the time needed
  1672. to obtain grids of different sizes and kinds with your mesher.
  1673. \hypertarget{sec:building}{%
  1674. \subsubsection{Building}\label{sec:building}}
  1675. The
  1676. \href{\%5Bstiffness\%20matrix\%5D(https://en.wikipedia.org/wiki/Stiffness_matrix)}{stiffness
  1677. matrix} is a square matrix that has~\(NG\) rows and~\(NG\) columns where
  1678. \(N\) is the number of nodes and \(G\) is the number of degrees of
  1679. freedom per node, which for three-dimensional problems is \(G=3\). But
  1680. even though FEM problems have to build a \(NG\times NG\) matrix, they
  1681. usually sweep through elements rather than through nodes, and then
  1682. scatter the elements of the elemental matrices to the global stiffness
  1683. matrix. This is called the assembly of the matrix. So the effort needed
  1684. here depends again on how the solver is programmed, but it is a
  1685. combination of the number of elements and the number of nodes.
  1686. For a fixed number of nodes, first-order grids have far more elements
  1687. than second-order grids because in the first case each node has to be a
  1688. vertex while in the latter half will be vertexes and half will be
  1689. located at the edges (think!). So the sweep is larger for linear grids.
  1690. But the effort needed to integrate quadratic shape functions is greater
  1691. than for the linear case, so these two effects almost cancel out.
  1692. \hypertarget{sec:solving}{%
  1693. \subsubsection{Solving}\label{sec:solving}}
  1694. The linear FEM problem leads of course of a system of~\(NG\) linear
  1695. equations, cast in matrix form by the stiffness matrix~\(K\) and a
  1696. right-hand size vector~\(\mathbf{b}\) containing the loads (both
  1697. volumetric and the ones at the surfaces from the boundary conditions):
  1698. \begin{equation}K \cdot \mathbf{u} = \mathbf{b}\label{eq:kub}\end{equation}
  1699. The objective of the solver is to find the vector~\(\mathbf{u}\) of
  1700. nodal displacements that satisfy the momentum equilibrium. Luckily
  1701. (well, not purely by chance but by design) the stiffness matrix is
  1702. almost empty. It is called a
  1703. \href{https://en.wikipedia.org/wiki/Sparse_matrix}{sparse matrix}
  1704. because most of its elements are zero. If it was fully filled, then a
  1705. problem with just 100k nodes would need more than 700~Gb of RAM just to
  1706. store the matrix elements, rendering FEM as practically impossible. And
  1707. even though the stiffness matrix is sparse, its inverse is not so we
  1708. cannot solve the elastic problem by ``inverting'' the matrix. Particular
  1709. methods to represent and more importantly to solve linear systems
  1710. involving these kind of matrices have been developed, which are the
  1711. methods used by finite-element (and the other finite-cousins) programs.
  1712. In general there are two approaches
  1713. \begin{itemize}
  1714. \tightlist
  1715. \item
  1716. \href{https://en.wikipedia.org/wiki/Frontal_solver}{direct}, where a
  1717. rather complex algorithm for building partial decompositions
  1718. (\href{https://en.wikipedia.org/wiki/LU_decomposition}{LU},
  1719. \href{https://en.wikipedia.org/wiki/QR_decomposition}{QR},
  1720. \href{https://en.wikipedia.org/wiki/Cholesky_decomposition}{Cholesky},
  1721. etc.) are used in order to avoid needing aforementioned the 700~Gb of
  1722. RAM, or
  1723. \item
  1724. \href{https://en.wikipedia.org/wiki/Iterative_method}{iterative},
  1725. meaning that at each step of the iteration the numerical answer
  1726. improves,
  1727. i.e.~\(\left|K \cdot \mathbf{u} - \mathbf{b}\right| \rightarrow 0\).
  1728. Even though in particular for
  1729. \href{https://en.wikipedia.org/wiki/Krylov_subspace}{Krylov-subspace}
  1730. methods, \(K \cdot \mathbf{u} - \mathbf{b} = \mathbf{0}\) after~\(NG\)
  1731. steps, a few dozen of iterations are usually enough to assume that the
  1732. problem is effectively solved (i.e.~the residual is less than a
  1733. certain threshold).
  1734. \end{itemize}
  1735. So the question is\ldots{} how hard is to solve a sparse linear problem?
  1736. Well, the number of iterations and the complexity of the partial
  1737. decompositions needed to attain convergence depends on the
  1738. \href{https://en.wikipedia.org/wiki/Spectral_radius}{spectral radius} of
  1739. the stiffness matrix~\(K\), which in turns depend on the elements
  1740. themselves, which depend mainly on the parameters of the elastic
  1741. problem. But it also depends on how sparse~\(K\) is, which changes with
  1742. the element topology and order. Fig.~\ref{fig:test} shows the structure
  1743. of two stiffness matrices for the same linear elastic problem
  1744. discretised using exactly the same number of nodes but using linear and
  1745. quadratic elements respectively. The matrices have the same size
  1746. (because the number of nodes is the same) but the former is more sparse
  1747. than the latter. Hence, it would be harder (in computational terms of
  1748. CPU and RAM) to solve the second-order case.
  1749. \begin{figure}
  1750. \centering
  1751. \subfloat[42k first-order
  1752. elements]{\includegraphics[width=0.48\textwidth,height=\textheight]{test1.png}\label{fig:test1}}~
  1753. \subfloat[15k second-order
  1754. elements]{\includegraphics[width=0.48\textwidth,height=\textheight]{test2.png}\label{fig:test2}}
  1755. \caption{Structure of the stiffness matrices for the same FEM problem
  1756. with 10k nodes. Red (blue) are positive (negative) elements}
  1757. \label{fig:test}
  1758. \end{figure}
  1759. In a similar way, different types of elements will give rise to
  1760. different sparsity patterns which change the effort needed to solve the
  1761. problem. In any case, the base parameter that controls the problem size
  1762. and thus provides a basic indicator of the level of difficulty the
  1763. problem poses is the number of nodes. Again, not the number of elements,
  1764. as the solver does not even know if the matrix comes from FEM, FVM or
  1765. FDM.
  1766. \hypertarget{sec:stress-computation}{%
  1767. \subsubsection{Stress computation}\label{sec:stress-computation}}
  1768. In the
  1769. \href{http://web.mit.edu/kjb/www/Books/FEP_2nd_Edition_4th_Printing.pdf}{displacement-based
  1770. formulation}, the solver finds the
  1771. displacements~\(\mathbf{u}(\mathbf{x})\) that satisfy eq.~\ref{eq:kub},
  1772. which are the principal unknowns. But from~sec.~\ref{sec:tensor} we know
  1773. that we actually have solved the problem after we have the stress
  1774. tensors at every location~\(\mathbf{x}\), which are the secondary
  1775. unknowns. So the FEM program has to compute the stresses out of the
  1776. displacements. It first computes the strain tensor, which is composed of
  1777. the nine partial derivatives of the three displacements with respect to
  1778. the three coordinates. Then it computes the stress tensor (atready
  1779. introduced in~sec.~\ref{sec:tensor}) using the materials'
  1780. \href{https://en.wikipedia.org/wiki/Constitutive_equation\#Stress_and_strain}{strain-stress
  1781. constitutive equations} which involve the Young Modulus~\(E\), the
  1782. Poisson ratio~\(\nu\) and the spatial derivatives of the
  1783. displacements~\(\mathbf{u}=[u,v,w]\). This sounds easy, as we (well, the
  1784. solver) knows what the shape functions are for each element and then it
  1785. is a matter of computing nine derivatives and multiplying by something
  1786. involving~\(E\) and~\(\nu\). Yes, but there is a catch. As the
  1787. displacements~\(u\), \(v\) and~\(w\) are computed at the nodes, we would
  1788. like to also have the stresses at the nodes. However,
  1789. \begin{enumerate}
  1790. \def\labelenumi{\roman{enumi}.}
  1791. \tightlist
  1792. \item
  1793. the displacements~\(\mathbf{u}(\mathbf{x})\) are not differentiable at
  1794. the nodes, and
  1795. \item
  1796. if the node belongs to a material interface, neither~\(E\) nor~\(\nu\)
  1797. are defined.
  1798. \end{enumerate}
  1799. Let us focus on the first item and leave the second one for a separate
  1800. discussion in~sec.~\ref{sec:two-materials}. The finite-element method
  1801. computes the principal unknowns at the nodes and then says ``interpolate
  1802. the nodal values inside each element using its shape functions.'' It
  1803. sounds (and it is) great, but a node belongs to more than one element
  1804. (you can now imagine a 3D mesh composed of tetrahedra but you can also
  1805. simplify your mind pictures by thinking in just one dimension: a node is
  1806. shared by two segments). So the slope of the interpolation when we move
  1807. from the node into one element might (and it never is) the same as when
  1808. we move from the same node into another element. Stop and think. Now let
  1809. us take a look at fig.~\ref{fig:derivatives}. It shows four
  1810. finite-element solutions for a certain problem that has a cosine as the
  1811. analytical solution. All the cases use eight elements: either uniformly
  1812. distributed along the domain \(x \in [-1:+1]\) or only one element in
  1813. the negative half and the remaining seven evenly distributed between
  1814. zero and one, configuring a rather extreme non-uniform grid to better
  1815. illustrate the point. Both first and second-order elements were used for
  1816. each mesh, hence obtaining four combinations. We know the derivative of
  1817. the analytical solution is zero at \(x=0\). In the uniform cases of
  1818. figs.~\ref{fig:slab-1-0}, \ref{fig:slab-2-0}, if we took the average of
  1819. the derivatives at each side of the origin we would obtain zero as
  1820. expected. But in the non-uniform
  1821. cases~figs.~\ref{fig:slab-1-1}, \ref{fig:slab-2-1}, plain averaging
  1822. fails even in the quadratic case.
  1823. \begin{figure}
  1824. \centering
  1825. \subfloat[]{\includegraphics[width=0.48\textwidth,height=\textheight]{slab-1-0.svg}\label{fig:slab-1-0}}~
  1826. \subfloat[]{\includegraphics[width=0.48\textwidth,height=\textheight]{slab-1-1.svg}\label{fig:slab-1-1}}~
  1827. \subfloat[]{\includegraphics[width=0.48\textwidth,height=\textheight]{slab-2-0.svg}\label{fig:slab-2-0}}~
  1828. \subfloat[]{\includegraphics[width=0.48\textwidth,height=\textheight]{slab-2-1.svg}\label{fig:slab-2-1}}~
  1829. \caption{Solution of a problem using FEM using eight linear/quadratic
  1830. uniform/non-uniform elements. The reference solution is a cosine. Plain
  1831. averaging works for uniform grids but fails in the non-uniform cases.}
  1832. \label{fig:derivatives}
  1833. \end{figure}
  1834. Now proceed to picturing the general three-dimensional cases with
  1835. unstructured tetrahedra. What is the derivative of the
  1836. displacement~\(v\) in the~\(y\) direction with respect to the \(z\)
  1837. coordinate at a certain node shared by many tetrahedra? What if one of
  1838. the elements is very small? Or it has a very bad quality (i.e.~it is
  1839. deformed in one direction) and its derivatives cannot be trusted? Should
  1840. we still average? Should this average be weighted? How?
  1841. Detailed mathematics show that the location where the derivatives of the
  1842. interpolated displacements are closer to the real (i.e.~the analytical
  1843. ones in problems that have it) solution are the elements'
  1844. \href{https://en.wikipedia.org/wiki/Gaussian_quadrature}{Gauss points}.
  1845. Even better, the material properties at these points are continuous
  1846. (they are usually uniform but they can depend on temperature for
  1847. example) because, unless we are using weird elements, there are no
  1848. material interfaces inside elements. But how to manage a set of stresses
  1849. given at the Gauss points instead of at the nodes? Should we use one
  1850. mesh for the input and another one for the output? What happens when we
  1851. need to know the stresses on a surface and not just in the bulk of the
  1852. solid? There are still no one-size-fits-all answers. There is a very
  1853. interesting
  1854. \href{http://tor-eng.com/2017/11/practical-tips-dealing-stress-singularities/}{blog
  1855. post} by Nick Stevens that addresses the issue of stresses computed at
  1856. sharp corners. What does your favourite FEM program do with such a case?
  1857. In any case, this step takes a non-negligible amount of time. The
  1858. most-common approach, i.e.~the node-averaging method is driven mainly by
  1859. the number of nodes of course. So all-in-all, these are the reasons to
  1860. use the number of nodes instead of the numbers of elements as a basic
  1861. parameter to measure the complexity of a FEM problem.
  1862. \hypertarget{adding-complexity-the-truth-is-out-there}{%
  1863. \section{Adding complexity: the truth is out
  1864. there}\label{adding-complexity-the-truth-is-out-there}}
  1865. Let us review some issues that appear when solving our case study and
  1866. that might not have been thoroughly addressed back during our college
  1867. days.
  1868. \hypertarget{sec:two-materials}{%
  1869. \subsection{Two (or more) materials}\label{sec:two-materials}}
  1870. The main issue with fatigue in nuclear piping during operational
  1871. transients is that at the welds between two materials with different
  1872. thermal expansion coefficients there can appear potentially-high
  1873. stresses during temperature changes. If these transients are repeated
  1874. cyclically, fatigue may occur. We already have risen a warning flag
  1875. about stresses at material interfaces in~sec.~\ref{sec:two-materials}.
  1876. Besides all the open questions about computing stresses at nodes, this
  1877. case also adds the fact that the material properties (say the Young
  1878. Modulus~\(E\)) is different in the elements that are at each side of the
  1879. interface.
  1880. \begin{figure}
  1881. \centering
  1882. \subfloat[Surface grid showing the fixed face (magenta), the load face
  1883. (green) and the shared face in the
  1884. middle]{\includegraphics[width=0.48\textwidth,height=\textheight]{two-cubes2.png}\label{fig:two-cubes2}}~
  1885. \subfloat[Warped displacements and Von~Mises
  1886. stresses]{\includegraphics[width=0.48\textwidth,height=\textheight]{two-cubes4.png}\label{fig:two-cubes4}}
  1887. \caption{Two cubes of different materials (the one in the left soft, the
  1888. one in the right hard) share a face and a pressure is applied at the
  1889. right-most face}
  1890. \label{fig:two-cubes}
  1891. \end{figure}
  1892. To simplify the discussion that follows, let us replace for one moment
  1893. the full \(3 \times 3\) tensor and the nine partial derivatives of the
  1894. displacement by just one strain~\(\epsilon\) and let the
  1895. \href{https://en.wikipedia.org/wiki/Elasticity_(physics)\#Linear_elasticity}{linear
  1896. elastic strain-stress relationship} to be the simple scalar expression
  1897. \[
  1898. \sigma = E \cdot \epsilon
  1899. \]
  1900. Faced with the problem of computing the stress~\(\sigma\) at one node
  1901. shared by many elements, we might:
  1902. \begin{enumerate}
  1903. \def\labelenumi{\arabic{enumi}.}
  1904. \tightlist
  1905. \item
  1906. compute the (weighted?) averages~\(\langle E \rangle\) and
  1907. \(\langle \epsilon \rangle\) and then compute the stress
  1908. as~\(\langle \sigma \rangle = \langle E \rangle \cdot \langle \epsilon \rangle\).
  1909. This would be like having a meta-material at the interface with
  1910. average properties, or
  1911. \item
  1912. compute the stress as the (weighted?) average of the product
  1913. \(E \cdot \epsilon\) in each
  1914. node~\(\langle \sigma \rangle = \langle E \cdot \epsilon \rangle\).
  1915. This would be like forcing a non-differentiable function to behave
  1916. smoothly, or
  1917. \item
  1918. internally duplicate the nodes at the interface and compute one stress
  1919. for each material. This would result in a stress distribution which is
  1920. not a real function because the same location~\(\mathbf{x}\) will be
  1921. associated to more than one stress value, or
  1922. \item
  1923. duplicate the surface elements at the interfaces and solve the problem
  1924. using a contact formulation. This would render the problem non-linear
  1925. and add the complexity of having to find appropriate penalty
  1926. coefficients.
  1927. \end{enumerate}
  1928. There might be other choices as well. Do you know what your favourite
  1929. FEM program does? Now follow up with these questions:
  1930. \begin{enumerate}
  1931. \def\labelenumi{\alph{enumi}.}
  1932. \tightlist
  1933. \item
  1934. Does the manual say?
  1935. \item
  1936. Does it tell you the details like how it weights the averages?
  1937. \item
  1938. Does it discard values that are beyond a number of standard deviations
  1939. away?
  1940. \item
  1941. How many standard deviations?
  1942. \item
  1943. \ldots{}
  1944. \end{enumerate}
  1945. You can still add a lot of questions that you should be having right
  1946. now. If you cannot get a clear answer for at least one of them, then
  1947. start to worry. After you do, add the following question:
  1948. \begin{quote}
  1949. Do you believe your favourite FEM program's manual?
  1950. \end{quote}
  1951. What we as responsible engineers who have to sign a report stating that
  1952. a nuclear power plant will not collapse due to fatigue in its pipes, is
  1953. to fully understand what is going on with our stresses.
  1954. \href{https://en.wikipedia.org/wiki/Richard_Stallman}{Richard Stallman}
  1955. says that the best way to solve a problem is to avoid it in the first
  1956. place. In this case, we should avoid having to trust a written manual
  1957. and rely on software whose
  1958. \href{https://en.wikipedia.org/wiki/Source_code}{source code} is
  1959. available. What we need is the capacity (RMS calls it \emph{freedom}) to
  1960. be able to see the detailed steps performed by the program so we can
  1961. answer any question we (or other people) might have.
  1962. Without resorting into philosophical digressions about the difference
  1963. between
  1964. \href{https://en.wikipedia.org/wiki/Free_and_open-source_software}{free
  1965. and open-source software} (not because it is not worth it, but because
  1966. it would take a whole book), the programs that make their source code
  1967. available for their users are called
  1968. \href{https://en.wikipedia.org/wiki/Open-source_software}{open-source
  1969. software}. If the users can also modify and re-distribute the modified
  1970. versions, they are called
  1971. \href{https://www.fsf.org/about/what-is-free-software}{free software}.
  1972. Note that the important concept here is freedom, not price. In Spanish
  1973. (my native language) it would have been easier because there are two
  1974. separate words for free as in freedom (``libre'') and for free as in
  1975. price (``gratis'').
  1976. In effect, a couple of years ago Angus Ramsay noted
  1977. \href{https://www.ramsay-maunder.co.uk/knowledge-base/technical-notes/asmeansys-potential-issue-with-thermal-expansion-calculations/}{a
  1978. weird behaviour} in the results given by a certain commercial
  1979. \href{https://en.wikipedia.org/wiki/Proprietary_software}{non-free} FEA
  1980. software regarding the handling of expansion coefficients from ASME
  1981. data. To understand what was going on, Angus and I had to guess what the
  1982. program was doing to
  1983. \href{https://www.seamplex.com/docs/SP-WA-17-TN-F38B-A.pdf}{reproduce
  1984. the allegedly weird results}. Finally, it was a
  1985. \href{https://www.ramsay-maunder.co.uk/knowledge-base/technical-notes/accuracy-of-thermal-expansion-properties-in-asme-bpv-code/}{matter
  1986. how the data was rounded up to be presented in a paper table} rather
  1987. than a programming flaw. Nevertheless, we were lucky our guesses lead us
  1988. to a reasonable answer. If we had access to the program's source code,
  1989. we could have thoroughly analysed the issue in a more efficient way.
  1990. Sure, we might not have the same programming skills the original authors
  1991. of the software have, but if it had been
  1992. \href{https://en.wikipedia.org/wiki/Free_software}{free software} we
  1993. would have had the \emph{freedom} to hire a programmer to help us out.
  1994. That is what \emph{free} means. In
  1995. \href{https://en.wikipedia.org/wiki/Eric_S._Raymond}{Eric Raymond}'s
  1996. words,
  1997. \href{http://www.catb.org/~esr/writings/cathedral-bazaar/}{``given
  1998. enough eyeballs, all bugs are shallow.''} This is rather important in
  1999. engineering software where
  2000. \href{https://en.wikipedia.org/wiki/Software_verification_and_validation}{verification
  2001. and validation} is a must, especially in regulated fields like the
  2002. nuclear industry. First, think how can a piece of software be verified
  2003. if the source code is not available for independent analysis. And then,
  2004. ask yourself another question:
  2005. \begin{quote}
  2006. Do you trust your favourite FEM program?
  2007. \end{quote}
  2008. Back to the two-material problem, all the discussion above
  2009. in~sec.~\ref{sec:two-materials} about non-continuous derivatives applies
  2010. to a sharp abrupt interface. In the study case the junctions are welded
  2011. so there is a
  2012. \href{https://en.wikipedia.org/wiki/Heat-affected_zone}{heat-affected
  2013. zone} with changes in the material micro structure. Therefore, there
  2014. exists a smooth transition from the mechanical properties of one
  2015. material to the other one in a way that is very hard to predict and to
  2016. model. In principle, the assumption of a sharp interface is conservative
  2017. (in the sense of~sec.~\ref{sec:kinds}). There cannot be an SCL exactly
  2018. on a material interface so there should be at least two SCLs, one at
  2019. each side of the junctions as~fig.~\ref{fig:weldolet-scls} illustrates.
  2020. The actual distance would have to be determined first as an educated
  2021. guess, then via trial and error and finally in accordance with the
  2022. regulator.
  2023. \hypertarget{sec:break}{%
  2024. \subsection{Bake, shake and break}\label{sec:break}}
  2025. A fellow mechanical engineer who went to the same high school I did, who
  2026. went to the same engineering school I did and who worked at the same
  2027. company I did, but who earned a PhD in Norway once told me two
  2028. interesting things about finite-elements graduate courses. First, that
  2029. in Trondheim the classes were taught by faculty from the the mathematics
  2030. department rather than from the mechanical engineering department. It
  2031. made complete sense to me, as I always have thought finite elements
  2032. mainly as a maths subject. And even though engineers might know some
  2033. maths, it is nothing compared to actual mathematicians. Secondly, that
  2034. they called the thermal, natural oscillations and elastic problems as
  2035. the rhyming trio ``bake, shake and break'' (they also had ``wake'' for
  2036. fluids, but that is a different story). These are just the three
  2037. problems listed in section~sec.~\ref{sec:piping-nuclear} that we need to
  2038. solve in our nuclear power plant.
  2039. So here we are again with the case study where we have to compute the
  2040. linearised stresses at certain SCLs located near the interface between
  2041. two different kinds of steels during operational and incidental
  2042. transients of the plant. The first part is then to ``bake'' the pipes,
  2043. modelling a thermal transient with time-dependent temperature or
  2044. convection boundary conditions (it depends on the system). This steps
  2045. gives a time and space-dependent temperature~\(T(x,y,z,t)\).
  2046. Then we proceed to ``shake'' the pipes, i.e.~to compute the natural
  2047. frequencies and associated oscillations modes. Employing the floor
  2048. response spectra and combining the individual contributions with the
  2049. SRSS method discussed in section~sec.~\ref{sec:seismic}, we obtain a
  2050. distributed load vector~\(\mathbf{f}(x,y,z)\) which is statically
  2051. equivalent to the design earthquake.
  2052. Finally we attempt to ``break'' the pipes successively solving many
  2053. steady-state elastic problems for different times~\(t\) of the
  2054. operational transient. Some remarks about this step:
  2055. \begin{enumerate}
  2056. \def\labelenumi{\arabic{enumi}.}
  2057. \tightlist
  2058. \item
  2059. The material properties are temperature-dependent (we use data from
  2060. \href{https://en.wikipedia.org/wiki/ASME_Boiler_and_Pressure_Vessel_Code\#ASME_BPVC_Section_II_-_Materials}{ASME~II}
  2061. part~D).
  2062. \item
  2063. Thermal expansion is taken into account. The reference temperature
  2064. (i.e.~the temperature at which there is no expansion) is~20ºC that
  2065. coincides with ASME's decision of the reference temperature for the
  2066. mean thermal expansion coefficients.
  2067. \item
  2068. The temperature distribution~\(T(x,y,t,z)\) for bullets 1 \& 2 is the
  2069. generalisation of the reduced-model procedure explained
  2070. in~sec.~\ref{sec:thermal}.
  2071. \item
  2072. The internal faces of the pipes are subject to an uniform
  2073. pressure~\(p(t)\) given by the definition of the transient.
  2074. \item
  2075. There are mechanical supports throughout the piping system. Depending
  2076. on the type of the support (i.e.~vertical, lateral, axial, full, etc.)
  2077. one or more degrees of freedom (i.e.~\(u\), \(v\) and/or \(w\)) are
  2078. fixed to zero. The ends of the CAD models are chosen always to have
  2079. axially-null displacements.
  2080. \item
  2081. The earthquake-equivalent volumetric force~\(\mathbf{f}(x,y,z)\) is
  2082. only be applied at the time~\(t\) where the maximum stresses occur.
  2083. Note that due to the discussion from~sec.~\ref{sec:linearity} we
  2084. cannot compute the stresses raised just by~\(\mathbf{f}(x,y,z)\) and
  2085. then add them to the main stresses. The force has to be included into
  2086. the ``break'' step. An educated guess of the time where the maximum
  2087. stress occur is usually enough. Anyway, it might be necessary a trial
  2088. and error scheme to find the sweet spot.
  2089. \item
  2090. According to ASME~III, the seismic load has to be applied during two
  2091. seconds with the two possible signs. That is to say, apply
  2092. \(\mathbf{f}(x,y,z)\) during two seconds and then
  2093. \(-\mathbf{f}(x,y,z)\) during two further seconds when the main
  2094. stresses are maximums.
  2095. \item
  2096. A number of stress classification lines have to be defined. The
  2097. locations should be previously accorded with the plant owner and/or
  2098. the regulator.
  2099. \item
  2100. The stress linearisation has to be performed individually for each
  2101. principal stress~\(\sigma_1\), \(\sigma_2\) and \(\sigma_3\) to fulfil
  2102. the requirements ASME~III~NB-3126 (see sec.~\ref{sec:in-air} below).
  2103. \item
  2104. This ``break'' step is linear.
  2105. \end{enumerate}
  2106. Is the last bullet right?
  2107. \href{https://en.wikipedia.org/wiki/Surely_You're_Joking\%2C_Mr._Feynman!}{Surely
  2108. you're joking, Mr.~Theler!} Linear problems are simple and almost
  2109. useless. How can this extremely complex problem be linear? Well, let us
  2110. see. First, there are two main kinds of non-linearities in FEM:
  2111. \begin{enumerate}
  2112. \def\labelenumi{\arabic{enumi}.}
  2113. \tightlist
  2114. \item
  2115. Geometrical non-linearities
  2116. \item
  2117. Material non-linearities
  2118. \end{enumerate}
  2119. The first one is easy. Due to the fact that the pipes are made of steel,
  2120. it is expected that the actual deformations are relatively small
  2121. compared to the original dimensions. This leads to the fact that the
  2122. mechanical rigidity (i.e.~the stiffness matrix) does not change
  2123. significantly when the loads are applied. Therefore, we can safely
  2124. assume that the problem is geometrically linear.
  2125. Let us now address material non-linearities. On the one hand we have the
  2126. temperature-dependent issue. According to ASME~II part~D, what depends
  2127. on temperature~\(T\) is the Young Modulus~\(E\). But the stress-strain
  2128. relationship is yet
  2129. \[ \sigma = E(T) \cdot \epsilon \]
  2130. What changes with temperature is the slope of~\(\sigma\) with respect
  2131. to~\(\epsilon\) (think and imagine!), but the relationship between them
  2132. is still \emph{linear}.
  2133. On the other hand, we have a given non-trivial temperature
  2134. distribution~\(T(\mathbf{x}, t)\) within the pipes that is a snapshot of
  2135. a transient heat conduction problem at a certain time~\(t\) (think and
  2136. picture yourself taking photos of the temperature distribution changing
  2137. in time). Let us now forget about the time, as after all we are solving
  2138. a steady-state elastic problem. Now you can trust me or ask a FEM
  2139. teacher, but the continuous displacement formulation can be loosely
  2140. written as
  2141. \[ K\big[E\left(T(\mathbf{x})\right), \mathbf{x}\big] \cdot \mathbf{u}(\mathbf{x}) = \mathbf{b}(\mathbf{x})\]
  2142. If you notice, the complex dependence of the stiffness matrix~\(K\) can
  2143. be reduced to just the spatial vector~\(\mathbf{x}\):
  2144. \[ K(\mathbf{x}) \cdot \mathbf{u}(\mathbf{x}) = \mathbf{b}(\mathbf{x})\]
  2145. And this last equation is linear in~\(\mathbf{u}\). In effect, the
  2146. discretisation step means to integrate over~\(\mathbf{x}\). As~\(K\),
  2147. \(\mathbf{u}\) and~\(\mathbf{b}\) depend only on~\(\mathbf{x}\), then
  2148. after integration one gets just numbers with the matrix representation
  2149. of~eq.~\ref{eq:kub}. Again, you can either trust me, ask a teacher or go
  2150. through with the maths (in increasing order of recommendation).
  2151. \begin{figure}
  2152. \centering
  2153. \subfloat[General view. Carbon steel is grey and stainless steel is
  2154. green.]{\includegraphics[width=0.75\textwidth,height=\textheight]{case-cad1.png}\label{fig:case-cad1}}
  2155. \subfloat[Detail of the mesh refinement around the
  2156. interface.]{\includegraphics[width=1\textwidth,height=\textheight]{case-mech-mesh2.png}\label{fig:case-mesh2}}
  2157. \caption{A section of a piping system in a nuclear power plant}
  2158. \label{fig:case}
  2159. \end{figure}
  2160. \begin{figure}
  2161. \hypertarget{fig:case-scls}{%
  2162. \centering
  2163. \includegraphics[width=0.75\textwidth,height=\textheight]{case-scls-n.png}
  2164. \caption{Location of the 15~SCLs}\label{fig:case-scls}
  2165. }
  2166. \end{figure}
  2167. \begin{figure}
  2168. \centering
  2169. \subfloat[Simplified axi-symmetric
  2170. domain]{\includegraphics[width=0.7\textwidth,height=\textheight]{case-temp-4-0015.png}\label{fig:case-temp1}}
  2171. \subfloat[Generalisation]{\includegraphics[width=1\textwidth,height=\textheight]{case-temp-gen-4-0015.png}\label{fig:case-temp2}}
  2172. \caption{Temperature distribution for a certain instant of the
  2173. transient, computed in the simplified two-dimensional axi-symmetric
  2174. domain and its generalisation to the three-dimensional mechanical domain
  2175. as discussed in~sec.~\ref{sec:thermal}}
  2176. \label{fig:case-temp}
  2177. \end{figure}
  2178. \begin{figure}
  2179. \centering
  2180. \subfloat[]{\includegraphics[width=0.3\textwidth,height=\textheight]{case-mode1.png}\label{fig:case-mode-1}}~
  2181. \subfloat[]{\includegraphics[width=0.3\textwidth,height=\textheight]{case-mode2.png}\label{fig:case-mode-2}}~
  2182. \subfloat[]{\includegraphics[width=0.3\textwidth,height=\textheight]{case-mode3.png}\label{fig:case-mode-3}}
  2183. \subfloat[]{\includegraphics[width=0.3\textwidth,height=\textheight]{case-mode4.png}\label{fig:case-mode-4}}~
  2184. \subfloat[]{\includegraphics[width=0.3\textwidth,height=\textheight]{case-mode5.png}\label{fig:case-mode-5}}~
  2185. \subfloat[]{\includegraphics[width=0.3\textwidth,height=\textheight]{case-mode6.png}\label{fig:case-mode-6}}
  2186. \subfloat[]{\includegraphics[width=0.3\textwidth,height=\textheight]{case-mode7.png}\label{fig:case-mode-7}}~
  2187. \subfloat[]{\includegraphics[width=0.3\textwidth,height=\textheight]{case-mode8.png}\label{fig:case-mode-8}}~
  2188. \subfloat[]{\includegraphics[width=0.3\textwidth,height=\textheight]{case-mode9.png}\label{fig:case-mode-9}}
  2189. \caption{First nine natural modes of oscillation of the piping system
  2190. subject to the boundary conditions the supports provide}
  2191. \label{fig:case-mode}
  2192. \end{figure}
  2193. \begin{figure}
  2194. \hypertarget{fig:case-spectrum}{%
  2195. \centering
  2196. \includegraphics[width=0.7\textwidth,height=\textheight]{case-spectrum.svg}
  2197. \caption{Floor response spectrum.}\label{fig:case-spectrum}
  2198. }
  2199. \end{figure}
  2200. To recapitulate, the figures in this section show some partial
  2201. non-dimensional results of an actual system of a certain nuclear power
  2202. plant. The main issues to study were the interfaces between a
  2203. carbon-steel pipe and a stainless-steel orifice plate used to measure
  2204. the (heavy) water flow through the line. The steps discussed so far
  2205. include
  2206. \begin{enumerate}
  2207. \def\labelenumi{\arabic{enumi}.}
  2208. \tightlist
  2209. \item
  2210. building a CAD model of the piping section under study, which will be
  2211. the main domain (fig.~\ref{fig:case-cad1} or
  2212. figs.~\ref{fig:real-life}, \ref{fig:weldolet-cad}, \ref{fig:valve})
  2213. \item
  2214. creating a mesh for the main domain refining locally around the
  2215. material interfaces (fig.~\ref{fig:case-mesh2} or
  2216. figs.~\ref{fig:weldolet-mesh}, \ref{fig:real})
  2217. \item
  2218. defining the number and locations of the SCLs
  2219. (fig.~\ref{fig:case-scls} or
  2220. figs.~\ref{fig:weldolet-scls}, \ref{fig:valve})
  2221. \item
  2222. computing a heat conduction (bake) transient problem with temperatures
  2223. as a function of time from the operational transient in a simple
  2224. domain using temperature-dependent thermal conduction coefficients
  2225. from ASME~II~part D (fig.~\ref{fig:case-temp} or
  2226. fig.~\ref{fig:valve-temp})
  2227. \item
  2228. generalising the temperature distribution as a function of time to the
  2229. general domain (fig.~\ref{fig:case-temp2} or fig.~\ref{fig:real})
  2230. \item
  2231. performing a modal analysis (shake) on the main domain to obtain the
  2232. main oscillation frequencies and modes (fig.~\ref{fig:case-mode} or
  2233. fig.~\ref{fig:modes})
  2234. \item
  2235. using the floor response spectra (fig.~\ref{fig:case-spectrum} or
  2236. fig.~\ref{fig:spectrum}) and the SRSS method to obtain a distributed
  2237. force statically-equivalent to the earthquake load
  2238. (fig.~\ref{fig:case-acceleration} or fig.~\ref{fig:acceleration})
  2239. \item
  2240. successively solving the linear elastic problem for different times
  2241. using the generalised temperature distribution taking into account
  2242. \begin{enumerate}
  2243. \def\labelenumii{\alph{enumii}.}
  2244. \tightlist
  2245. \item
  2246. the dependence of the Young Modulus~\(E\) and the thermal expansion
  2247. coefficient~\(\alpha\) with temperature,
  2248. \item
  2249. the thermal expansion effect itself
  2250. \item
  2251. the instantaneous pressure exerted in the internal faces of the
  2252. pipes at the time~\(t\) according to the definition of the
  2253. operational transient
  2254. \item
  2255. the restriction of the degrees of freedom of those faces, lines or
  2256. points that correspond to mechanical supports located both within
  2257. and at the ends of the CAD model
  2258. \item
  2259. the earthquake load, which according to ASME should be present only
  2260. during four seconds of the transient: two seconds with one sign and
  2261. the other two seconds with the opposite sing. This period should be
  2262. selected to coincide with the instant of highest mechanical stress
  2263. (conservative computation)
  2264. \end{enumerate}
  2265. \item
  2266. computing the linearised stresses (membrane and membrane plus bending)
  2267. at the SCLs combining them as Principal~1, Principal~2, Principal~3
  2268. and Tresca
  2269. \item
  2270. juxtaposing these linearised stresses for each time of the transient
  2271. and for each transient so as to obtain a single time-history of
  2272. stresses including all the operational and/or incidental transients
  2273. under study, which is what stress-based fatigue assessment needs
  2274. (recall~sec.~\ref{sec:fatigue} and go on to~sec.~\ref{sec:usage}).
  2275. \end{enumerate}
  2276. A pretty nice list of steps, which definitely I would not have been able
  2277. to tackle when I was in college. Would you?
  2278. \begin{figure}
  2279. \centering
  2280. \subfloat[\(a_x\)]{\includegraphics[width=0.33\textwidth,height=\textheight]{case-ax.png}}
  2281. \subfloat[\(a_y\)]{\includegraphics[width=0.33\textwidth,height=\textheight]{case-ay.png}}
  2282. \subfloat[\(a_z\)]{\includegraphics[width=0.33\textwidth,height=\textheight]{case-az.png}}
  2283. \caption{The static equivalent accelerations for the spectra
  2284. of~fig.~\ref{fig:case-spectrum} computed using the SRSS method}
  2285. \label{fig:case-acceleration}
  2286. \end{figure}
  2287. \hypertarget{sec:usage}{%
  2288. \section{Cumulative usage factors}\label{sec:usage}}
  2289. Strictly speaking, finite elements are not needed anymore at this point
  2290. of the analysis. But even though we are (or want to be) FEM experts, we
  2291. have to understand that if the objective of a work is to evaluate
  2292. fatigue (or fracture mechanics or whatever), finite elements are just a
  2293. mean and not and end. If we just mastered FEM and nothing else, our
  2294. field of work would be highly reduced. We need to use all of our
  2295. computational knowledge to perform actually engineering tasks and to be
  2296. able to tell our bosses and clients whether the pipe would fail or not.
  2297. This tip is induced in college but it is definitely reinforced
  2298. afterwards when working with actual clients and bosses.
  2299. Another comment I would like to add is that I had to learn fatigue
  2300. practically from scratch when faced with this problem for the first time
  2301. in my engineering career. I remembered some basics from college (like
  2302. the general introduction from sec.~\ref{sec:fatigue}), but I lacked the
  2303. skills to perform a real computation by myself. Luckily there still
  2304. exist books, there are a lot of interesting online resources (not to
  2305. mention Wikipedia) and, even more luckily, there are plenty of other
  2306. fellow engineers that are more than eager to help you. My second tip is:
  2307. when faced to a new challenging problem, read, learn and ask for
  2308. guidance to real people to see if you read and learned it right.
  2309. \medskip
  2310. Back and distantly, in~sec.~\ref{sec:case} we said that people noticed
  2311. there were some environmental factors that affected the fatigue
  2312. resistance of materials. The basic ASME approach does not take care of
  2313. these factors, and it is regarded as fatigue ``in air.'' We are
  2314. interested in taking them into account, so we follow the US Nuclear
  2315. Regulatory Commission guidelines to evaluate fatigue ``in water.''
  2316. \hypertarget{sec:in-air}{%
  2317. \subsection{In air (ASME's basic approach)}\label{sec:in-air}}
  2318. We already said in~sec.~\ref{sec:fatigue} that the stress-life fatigue
  2319. assessment method gives the limit number~\(N\) of cycles that a certain
  2320. mechanical part can withstand when subject to a certain periodic load of
  2321. stress amplitude~\(S_\text{alt}\). If the actual number of cycles~\(n\)
  2322. the load is applied is smaller than the limit~\(N\), then the part is
  2323. fatigue-resistant. In our case study there is a mixture of several
  2324. periodic loads, each one expected to occur a certain number of times.
  2325. ASME's way to evaluate the resistance is to break up the stress history
  2326. into partial stress amplitudes~\(S_{\text{alt},j}\) between a ``peak''
  2327. and a ``valley'' and to compute individual usage factors~\(U_j\) for
  2328. the~\(j\)-th amplitude (which does not need to coincide with one of the
  2329. ~\(k\) transient loads) as
  2330. \[U_j = \frac{n_j}{N_j}\]
  2331. The overall cumulative usage factor is then the algebraic sum of the
  2332. partial contributions
  2333. \[\text{CUF} = U_1 + U_2 + \dots + U_j + \dots\]
  2334. When~\(\text{CUF} < 1\), then the part under analysis can withstand the
  2335. proposed cyclic operation.
  2336. \begin{figure}
  2337. \hypertarget{fig:axi-inches-3d}{%
  2338. \centering
  2339. \includegraphics[width=0.6\textwidth,height=\textheight]{axi-inches-3d.png}
  2340. \caption{A low-alloy steel vessel nozzle (blue) welded to a stainless
  2341. steel pipe (grey) for the ``EAF Sample Problem 2-Rev.~2
  2342. (10/21/2011)''}\label{fig:axi-inches-3d}
  2343. }
  2344. \end{figure}
  2345. Now, if the extrema of the partial stress amplitude correspond to
  2346. different transients, then the following note in ASME III's NB-3224(5)
  2347. should be followed:
  2348. \begin{quote}
  2349. In determining \(n_1\), \(n_2\), \(n_3\), \(\dots\), \(n_j\)
  2350. consideration shall be given to the superposition of cycles of various
  2351. origins which produce a total stress difference range greater than the
  2352. stress difference ranges of the individual cycles. For example, if one
  2353. type of stress cycle produces 1,000 cycles of a stress difference
  2354. variation from zero to +60,000~psi and another type of stress cycle
  2355. produces 10,000 cycles of a stress difference variation from zero to
  2356. −50,000~psi, the two types of cycle to be considered are defined by the
  2357. following parameters:
  2358. \begin{enumerate}
  2359. \def\labelenumi{(\alph{enumi})}
  2360. \tightlist
  2361. \item
  2362. for type 1 cycle, \(n_1 =\) 1,000 and \$S\_\{\text{alt},1\} = (60,000
  2363. + 50,000)/2;
  2364. \item
  2365. for type 2 cycle, \(n_2 =\) 9,000 and \$S\_\{\text{alt},2\} = (50,000
  2366. + 0)/2.
  2367. \end{enumerate}
  2368. \end{quote}
  2369. This cryptic paragraph can be better explained by using a clearer
  2370. example. To avoid using actual sensitive data from a real power plant,
  2371. let us use the same test case used by both the
  2372. \href{https://en.wikipedia.org/wiki/Nuclear_Regulatory_Commission}{US
  2373. Nuclear Regulatory Commission} (in its report NUREG/CR-6909) and the
  2374. \href{https://en.wikipedia.org/wiki/Electric_Power_Research_Institute}{Electric
  2375. Power Institute} (report 1025823) called ``EAF (Environmentally-Assisted
  2376. Fatigue) Sample Problem 2-Rev.~2 (10/21/2011)''.
  2377. It consists of a typical vessel (NB-3200) nozzle with attached piping
  2378. (NB-3600) as illustrated in~fig.~\ref{fig:axi-inches-3d}. These
  2379. components are subject to four transients~\(k=1,2,3,4\) that give rise
  2380. to linearised stress histories (slightly modified according to
  2381. NB-3216.2) which are given as individual stress values juxtaposed so as
  2382. to span a time range of about 36,000 seconds (fig.~\ref{fig:nureg1}). As
  2383. the time steps is not constant, each stress value has an integer
  2384. index~\(i\) that uniquely identifies it:
  2385. \begin{longtable}[]{@{}cccc@{}}
  2386. \toprule
  2387. \(k\) & Time range {[}s{]} & Index range & Cycles~\(n_k\)\tabularnewline
  2388. \midrule
  2389. \endhead
  2390. 1 & 0--3210 & 1--523 & 20\tabularnewline
  2391. 2 & 3210--6450 & 524--959 & 50\tabularnewline
  2392. 3 & 6450--9970 & 960--1595 & 20\tabularnewline
  2393. 4 & 9970--35971 & 1596--2215 & 100\tabularnewline
  2394. \bottomrule
  2395. \end{longtable}
  2396. A design-basis earthquake was assumed to occur briefly during one second
  2397. (sic) at around~\(t=3470\)~seconds, and it is assigned a number of
  2398. cycles~\(n_e=5\). The detailed stress history for one of the SCLs
  2399. including both the principal and lineariased stresses, which are already
  2400. offset following NB-3216.2 so as to have a maximum stress equal to zero,
  2401. can be found as an appendix in NRC's NUREG/CR-6909 report, or in the
  2402. repository with the scripts I prepared for you to play with this
  2403. problem.\footnote{\url{https://bitbucket.org/seamplex/cufen}}
  2404. \begin{figure}
  2405. \centering
  2406. \subfloat[Full time range of the juxtaposed transients spanning
  2407. \(\approx\) 36,000
  2408. seconds]{\includegraphics[width=0.7\textwidth,height=\textheight]{nureg1.svg}\label{fig:nureg1}}
  2409. \subfloat[Detail of transients showing the ids of some
  2410. extrema]{\includegraphics[width=0.7\textwidth,height=\textheight]{nureg2.svg}\label{fig:nureg2}}
  2411. \subfloat[Detail of the earthquake (it does not follow the ASME
  2412. two-second
  2413. rule)]{\includegraphics[width=0.7\textwidth,height=\textheight]{nureg3.svg}\label{fig:nureg3}}
  2414. \caption{Time history of the linearised stress~\(\text{MB}_{31}\)
  2415. corresponding to the example problem from NRC and EPRI. The
  2416. indexes~\(i\) of the extrema are shown in green (minimums) and red
  2417. (maximums)}
  2418. \label{fig:nureg}
  2419. \end{figure}
  2420. \medskip
  2421. To compute the global usage factor, we first need to find all the
  2422. combinations of local extrema pairs and then sort them in decreasing
  2423. order of stress difference. For example, the largest stress amplitude is
  2424. found between \(i=447\) and \(i=694\). The second one is 447--699. Then
  2425. 699--1020, 699--899, etc. For each of these pairs, defined by the
  2426. indexes~\(i_{1,j}\) and \(i_{2,j}\), a partial usage factor~\(U_j\)
  2427. should computed. The stress amplitude~\(S_{\text{alt},j}\) which should
  2428. be used to enter into the \(S\)-\(N\) curve is
  2429. \[
  2430. 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})}
  2431. \] where \(k_e\) is a plastic correction factor for large loads
  2432. (NB-3228.5), \(E_\text{SN}\) is the Young Modulus used to create the
  2433. \(S\)-\(N\) curve (provided in the ASME fatigue curves)
  2434. and~\(E(T_{\text{max}_j})\) is the material's Young Modulus at the
  2435. maximum temperature within the~\(j\)-th interval.
  2436. \medskip
  2437. We now need to comply with ASME's obscure note about the number of
  2438. cycles to assign a proper value of~\(n_j\). Back to the largest pair
  2439. 447-694, we see that 447 belongs to transient~\#1 which has assigned 20
  2440. cycles and 694 belongs to the earthquake with 5 cycles.
  2441. Therefore~\(n_1=5\), and the cycles associated to each index are
  2442. decreased in five. So \(i=694\) disappears and the number of cycles
  2443. associated to \(i=447\) are decreased from 20 to 15. The second largest
  2444. pair is now 447-699, with 15 (because we just spent 5 in the first pair)
  2445. and 50 cycles respectively. Now \(n_2=15\), point~447 disappears and 699
  2446. remains with 35 cycles. The next pair is 699-1020, with number of cycles
  2447. 35 and 20 so \(n_3=20\), point 1020 disappears and 699 remains with 15
  2448. cycles. And so on, down to the last pair.
  2449. \begin{figure}
  2450. \centering
  2451. \subfloat[Reference from
  2452. NUREG/CR6909]{\includegraphics[width=1\textwidth,height=\textheight]{cuf-nrc.png}\label{fig:cuf-nrc}}
  2453. \subfloat[Results reproduced by the
  2454. author]{\includegraphics[width=1\textwidth,height=\textheight]{cuf-seamplex.png}\label{fig:cuf-seamplex}}
  2455. \caption{Tables of individual usage factors for the NRC/EPRI ``EAF
  2456. Sample Problem 2-Rev.~2 (10/21/2011).'' One table is taken from a
  2457. document issued by almost-a-billion-dollar-year-budget government agency
  2458. from the most powerful country in the world and the other one is from a
  2459. third-world engineering startup. Guess which is which.}
  2460. \label{fig:cuf}
  2461. \end{figure}
  2462. Why all these details? Not because I want to teach you how to perform
  2463. fatigue evaluations just reading this section without resorting to ASME,
  2464. fatigue books and even other colleagues. It is to show that even though
  2465. these computation can be made ``by hand'' (i.e.~using a calculator or,
  2466. God forbids, a spreadsheet) when having to evaluate a few SCLs within
  2467. several piping systems it is far (and I mean really far) better to
  2468. automatise all these steps by writing a set of scripts. Not only will
  2469. the time needed to process the information be reduced, but also the
  2470. introduction of human errors will be minimised and repeatability of
  2471. results will be assured---especially if working under a
  2472. \href{https://en.wikipedia.org/wiki/Distributed_version_control}{distributed
  2473. version control} system such as
  2474. \href{https://en.wikipedia.org/wiki/Git}{Git}. This is true in general,
  2475. so here is another tip: learn to write scripts to post-process your FEM
  2476. results (you will need to use a script-friendly FEM program) and you
  2477. will gain considerable margins regarding time and quality.
  2478. \hypertarget{sec:in-water}{%
  2479. \subsection{In water (NRC's extension)}\label{sec:in-water}}
  2480. The fatigue curves and ASME's (both~III and VIII) methodology to analyse
  2481. cyclic operations assume the parts under study are in contact with air,
  2482. which is not the case of nuclear reactor pipes. Instead of building a
  2483. brand new body of knowledge to replace ASME, the NRC decided to modify
  2484. the former adding environmentally-assisted fatigue multipliers to the
  2485. traditional usage factors, formally defined as
  2486. \[F_\text{en} = \frac{N_\text{air}}{N_\text{water}} \geq 1\]
  2487. This way, the environmentally-assisted usage factor for the \(j\)-th
  2488. load pair is \(\text{CUF}_\text{en,j} = U_j \cdot {F_\text{en},j}\) and
  2489. the global cumulative usage factor in water is the sum of these partial
  2490. contributions
  2491. \begin{equation}\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\label{eq:cufen}\end{equation}
  2492. In EPRI's words, the general steps for performing an EAF analysis are as
  2493. follows:
  2494. \begin{enumerate}
  2495. \def\labelenumi{\arabic{enumi}.}
  2496. \tightlist
  2497. \item
  2498. perform an ASME fatigue analysis using fatigue curves for an air
  2499. environment
  2500. \item
  2501. calculate \(F_\text{en}\) factors for each transient pair in the
  2502. fatigue analysis
  2503. \item
  2504. apply the \(F_\text{en}\) factors to the incremental usage calculated
  2505. for each transient pair (\(U_j\)), to determine the
  2506. \(\text{CUF}_\text{en}\), using~eq.~\ref{eq:cufen}
  2507. \end{enumerate}
  2508. Again, if \(\text{CUF}_\text{en} < 1\), then the system under study can
  2509. withstand the assumed cyclic loads. Note that as~\(F_{\text{en},j}\), we
  2510. can have \(\text{CUF} < 1\) and \(\text{CUF}_\text{en} > 1\) at the same
  2511. time. The NRC has performed a comprehensive set of theoretical and
  2512. experimental tests to study and analyse the nature and dependence of the
  2513. non-dimensional correction factors~\(F_\text{en}\). They found that, for
  2514. a given material, they depend on:
  2515. \begin{enumerate}
  2516. \def\labelenumi{\alph{enumi}.}
  2517. \tightlist
  2518. \item
  2519. the concentration~\(O(t)\) of dissolved oxygen in the water,
  2520. \item
  2521. the temperature~\(T(t)\) of the pipe,
  2522. \item
  2523. the strain rate~\(\dot{\epsilon}(t)\), and
  2524. \item
  2525. the content of sulphur~\(S(t)\) in the pipes (only for carbon or
  2526. low-allow steels).
  2527. \end{enumerate}
  2528. Apparently it makes no difference whether the environment is composed of
  2529. either light or heavy water. There are somewhat different sets of
  2530. non-dimensional analytical expressions that estimate the value
  2531. of~\(F_{\text{en}}(t)\) as a function of~\(O(t)\), \(T(t)\),
  2532. \(\dot{\epsilon}(t)\) and \(S(t)\), both in the few revisions of
  2533. NUREG/CR-6909 and in EPRI's report~\#1025823. Although they are not
  2534. important now, the actual expressions should be defined and agreed with
  2535. the plant owner and the regulator. The main result to take into account
  2536. is that~\(F_{\text{en}}(t)=1\) if~\(\dot{\epsilon}(t)\leq0\), i.e.~there
  2537. are no environmental effects during the time intervals where the
  2538. material is being compressed.
  2539. Once we have the instantaneous factor~\(F_{\text{en}}(t)\), we need to
  2540. obtain an average value~\(F_{\text{en},j}\) which should be applied to
  2541. the~\(j\)-th load pair. Again, there are a few different ways of lumping
  2542. the time-dependent~\(F_{\text{en}}(t)\) into a single
  2543. \(F_{\text{en},j}\) for each interval. Both NRC and EPRI give simple
  2544. equations that depend on a particular time discretisation of the stress
  2545. histories that, in my view, are all ill-defined. My guess is that they
  2546. underestimated they audience and feared readers would not understand the
  2547. slightly-more complex mathematics needed to correctly define the
  2548. problem. The result is that they introduced a lot of ambiguities (and
  2549. even technical errors) just not to offend the maths illiterate. A
  2550. decision I do not share, and a another reason to keep on learning and
  2551. practising math.
  2552. When faced for the first time with the case study, I have come up with a
  2553. weighting method that I claim is less ill-defined (it still is for
  2554. border-line cases) and which the plant owner accepted as valid.
  2555. Fig.~\ref{fig:cufen} shows the reference results of the problem (based
  2556. on computing two correction factors and then taking the maximum) and the
  2557. ones obtained with the proposed method (by computing a weighted integral
  2558. between the valley and the peak). Note how in~fig.~\ref{fig:cufen-nrc},
  2559. pairs 694-447 and 699-447 have the same~\(F_\text{en}\) even though they
  2560. are (marginally) different. The results
  2561. from~fig.~\ref{fig:cufen-seamplex} give two (marginally) different
  2562. correction factors.
  2563. \begin{figure}
  2564. \centering
  2565. \subfloat[Results according to the author of NUREG/CR-6909 corresponding
  2566. to the latest draft of the
  2567. document]{\includegraphics[width=0.75\textwidth,height=\textheight]{cufen-nrc.png}\label{fig:cufen-nrc}}
  2568. \subfloat[Results reproduced by the author using his own weighting
  2569. scheme]{\includegraphics[width=0.75\textwidth,height=\textheight]{cufen-seamplex.png}\label{fig:cufen-seamplex}}
  2570. \caption{Tables of individual environmental correction and usage factors
  2571. for the NRC/EPRI ``EAF Sample Problem 2-Rev.~2 (10/21/2011).'' The
  2572. reference method assigns the same~\(F_\text{en}\) to the first two rows
  2573. whilst the proposed lumping scheme does show a difference}
  2574. \label{fig:cufen}
  2575. \end{figure}
  2576. \hypertarget{conclusions}{%
  2577. \section{Conclusions}\label{conclusions}}
  2578. Back in college, we all learned how to solve engineering problems. And
  2579. once we graduated, we felt we could solve and fix the world (if you did
  2580. not graduate yet, you will feel it shortly). But there is a real gap
  2581. between the equations written in chalk on a blackboard (now probably in
  2582. the form of beamer slide presentations) and actual real-life engineering
  2583. problems. This chapter introduces a real case from the nuclear industry
  2584. and starts by idealising the structure such that it has a known
  2585. analytical solution that can be found in textbooks. Additional realism
  2586. is added in stages allowing the engineer to develop an understanding of
  2587. the more complex physics and a faith in the veracity of the
  2588. finite-element results where theoretical solutions are not available.
  2589. Even more, a brief insight into the world of evaluation of stress-life
  2590. fatigue using such results further illustrates the complexities of
  2591. real-life engineering analysis. Here is a list of the tips that arose
  2592. throughout the text:
  2593. \begin{itemize}
  2594. \tightlist
  2595. \item
  2596. use and exercise your imagination
  2597. \item
  2598. practise math
  2599. \item
  2600. start with simple cases first
  2601. \item
  2602. keep in mind there are other methods beside finite elements
  2603. \item
  2604. take into account that even within the finite element method, there is
  2605. a wide variety of complexity in the problems that can be solved
  2606. \item
  2607. use engineering judgment and make sure understand Asimov's
  2608. \href{https://en.wikipedia.org/wiki/Wronger_than_wrong}{``wronger than
  2609. wrong''} concept
  2610. \item
  2611. play with your favourite FEM solver (mine is
  2612. \href{https://caeplex.com}{CAEplex}) solving simple cases, trying to
  2613. predict the results and picturing the stress tensor and its
  2614. eigenvectors in your imagination
  2615. \item
  2616. prove (with pencil and paper) that even though the principal stresses
  2617. are not linear with respect to summation, they are linear with respect
  2618. to multiplication
  2619. \item
  2620. grab any stress distribution from any of your FEM projects, compute
  2621. the iso-stress curves and the draw normal lines to them to get
  2622. acquainted with SCLs
  2623. \item
  2624. keep in mind that FEM solutions lead only to nodal equilibrium but not
  2625. pointwise equilibrium
  2626. \item
  2627. measure the time needed to generate grids of different sizes and kinds
  2628. with your favourite mesher
  2629. \item
  2630. learn this by heart: the complexity of a FEM problem is given mainly
  2631. by the number of \emph{nodes}, not by the number of elements
  2632. \item
  2633. remember that welded materials with different thermal expansion
  2634. coefficients may lead to fatigue under cyclic temperature changes
  2635. \item
  2636. think thermal-mechanical plus earthquakes as ``bake, break and shake''
  2637. problems
  2638. \item
  2639. understand why the elastic problem of the case study is still linear
  2640. after all
  2641. \item
  2642. keep in mind that finite-elements are a mean to get an engineering
  2643. solution, not and end by themselves
  2644. \item
  2645. learn to write scripts to post-process FEM results (from a
  2646. script-friendly FEM program)
  2647. \item
  2648. work under a
  2649. \href{https://en.wikipedia.org/wiki/Distributed_version_control}{distributed
  2650. version control} system such as
  2651. \href{https://en.wikipedia.org/wiki/Git}{Git}, even when just editing
  2652. input files or writing reports
  2653. \item
  2654. do not write ambiguous reports by replacing appropriate mathematical
  2655. formulae with words just not to offend the illiterate
  2656. \item
  2657. try to avoid
  2658. \href{https://en.wikipedia.org/wiki/Proprietary_software}{proprietary}
  2659. programs and favour
  2660. \href{https://en.wikipedia.org/wiki/Free_and_open-source_software}{free
  2661. and open source} ones.
  2662. \end{itemize}
  2663. About your favourite FEM program, ask yourself these two questions:
  2664. \begin{enumerate}
  2665. \def\labelenumi{\arabic{enumi}.}
  2666. \tightlist
  2667. \item
  2668. Does your favourite FEM program's manual say what the program does?
  2669. \item
  2670. Do you believe your favourite FEM program's manual?
  2671. \item
  2672. Do you trust your favourite FEM program?
  2673. \end{enumerate}
  2674. And finally, make sure that at the end of the journey from college
  2675. theory to an actual engineering problem your conscience, is clear
  2676. knowing that there exists a report with your signature on it. That is
  2677. why we all went to college in the first place.
  2678. \printbibliography[title=Concluding Remarks]
  2679. \end{document}