diff --git a/doc/manual/manual-appendix-elements.tex b/doc/manual/manual-appendix-elements.tex index 9ba02a1d4..e8f74dd6b 100644 --- a/doc/manual/manual-appendix-elements.tex +++ b/doc/manual/manual-appendix-elements.tex @@ -1,275 +1,497 @@ \chapter{Shape Functions\index{Elements}} \label{app:elements} Schmatic overview of all the element types defined in \akantu is described in Chapter~\ref{chap:elements}. In this appendix, more detailed information (shape function, location of Gaussian quadrature points, and so on) of each of these types is listed. For each element type, the coordinates of the nodes are given in the isoparametric frame of reference, together with the shape functions (and their derivatives) on these respective nodes. Also all the Gaussian quadrature points within each element are assigned (together with the weight that is applied on these points). The graphical representations of all the element types can be found in Chapter~\ref{chap:elements}. %%%%%%%%%% 1D %%%%%%%%% %\section{Isoparametric Elements in 1D\index{Elements!1D}} \section{1D-Shape Functions\index{Elements!1D}} \subsection{Segment 2\index{Elements!1D!Segment 2}} \begin{Element}{1D} 1 & \inelemone{-1} & $\half\left(1-\xi\right)$ & \inelemone{-\half} \\ \elemline 2 & \inelemone{1} & $\half\left(1+\xi\right)$ & \inelemone{\half} \\ \end{Element} \begin{QuadPoints}{lc} Coord. \elemcooroned & 0 \\ \elemline Weight & 2 \\ \end{QuadPoints} \subsection{Segment 3\index{Elements!1D!Segment 3}} \begin{Element}{1D} 1 & \inelemone{-1} & $\half\xi\left(\xi-1\right)$ & \inelemone{\xi-\half} \\ \elemline 2 & \inelemone{1} & $\half\xi\left(\xi+1\right)$ & \inelemone{\xi+\half} \\ \elemline 3 & \inelemone{0} & $1-\xi^{2}$ & \inelemone{-2\xi} \\ \end{Element} \begin{QuadPoints}{lcc} Coord. \elemcooroned & $-1/\sqrt{3}$ & $1/\sqrt{3}$ \\ \elemline Weight & 1 & 1 \\ \end{QuadPoints} %%%%%%%%%% 2D %%%%%%%%% %\section{Isoparametric Elements in 2D\index{Elements!2D}} \section{2D-Shape Functions\index{Elements!2D}} \subsection{Triangle 3\index{Elements!2D!Triangle 3}} \begin{Element}{2D} 1 & \inelemtwo{0}{0} & $1-\xi-\eta$ & \inelemtwo{-1}{-1} \\ \elemline 2 & \inelemtwo{1}{0} & $\xi$ & \inelemtwo{1}{0} \\ \elemline 3 & \inelemtwo{0}{1} & $\eta$ & \inelemtwo{0}{1} \\ \end{Element} \begin{QuadPoints}{lc} Coord. \elemcoortwod & \inquadtwo{\third}{\third} \\ \elemline Weight & 1 \\ \end{QuadPoints} \subsection{Triangle 6\index{Elements!2D!Triangle 6}} \begin{Element}{2D} 1 & \inelemtwo{0}{0} & $-\left(1-\xi-\eta\right)\left(1-2\left(1-\xi-\eta\right)\right)$ & \inelemtwo{1-4\left(1-\xi-\eta\right)}{1-4\left(1-\xi-\eta\right)} \\ \elemline 2 & \inelemtwo{1}{0} & $-\xi\left(1-2\xi\right)$ & \inelemtwo{4\xi-1}{0} \\ \elemline 3 & \inelemtwo{0}{1} & $-\eta\left(1-2\eta\right)$ & \inelemtwo{0}{4\eta-1} \\ \elemline 4 & \inelemtwo{\half}{0} & $4\xi\left(1-\xi-\eta\right)$ & \inelemtwo{4\left(1-2\xi-\eta\right)}{-4\xi} \\ \elemline 5 & \inelemtwo{\half}{\half} & $4\xi\eta$ & \inelemtwo{4\eta}{4\xi} \\ \elemline 6 & \inelemtwo{0}{\half} & $4\eta\left(1-\xi-\eta\right)$ & \inelemtwo{-4\eta}{4\left(1-\xi-2\eta\right)} \\ \elemline \end{Element} \begin{QuadPoints}{lccc} Coord. \elemcoortwod & \inquadtwo{\sixth}{\sixth} & \inquadtwo{\twothird}{\sixth} & \inquadtwo{\sixth}{\twothird} \\ \elemline Weight & \sixth & \sixth & \sixth \\ \end{QuadPoints} \clearpage \subsection{Quadrangle 4\index{Elements!2D!Quadrangle 4}} \begin{Element}{2D} 1 & \inelemtwo{-1}{-1} & $\quart\left(1-\xi\right)\left(1-\eta\right)$ & \inelemtwo{-\quart\left(1-\eta\right)}{-\quart\left(1-\xi\right)} \\ \elemline 2 & \inelemtwo{1}{-1} & $\quart\left(1+\xi\right)\left(1-\eta\right)$ & \inelemtwo{\quart\left(1-\eta\right)}{-\quart\left(1+\xi\right)} \\ \elemline 3 & \inelemtwo{1}{1} & $\quart\left(1+\xi\right)\left(1+\eta\right)$ & \inelemtwo{\quart\left(1+\eta\right)}{\quart\left(1+\xi\right)} \\ \elemline 4 & \inelemtwo{-1}{1} & $\quart\left(1-\xi\right)\left(1+\eta\right)$ & \inelemtwo{-\quart\left(1+\eta\right)}{\quart\left(1-\xi\right)} \\ \end{Element} \begin{QuadPoints}{lcccc} \elemcoortwod & \inquadtwo{-\invsqrtthree}{-\invsqrtthree} & \inquadtwo{\invsqrtthree}{-\invsqrtthree} & \inquadtwo{\invsqrtthree}{\invsqrtthree} & \inquadtwo{-\invsqrtthree}{\invsqrtthree} \\ \elemline Weight & 1 & 1 & 1 & 1 \\ \end{QuadPoints} \subsection{Quadrangle 8\index{Elements!2D!Quadrangle 8}} \begin{Element}{2D} 1 & \inelemtwo{-1}{-1} & $\quart\left(1-\xi\right)\left(1-\eta\right)\left(-1-\xi-\eta\right)$ & \inelemtwo{\quart\left(1-\eta\right)\left(2\xi+\eta\right)} {\quart\left(1-\xi\right)\left(\xi+2\eta\right)} \\ \elemline 2 & \inelemtwo{1}{-1} & $\quart\left(1+\xi\right)\left(1-\eta\right)\left(-1+\xi-\eta\right)$ & \inelemtwo{\quart\left(1-\eta\right)\left(2\xi-\eta\right)} {-\quart\left(1+\xi\right)\left(\xi-2\eta\right)} \\ \elemline 3 & \inelemtwo{1}{1} & $\quart\left(1+\xi\right)\left(1+\eta\right)\left(-1+\xi+\eta\right)$ & \inelemtwo{\quart\left(1+\eta\right)\left(2\xi+\eta\right)} {\quart\left(1+\xi\right)\left(\xi+2\eta\right)} \\ \elemline 4 & \inelemtwo{-1}{1} & $\quart\left(1-\xi\right)\left(1+\eta\right)\left(-1-\xi+\eta\right)$ & \inelemtwo{\quart\left(1+\eta\right)\left(2\xi-\eta\right)} {-\quart\left(1-\xi\right)\left(\xi-2\eta\right)} \\ \elemline 5 & \inelemtwo{0}{-1} & $\half\left(1-\xi^{2}\right)\left(1-\eta\right)$ & \inelemtwo{-\xi\left(1-\eta\right)} {-\half\left(1-\xi^{2}\right)} \\ \elemline 6 & \inelemtwo{1}{0} & $\half\left(1+\xi\right)\left(1-\eta^{2}\right)$ & \inelemtwo{\half\left(1-\eta^{2}\right)} {-\eta\left(1+\xi\right)} \\ \elemline 7 & \inelemtwo{0}{1} & $\half\left(1-\xi^{2}\right)\left(1+\eta\right)$ & \inelemtwo{-\xi\left(1+\eta\right)} {\half\left(1-\xi^{2}\right)} \\ \elemline 8 & \inelemtwo{-1}{0} & $\half\left(1-\xi\right)\left(1-\eta^{2}\right)$ & \inelemtwo{-\half\left(1-\eta^{2}\right)} {-\eta\left(1-\xi\right)} \\ \end{Element} \begin{QuadPoints}{lccccc} Coord. \elemcoortwod & \inquadtwo{0}{0} & \inquadtwo{\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}} & \inquadtwo{-\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}} & \inquadtwo{-\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}} & \inquadtwo{\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}} \\ \elemline Weight & 64/81 & 25/81 & 25/81 & 25/81 & 25/81 \\ \elemline Coord. \elemcoortwod & \inquadtwo{0}{\sqrt{\tfrac{3}{5}}} & \inquadtwo{-\sqrt{\tfrac{3}{5}}}{0} & \inquadtwo{0}{-\sqrt{\tfrac{3}{5}}} & \inquadtwo{\sqrt{\tfrac{3}{5}}}{0} & \\ \elemline Weight & 40/81 & 40/81 & 40/81 & 40/81 & \\ \end{QuadPoints} \clearpage %%%%%%%%%% 3D %%%%%%%%% \section{3D-Shape Functions\index{Elements!3D}} %\section{Isoparametric Elements in 3D\index{Elements!3D}} \subsection{Tetrahedron 4\index{Elements!3D!Tetrahedron 4}} \begin{Element}{3D} 1 & \inelemthree{0}{0}{0} & $1-\xi-\eta-\zeta$ & \inelemthree{-1}{-1}{-1} \\ \elemline 2 & \inelemthree{1}{0}{0} & $\xi$ & \inelemthree{1}{0}{0} \\ \elemline 3 & \inelemthree{0}{1}{0} & $\eta$ & \inelemthree{0}{1}{0} \\ \elemline 4 & \inelemthree{0}{0}{1} & $\zeta$ & \inelemthree{0}{0}{1} \\ \end{Element} \begin{QuadPoints}{lc} Coord. \elemcoorthreed & \inquadthree{\quart}{\quart}{\quart} \\ \elemline Weight & \sixth \\ \end{QuadPoints} \subsection{Tetrahedron 10\index{Elements!3D!Tetrahedron 10}} \begin{Element}{3D} 1 & \inelemthree{0}{0}{0} & $\left(1-\xi-\eta-\zeta\right)\left(1-2\xi-2\eta-2\zeta\right)$ & \inelemthreecolumn{4\xi+4\eta+4\zeta-3}{4\xi+4\eta+4\zeta-3}{4\xi+4\eta+4\zeta-3}\\ \elemline 2 & \inelemthree{1}{0}{0} & $\xi\left(2\xi-1\right)$ & \inelemthree{4\xi-1}{0}{0} \\ \elemline 3 & \inelemthree{0}{1}{0} & $\eta\left(2\eta-1\right)$ & \inelemthree{0}{4\eta-1}{0} \\ \elemline 4 & \inelemthree{0}{0}{1} & $\zeta\left(2\zeta-1\right)$ & \inelemthree{0}{0}{4\zeta-1} \\ \elemline 5 & \inelemthree{\half}{0}{0} & $4\xi\left(1-\xi-\eta-\zeta\right)$ & \inelemthree{4-8\xi-4\eta-4\zeta}{-4\xi}{-4\xi} \\ \elemline 6 & \inelemthree{\half}{\half}{0} & $4\xi\eta$ & \inelemthree{4\eta}{4\xi}{0} \\ \elemline 7 & \inelemthree{0}{\half}{0} & $4\eta\left(1-\xi-\eta-\zeta\right)$ & \inelemthree{-4\eta}{4-4\xi-8\eta-4\zeta}{-4\eta} \\ \elemline 8 & \inelemthree{0}{0}{\half} & $4\zeta\left(1-\xi-\eta-\zeta\right)$ & \inelemthree{-4\zeta}{-4\zeta}{4-4\xi-4\eta-8\zeta} \\ \elemline 9 & \inelemthree{\half}{0}{\half} & $4\xi\zeta$ & \inelemthree{4\zeta}{0}{4\xi} \\ \elemline 10 & \inelemthree{0}{\half}{\half} & $4\eta\zeta$ & \inelemthree{0}{4\zeta}{4\eta} \\ \end{Element} \begin{QuadPoints}{lcc} Coord. \elemcoorthreed & \inquadthree{\quada}{\quada}{\quada} & \inquadthree{\quadb}{\quada}{\quada} \\ \elemline Weight & 1/24 & 1/24 \\ \elemline Coord. \elemcoorthreed & \inquadthree{\quada}{\quadb}{\quada} & \inquadthree{\quada}{\quada}{\quadb} \\ \elemline Weight & 1/24 & 1/24 \\ \end{QuadPoints} \clearpage \subsection{Hexahedron 8\index{Elements!3D!Hexahedron 8}} \begin{Element}{3D} 1 & \inelemthree{-1}{-1}{-1} & $\eighth\left(1-\xi\right)\left(1-\eta\right)\left(1-\zeta\right)$ & \inelemthree{-\eighth\left(1-\eta\right)\left(1-\zeta\right)} {-\eighth\left(1-\xi\right)\left(1-\zeta\right)} {-\eighth\left(1-\xi\right)\left(1-\eta\right)} \\ \elemline 2 & \inelemthree{1}{-1}{-1} & $\eighth\left(1+\xi\right)\left(1-\eta\right)\left(1-\zeta\right)$ & \inelemthree{ \eighth\left(1-\eta\right)\left(1-\zeta\right)} {-\eighth\left(1+\xi\right)\left(1-\zeta\right)} {-\eighth\left(1+\xi\right)\left(1-\eta\right)} \\ \elemline 3 & \inelemthree{1}{1}{-1} & $\eighth\left(1+\xi\right)\left(1+\eta\right)\left(1-\zeta\right)$ & \inelemthree{ \eighth\left(1+\eta\right)\left(1-\zeta\right)} { \eighth\left(1+\xi\right)\left(1-\zeta\right)} {-\eighth\left(1+\xi\right)\left(1+\eta\right)} \\ \elemline 4 & \inelemthree{-1}{1}{-1} & $\eighth\left(1-\xi\right)\left(1+\eta\right)\left(1-\zeta\right)$ & \inelemthree{-\eighth\left(1+\eta\right)\left(1-\zeta\right)} { \eighth\left(1-\xi\right)\left(1-\zeta\right)} {-\eighth\left(1-\xi\right)\left(1+\eta\right)} \\ \elemline 5 & \inelemthree{-1}{-1}{1} & $\eighth\left(1-\xi\right)\left(1-\eta\right)\left(1+\zeta\right)$ & \inelemthree{-\eighth\left(1-\eta\right)\left(1+\zeta\right)} {-\eighth\left(1-\xi\right)\left(1+\zeta\right)} { \eighth\left(1-\xi\right)\left(1-\eta\right)} \\ \elemline 6 & \inelemthree{1}{-1}{1} & $\eighth\left(1+\xi\right)\left(1-\eta\right)\left(1+\zeta\right)$ & \inelemthree{ \eighth\left(1-\eta\right)\left(1+\zeta\right)} {-\eighth\left(1+\xi\right)\left(1+\zeta\right)} { \eighth\left(1+\xi\right)\left(1-\eta\right)} \\ \elemline 7 & \inelemthree{1}{1}{1} & $\eighth\left(1+\xi\right)\left(1+\eta\right)\left(1+\zeta\right)$ & \inelemthree{ \eighth\left(1+\eta\right)\left(1+\zeta\right)} { \eighth\left(1+\xi\right)\left(1+\zeta\right)} { \eighth\left(1+\xi\right)\left(1+\eta\right)} \\ \elemline 8 & \inelemthree{-1}{1}{1} & $\eighth\left(1-\xi\right)\left(1+\eta\right)\left(1+\zeta\right)$ & \inelemthree{-\eighth\left(1+\eta\right)\left(1+\zeta\right)} { \eighth\left(1-\xi\right)\left(1+\zeta\right)} { \eighth\left(1-\xi\right)\left(1+\eta\right)} \\ \end{Element} \begin{QuadPoints}{lcccc} \elemcoortwod & \inquadthree{-\invsqrtthree}{-\invsqrtthree}{-\invsqrtthree} & \inquadthree{\invsqrtthree}{-\invsqrtthree}{-\invsqrtthree} & \inquadthree{\invsqrtthree}{\invsqrtthree}{-\invsqrtthree} & \inquadthree{-\invsqrtthree}{\invsqrtthree}{-\invsqrtthree} \\ \elemline Weight & 1 & 1 & 1 & 1 \\ \elemline \elemcoortwod & \inquadthree{-\invsqrtthree}{-\invsqrtthree}{\invsqrtthree} & \inquadthree{\invsqrtthree}{-\invsqrtthree}{\invsqrtthree} & \inquadthree{\invsqrtthree}{\invsqrtthree}{\invsqrtthree} & \inquadthree{-\invsqrtthree}{\invsqrtthree}{\invsqrtthree} \\ \elemline Weight & 1 & 1 & 1 & 1 \\ \end{QuadPoints} +\subsection{Pentahedron 6\index{Elements!3D!Pentahedron 6}} + +\begin{Element}{3D} + 1 & \inelemthree{-1}{1}{0} & $\half\left(1-\xi\right)\eta$ + & \inelemthree{-\half\xi} + { \half\left(1-\xi\right)} + {0.0} \\ +\elemline + 2 & \inelemthree{-1}{0}{1} & $\half\left(1-\xi\right)\zeta$ + & \inelemthree{-\half\eta} + {0.0} + {\half\left(1-\xi\right)} \\ +\elemline + 3 & \inelemthree{-1}{0}{0} & $\half\left(1-\xi\right)\left(1-\eta-zeta\right)$ + & \inelemthree{-\half\left(1-\eta-\zeta\right)} + {-\half\left(1-\xi\right)} + {-\half\left(1-\xi\right)} \\ +\elemline + 4 & \inelemthree{1}{1}{0} & $\half\left(1+\xi\right)\eta$ + & \inelemthree{ \half\eta} + { \half\left(1+\xi\right)} + {0.0} \\ +\elemline + 5 & \inelemthree{1}{0}{1} & $\half\left(1+\xi\right)\zeta$ + & \inelemthree{ \half\zeta} + {0.0} + { \half\left(1+\xi\right)} \\ +\elemline + 6 & \inelemthree{1}{0}{0} & $\half\left(1+\xi\right)\left(1-\eta-\zeta\right)$ + & \inelemthree{ \half\left(1-\eta-\zeta\right)} + {-\half\left(1+\xi\right)} + {-\half\left(1+\xi\right)} \\ +\end{Element} + +\begin{QuadPoints}{lcccccc} +\elemcoortwod & \inquadthree{-\invsqrtthree}{0.5}{0.5} + & \inquadthree{-\invsqrtthree}{0.0}{0.5} + & \inquadthree{-\invsqrtthree}{0.5}{0.0} + & \inquadthree{\invsqrtthree}{0.5}{0.5} + & \inquadthree{\invsqrtthree}{0.0}{0.5} + & \inquadthree{\invsqrtthree}{0.5}{0.0} \\ +\elemline +Weight & 1/6 & 1/6 & 1/6 & 1/6 & 1/6 & 1/6 \\ +\end{QuadPoints} + + +\clearpage +\subsection{Hexahedron 20\index{Elements!3D!Hexahedron 20}} + +\begin{Element_part1}{3D} + 1 & \inelemthree{-1}{-1}{-1} & $\eighth\left(1-\xi\right)\left(1-\eta\right)\left(1-\zeta\right)\left(-2-\xi-\eta-\zeta\right)$ \\ +\elemline + 2 & \inelemthree{1}{-1}{-1} & $\eighth\left(1+\xi\right)\left(1-\eta\right)\left(1-\zeta\right)\left(-2+\xi-\eta-\zeta\right)$ \\ +\elemline + 3 & \inelemthree{1}{1}{-1} & $\eighth\left(1+\xi\right)\left(1+\eta\right)\left(1-\zeta\right)\left(-2+\xi+\eta-\zeta\right)$ \\ +\elemline + 4 & \inelemthree{-1}{1}{-1} & $\eighth\left(1-\xi\right)\left(1+\eta\right)\left(1-\zeta\right)\left(-2-\xi+\eta-\zeta\right)$ \\ +\elemline + 5 & \inelemthree{-1}{-1}{1} & $\eighth\left(1-\xi\right)\left(1-\eta\right)\left(1+\zeta\right)\left(-2-\xi-\eta+\zeta\right)$ \\ +\elemline + 6 & \inelemthree{1}{-1}{1} & $\eighth\left(1+\xi\right)\left(1-\eta\right)\left(1+\zeta\right)\left(-2+\xi-\eta+\zeta\right)$ \\ +\elemline + 7 & \inelemthree{1}{1}{1} & $\eighth\left(1+\xi\right)\left(1+\eta\right)\left(1+\zeta\right)\left(-2+\xi+\eta+\zeta\right)$ \\ +\elemline + 8 & \inelemthree{-1}{1}{1} & $\eighth\left(1-\xi\right)\left(1+\eta\right)\left(1+\zeta\right)\left(-2-\xi+\eta+\zeta\right)$ \\ +\elemline + 9 & \inelemthree{-1}{1}{1} & $\quart\left(1-\xi^{2}\right)\left(1-\eta\right)\left(1-\zeta\right)$ \\ +\elemline +10 & \inelemthree{-1}{1}{1} & $\quart\left(1+\xi\right)\left(1-\eta^{2}\right)\left(1-\zeta\right)$ \\ +\elemline +11 & \inelemthree{-1}{1}{1} & $\quart\left(1-\xi^{2}\right)\left(1+\eta\right)\left(1-\zeta\right)$ \\ +\elemline +12 & \inelemthree{-1}{1}{1} & $\quart\left(1-\xi\right)\left(1-\eta^{2}\right)\left(1-\zeta\right)$ \\ +\elemline +13 & \inelemthree{-1}{1}{1} & $\quart\left(1-\xi\right)\left(1-\eta\right)\left(1-\zeta^{2}\right)$ \\ +\elemline +14 & \inelemthree{-1}{1}{1} & $\quart\left(1+\xi\right)\left(1-\eta\right)\left(1-\zeta^{2}\right)$ \\ +\elemline +15 & \inelemthree{-1}{1}{1} & $\quart\left(1+\xi\right)\left(1+\eta\right)\left(1-\zeta^{2}\right)$ \\ +\elemline +16 & \inelemthree{-1}{1}{1} & $\quart\left(1-\xi\right)\left(1+\eta\right)\left(1-\zeta^{2}\right)$ \\ +\elemline + 17 & \inelemthree{-1}{1}{1} & $\quart\left(1-\xi^{2}\right)\left(1-\eta\right)\left(1+\zeta\right)$ \\ +\elemline +18 & \inelemthree{-1}{1}{1} & $\quart\left(1+\xi\right)\left(1-\eta^{2}\right)\left(1+\zeta\right)$ \\ +\elemline +19 & \inelemthree{-1}{1}{1} & $\quart\left(1-\xi^{2}\right)\left(1+\eta\right)\left(1+\zeta\right)$ \\ +\elemline +20 & \inelemthree{-1}{1}{1} & $\quart\left(1-\xi\right)\left(1-\eta^{2}\right)\left(1+\zeta\right)$ \\ + +\end{Element_part1} + +\clearpage +\begin{Element_part2}{3D} + 1 & \inelemthree{ \quart\left(\xi+\half\left(\eta+\zeta+1\right)\right)\left(\eta-1\right)\left(\zeta-1\right)} + { \quart\left(\eta+\half\left(\xi+\zeta+1\right)\right)\left(\xi-1\right)\left(\zeta-1\right)} + { \quart\left(\zeta+\half\left(\xi+\eta+1\right)\right)\left(\xi-1\right)\left(\eta-1\right)} \\ +\elemline + 2 & \inelemthree{ \quart\left(\xi-\half\left(\eta+\zeta+1\right)\right)\left(\eta-1\right)\left(\zeta-1\right)} + {-\quart\left(\eta-\half\left(\xi-\zeta-1\right)\right)\left(\xi+1\right)\left(\zeta-1\right)} + {-\quart\left(\zeta-\half\left(\xi-\eta-1\right)\right)\left(\xi+1\right)\left(\eta-1\right)} \\ +\elemline + 3 & \inelemthree{-\quart\left(\xi+\half\left(\eta-\zeta-1\right)\right)\left(\eta+1\right)\left(\zeta-1\right)} + {-\quart\left(\eta+\half\left(\xi-\zeta-1\right)\right)\left(\xi+1\right)\left(\zeta-1\right)} + { \quart\left(\zeta-\half\left(\xi+\eta-1\right)\right)\left(\xi+1\right)\left(\eta+1\right)} \\ +\elemline + 4 & \inelemthree{-\quart\left(\xi-\half\left(\eta-\zeta-1\right)\right)\left(\eta+1\right)\left(\zeta-1\right)} + { \quart\left(\eta-\half\left(\xi+\zeta+1\right)\right)\left(\xi-1\right)\left(\zeta-1\right)} + {-\quart\left(\zeta+\half\left(\xi-\eta+1\right)\right)\left(\xi-1\right)\left(\eta+1\right)} \\ +\elemline + 5 & \inelemthree{-\quart\left(\xi+\half\left(\eta-\zeta+1\right)\right)\left(\eta-1\right)\left(\zeta+1\right)} + {-\quart\left(\eta+\half\left(\xi-\zeta+1\right)\right)\left(\xi-1\right)\left(\zeta+1\right)} + { \quart\left(\zeta-\half\left(\xi+\eta+1\right)\right)\left(\xi-1\right)\left(\eta-1\right)} \\ +\elemline + 6 & \inelemthree{-\quart\left(\xi-\half\left(\eta-\zeta+1\right)\right)\left(\eta-1\right)\left(\zeta+1\right)} + { \quart\left(\eta-\half\left(\xi+\zeta-1\right)\right)\left(\xi+\right)\left(\zeta+1\right)} + {-\quart\left(\zeta+\half\left(\xi-\eta-1\right)\right)\left(\xi+1\right)\left(\eta-1\right)} \\ +\elemline + 7 & \inelemthree{ \quart\left(\xi+\half\left(\eta+\zeta-1\right)\right)\left(\eta+1\right)\left(\zeta+1\right)} + { \quart\left(\eta+\half\left(\xi+\zeta-1\right)\right)\left(\xi+\right)\left(\zeta+1\right)} + { \quart\left(\zeta+\half\left(\xi+\eta-1\right)\right)\left(\xi+1\right)\left(\eta+1\right)} \\ +\elemline + 8 & \inelemthree{ \quart\left(\xi-\half\left(\eta+\zeta-1\right)\right)\left(\eta+1\right)\left(\zeta+1\right)} + {-\quart\left(\eta-\half\left(\xi-\zeta+1\right)\right)\left(\xi-\right)\left(\zeta+1\right)} + {-\quart\left(\zeta-\half\left(\xi-\eta+1\right)\right)\left(\xi-1\right)\left(\eta+1\right)} \\ +\elemline + 9 & \inelemthree{-\half\xi\left(\eta-1\right)\left(\zeta-1\right)} + {-\quart\left(\xi^{2}-1\right)\left(\zeta-1\right)} + {-\quart\left(\xi^{2}-1\right)\left(\eta-1\right)} \\ +\elemline +10 & \inelemthree{ \quart\left(\eta^{2}-1\right)\left(\zeta-1\right)} + { \half\eta\left(\xi+1\right)\left(\zeta-1\right)} + { \quart\left(\xi+1\right)\left(\eta^{2}-1\right)} \\ +\elemline +11 & \inelemthree{ \half\xi\left(\eta+1\right)\left(\zeta-1\right)} + { \quart\left(\xi^{2}-1\right)\left(\zeta-1\right)} + { \quart\left(\xi^{2}-1\right)\left(\eta+1\right)} \\ +\elemline +12 & \inelemthree{-\quart\left(\eta^{2}-1\right)\left(\zeta-1\right)} + {-\half\eta\left(\xi-1\right)\left(\zeta-1\right)} + {-\quart\left(\xi-1\right)\left(\eta^{2}-1\right)} \\ +\elemline +13 & \inelemthree{-\quart\left(\eta-1\right)\left(\zeta^{2}-1\right)} + {-\quart\left(\xi-1\right)\left(\zeta^{2}-1\right)} + {-\half\zeta\left(\xi-1\right)\left(\eta-1\right)} \\ +\elemline +14 & \inelemthree{ \quart\left(\eta-1\right)\left(\zeta^{2}-1\right)} + { \quart\eta\left(\xi+1\right)\left(\zeta^{2}-1\right)} + { \half\zeta\left(\xi+1\right)\left(\eta-1\right)} \\ +\elemline +15 & \inelemthree{-\quart\left(\eta+1\right)\left(\zeta^{2}-1\right)} + {-\quart\left(\xi+1\right)\left(\zeta^{2}-1\right)} + {-\half\zeta\left(\xi+1\right)\left(\eta+1\right)} \\ +\elemline +16 & \inelemthree{ \quart\left(\eta+1\right)\left(\zeta^{2}-1\right)} + { \quart\left(\xi-1\right)\left(\zeta^{2}-1\right)} + { \half\zeta\left(\xi-1\right)\left(\eta+1\right)} \\ +\elemline + 17 & \inelemthree{ \half\xi\left(\eta-1\right)\left(\zeta+1\right)} + { \quart\left(\xi^{2}-1\right)\left(\zeta+1\right)} + { \quart\left(\xi^{2}-1\right)\left(\eta-1\right)} \\ +\elemline +18 & \inelemthree{-\quart\left(\eta^{2}-1\right)\left(\zeta+1\right)} + {-\half\eta\left(\xi+1\right)\left(\zeta+1\right)} + {-\quart\left(\xi+1\right)\left(\eta^{2}-1\right)} \\ +\elemline +19 & \inelemthree{-\half\xi\left(\eta+1\right)\left(\zeta+1\right)} + {-\quart\left(\xi^{2}-1\right)\left(\zeta+1\right)} + {-\quart\left(\xi^{2}-1\right)\left(\eta+1\right)} \\ +\elemline +20 & \inelemthree{ \quart\left(\eta^{2}-1\right)\left(\zeta+1\right)} + { \half\eta\left(\xi-1\right)\left(\zeta+1\right)} + { \quart\left(\xi-1\right)\left(\eta^{2}-1\right)} \\ + +\end{Element_part2} + +\begin{QuadPoints}{lcccc} +Coord. \elemcoortwod & \inquadthree{-\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}} {-\sqrt{\tfrac{3}{5}}} & \inquadthree{-\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}} {0} + & \inquadthree{-\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}} {\sqrt{\tfrac{3}{5}}} & \inquadthree{-\sqrt{\tfrac{3}{5}}}{0} {-\sqrt{\tfrac{3}{5}}} \\ +\elemline +Weight & 125/729 & 200/729 & 125/729 & 200/729 \\ +\elemline +Coord. \elemcoortwod & \inquadthree{-\sqrt{\tfrac{3}{5}}}{0}{0} & \inquadthree{-\sqrt{\tfrac{3}{5}}}{0}{\sqrt{\tfrac{3}{5}}} + & \inquadthree{-\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}} & \inquadthree{-\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}}{0} \\ +\elemline +Weight & 320/729 & 200/729 & 125/729 & 200/729 \\ + +\elemline +Coord. \elemcoortwod & \inquadthree{-\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}} & \inquadthree{0}{-\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}} + & \inquadthree{0}{-\sqrt{\tfrac{3}{5}}}{0} & \inquadthree{0}{-\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}} \\ +\elemline +Weight & 125/729 & 200/729 & 320/729 & 200/729 \\ + +\elemline +Coord. \elemcoortwod & \inquadthree{0}{0}{-\sqrt{\tfrac{3}{5}}} & \inquadthree{0}{0}{0} + & \inquadthree{0}{0}{\sqrt{\tfrac{3}{5}}} & \inquadthree{0}{\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}} \\ +\elemline +Weight & 320/729 & 512/729 & 320/729 & 200/729 \\ + +\elemline +Coord. \elemcoortwod & \inquadthree{0}{\sqrt{\tfrac{3}{5}}}{0} & \inquadthree{0}{\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}} + & \inquadthree{\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}} & \inquadthree{\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}}{0} \\ +\elemline +Weight & 320/729 & 200/729 & 125/729 & 200/729 \\ + +\elemline +Coord. \elemcoortwod & \inquadthree{\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}} & \inquadthree{\sqrt{\tfrac{3}{5}}}{0}{-\sqrt{\tfrac{3}{5}}} + & \inquadthree{\sqrt{\tfrac{3}{5}}}{0}{0} & \inquadthree{\sqrt{\tfrac{3}{5}}}{0}{\sqrt{\tfrac{3}{5}}} \\ +\elemline +Weight & 125/729 & 200/729 & 320/729 & 200/729 \\ + +\elemline +Coord. \elemcoortwod & \inquadthree{\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}}{-\sqrt{\tfrac{3}{5}}} & \inquadthree{\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}}{0} + & \inquadthree{\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}}{\sqrt{\tfrac{3}{5}}} & \\ +\elemline +Weight & 125/729 & 200/729 & 125/729 & \\ + +\end{QuadPoints} + + +\clearpage + %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: diff --git a/doc/manual/manual-constitutive-laws.tex b/doc/manual/manual-constitutive-laws.tex index 3f46d34be..8036b5a45 100644 --- a/doc/manual/manual-constitutive-laws.tex +++ b/doc/manual/manual-constitutive-laws.tex @@ -1,544 +1,544 @@ \section{Constitutive Laws \label{sect:smm:CL}}\index{Material} In order to compute an element's response to deformation, one needs to use an appropriate constitutive relationship. The constitutive law is used to compute the element's stresses from the element's strains. In the finite-element discretization, the constitutive formulation is applied to every quadrature point of each element. When the implicit formulation is used, the tangent matrix has to be computed. The chosen materials for the simulation have to be specified in the mesh file or, as an alternative, they can be assigned using the \code{element\_material} vector. For every material assigned to the problem one has to specify the material characteristics (constitutive behavior and material properties) in a text file (\eg material.dat) as follows: \begin{cpp} material %\emph{constitutive\_law}% %\emph{}% [ name = $value$ rho = $value$ ... ] \end{cpp} \index{Constitutive\_laws} where \emph{constitutive\_law} is the adopted constitutive law, followed by the material properties listed one by line in the bracket (\eg \code{name} and density \code{rho}). Some constitutive laws can also have an \emph{optional flavor}. For example a non-local constitutive law can be flavored by a weight function. The file needs to be loaded in \akantu using the \code{initialize} method of \akantu (as shown in Section~\ref{sec:writing_main}) \begin{cpp} initialize("material.dat", argc, argv); \end{cpp} % or, alternatively, the \code{initFull} method. % \begin{cpp} % model.initFull("material.dat"); % \end{cpp} In order to conveniently store values at each quadrature in a material point \akantu provides a special data structure, the \code{InternalField}. The internal fields are inheriting from the \code{ElementTypeMapArray}. Furthermore, it provides several functions for initialization, auto-resizing and auto removal of quadrature points. Sometimes it is also desired to generate random distributions of internal parameters. An example might be the critical stress at which the material fails. To generate such a field, in the material input file, a random quantity needs be added to the base value: \begin{cpp} sigma_c = $base$ sigma_c = $base$ uniform [$min$, $max$] sigma_c = $base$ weibull [$\lambda$, $m$] \end{cpp} All parameters are real numbers. For the uniform distribution, minimum and maximum values have to be specified. Random parameters are defined as a $base$ value to which we add a random number that follows the chosen distribution. The \href{http://en.wikipedia.org/wiki/Uniform\_distribution\_(continuous)}{\emph{Uniform}} distribution is gives a random values between in $[min, max)$. The \href{http://en.wikipedia.org/wiki/Weibull\_distribution}{\emph{Weibull}} distribution is characterized by the following cumulative distribution function: \begin{equation} F(x) = 1- e^{-\left({x/\lambda}\right)^m} \end{equation} which depends on $m$ and $\lambda$, which are the shape parameter and the scale parameter. These random distributions are different each time the code is executed. In order to obtain always the same one, it possible to manually set the \emph{seed} that is the number from which these pseudo-random distributions are created. This can be done by adding the following line to the input file \emph{outside} the material parameters environments: \begin{cpp} seed = 1.0 \end{cpp} where the value 1 can be substituted with any number. Currently \akantu is can reproduce always the same distribution when the seed is specified \emph{only} in serial. The following sections describe the constitutive models implemented in \akantu. In Appendix~\ref{app:material-parameters} a summary of the parameters for all materials of \akantu is provided. \subsection{Elasticity}\index{Material!Elastic} The elastic law is a commonly used constitutive relationship that can be used for a wide range of engineering materials (\eg metals, concrete, rock, wood, glass, rubber, etc.) provided that the strains remain small (\ie small deformation and stress lower than yield strength). The elastic laws are often expressed as $\mat{\sigma} = \mat{C}:\mat{\varepsilon}$ with where $\mat{\sigma}$ is the Cauchy stress tensor, $\mat{\varepsilon}$ represents the infinitesimal strain tensor and $\mat{C}$ is the elastic modulus tensor. \subsubsection{Linear isotropic\matlabel{ssect:smm:linear-elastic-isotropic}} The linear isotropic elastic behavior is described by Hooke's law, which states that the stress is linearly proportional to the applied strain (material behaves like an ideal spring), as illustrated in Figure~\ref{fig:smm:cl:elastic}. \begin{figure}[!htb] \begin{center} \subfloat[]{ \begin{tikzpicture} \draw[thick,latex-latex] (0,5) node[left] {$\sigma$} |- (5,0) node (x) [right, below] {$\varepsilon$}; \draw[thin] (1.5,1.5) -- (2.5,1.5) -- (2.5,2.5) node [midway, right] {E}; \draw[very thick,color=red] (0,0) -- (4,4); \draw[very thick,latex-latex,color=red] (1,1) -- (3,3); \end{tikzpicture} \label{fig:smm:cl:elastic:stress_strain} } \hspace{0.05\textwidth} \subfloat[]{ \raisebox{0.125\textwidth}{\includegraphics[width=0.25\textwidth,keepaspectratio=true]{figures/hooke_law.pdf}} \label{fig:smm:cl:elastic:hooke} } \caption{(a) Stress-strain curve for elastic material and (b) schematic representation of Hooke's law, denoted as a spring.} \label{fig:smm:cl:elastic} \end{center} \end{figure} The equation that relates the strains to the displacements is: % First the strain is computed (at every gauss point) from the displacements as follows: \begin{equation} \label{eqn:smm:strain_inf} \mat{\varepsilon} = \frac{1}{2} \left[ \nabla_0 \vec{u}+\nabla_0 \vec{u}^T \right] \end{equation} where $\mat{\varepsilon}$ represents the infinitesimal strain tensor, $\nabla_{0}\vec{u}$ the displacement gradient tensor according to the initial configuration. The constitutive equation for isotropic homogeneous media can be expressed as: \begin{equation} \label{eqn:smm:material:constitutive_elastic} \mat{\sigma } =\lambda\mathrm{tr}(\mat{\varepsilon})\mat{I}+2 \mu\mat{\varepsilon} \end{equation} where $\mat{\sigma}$ is the Cauchy stress tensor ($\lambda$ and $\mu$ are the the first and second Lame's coefficients). In Voigt notation this correspond to \begin{align} \left[\begin{array}{c} \sigma_{11}\\ \sigma_{22}\\ \sigma_{33}\\ \sigma_{23}\\ \sigma_{13}\\ \sigma_{12}\\ \end{array}\right] &= \frac{E}{(1+\nu)(1-2\nu)}\left[ \begin{array}{cccccc} 1-\nu & \nu & \nu & 0 & 0 & 0\\ \nu & 1-\nu & \nu & 0 & 0 & 0\\ \nu & \nu & 1-\nu & 0 & 0 & 0\\ 0 & 0 & 0 & \frac{1-2\nu}{2} & 0 & 0 \\ 0 & 0 & 0 & 0 & \frac{1-2\nu}{2} & 0 \\ 0 & 0 & 0 & 0 & 0 & \frac{1-2\nu}{2} \\ \end{array}\right] \left[\begin{array}{c} \varepsilon_{11}\\ \varepsilon_{22}\\ \varepsilon_{33}\\ 2\varepsilon_{23}\\ 2\varepsilon_{13}\\ 2\varepsilon_{12}\\ \end{array}\right] \end{align} \subsubsection{Linear anisotropic\matlabel{ssect:smm:linear-elastic-anisotropic}} This formulation is not sufficient to represent all elastic material behavior. Some materials have characteristic orientation that have to be taken into account. To represent this anisotropy a more general stress-strain law has to be used. For this we define the elastic modulus tensor as follow: \begin{align} \left[\begin{array}{c} \sigma_{11}\\ \sigma_{22}\\ \sigma_{33}\\ \sigma_{23}\\ \sigma_{13}\\ \sigma_{12}\\ \end{array}\right] &= \left[ \begin{array}{cccccc} c_{11} & c_{12} & c_{13} & c_{14} & c_{15} & c_{16}\\ c_{21} & c_{22} & c_{23} & c_{24} & c_{25} & c_{26}\\ c_{31} & c_{32} & c_{33} & c_{34} & c_{35} & c_{36}\\ c_{41} & c_{42} & c_{43} & c_{44} & c_{45} & c_{46}\\ c_{51} & c_{52} & c_{53} & c_{54} & c_{55} & c_{56}\\ c_{61} & c_{62} & c_{63} & c_{64} & c_{65} & c_{66}\\ \end{array}\right] \left[\begin{array}{c} \varepsilon_{11}\\ \varepsilon_{22}\\ \varepsilon_{33}\\ 2\varepsilon_{23}\\ 2\varepsilon_{13}\\ 2\varepsilon_{12}\\ \end{array}\right] \end{align} \begin{figure}[h] \centering \begin{tikzpicture} \draw[thick,latex-latex] (90:3) node[left] {$\vec{e_2}$} |- (0:3) node [right, below] {$\vec{e_1}$}; \draw[ultra thick,latex-latex] (150:3) node[left] {$\vec{n_2}$} -- (0,0) -- (20:3) node [right] {$\vec{n_1}$}; \end{tikzpicture} \caption{Material basis} \end{figure} To simplify the writing of input files the \mat{C} tensor is expressed in the material basis. And this basis as to be given too. This basis $\Omega_{\st{mat}} = \{\vec{n_1}, \vec{n_2}, \vec{n_3}\}$ is used to define the rotation $R_{ij} = \vec{n_j} . \vec{e_i}$. And $\mat{C}$ can be rotated in the global basis $\Omega = \{\vec{e_1}, \vec{e_2}, \vec{e_3}\}$ as follow: \begin{align} \mat{C}_{\Omega} &= \mat{R}_1 \mat{C}_{\Omega_{\st{mat}}} \mat{R}_2\\ \mat{R}_1 &= \left[ \begin{array}{cccccc} R_{11} R_{11} & R_{12} R_{12} & R_{13} R_{13} & R_{12} R_{13} & R_{11} R_{13} & R_{11} R_{12}\\ R_{21} R_{21} & R_{22} R_{22} & R_{23} R_{23} & R_{22} R_{23} & R_{21} R_{23} & R_{21} R_{22}\\ R_{31} R_{31} & R_{32} R_{32} & R_{33} R_{33} & R_{32} R_{33} & R_{31} R_{33} & R_{31} R_{32}\\ R_{21} R_{31} & R_{22} R_{32} & R_{23} R_{33} & R_{22} R_{33} & R_{21} R_{33} & R_{21} R_{32}\\ R_{11} R_{31} & R_{12} R_{32} & R_{13} R_{33} & R_{12} R_{33} & R_{11} R_{33} & R_{11} R_{32}\\ R_{11} R_{21} & R_{12} R_{22} & R_{13} R_{23} & R_{12} R_{23} & R_{11} R_{23} & R_{11} R_{22}\\ \end{array}\right]\\ \mat{R}_2 &= \left[ \begin{array}{cccccc} R_{11} R_{11} & R_{21} R_{21} & R_{31} R_{31} & R_{21} R_{31} & R_{11} R_{31} & R_{11} R_{21}\\ R_{12} R_{12} & R_{22} R_{22} & R_{32} R_{32} & R_{22} R_{32} & R_{12} R_{32} & R_{12} R_{22}\\ R_{13} R_{13} & R_{23} R_{23} & R_{33} R_{33} & R_{23} R_{33} & R_{13} R_{33} & R_{13} R_{23}\\ R_{12} R_{13} & R_{22} R_{23} & R_{32} R_{33} & R_{22} R_{33} & R_{12} R_{33} & R_{12} R_{23}\\ R_{11} R_{13} & R_{21} R_{23} & R_{31} R_{33} & R_{21} R_{33} & R_{11} R_{33} & R_{11} R_{23}\\ R_{11} R_{12} & R_{21} R_{22} & R_{31} R_{32} & R_{21} R_{32} & R_{11} R_{32} & R_{11} R_{22}\\ \end{array}\right]\\ \end{align} \subsubsection{Linear orthotropic\matlabel{ssect:smm:linear-elastic-orthotropic}} A particular case of anisotropy is when the material basis is orthogonal in which case the elastic modulus tensor can be simplified and rewritten in terms of 9 independents material parameters. \begin{align} \left[\begin{array}{c} \sigma_{11}\\ \sigma_{22}\\ \sigma_{33}\\ \sigma_{23}\\ \sigma_{13}\\ \sigma_{12}\\ \end{array}\right] &= \left[ \begin{array}{cccccc} c_{11} & c_{12} & c_{13} & 0 & 0 & 0 \\ & c_{22} & c_{23} & 0 & 0 & 0 \\ & & c_{33} & 0 & 0 & 0 \\ & & & c_{44} & 0 & 0 \\ & \multicolumn{2}{l}{\text{sym.}} & & c_{55} & 0 \\ & & & & & c_{66}\\ \end{array}\right] \left[\begin{array}{c} \varepsilon_{11}\\ \varepsilon_{22}\\ \varepsilon_{33}\\ 2\varepsilon_{23}\\ 2\varepsilon_{13}\\ 2\varepsilon_{12}\\ \end{array}\right] \end{align} \begin{align} c_{11} &= E_1 (1 - \nu_{23}\nu_{32})\Gamma \qquad c_{22} = E_2 (1 - \nu_{13}\nu_{31})\Gamma \qquad c_{33} = E_3 (1 - \nu_{12}\nu_{21})\Gamma\\ c_{12} &= E_1 (\nu_{21} - \nu_{31}\nu_{23})\Gamma = E_2 (\nu_{12} - \nu_{32}\nu_{13})\Gamma\\ c_{13} &= E_1 (\nu_{31} - \nu_{21}\nu_{32})\Gamma = E_2 (\nu_{13} - \nu_{21}\nu_{23})\Gamma\\ c_{23} &= E_2 (\nu_{32} - \nu_{12}\nu_{31})\Gamma = E_3 (\nu_{23} - \nu_{21}\nu_{13})\Gamma\\ c_{44} &= \mu_{23} \qquad c_{55} = \mu_{13} \qquad c_{66} = \mu_{12} \\ \Gamma &= \frac{1}{1 - \nu_{12} \nu_{21} - \nu_{13} \nu_{31} - \nu_{32} \nu_{23} - 2 \nu_{21} \nu_{32} \nu_{13}} \end{align} -The poison ratios follow the rule $\nu_{ij} = \nu_{ji} E_i / E_j$. +The Poisson ratios follow the rule $\nu_{ij} = \nu_{ji} E_i / E_j$. \subsection{Neo-Hookean\matlabel{ssect:smm:cl:neohookean}}\index{Material!Neohookean} The hyperelastic Neo-Hookean constitutive law results from an extension of the linear elastic relationship (Hooke's Law) for large deformation. Thus, the model predicts nonlinear stress-strain behavior for bodies undergoing large deformations. \begin{figure}[!htb] \begin{center} \includegraphics[width=0.4\textwidth,keepaspectratio=true]{figures/stress_strain_neo.pdf} \caption{Neo-hookean Stress-strain curve.} \label{fig:smm:cl:neo_hookean} \end{center} \end{figure} As illustrated in Figure~\ref{fig:smm:cl:neo_hookean}, the behavior is initially linear and the mechanical behavior is very close to the corresponding linear elastic material. This constitutive relationship, which accounts for compressibility, is a modified version of the one proposed by Ronald Rivlin \cite{Belytschko:2000}. The strain energy stored in the material is given by: \begin{equation}\label{eqn:smm:constitutive:neohookean_potential} \Psi(\mat{C}) = \frac{1}{2}\lambda_0\left(\ln J\right)^2-\mu_0\ln J+\frac{1}{2} \mu_0\left(\mathrm{tr}(\mat{C})-3\right) \end{equation} \noindent where $\lambda_0$ and $\mu_0$ are, respectively, Lam\'e's first parameter and the shear modulus at the initial configuration. $J$ is the jacobian of the deformation gradient ($\mat{F}=\nabla_{\!\!\vec{X}}\vec{x}$): $J=\text{det}(\mat{F})$. Finally $\mat{C}$ is the right Cauchy-Green deformation tensor. Since this kind of material is used for large deformation problems, a finite deformation framework should be used. Therefore, the Cauchy stress ($\mat{\sigma}$) should be computed through the second Piola-Kirchhoff stress tensor $\mat{S}$: \begin{equation} \mat{\sigma } = \frac{1}{J}\mat{F}\mat{S}\mat{F}^T \end{equation} Finally the second Piola-Kirchhoff stress tensor is given by: \begin{equation} \mat{S} = 2\frac{\partial\Psi}{\partial\mat{C}} = \lambda_0\ln J \mat{C}^{-1}+\mu_0\left(\mat{I}-\mat{C}^{-1}\right) \end{equation} The parameters to indicate in the material file are the same as those for the elastic case: \code{E} (Young's modulus), \code{nu} (Poisson's ratio). \subsection{Visco-Elasticity\matlabel{ssect:smm:cl:sls}} % Standard Solid rheological model, see [] J.C. Simo, T.J.R. Hughes, % "Computational Inelasticity", Springer (1998), see Sections 10.2 and 10.3 Visco-elasticity is characterized by strain rate dependent behavior. Moreover, when such a material undergoes a deformation it dissipates energy. This dissipation results in a hysteresis loop in the stress-strain curve at every loading cycle (see Figure~\ref{fig:smm:cl:visco-elastic:hyst}). In principle, it can be applied to many materials, since all materials exhibit a visco-elastic behavior if subjected to particular conditions (such as high temperatures). \begin{figure}[!htb] \begin{center} \subfloat[]{ \includegraphics[width=0.4\textwidth,keepaspectratio=true]{figures/stress_strain_visco.pdf} \label{fig:smm:cl:visco-elastic:hyst} } \hspace{0.05\textwidth} \subfloat[]{ \raisebox{0.025\textwidth}{\includegraphics[width=0.3\textwidth,keepaspectratio=true]{figures/visco_elastic_law.pdf}} \label{fig:smm:cl:visco-elastic:model} } \caption{(a) Characteristic stress-strain behavior of a visco-elastic material with hysteresis loop and (b) schematic representation of the standard rheological linear solid visco-elastic model.} \label{fig:smm:cl:visco-elastic} \end{center} \end{figure} The standard rheological linear solid model (see Sections 10.2 and 10.3 of~\cite{simo92}) has been implemented in \akantu. This model results from the combination of a spring mounted in parallel with a spring and a dashpot connected in series, as illustrated in Figure~\ref{fig:smm:cl:visco-elastic:model}. The advantage of this model is that it allows to account for creep or stress relaxation. The equation that relates the stress to the strain is (in 1D): \begin{equation} \frac{d\varepsilon(t)}{dt} = \left ( E + E_V \right ) ^ {-1} \cdot \left [ \frac{d\sigma(t)}{dt} + \frac{E_V}{\eta}\sigma(t) - \frac{EE_V}{\eta}\varepsilon(t) \right ] \end{equation} where $\eta$ is the viscosity. The equilibrium condition is unique and is attained in the limit, as $t \to \infty $. At this stage, the response is elastic and depends on the Young's modulus $E$. The mandatory parameters for the material file are the following: \code{rho} (density), \code{E} (Young's modulus), \code{nu} (Poisson's ratio), \code{Plane\_Stress} (if set to zero plane strain, otherwise plane stress), \code{eta} (dashpot viscosity) and \code{Ev} (stiffness of the viscous element). Note that the current standard linear solid model is applied only on the deviatoric part of the strain tensor. The spheric part of the strain tensor affects the stress tensor like an linear elastic material. \subsection{Small-Deformation Plasticity\matlabel{ssect:smm:cl:plastic}}\index{Material!Small-deformation Plasticity} The small-deformation plasticity is a simple plasticity material formulation which accounts for the additive decomposition of strain into elastic and plastic strain components. This formulation is applicable to infinitesimal deformation where the additive decomposition of the strain is a valid approximation. In this formulation, plastic strain is a shearing process where hydrostatic stress has no contribution to plasticity and consequently plasticity does not lead to volume change. Figure~\ref{fig:smm:cl:Lin-strain-hard} shows the linear strain hardening elasto-plastic behavior according to the additive decomposition of strain into the elastic and plastic parts in infinitesimal deformation as \begin{align} \mat{\varepsilon} &= \mat{\varepsilon}^e +\mat{\varepsilon}^p\\ {\mat{\sigma}} &= 2G(\mat{\varepsilon}^e) + \lambda \mathrm{tr}(\mat{\varepsilon}^e)\mat{I} \end{align} \begin{figure}[htp] \centering {\includegraphics[scale=0.4, clip]{figures/isotropic_hardening_plasticity.pdf}} \caption{ Stress-strain curve for the small-deformation plasticity with linear isotropic hardening. } \label{fig:smm:cl:Lin-strain-hard} \end{figure} \noindent In this class, the von Mises yield criterion is used. In the von Mises yield criterion, the yield is independent of the hydrostatic stress. Other yielding criteria such as Tresca and Gurson can be easily implemented in this class as well. In the von Mises yield criterion, the hydrostatic stresses have no effect on the plasticity and consequently the yielding occurs when a critical elastic shear energy is achieved. \begin{equation} \label{eqn:smm:constitutive:von Mises} f = \sigma_{\st{eff}} - \sigma_y = \left(\frac{3}{2} {\mat{\sigma}}^{\st{tr}} : {\mat{\sigma}}^{\st{tr}}\right)^\frac{1}{2}-\sigma_y (\mat{\varepsilon}^p) \end{equation} \begin{equation} \label{eqn:smm:constitutive:yielding} f < 0 \quad \textrm{Elastic deformation,} \qquad f = 0 \quad \textrm{Plastic deformation} \end{equation} where $\sigma_y$ is the yield strength of the material which can be function of plastic strain in case of hardening type of materials and ${\mat{\sigma}}^{\st{tr}}$ is the deviatoric part of stress given by \begin{equation} \label{eqn:smm:constitutive:deviatoric stress} {\mat{\sigma}}^{\st{tr}}=\mat{\sigma} - \frac{1}{3} \mathrm{tr}(\mat{\sigma}) \mat {I} \end{equation} After yielding $(f = 0)$, the normality hypothesis of plasticity determines the direction of plastic flow which is normal to the tangent to the yielding surface at the load point. Then, the tensorial form of the plastic constitutive equation using the von Mises yielding criterion (see equation 4.34) may be written as \begin{equation} \label{eqn:smm:constitutive:plastic contitutive equation} \Delta {\mat{\varepsilon}}^p = \Delta p \frac {\partial{f}}{\partial{\mat \sigma}}=\frac{3}{2} \Delta p \frac{{\mat{\sigma}}^{\st{tr}}}{\sigma_{\st{eff}}} \end{equation} In these expressions, the direction of the plastic strain increment (or equivalently, plastic strain rate) is given by $\frac{{\mat{\sigma}}^{\st{tr}}}{\sigma_{\st{eff}}}$ while the magnitude is defined by the plastic multiplier $\Delta p$. This can be obtained using the \emph{consistency condition} which impose the requirement for the load point to remain on the yielding surface in the plastic regime. Here, we summarize the implementation procedures for the small-deformation plasticity with linear isotropic hardening: \begin{enumerate} \item Compute the trial stress: \begin{equation} {\mat{\sigma}}^{\st{tr}} = {\mat{\sigma}}_t + 2G\Delta \mat{\varepsilon} + \lambda \mathrm{tr}(\Delta \mat{\varepsilon})\mat{I} \end{equation} \item Check the Yielding criteria: \begin{equation} f = (\frac{3}{2} {\mat{\sigma}}^{\st{tr}} : {\mat{\sigma}}^{\st{tr}})^{1/2}-\sigma_y (\mat{\varepsilon}^p) \end{equation} \item Compute the Plastic multiplier: \begin{align} d \Delta p &= \frac{\sigma^{tr}_{eff} - 3G \Delta P^{(k)}- \sigma_y^{(k)}}{3G + h}\\ \Delta p^{(k+1)} &= \Delta p^{(k)}+ d\Delta p\\ \sigma_y^{(k+1)} &= (\sigma_y)_t+ h\Delta p \end{align} \item Compute the plastic strain increment: \begin{equation} \Delta {\mat{\varepsilon}}^p = \frac{3}{2} \Delta p \frac{{\mat{\sigma}}^{\st{tr}}}{\sigma_{\st{eff}}} \end{equation} \item Compute the stress increment: \begin{equation} {\Delta \mat{\sigma}} = 2G(\Delta \mat{\varepsilon}-\Delta \mat{\varepsilon}^p) + \lambda \mathrm{tr}(\Delta \mat{\varepsilon}-\Delta \mat{\varepsilon}^p)\mat{I} \end{equation} \item Update the variables: \begin{align} {\mat{\varepsilon^p}} &= {\mat{\varepsilon}}^p_t+{\Delta {\mat{\varepsilon}}^p}\\ {\mat{\sigma}} &= {\mat{\sigma}}_t+{\Delta \mat{\sigma}} \end{align} \end{enumerate} We use an implicit integration technique called \emph{the radial return method} to obtain the plastic multiplier. This method has the advantage of being unconditionally stable, however, the accuracy remains dependent on the step size. The plastic parameters to indicate in the material file are: \code{$\sigma_y$} (Yield stress) and \code{h} (Hardening modulus). In addition, the elastic parameters need to be defined as previously mentioned: \code{E} (Young's modulus), \code{nu} (Poisson's ratio). \subsection{Damage} In the simplified case of a linear elastic and brittle material, isotropic damage can be represented by a scalar variable $d$, which varies from $0$ to $1$ for no damage to fully broken material respectively. The stress-strain relationship then becomes: \begin{equation*} \mat{\sigma} = (1-d)\, \mat{C}:\mat{\varepsilon} \end{equation*} where $\mat{\sigma}$, $\mat{\varepsilon}$ are the Cauchy stress and strain tensors, and $\mat{C}$ is the elastic stiffness tensor. This formulation relies on the definition of an evolution law for the damage variable. In \akantu, many possibilities exist and they are listed below. \subsubsection{Marigo\matlabel{ssect:smm:cl:damage-marigo}} This damage evolution law is energy based as defined by Marigo \cite{marigo81a, lemaitre96a}. It is an isotropic damage law. \begin{align} Y &= \frac{1}{2}\mat{\varepsilon}:\mat{C}:\mat{\varepsilon}\\ F &= Y - Y_d - S d\\ d &= \left\{ \begin{array}{l l} \mathrm{min}\left(\frac{Y-Y_d}{S},\;1\right) & \mathrm{if}\; F > 0\\ \mathrm{unchanged} & \mathrm{otherwise} \end{array} \right. \end{align} In this formulation, $Y$ is the strain energy release rate, $Y_d$ the rupture criterion and $S$ the damage energy. The non-local version of this damage evolution law is constructed by averaging the energy $Y$. \subsubsection{Mazars\matlabel{ssect:smm:cl:damage-mazars}} This law introduced by Mazars \cite{mazars84a} is a behavioral model to represent damage evolution in concrete. This model does not rely on the computation of the tangent stiffness, the damage is directly evaluated from the strain. The governing variable in this damage law is the equivalent strain $\varepsilon_{\st{eq}} = \sqrt{<\mat{\varepsilon}>_+:<\mat{\varepsilon}>_+}$, with $<.>_+$ the positive part of the tensor. This part is defined in the principal coordinates (I, II, III) as $\varepsilon_{\st{eq}} = \sqrt{<\mat{\varepsilon_I}>_+^2 + <\mat{\varepsilon_{II}}>_+^2 + <\mat{\varepsilon_{III}}>_+^2}$. The damage is defined as: \begin{align} D &= \alpha_t^\beta D_t + (1-\alpha_t)^\beta D_c\\ D_t &= 1 - \frac{\kappa_0 (1- A_t)}{\varepsilon_{\st{eq}}} - A_t \exp^{-B_t(\varepsilon_{\st{eq}}-\kappa_0)}\\ D_c &= 1 - \frac{\kappa_0 (1- A_c)}{\varepsilon_{\st{eq}}} - A_c \exp^{-B_c(\varepsilon_{\st{eq}}-\kappa_0)}\\ \alpha_t &= \frac{\sum_{i=1}^3<\varepsilon_i>_+\varepsilon_{\st{nd}\;i}}{\varepsilon_{\st{eq}}^2} \end{align} With $\kappa_0$ the damage threshold, $A_t$ and $B_t$ the damage parameter in traction, $A_c$ and $B_c$ the damage parameter in compression, $\beta$ is the shear parameter. $\alpha_t$ is the coupling parameter between traction and compression, the $\varepsilon_i$ are the eigenstrain and the $\varepsilon_{\st{nd}\;i}$ are the eigenvalues of the strain if the material were undamaged. The coefficients $A$ and $B$ are the post-peak asymptotic value and the decay shape parameters. \IfFileExists{manual-constitutive-laws-non_local.tex}{\input{manual-constitutive-laws-non_local.tex}}{} \IfFileExists{manual-extra_materials.tex}{\input{manual-extra_materials}}{} \IfFileExists{manual-cohesive_laws.tex}{\input{manual-cohesive_laws}}{} %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: diff --git a/doc/manual/manual.sty b/doc/manual/manual.sty index 36dcb2425..3e4be3cfd 100644 --- a/doc/manual/manual.sty +++ b/doc/manual/manual.sty @@ -1,328 +1,372 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% LaTeX STYLE SHEET for AKANTU DOCUMENTATION %% %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Geometry \usepackage{a4wide} \usepackage{geometry} \geometry{ pdftex=true, twoside=true, margin=20mm, bottom=20mm, top=20mm, bindingoffset=5.5mm } % Font encoding \usepackage[T1]{fontenc} \usepackage{palatino} % Line spacing \linespread{1.05}\selectfont % Allow spaces to be added at the end of macro \usepackage{xspace} % Mathematics (including correct font encoding, after amsmath) \usepackage{amsmath} \usepackage{amssymb} \usepackage{pxfonts} \setlength\mathindent{2em} % Some unit stuff \usepackage{siunitx} % Easy tables \usepackage{booktabs} \usepackage{longtable} \usepackage{rotating} % For sideways tables \usepackage{multirow} % For larger cells % A special environment for element tables \newcommand\elemline{}%{\noalign{\smallskip}\hline\noalign{\smallskip}} \newcommand\elemcooroned{\ensuremath{\left(\xi\right)}} \newcommand\elemcoortwod{\ensuremath{\left(\xi\;,\;\eta\right)}} \newcommand\elemcoorthreed{\ensuremath{\left(\xi\;,\;\eta\;,\;\zeta\right)}} \newcommand\elemdshapeoned{\ensuremath{\left(\partial N_i/\partial\xi\right)}} \newcommand\elemdshapetwod{\ensuremath{\left(\partial N_i/\partial\xi\;,\;\partial N_i/\partial\eta\right)}} \newcommand\elemdshapethreed{\ensuremath{\left(\partial N_i/\partial\xi\;,\;\partial N_i/\partial\eta\;,\;\partial N_i/\partial\zeta\right)}} \newcommand\inelemone[1]{\ensuremath{#1}} %\newcommand\inelemtwo[2]{\ensuremath{\begin{pmatrix} {\; #1} & \!,\! & {#2 \;} \end{pmatrix}}} %\newcommand\inelemthree[3]{\ensuremath{\begin{pmatrix} {\; #1} & \!,\! & {#2} & \!,\! & {#3 \;} \end{pmatrix}}} \newcommand\inelemtwo[2]{\ensuremath{\left( {\; #1} \; , \; {#2 \;} \right)}} \newcommand\inelemthree[3]{\ensuremath{\left( {\; #1} \; , \; {#2} \; , \; {#3 \;} \right)}} \newcommand\inelemthreecolumn[3]{\ensuremath{\begin{array}{c}( {\; #1} \; ,\\{#2} \; ,\\{#3 \;} )\end{array}}} \newcommand\inquadone[1]{\ensuremath{#1}} \newcommand\inquadtwo[2]{\ensuremath{\left(\, #1 \, , \, #2 \,\right)}} \newcommand\inquadthree[3]{\ensuremath{\left(\, #1 \, , \, #2 \, , \, #3 \,\right)}} %\newcommand\quada{\tfrac{1}{20}\left(5-\sqrt{5}\right)} %\newcommand\quadb{\tfrac{1}{20}\left(5+3\sqrt{5}\right)} \newcommand\quada{\tfrac{\left(5-\sqrt{5}\right)}{20}} \newcommand\quadb{\tfrac{\left(5+3\sqrt{5}\right)}{20}} \newenvironment{Element}[1] {%\begin{table*}[!htbp] \footnotesize \ifthenelse{\equal{#1}{1D}}{\renewcommand{\arraystretch}{1.50}}{} \ifthenelse{\equal{#1}{2D}}{\renewcommand{\arraystretch}{1.60}}{} \ifthenelse{\equal{#1}{3D}}{\renewcommand{\arraystretch}{1.70}}{} \textbf{{\normalsize Element properties}}\\%\vspace*{0.5\baselineskip} \begin{tabular}{cccc}\\[-2ex] \toprule % \multicolumn{4}{l}{\textbf{{\normalsize Element properties}}} \\ Node ($i$) & Coord. \ifthenelse{\equal{#1}{1D}}{\elemcooroned}{} \ifthenelse{\equal{#1}{2D}}{\elemcoortwod}{} \ifthenelse{\equal{#1}{3D}}{\elemcoorthreed}{} & Shape function ($N_{i}$) & {Derivative \ifthenelse{\equal{#1}{1D}}{\elemdshapeoned}{} \ifthenelse{\equal{#1}{2D}}{\elemdshapetwod}{} \ifthenelse{\equal{#1}{3D}}{\elemdshapethreed}{} }\\ \midrule \elemline } {\bottomrule \end{tabular}%\end{table*} } + +\newenvironment{Element_part1}[1] + {%\begin{table*}[!htbp] + \footnotesize + \ifthenelse{\equal{#1}{1D}}{\renewcommand{\arraystretch}{1.50}}{} + \ifthenelse{\equal{#1}{2D}}{\renewcommand{\arraystretch}{1.60}}{} + \ifthenelse{\equal{#1}{3D}}{\renewcommand{\arraystretch}{1.70}}{} + \textbf{{\normalsize Element properties}}\\%\vspace*{0.5\baselineskip} + \begin{tabular}{ccc}\\[-2ex] + \toprule + % \multicolumn{4}{l}{\textbf{{\normalsize Element properties}}} \\ + Node ($i$) & Coord. + \ifthenelse{\equal{#1}{1D}}{\elemcooroned}{} + \ifthenelse{\equal{#1}{2D}}{\elemcoortwod}{} + \ifthenelse{\equal{#1}{3D}}{\elemcoorthreed}{} + & Shape function ($N_{i}$)\\ + \midrule + \elemline + } + {\bottomrule\end{tabular}}%\end{table*}} + +\newenvironment{Element_part2}[1] + {%\begin{table*}[!htbp] + \footnotesize + \ifthenelse{\equal{#1}{1D}}{\renewcommand{\arraystretch}{1.50}}{} + \ifthenelse{\equal{#1}{2D}}{\renewcommand{\arraystretch}{1.60}}{} + \ifthenelse{\equal{#1}{3D}}{\renewcommand{\arraystretch}{1.70}}{} + \textbf{{\normalsize Element properties}}\\%\vspace*{0.5\baselineskip} + \begin{tabular}{cccc}\\[-2ex] + \toprule + % \multicolumn{4}{l}{\textbf{{\normalsize Element properties}}} \\ + Node ($i$) + & {Derivative + \ifthenelse{\equal{#1}{1D}}{\elemdshapeoned}{} + \ifthenelse{\equal{#1}{2D}}{\elemdshapetwod}{} + \ifthenelse{\equal{#1}{3D}}{\elemdshapethreed}{} + }\\ + \midrule + \elemline + } + {\bottomrule + \end{tabular}%\end{table*} + } + \newenvironment{QuadPoints}[1] {\vspace*{\baselineskip} %\begin{table*}[!htbp] \footnotesize \renewcommand{\arraystretch}{1.50} \noindent\textbf{{\normalsize Gaussian quadrature points}}\newline%\vspace*{0.5\baselineskip} \begin{tabular}{#1}\\[-2ex] \toprule } {\bottomrule\end{tabular}}%\end{table*}} %\usepackage{xparse} \newenvironment{MaterialDesc}[2]{ \label{#2-app} Keyword: \code{#1}\par \noindent Description here: \ref{#2}\par \noindent Parameters:\par \vspace*{-.4cm} \begin{itemize} \setlength{\topsep}{0ex}% \setlength{\parsep}{0cm}% \setlength{\itemsep}{0cm}% \setlength{\parskip}{0cm}% }{\end{itemize}} \newcommand{\matparam}[3]{\item \code{#1}: (\emph{#2}) #3} \newcommand{\matinherit}[1]{\usebox{#1}} \newcommand{\matlabel}[1]{\label{#1}\xspace(\ref{#1-app})} % Nice coloring \usepackage[dvipsnames,usenames,table]{xcolor} \definecolor{RED}{rgb}{1,0,0} \definecolor{cppbg}{HTML}{EBF2F2} \definecolor{shellbg}{HTML}{F5EDE4} \definecolor{cmakebg}{HTML}{F5EDE4} \definecolor{commentcolor}{HTML}{101280} % Allow for the use of listings \usepackage{listings} % Create an index \usepackage{makeidx} % Figure handling \usepackage{graphics} \usepackage{epsfig} \usepackage[lofdepth,lotdepth]{subfig} \usepackage{tikz} \usetikzlibrary{decorations} \usepackage{wrapfig} \renewcommand{\floatpagefraction}{.6} % default: .5 \renewcommand\topfraction{0.9} % 90% of page top can be a float (Standard 0.7) \renewcommand\bottomfraction{0.1} % 10% of page bottom can be a float (Standard 0.3) \renewcommand\textfraction{0.1} % only 10% of page must to be text (Standard 0.2) % Removes parenthese around subfig number \renewcommand*{\thesubfigure}{\alph{subfigure}} % Create new list style for cmake files \lstdefinelanguage{cmake}{ morekeywords={project, cmake\_minimum\_required, enable\_language, message, add\_executable, add\_library, target\_link\_libraries, include\_directories, find\_package, find\_path, find\_library, include, mark\_as\_advanced, find\_package\_handle\_standard\_args, package\_declare, package\_declare\_documentation}, morecomment=[l]{\#}, sensitive=false, morestring=[b]", } \lstdefinestyle{lstDefaultStyle} { basicstyle=\small\ttfamily, % Without beramono, we'd get cmtt, the teletype font. commentstyle=\color{commentcolor}\itshape, % fontadjust, % numbers=left, % where to put the line-numbers % numberstyle=\tiny, % the size of the fonts that are used for the line-numbers % stepnumber=2, % the step between two line-numbers. If it's 1, each line will % be numbered % numbersep=5pt, % how far the line-numbers are from the code % showspaces=false, % show spaces adding particular underscores showstringspaces=false, % underline spaces within strings % showtabs=false, % show tabs within strings adding particular underscores % frame=llines, % adds a frame around the code % frame=tb, tabsize=2, % sets default tabsize to 2 spaces captionpos=b, % sets the caption-position to bottom breaklines=true, % sets automatic line breaking breakatwhitespace=false, % sets if automatic breaks should only happen at % whitespace % title=\lstname, % show the filename of files included with \lstinputlisting; % also try caption instead of title % escapeinside={\%*}{*)}, % if you want to add a comment within your code xleftmargin=1cm, xrightmargin=1cm, escapechar=\%, columns=flexible, keepspaces=true, mathescape=false } % Create a new list style for C++ \lstdefinestyle{C++}{ language=C++, % the language of the code style=lstDefaultStyle, keywordstyle=\color{DarkOrchid}\bfseries, mathescape=true, morekeywords={Real, UInt, Int}, backgroundcolor=\color{cppbg} } % Create new list style for the shell \lstdefinestyle{shell}{ language=bash, % the language of the code style=lstDefaultStyle, morekeywords={mkdir, make, ccmake, cmake}, backgroundcolor=\color{shellbg} } \lstdefinestyle{mycmake}{ language=cmake, % the language of the code style=lstDefaultStyle, keywordstyle=\color{RoyalBlue}\bfseries, stringstyle=\color{Bittersweet}, % backgroundcolor=\color{cmakebg} } % Set some derived listing environments \lstnewenvironment{cpp}{\lstset{style=C++}}{} \lstnewenvironment{command}{\lstset{style=shell}}{} \lstnewenvironment{cmake}{\lstset{style=mycmake}}{} % Make sure outputspace is white \makeatletter \def\lst@outputspace{{\ifx\lst@bkgcolor\empty\color{white}\else\lst@bkgcolor\fi\lst@visiblespace}} \makeatother % Renow a label in the itemized lists \renewcommand{\labelitemi}{$\mathbf{\circ}$} % Don't care so much about overfull h-boxes \sloppy % Penalty adjusments %\widowpenalty=10000 % Single lines/word on beginning of page %\clubpenalty=10000 % Single lines/word at end of page %\hyphenpenalty=2000 % Hyphenate words %\tolerance=250 % To adjust the hyphenation of words, increase the tolerance to discourage hyphenation % the higher the value, the more ugly the gaps between words % default \tolerance=200 %\hfuzz=10000pt % threshold when an overfull hbox is reported, default \hfuzz=0.1pt %\vfuzz=10000pt % threshold to report an overfull vbox, default \vfuzz=0.1pt %\hbadness=10000 % threshold to report an underfull \hbox %\vbadness=10000 % threshold to report an underfull \vbox protokolliert wird. \emergencystretch=0pt % causes a third attempt to fix bad paragraphs and defines a maximum limit to stretch them % Insert an empty or a blank page \newcommand{\insertemptypage}{\newpage\hbox{}\newpage} \newcommand{\insertblankpage}{\newpage\thispagestyle{empty}\hbox{}\newpage} % No page number on an empty page \let\origdoublepage\cleardoublepage \newcommand{\clearemptydoublepage}{% \clearpage {\thispagestyle{empty}\origdoublepage}% } \let\cleardoublepage\clearemptydoublepage % A new ruler for in chapters \newcommand\InChapterRule{\addvspace{\baselineskip}\rule{0.3\linewidth}{0.25pt}} % New footnote style %\def\@fnsymbol#1{\ifcase#1\or *\or \dagger\or \ddagger\or \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger \or \ddagger\ddagger \else\@ctrerr\fi\relax} \def\@fnsymbol#1{*\xspace\relax} \renewcommand{\thefootnote}{\fnsymbol{footnote}} % Symbols rather than numbers \def\footnoterule{\vspace*{0.5\baselineskip}\InChapterRule\vspace*{0.25\baselineskip}} % Improved look of the Table of Contents \usepackage[nottoc,notbib]{tocbibind} \usepackage[dotinlabels]{titletoc} \titlecontents{chapter}[1.4pc] {\addvspace{0.6pc}\large\bfseries\filright} {\contentslabel[\thecontentslabel.]{1.4pc}} {\hspace{-1.4pc}} {\hfill\contentspage} [\addvspace{2pt}] \titlecontents{section}[3.4pc] {\filright} {\contentslabel[\thecontentslabel]{2pc}} {\hspace{-2pc}} {\titlerule*[6pt]{.}\contentspage} [] \titlecontents{subsection}[5.0pc] {\filright} {\contentslabel[\thecontentslabel]{2.4pc}} {} {\titlerule*[6pt]{.}\contentspage} [] \setcounter{tocdepth}{2} \newcommand\addspaceintoc{\addtocontents{toc}{\protect\addvspace{20pt}}} % Change the appearance of the bibliography \bibliographystyle{manual-bibliographystyle} \renewcommand\bibname{References} \usepackage{cite} % To sort citations: [2,10-14] \let\oldthebibliography=\thebibliography \let\endoldthebibliography=\endthebibliography \renewenvironment{thebibliography}[1] { \begin{oldthebibliography}{#1} % \small \addcontentsline{toc}{chapter}{\bibname} \setlength{\labelsep}{2mm} \setlength{\parskip}{0\baselineskip} \setlength{\itemsep}{0.24\baselineskip} } { \end{oldthebibliography} } % Hyperref \usepackage{url} \usepackage[pdftex, bookmarks=true, bookmarksnumbered=true, % linkbordercolor={1 1 1}, % pdfborder={0 0 0}, pdfpagemode=UseOutlines ]{hyperref} \hypersetup{ pdfauthor={Computational Solid Mechanics Laboratory - EPFL}, pdftitle={Akantu User's Guide}, pdfsubject={Open Source Finite Element Code - Akantu} } \newenvironment{AkantuPackage}[2]{% \paragraph*{#1}\label{#2} }{} \newenvironment{AkantuPackageDependencies}{\emph{Dependencies}: }{} \newcommand\AkantuPackageNameWithLabel[3]{\textit{\index{Packages!#1}\hyperref[#2]{#1}}\xspace} \newcommand\akantuManualAppendix[1]{} \ No newline at end of file