(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.2' Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 67144, 2105]*) (*NotebookOutlinePosition[ 68199, 2139]*) (* CellTagsIndexPosition[ 68155, 2135]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["\<\ Symbolic computations in viscoelasticity and anisotropic \ elasticity\ \>", "Title"], Cell[TextData[StyleBox["Fabio Cavallini", "SecondAuthor"]], "Author"], Cell["G\[EAcute]za Seriani", "Author"], Cell[TextData[{ StyleBox["Viscoelastic constitutive laws arising from series and parallel \ connections of springs and dashpots can be easily formulated in symbolic form \ using the simple ", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}], StyleBox["Mathematica", FontWeight->"Plain", FontSlant->"Italic", FontVariations->{"CompatibilityType"->0}], StyleBox[" code presented here. Viscoelastic quantities as the Q-factor and \ the relaxation function are also computed from symbolic (if there is no need \ to factor higher-order polynomials), or numeric data. The general symbolic \ form of the elasticity tensor in a given crystallographic class (e.g., \ monoclinic, cubic, and transversely isotropic) is obtained here from its \ symmetry properties. One-dimensional viscoelastic models, when applied to the \ eigenvalues of the stiffness operator of an elastic anisotropic medium, yield \ realistic 3-D viscoelastic models.", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}] }], "Abstract"], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". Introduction" }], "SectionFirst"], Cell[TextData[{ "Perfecta elasticitas esse nequit: nam partes subjaciuntur attritu, hoc \ attritu vis quaedam perit. (", StyleBox["P. V. Musschenbroek, 1762)", FontSlant->"Italic"] }], "Quote"], Cell[TextData[{ "As suggested by the quotation (Ianniello, 1993), viscoelastic constitutive \ laws are to be used, in geophysics and materials engineering, to model \ intrinsic attenuation of mechanical waves that propagate in dissipative media \ (Carcione, 2001). Although the first general theoretical formulation of \ viscoelasticity dates back to Ludwig Boltzmann (1874), this topic is still an \ active field of research (Fabrizio and Morro, 1992).\n The main causes of \ anisotropy in the earth are: microstructural anisotropy of the minerals that \ form the rock, fine layering, and fracturing: indeed, homogenization theory \ allows researchers to model isotropic inhomogeneous media with equivalent, \ but simpler, homogeneous anisotropic media (Crampin, 1981). Nowadays, \ anisotropic data acquisition and processing is becoming an industrial \ standard in geophysical exploration and in reservoir engineering (Helbig, \ 1994).\n One-dimensional viscoelastic models can be embedded into \ anisotropic elastic models to yield three-dimensional viscoelastic \ rheologies able to describe adequately the mechanical behaviour of realistic \ dissipative materials (Carcione and Cavallini, 1994).\n In this paper we \ give some examples of how ", StyleBox["Mathematica ", FontSlant->"Italic"], StyleBox["may be profitably used to perform the symbolic computations \ needed to work out a suitable constitutive law, which is a necessary step \ preliminary to any numerical simulation of wave propagation.", FontVariations->{"CompatibilityType"->0}] }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". ", StyleBox["One-dimensional viscoelasticity", FontWeight->"Bold"] }], "Section"], Cell["\<\ Classical viscoelastic rheological models (e.g., Kelvin-Voigt, \ Maxwell, Zener and Burgers) arise from the series/parallel connection of two \ basic building blocks: the spring and the dashpot. The resulting constitutive \ laws may be expressed in time domain through a convolution integral \ (Boltzmann superposition principle) or, equivalently, as an ordinary \ differential equation. By Fourier transforming, one obtains the \ frequency-domain representation of the constitutive model, which is often \ useful in the applications. Hence, various wave-related quantities may be \ computed, e.g., complex velocity, slowness, wavenumber, attenuation, and \ quality factor.\ \>", "Text"], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsection"], ". Basic concepts" }], "Subsection"], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". ", "Stress and strain" }], "Subsubsection"], Cell[TextData[{ "In 1-D viscoelasticity, stress ", StyleBox["s(x,t) ", "InlineInput"], "and strain ", StyleBox["e(x,t) ", "InlineInput"], "are real functions of position ", StyleBox["x", "InlineInput"], " and time ", StyleBox["t", "InlineInput"], ". Strain ", StyleBox["e(x,t) ", "InlineInput"], "is related to displacement ", StyleBox["u(x,t) ", "InlineInput"], "through the kinematic equation" }], "Text"], Cell[BoxData[ \(e \((x, t)\) = \(\[PartialD]\/\[PartialD]x\) u \((x, t)\)\)], "NumberedEquation"], Cell[TextData[{ "while stress ", StyleBox["s(x,t) ", "InlineInput"], "with mass density ", StyleBox["\[Rho] ", "InlineInput"], "and displacement ", StyleBox["u(x,t)", "InlineInput"], " satisfy the momentum balance" }], "Text"], Cell[BoxData[ RowBox[{\(\(\[PartialD]\/\[PartialD]x\) s \((x, t)\)\), "=", RowBox[{ StyleBox["\[Rho]", "InlineInput"], StyleBox[" ", "InlineInput"], \(\[PartialD]\^2\/\[PartialD]t\^2\), "u", \((x, t)\)}]}]], "NumberedEquation"], Cell[TextData[{ "which is the counterpart in continuum mechanics of Newton's second law in \ particle dynamics. For convenience, the dependence on the space variable ", StyleBox["x ", "InlineInput"], "will usually be understood." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". ", "Constitutive laws" }], "Subsubsection"], Cell[TextData[{ "In general, a linear causal and time-invariant stress-strain relationship \ is expressed by the ", StyleBox["Boltzmann superposition principle ", FontSlant->"Italic"] }], "Text"], Cell[BoxData[ RowBox[{ StyleBox["s", "InlineInput"], "=", \(C'*e\)}]], "NumberedEquation"], Cell[TextData[{ "where ", StyleBox["C", "InlineInput"], " is the ", StyleBox["relaxation function, ", FontSlant->"Italic"], "the prime ", StyleBox["(')", "InlineInput"], " denotes time differentiation, and the asterisk ", StyleBox["(*) ", "InlineInput"], "indicates", StyleBox[" ", "InlineInput"], "time convolution." }], "Text"], Cell[TextData[{ "In the frequency domain, the constitutive law is suitably expressed \ through the ", StyleBox["complex modulus", FontSlant->"Italic"], ", which is the ratio between the Fourier transforms of the stress and the \ strain. " }], "Text"], Cell[TextData[{ "Of special importance are the so-called ", StyleBox["differential models, ", FontSlant->"Italic"], "which have the form" }], "Text"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{\(a\_0\), StyleBox["s", "InlineInput"], StyleBox[\((t)\), "InlineInput"]}], "+", \(a\_1\ s' \((t)\)\), "+"}], "..."}], "+", \(a\_m\ \(s\^\((m)\)\) \((t)\)\)}], "=", \(\(b\_0\ e \((t)\) + b\_1\ e' \((t)\) + ... \) + b\_n\ \(e\^\((n)\)\) \((t)\)\)}]], "NumberedEquation"], Cell["\<\ and so they may be represented with the pair of their coefficient \ sequences\ \>", "Text"], Cell[BoxData[ \({{a\_0, a\_1, ... , a\_m}, {b\_0, b\_1\ , ... , b\_n}}\)], "NumberedEquation"], Cell["Conversely, we may pass from (5) to (4) by using", "Text"], Cell[BoxData[ \(\(ConstitutiveLaw[model_, e_, s_, t_] := \n Sum[\(model\[LeftDoubleBracket]1\[RightDoubleBracket]\)\ \[LeftDoubleBracket]k\[RightDoubleBracket]*\(\(Derivative[k - 1]\)[s]\)[ t], {k, 1, Length[model\[LeftDoubleBracket]1\[RightDoubleBracket]]}] \ \[Equal] \n Sum[\(model\[LeftDoubleBracket]2\[RightDoubleBracket]\)\ \[LeftDoubleBracket]k\[RightDoubleBracket]*\(\(Derivative[k - 1]\)[e]\)[ t], {k, 1, Length[model\[LeftDoubleBracket]2\[RightDoubleBracket]]}];\)\)],\ "Input"], Cell["\<\ as will be shown in the Section on classical rheologies. The complex modulus of differential models is simply given by\ \>", "Text"], Cell[BoxData[ \(\(ComplexModulus[model_, \[Omega]_] := \n With[{diff = I*\[Omega]}, \n Sum[\(model\[LeftDoubleBracket]2\[RightDoubleBracket]\)\ \[LeftDoubleBracket]k\[RightDoubleBracket]*diff^\((k - 1)\), {k, 1, Length[model\[LeftDoubleBracket]2\[RightDoubleBracket]]}]/\n Sum[\(model\[LeftDoubleBracket]1\[RightDoubleBracket]\)\ \[LeftDoubleBracket]k\[RightDoubleBracket]*diff^\((k - 1)\), {k, 1, Length[model\[LeftDoubleBracket]1\[RightDoubleBracket]]}]];\)\ \)], "Input"], Cell["\<\ Noting that the relaxation function coincides with the stress if \ the strain is a unit step, we may compute the relaxation function with the \ following routine:\ \>", "Text"], Cell[BoxData[ \(RelaxationFunction[model_, s_, t_] := \n If[Length[model\[LeftDoubleBracket]1\[RightDoubleBracket]] == 1\n, s[t] /. Flatten@ Solve[ConstitutiveLaw[model, UnitStep, s, t]\n, s[t]], s[t] /. Flatten@ DSolve[\n{ConstitutiveLaw[model, UnitStep, s, t], Table[\(\(Derivative[k]\)[s]\)[\(-1\)] == 0 // Unevaluated, {k, 0, Length[model\[LeftDoubleBracket]1\[RightDoubleBracket]] \ - 1}]\n} // Flatten, s[t], t]]\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". ", "Energy-related quantities" }], "Subsubsection"], Cell[TextData[{ "By introducing the ", StyleBox["particle velocity", "IT"], " ", StyleBox["v := \[PartialD]u/\[PartialD]t", "InlineInput"], ", the ", StyleBox["Umov-Poynting variable ", "IT"], StyleBox["p := s v, ", "InlineInput"], "the ", StyleBox["kinetic energy", "IT"], StyleBox[" ", "InlineInput"], Cell[BoxData[ \(E\_K\)]], StyleBox[" := 1/2 \[Rho] ", "InlineInput"], Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["v", "InlineInput"], "2"], TraditionalForm]]], ", and the ", StyleBox["potential energy ", "IT"], Cell[BoxData[ \(E\_P\)]], StyleBox[" ", "IT"], StyleBox[":= 1/2 s e,", "InlineInput"], " from the momentum balance (2) we get the energy balance" }], "Text"], Cell[BoxData[ \(\[PartialD]p\/\[PartialD]x = \(\[PartialD]\/\[PartialD]t\) \((E\_K + E\_P)\) + P\_D\)], "NumberedEquation"], Cell[TextData[{ "where ", StyleBox[Cell[BoxData[ \(P\_D\)], "InlineInput"], "InlineInput"], StyleBox[" := \[PartialD]", "InlineInput"], StyleBox[Cell[BoxData[ \(E\_P\)], "InlineInput"], "InlineInput"], StyleBox["/\[PartialD]t - e \[PartialD]s/\[PartialD]t ", "InlineInput"], "is the ", StyleBox["dissipated power.", "IT"] }], "Text"], Cell[TextData[{ "For periodic motions of period \[Tau], the amount of energy dissipation is \ usually expressed by the ", StyleBox["quality factor Q, ", "IT"], "defined as" }], "Text"], Cell[BoxData[ \(Q\ := 4\ \[Pi]\ \[LeftAngleBracket]E\_P\[RightAngleBracket]\/E\_D\)], \ "DisplayFormula"], Cell[TextData[{ "where ", Cell[BoxData[ \(E\_D\)]], " := \[Tau] ", Cell[BoxData[ RowBox[{"\[LeftAngleBracket]", RowBox[{"s", " ", StyleBox[\(\[PartialD]e/\[PartialD]t\), "InlineInput"]}], "\[RightAngleBracket]"}]]], " is ", StyleBox["dissipated energy", "IT"], ", with angular brackets representing time average." }], "Text"], Cell["\<\ A straightforward computation shows that, for monochromatic waves, \ the quality factor Q is given by the ratio between the real and imaginary \ parts of the complex modulus : \ \>", "Text"], Cell[BoxData[ \(QualityFactorQ[model_, \[Omega]_] := ComplexModulus[model, \[Omega]] // \((Re[#]/Im[#] &)\)\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Wave propagation" }], "Subsubsection"], Cell[TextData[{ "The ", StyleBox["proper ansatz for investigating viscoelastic wave propagation is", "RM", FontVariations->{"CompatibilityType"->0}] }], "Text"], Cell[BoxData[ \(u = \(\(U\)\(\ \)\(Exp[\[ImaginaryI] \((k\ x\ - \ \[Omega]\ t)\)\ \ ]\)\(\ \)\)\)], "NumberedEquation"], Cell["\<\ where k = \[Kappa] + \[ImaginaryI] \[Alpha] , with \[Kappa] and \ \[Alpha] the real wavenumber and attenuation, respectively (e.g., Hayes, \ 1980). Substituting (7) into (1)-(3) yields the propagation condition\ \>", \ "Text"], Cell[BoxData[ \(V := \(\[Omega]\/k = \@\(M\/\[Rho]\)\)\)], "NumberedEquation"], Cell[TextData[{ "where ", StyleBox["V ", "InlineInput"], "is the ", StyleBox["complex velocity", FontSlant->"Italic"], ", and", StyleBox[" M ", "InlineInput"], "is the complex modulus. To describe wave propagation, the most important \ parameter is the ", StyleBox["phase velocity ", FontSlant->"Italic"], Cell[BoxData[ \(V\_P := \[Omega]/\[Kappa]\)]], ", which can be computed through" }], "Text"], Cell[BoxData[ \(PhaseVelocity[model_, \[Rho]_, \[Omega]_] := \n 1/Re[Sqrt[\[Rho]/ComplexModulus[model, \[Omega]]]]\)], "Input"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsection"], ". Classical rheologies and beyond" }], "Subsection"], Cell[TextData[{ "The simplest and most used differential viscoelastic rheological models, \ which we call ", StyleBox["classical", FontSlant->"Italic"], ", are obtained by connecting \"springs\" and \"dashpots\" either in series \ or in parallel. A ", StyleBox["parallel", FontSlant->"Italic"], " connection of two models implies that they both undergo the same strain \ and that the total stress is the sum of the two stresses, so that the \ resulting model is given by" }], "Text"], Cell[BoxData[ \(\(InParallel[model1_, model2_] := Module[{A1, B1, A2, B2, A1p, B1p, A2p, B2p, x}, {A1, B1} = model1; {A2, B2} = model2; A1p = A1 . Table[x^k, {k, 0, Length[A1] - 1}]; B1p = B1 . Table[x^k, {k, 0, Length[B1] - 1}]; A2p = A2 . Table[x^k, {k, 0, Length[A2] - 1}]; B2p = B2 . Table[x^k, {k, 0, Length[B2] - 1}]; {CoefficientList[ A1p*A2p, x], CoefficientList[A1p*B2p + A2p*B1p, x]}];\)\)], "Input"], Cell[TextData[{ "while a ", StyleBox["series", FontSlant->"Italic"], " connection of two models implies that they both have the same stress and \ that the total strain is the sum of the two strains, so that the resulting \ model is given by" }], "Text"], Cell[BoxData[ \(\(\(InSeries[model1_, model2_] := Module[{A1, B1, A2, B2, A1p, B1p, A2p, B2p, x}, {A1, B1} = model1; {A2, B2} = model2; A1p = A1 . Table[x^k, {k, 0, Length[A1] - 1}]; B1p = B1 . Table[x^k, {k, 0, Length[B1] - 1}]; A2p = A2 . Table[x^k, {k, 0, Length[A2] - 1}]; B2p = B2 . Table[x^k, {k, 0, Length[B2] - 1}]; {CoefficientList[ A1p*B2p + A2p*B1p, x], CoefficientList[B1p*B2p, x]}];\)\(\n\) \)\)], "Input"], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". The spring" }], "Subsubsection"], Cell[TextData[{ "The ", StyleBox["spring", FontSlant->"Italic"], " model obeys Hooke's law:" }], "Text"], Cell[BoxData[ \(s \((t)\) = \[Mu]\ e \((t)\)\)], "DisplayFormula"], Cell["and hence, according to (5), it may be represented as", "Text"], Cell[BoxData[{ \(Off[General::"\"]\), "\n", \(Spring[\[Mu]_] := {{1}, {\[Mu]}}\), "\n", \(On[General::"\"]\)}], "Input"], Cell["while its phase velocity is simply the sound speed:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(PhaseVelocity[Spring[\[Mu]], \[Rho], \[Omega]] // FullSimplify[#, {\[Mu] > 0, \[Rho] > 0, \[Omega] > 0}] &\)], "Input"], Cell[BoxData[ \(\@\(\[Mu]\/\[Rho]\)\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". The dashpot" }], "Subsubsection"], Cell[TextData[{ "The ", StyleBox["dashpot", FontSlant->"Italic"], " model behaves as a Newtonian fluid (frictional stress proportional to \ displacement rate):" }], "Text"], Cell[BoxData[ \(s \((t)\) = \[Eta]\ e' \((t)\)\)], "DisplayFormula"], Cell["and hence, according to (5), it may be represented as", "Text"], Cell[BoxData[ \(Dashpot[\[Eta]_] := {{1}, {0, \[Eta]}}\)], "Input"], Cell["while its phase velocity is:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(PhaseVelocity[Dashpot[\[Eta]], \[Rho], \[Omega]] // ComplexExpand\) // FullSimplify[#, {\[Eta] > 0, \[Rho] > 0, \[Omega] > 0}] &\)], "Input"], Cell[BoxData[ \(\@2\ \@\(\(\[Eta]\ \[Omega]\)\/\[Rho]\)\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Kelvin-Voigt model" }], "Subsubsection"], Cell[TextData[{ StyleBox["Kelvin-Voigt model", FontSlant->"Italic"], " consists in a parallel connection of a spring and a dashpot:" }], "Text"], Cell[BoxData[ \(KelvinVoigt[\[Mu]_, \[Eta]_] := InParallel[Spring[\[Mu]], Dashpot[\[Eta]]]\)], "Input"], Cell["which yields the stress-strain relationship", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ConstitutiveLaw[KelvinVoigt[\[Mu], \[Eta]], e, s, t]\)], "Input"], Cell[BoxData[ RowBox[{\(s[t]\), "\[Equal]", RowBox[{\(\[Mu]\ e[t]\), "+", RowBox[{"\[Eta]", " ", RowBox[{ SuperscriptBox["e", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}]], "Output"] }, Open ]], Cell["and hence the relaxation function", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(RelaxationFunction[KelvinVoigt[\[Mu], \[Eta]], s, t]\)], "Input"], Cell[BoxData[ \(\[Eta]\ DiracDelta[t] + \[Mu]\ UnitStep[t]\)], "Output"] }, Open ]], Cell["Moreover, the complex modulus is ", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ComplexModulus[KelvinVoigt[\[Mu], \[Eta]], \[Omega]]\)], "Input"], Cell[BoxData[ \(\[Mu] + \[ImaginaryI]\ \[Eta]\ \[Omega]\)], "Output"] }, Open ]], Cell["and hence the quality factor Q follows:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(QualityFactorQ[KelvinVoigt[\[Mu], \[Eta]], \[Omega]] // ComplexExpand\)], "Input"], Cell[BoxData[ \(\[Mu]\/\(\[Eta]\ \[Omega]\)\)], "Output"] }, Open ]], Cell["Finally, the phase velocity is:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(PhaseVelocity[KelvinVoigt[\[Mu], \[Eta]], \[Rho], \[Omega]] // ComplexExpand[#, TargetFunctions -> {Re, Im}] &\) // FullSimplify[#, {\[Mu] > 0, \[Eta] > 0, \[Rho] > 0, \[Omega] > 0}] &\)], "Input"], Cell[BoxData[ \(\(\((\[Mu]\^2 + \[Eta]\^2\ \[Omega]\^2)\)\^\(1/4\)\ Sec[1\/2\ ArcTan[\(\ \[Eta]\ \[Omega]\)\/\[Mu]]]\)\/\@\[Rho]\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Maxwell model" }], "Subsubsection"], Cell[TextData[{ StyleBox["Maxwell model", FontSlant->"Italic"], " consists in a series connection of a spring and a dashpot:" }], "Text"], Cell[BoxData[ \(Maxwell[\[Mu]_, \[Eta]_] := InSeries[Spring[\[Mu]], Dashpot[\[Eta]]]\)], "Input"], Cell["which yields the stress-strain relationship", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ConstitutiveLaw[Maxwell[\[Mu], \[Eta]], e, s, t]\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{\(\[Mu]\ s[t]\), "+", RowBox[{"\[Eta]", " ", RowBox[{ SuperscriptBox["s", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}], "\[Equal]", RowBox[{"\[Eta]", " ", "\[Mu]", " ", RowBox[{ SuperscriptBox["e", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]], "Output"] }, Open ]], Cell["and hence the relaxation function", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(RelaxationFunction[Maxwell[\[Mu], \[Eta]], s, t]\)], "Input"], Cell[BoxData[ \(\[ExponentialE]\^\(-\(\(t\ \[Mu]\)\/\[Eta]\)\)\ \[Mu]\ UnitStep[ t]\)], "Output"] }, Open ]], Cell["Moreover, the complex modulus is ", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ComplexModulus[Maxwell[\[Mu], \[Eta]], \[Omega]]\)], "Input"], Cell[BoxData[ \(\(\[ImaginaryI]\ \[Eta]\ \[Mu]\ \[Omega]\)\/\(\[Mu] + \[ImaginaryI]\ \ \[Eta]\ \[Omega]\)\)], "Output"] }, Open ]], Cell["and hence the quality factor Q follows:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(QualityFactorQ[Maxwell[\[Mu], \[Eta]], \[Omega]] // ComplexExpand\)], "Input"], Cell[BoxData[ \(\(\[Eta]\ \[Omega]\)\/\[Mu]\)], "Output"] }, Open ]], Cell["Finally, the phase velocity is:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(PhaseVelocity[Maxwell[\[Mu], \[Eta]], \[Rho], \[Omega]] // ComplexExpand[#, TargetFunctions -> {Re, Im}] &\) // FullSimplify[#, {\[Mu] > 0, \[Eta] > 0, \[Rho] > 0, \[Omega] > 0}] &\)], "Input"], Cell[BoxData[ \(Sec[1\/2\ ArcCot[\(\[Eta]\ \[Omega]\)\/\[Mu]]]\/\((\[Rho]\^2\ \((1\/\ \[Mu]\^2 + 1\/\(\[Eta]\^2\ \[Omega]\^2\))\))\)\^\(1/4\)\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Zener model" }], "Subsubsection"], Cell[TextData[{ StyleBox["Zener model", FontSlant->"Italic"], " (also called ", StyleBox["standard linear solid", FontSlant->"Italic"], ") consists in a series connection of a spring and a Kelvin-Voigt model:" }], "Text"], Cell[BoxData[ \(Zener[\[Mu]S_, {\[Mu]K_, \[Eta]K_}] := \n InSeries[Spring[\[Mu]S], KelvinVoigt[\[Mu]K, \[Eta]K]]\)], "Input"], Cell["which yields the stress-strain relationship", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ConstitutiveLaw[Zener[\[Mu]S, {\[Mu]K, \[Eta]K}], e, s, t]\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{\(\((\[Mu]K + \[Mu]S)\)\ s[t]\), "+", RowBox[{"\[Eta]K", " ", RowBox[{ SuperscriptBox["s", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}], "\[Equal]", RowBox[{\(\[Mu]K\ \[Mu]S\ e[t]\), "+", RowBox[{"\[Eta]K", " ", "\[Mu]S", " ", RowBox[{ SuperscriptBox["e", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}]], "Output"] }, Open ]], Cell["and hence the relaxation function", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(RelaxationFunction[Zener[\[Mu]S, {\[Mu]K, \[Eta]K}], s, t] // FullSimplify\)], "Input"], Cell[BoxData[ \(\(\[Mu]S\ \((\[Mu]K + \[ExponentialE]\^\(-\(\(t\ \((\[Mu]K + \ \[Mu]S)\)\)\/\[Eta]K\)\)\ \[Mu]S)\)\ UnitStep[t]\)\/\(\[Mu]K + \[Mu]S\)\)], \ "Output"] }, Open ]], Cell["Moreover, the complex modulus is ", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ComplexModulus[Zener[\[Mu]S, {\[Mu]K, \[Eta]K}], \[Omega]]\)], "Input"], Cell[BoxData[ \(\(\[Mu]K\ \[Mu]S + \[ImaginaryI]\ \[Eta]K\ \[Mu]S\ \[Omega]\)\/\(\[Mu]K \ + \[Mu]S + \[ImaginaryI]\ \[Eta]K\ \[Omega]\)\)], "Output"] }, Open ]], Cell["and hence the quality factor Q follows:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(QualityFactorQ[Zener[\[Mu]S, {\[Mu]K, \[Eta]K}], \[Omega]] // ComplexExpand\) // FullSimplify\)], "Input"], Cell[BoxData[ \(\(\[Mu]K\ \((\[Mu]K + \[Mu]S)\)\)\/\(\[Eta]K\ \[Mu]S\ \[Omega]\) + \(\ \[Eta]K\ \[Omega]\)\/\[Mu]S\)], "Output"] }, Open ]], Cell["Finally, the phase velocity is:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(\(PhaseVelocity[Zener[\[Mu]S, {\[Mu]K, \[Eta]K}], \[Rho], \[Omega]] // ComplexExpand[#, TargetFunctions -> {Re, Im}] &\) // FullSimplify[#, {\[Mu]S > 0, \[Mu]K > 0, \[Eta]K > 0, \[Rho] > 0, \[Omega] > 0}] &\) // Timing\)], "Input"], Cell[BoxData[ \({6.602620000000001`\ Second, \@\(\[Mu]S\/\[Rho]\)\ \((\(\[Mu]K\^2 + \ \[Eta]K\^2\ \[Omega]\^2\)\/\(\((\[Mu]K + \[Mu]S)\)\^2 + \[Eta]K\^2\ \ \[Omega]\^2\))\)\^\(1/4\)\ Sec[ 1\/2\ ArcTan[\(\[Eta]K\ \[Mu]S\ \[Omega]\)\/\(\[Mu]K\ \((\[Mu]K + \ \[Mu]S)\) + \[Eta]K\^2\ \[Omega]\^2\)]]}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Burgers model" }], "Subsubsection"], Cell[TextData[{ StyleBox["Burgers model", FontSlant->"Italic"], " consists in a series connection of a Maxwell and a Kelvin-Voigt element:" }], "Text"], Cell[BoxData[ \(Burgers[{\[Mu]M_, \[Eta]M_}, {\[Mu]K_, \[Eta]K_}] := InSeries[Maxwell[\[Mu]M, \[Eta]M], KelvinVoigt[\[Mu]K, \[Eta]K]]\)], "Input"], Cell["which yields the stress-strain relationship", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ConstitutiveLaw[Burgers[{\[Mu]M, \[Eta]M}, {\[Mu]K, \[Eta]K}], e, s, t]\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{\(\[Mu]K\ \[Mu]M\ s[t]\), "+", RowBox[{\((\[Eta]M\ \[Mu]K + \[Eta]K\ \[Mu]M + \[Eta]M\ \[Mu]M)\), " ", RowBox[{ SuperscriptBox["s", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{"\[Eta]K", " ", "\[Eta]M", " ", RowBox[{ SuperscriptBox["s", "\[Prime]\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}], "\[Equal]", RowBox[{ RowBox[{"\[Eta]M", " ", "\[Mu]K", " ", "\[Mu]M", " ", RowBox[{ SuperscriptBox["e", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{"\[Eta]K", " ", "\[Eta]M", " ", "\[Mu]M", " ", RowBox[{ SuperscriptBox["e", "\[Prime]\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}]], "Output"] }, Open ]], Cell["and hence the relaxation function", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(RelaxationFunction[Burgers[{\[Mu]M, \[Eta]M}, {\[Mu]K, \[Eta]K}], s, t] // FullSimplify\)], "Input"], Cell[BoxData[ \(\((\[ExponentialE]\^\(-\(\(t\ \((\[Eta]K\ \[Mu]M + \[Eta]M\ \((\[Mu]K + \ \[Mu]M)\) + \@\(\(-4\)\ \[Eta]K\ \[Eta]M\ \[Mu]K\ \[Mu]M + \((\[Eta]K\ \[Mu]M \ + \[Eta]M\ \((\[Mu]K + \[Mu]M)\))\)\^2\))\)\)\/\(2\ \[Eta]K\ \[Eta]M\)\)\)\ \ \[Mu]M\ \((\(-\[Eta]M\)\ \[Mu]K + \[Eta]K\ \[Mu]M + \[Eta]M\ \[Mu]M + \ \[ExponentialE]\^\(\(t\ \@\(\(-4\)\ \[Eta]K\ \[Eta]M\ \[Mu]K\ \[Mu]M + \((\ \[Eta]K\ \[Mu]M + \[Eta]M\ \((\[Mu]K + \[Mu]M)\))\)\^2\)\)\/\(\[Eta]K\ \ \[Eta]M\)\)\ \((\[Eta]M\ \[Mu]K - \((\[Eta]K + \[Eta]M)\)\ \[Mu]M)\) + \ \@\(\(-4\)\ \[Eta]K\ \[Eta]M\ \[Mu]K\ \[Mu]M + \((\[Eta]K\ \[Mu]M + \[Eta]M\ \ \((\[Mu]K + \[Mu]M)\))\)\^2\) + \[ExponentialE]\^\(\(t\ \@\(\(-4\)\ \[Eta]K\ \ \[Eta]M\ \[Mu]K\ \[Mu]M + \((\[Eta]K\ \[Mu]M + \[Eta]M\ \((\[Mu]K + \ \[Mu]M)\))\)\^2\)\)\/\(\[Eta]K\ \[Eta]M\)\)\ \@\(\(-4\)\ \[Eta]K\ \[Eta]M\ \ \[Mu]K\ \[Mu]M + \((\[Eta]K\ \[Mu]M + \[Eta]M\ \((\[Mu]K + \[Mu]M)\))\)\^2\))\ \)\ UnitStep[ t])\)/\((2\ \@\(\(-4\)\ \[Eta]K\ \[Eta]M\ \[Mu]K\ \[Mu]M + \((\ \[Eta]K\ \[Mu]M + \[Eta]M\ \((\[Mu]K + \[Mu]M)\))\)\^2\))\)\)], "Output"] }, Open ]], Cell["Moreover, the complex modulus is ", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ComplexModulus[ Burgers[{\[Mu]M, \[Eta]M}, {\[Mu]K, \[Eta]K}], \[Omega]]\)], "Input"], Cell[BoxData[ \(\(\[ImaginaryI]\ \[Eta]M\ \[Mu]K\ \[Mu]M\ \[Omega] - \[Eta]K\ \[Eta]M\ \ \[Mu]M\ \[Omega]\^2\)\/\(\[Mu]K\ \[Mu]M + \[ImaginaryI]\ \((\[Eta]M\ \[Mu]K + \ \[Eta]K\ \[Mu]M + \[Eta]M\ \[Mu]M)\)\ \[Omega] - \[Eta]K\ \[Eta]M\ \ \[Omega]\^2\)\)], "Output"] }, Open ]], Cell["and hence the quality factor Q follows:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(QualityFactorQ[ Burgers[{\[Mu]M, \[Eta]M}, {\[Mu]K, \[Eta]K}], \[Omega]] // ComplexExpand\) // FullSimplify\)], "Input"], Cell[BoxData[ \(\(\[Eta]M\ \[Omega]\ \((\[Mu]K\ \((\[Mu]K + \[Mu]M)\) + \[Eta]K\^2\ \ \[Omega]\^2)\)\)\/\(\[Mu]M\ \((\[Mu]K\^2 + \[Eta]K\ \((\[Eta]K + \[Eta]M)\)\ \ \[Omega]\^2)\)\)\)], "Output"] }, Open ]], Cell["Finally, the phase velocity is:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(\(PhaseVelocity[ Burgers[{\[Mu]M, \[Eta]M}, {\[Mu]K, \[Eta]K}], \[Rho], \[Omega]] // ComplexExpand[#, TargetFunctions -> {Re, Im}] &\) // FullSimplify[#, {\[Mu]M > 0, \[Mu]K > 0, \[Eta]M > 0, \[Eta]K > 0, \[Rho] > 0, \[Omega] > 0}] &\) // Timing\)], "Input"], Cell[BoxData[ \({15.953939000000002`\ Second, \@\(\(\[Eta]M\ \[Mu]M\ \[Omega]\)\/\[Rho]\ \)\ \((\(\[Mu]K\^2 + \[Eta]K\^2\ \[Omega]\^2\)\/\(\((\[Eta]K\ \[Mu]M + \ \[Eta]M\ \((\[Mu]K + \[Mu]M)\))\)\^2\ \[Omega]\^2 + \((\[Mu]K\ \[Mu]M - \ \[Eta]K\ \[Eta]M\ \[Omega]\^2)\)\^2\))\)\^\(1/4\)\ Sec[ 1\/2\ ArcCot[\(\[Eta]M\ \[Omega]\ \((\[Mu]K\ \((\[Mu]K + \[Mu]M)\) \ + \[Eta]K\^2\ \[Omega]\^2)\)\)\/\(\[Mu]M\ \((\[Mu]K\^2 + \[Eta]K\ \((\[Eta]K \ + \[Eta]M)\)\ \[Omega]\^2)\)\)]]}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". ... and beyond" }], "Subsubsection"], Cell["\<\ Of course, more complex differential viscoelastic rheologies can be \ devised and analyzed along the lines seen above.\ \>", "Text"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". ", StyleBox["Anisotropic elasticity", FontWeight->"Bold"] }], "Section"], Cell[TextData[{ "The classification of anisotropic materials relies upon the invariance \ properties of the strain energy with respect to symmetry groups of rotations \ and reflections (Landau, 1990). The computation of the corresponding \ elasticity tensor requires tricky and lengthy procedures. With ", StyleBox["Mathematica'", FontSlant->"Italic"], "s symbolic tools, this goal may be achieved just using the very \ definitions, so avoiding to handle the cumbersome Bond's transformation \ (Auld, 1990)." }], "Text"], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsection"], ". Anisotropic Hooke's law" }], "Subsection"], Cell["\<\ The anisotropic Hooke's law states that stress S and strain E are \ linearly related through the stiffness operator C :\ \>", "Text"], Cell[BoxData[ RowBox[{"S", "=", RowBox[{ StyleBox["C", FontSlant->"Italic"], " ", "E"}]}]], "NumberedEquation"], Cell["or, in component notation,", "Text"], Cell[BoxData[ \(s\_ij = c\_ijkl\ \ e\_kl\)], "NumberedEquation"], Cell[TextData[{ "so that the stiffness operator C is also called the stiffness tensor. \n \ The stiffness tensor has ", Cell[BoxData[ \(TraditionalForm\`3\^4 = 81\)]], " components, but at most (6\[Cross]6-6)/2+6=21 of them are independent, \ because stress, strain and stiffness operator are all symmetric. This yields" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(stiffnessTensorC = \n Table[ToExpression@ StringJoin[ ToString /@ Flatten[{c, Sort[{Sort[{i, j}], Sort[{k, l}]}]}]]\n, {i, 3}, {j, 3}, {k, 3}, {l, 3}];\)\), "\n", \(stiffnessTensorC // MatrixForm\), "\n", \(\(% // Flatten\) // Union\), "\n", \(% // Length\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ { RowBox[{"(", "\[NoBreak]", GridBox[{ {"c1111", "c1112", "c1113"}, {"c1112", "c1122", "c1123"}, {"c1113", "c1123", "c1133"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c1112", "c1212", "c1213"}, {"c1212", "c1222", "c1223"}, {"c1213", "c1223", "c1233"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c1113", "c1213", "c1313"}, {"c1213", "c1322", "c1323"}, {"c1313", "c1323", "c1333"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}]}, { RowBox[{"(", "\[NoBreak]", GridBox[{ {"c1112", "c1212", "c1213"}, {"c1212", "c1222", "c1223"}, {"c1213", "c1223", "c1233"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c1122", "c1222", "c1322"}, {"c1222", "c2222", "c2223"}, {"c1322", "c2223", "c2233"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c1123", "c1223", "c1323"}, {"c1223", "c2223", "c2323"}, {"c1323", "c2323", "c2333"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}]}, { RowBox[{"(", "\[NoBreak]", GridBox[{ {"c1113", "c1213", "c1313"}, {"c1213", "c1322", "c1323"}, {"c1313", "c1323", "c1333"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c1123", "c1223", "c1323"}, {"c1223", "c2223", "c2323"}, {"c1323", "c2323", "c2333"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c1133", "c1233", "c1333"}, {"c1233", "c2233", "c2333"}, {"c1333", "c2333", "c3333"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}]} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ \({c1111, c1112, c1113, c1122, c1123, c1133, c1212, c1213, c1222, c1223, c1233, c1313, c1322, c1323, c1333, c2222, c2223, c2233, c2323, c2333, c3333}\)], "Output"], Cell[BoxData[ \(21\)], "Output"] }, Open ]], Cell["For convenience, we shall use the abbreviated index notation", "Text"], Cell[BoxData[ \(\(singleIndex[i_, j_] := {{1, 6, 5}, {6, 2, 4}, {5, 4, 3}}\[LeftDoubleBracket]i, j\[RightDoubleBracket];\)\)], "Input"], Cell["so that the general stiffness tensor is", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(stiffnessTensorC = \n Table[ToExpression@ StringJoin[ ToString /@ Flatten[{c, Sort[{singleIndex[i, j], singleIndex[k, l]}]}]], {i, 3}, {j, 3}, {k, 3}, {l, 3}];\)\), "\n", \(stiffnessTensorC // MatrixForm\), "\n", \(\(entriesOfC = \(stiffnessTensorC // Flatten\) // Union;\)\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ { RowBox[{"(", "\[NoBreak]", GridBox[{ {"c11", "c16", "c15"}, {"c16", "c12", "c14"}, {"c15", "c14", "c13"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c16", "c66", "c56"}, {"c66", "c26", "c46"}, {"c56", "c46", "c36"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c15", "c56", "c55"}, {"c56", "c25", "c45"}, {"c55", "c45", "c35"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}]}, { RowBox[{"(", "\[NoBreak]", GridBox[{ {"c16", "c66", "c56"}, {"c66", "c26", "c46"}, {"c56", "c46", "c36"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c12", "c26", "c25"}, {"c26", "c22", "c24"}, {"c25", "c24", "c23"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c14", "c46", "c45"}, {"c46", "c24", "c44"}, {"c45", "c44", "c34"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}]}, { RowBox[{"(", "\[NoBreak]", GridBox[{ {"c15", "c56", "c55"}, {"c56", "c25", "c45"}, {"c55", "c45", "c35"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c14", "c46", "c45"}, {"c46", "c24", "c44"}, {"c45", "c44", "c34"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], RowBox[{"(", "\[NoBreak]", GridBox[{ {"c13", "c36", "c35"}, {"c36", "c23", "c34"}, {"c35", "c34", "c33"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}]} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell["\<\ Moreover, Voigt notation allows for the compact \ representation\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(doubleIndex[ k_] := {{1, 1}, {2, 2}, {3, 3}, {2, 3}, {1, 3}, {1, 2}}\[LeftDoubleBracket]k\[RightDoubleBracket];\)\), "\n", \(\(\(FromTo["\", "\"]\)[c3333_] := Table[c3333\[LeftDoubleBracket]\(doubleIndex[ I]\)\[LeftDoubleBracket]1\[RightDoubleBracket], \(doubleIndex[ I]\)\[LeftDoubleBracket]2\[RightDoubleBracket], \(doubleIndex[ J]\)\[LeftDoubleBracket]1\[RightDoubleBracket], \(doubleIndex[ J]\)\[LeftDoubleBracket]2\[RightDoubleBracket]\ \[RightDoubleBracket], {I, 1, 6}, {J, 1, 6}];\)\), "\n", \(\(FromTo["\", "\"]\)[stiffnessTensorC] // MatrixForm\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"c11", "c12", "c13", "c14", "c15", "c16"}, {"c12", "c22", "c23", "c24", "c25", "c26"}, {"c13", "c23", "c33", "c34", "c35", "c36"}, {"c14", "c24", "c34", "c44", "c45", "c46"}, {"c15", "c25", "c35", "c45", "c55", "c56"}, {"c16", "c26", "c36", "c46", "c56", "c66"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell["\<\ If we subject the reference system to a linear transformation F, \ then the stiffness tensor C becomes\ \>", "Text"], Cell[BoxData[ \(\((C')\)\_ijkl = C\_mnpq\ F\_im\ F\_jn\ F\_kp\ F\_lq\)], "DisplayFormula"], Cell["which can be coded as", "Text"], Cell[BoxData[ \(\(NewStiffnessTensorCprime[F_] := \n\(NewStiffnessTensorCprime[F] = \n Table[Sum[ stiffnessTensorC\[LeftDoubleBracket]m, n, p, q\[RightDoubleBracket]* F\[LeftDoubleBracket]i, m\[RightDoubleBracket]* F\[LeftDoubleBracket]j, n\[RightDoubleBracket]* F\[LeftDoubleBracket]k, p\[RightDoubleBracket]* F\[LeftDoubleBracket]l, q\[RightDoubleBracket]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ , {m, 3}, {n, 3}, {p, 3}, {q, 3}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ]\n\ \ \ \ \ \ \ \ \ \ \ \ \ , {i, 3}, {j, 3}, {k, 3}, {l, 3}\n\ \ \ \ \ \ \ \ \ \ \ \ ]\);\)\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsection"], ". Reflections and rotations " }], "Subsection"], Cell["\<\ Reflections and rotations are easily coded using the tensor (or \ dyadic) product of two vectors. \ \>", "Text"], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Tensor product" }], "Subsubsection"], Cell["\<\ The tensor (or dyadic) product of two vectors, u and v, is the \ linear operator\ \>", "Text"], Cell[BoxData[ \(u\[CircleTimes]\(v\ : \ x\ \[RightTeeArrow] \ \((v\[CenterDot]x)\) u\)\)], "DisplayFormula"], Cell["whose matrix entries are ", "Text"], Cell[BoxData[ \(\((u\[CircleTimes]v)\)\_ij\ = \ u\_i\ v\_j\)], "DisplayFormula"], Cell[TextData[{ "In ", StyleBox["Mathematica", FontSlant->"Italic"], " it can be coded as" }], "Text"], Cell[BoxData[ \(TensorProduct[vec1_?VectorQ, vec2_?VectorQ] := Outer[Times, vec1, vec2]\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Reflections" }], "Subsubsection"], Cell["\<\ A mirror reflection with respect to a plane is a linear operator \ whose matrix is given by \ \>", "Text"], Cell[BoxData[ \(ReflectionMatrix[versor_] := IdentityMatrix[3] - 2*TensorProduct[versor, versor]\)], "Input"], Cell[TextData[{ "where ", StyleBox["versor", "InlineInput"], " is the unit vector normal to the symmetry plane." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Rotations" }], "Subsubsection"], Cell["A rotation is a linear operator whose matrix is given by ", "Text"], Cell[BoxData[ \(RotationMatrix[versor_, angle_] := \n With[{vTv = TensorProduct[versor, versor]}, \((vTv\n + Sin[angle]*Skew[versor]\n + Cos[angle]*\((IdentityMatrix[3] - vTv)\))\)]\)], "Input"], Cell["where", "Text"], Cell[BoxData[ \(Skew[{v1_, v2_, v3_}] := {{0, \(-v3\), v2}, {v3, 0, \(-v1\)}, {\(-v2\), v1, 0}}\)], "Input"], Cell["\<\ For example, the rotation of an angle \[Phi] about the vertical \ axis is described by\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(RotationMatrix[{0, 0, 1}, \[Phi]] // MatrixForm\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(Cos[\[Phi]]\), \(-Sin[\[Phi]]\), "0"}, {\(Sin[\[Phi]]\), \(Cos[\[Phi]]\), "0"}, {"0", "0", "1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsection"], ". Classes of anisotropic stiffness operators" }], "Subsection"], Cell["\<\ In this section we give a few examples of how the previous \ arguments may be applied to obtain the general form of the stiffness tensor \ in a given crystallographic class.\ \>", "Text"], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Monoclinic" }], "Subsubsection"], Cell["\<\ Monoclinic stiffness tensors are invariant with respect to mirror \ reflection about a given plane. For example, the coordinate plane y-z is \ normal to versor {1,0,0} and identifies the reflection matrix\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ReflectionMatrix[{1, 0, 0}] // MatrixForm\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(-1\), "0", "0"}, {"0", "1", "0"}, {"0", "0", "1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell["\<\ The corresponding monoclinic stiffness tensor is obtained by \ solving the equations generated by the invariance condition, and we note that \ at most 13 parameters are needed to describe a monoclinic medium:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(\(\(Flatten[stiffnessTensorC] == \n Flatten[NewStiffnessTensorCprime[ReflectionMatrix[{1, 0, 0}]]] // Thread\) // Union\)\(\n\) \)\), "\n", \(Off[Solve::svars]\), "\n", \(Solve[%%, entriesOfC] // Flatten\), "\n", \(\(\(On[Solve::svars]\)\(\n\) \)\), "\n", \(\(stiffnessTensorC /. %%;\)\), "\n", \(\(% // FromTo["\", "\"]\) // MatrixForm\), "\n", \(\(\(% // Flatten\) // Union\) // Rest\), "\n", \(% // Length\)}], "Input"], Cell[BoxData[ \({True, c15 \[Equal] \(-c15\), c16 \[Equal] \(-c16\), c25 \[Equal] \(-c25\), c26 \[Equal] \(-c26\), c35 \[Equal] \(-c35\), c36 \[Equal] \(-c36\), c45 \[Equal] \(-c45\), c46 \[Equal] \(-c46\)}\)], "Output"], Cell[BoxData[ \({c15 \[Rule] 0, c16 \[Rule] 0, c25 \[Rule] 0, c26 \[Rule] 0, c35 \[Rule] 0, c36 \[Rule] 0, c45 \[Rule] 0, c46 \[Rule] 0}\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"c11", "c12", "c13", "c14", "0", "0"}, {"c12", "c22", "c23", "c24", "0", "0"}, {"c13", "c23", "c33", "c34", "0", "0"}, {"c14", "c24", "c34", "c44", "0", "0"}, {"0", "0", "0", "0", "c55", "c56"}, {"0", "0", "0", "0", "c56", "c66"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ \({c11, c12, c13, c14, c22, c23, c24, c33, c34, c44, c55, c56, c66}\)], "Output"], Cell[BoxData[ \(13\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Transversely isotropic" }], "Subsubsection"], Cell["\<\ Transversely isotropic stiffness tensors are invariant with respect \ to all rotations about a given axis. For example, the transversely isotropic \ stiffness tensors with vertical axis of symmetry are obtained from the \ invariance condition:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(\(\(Flatten[stiffnessTensorC] == \n Flatten[NewStiffnessTensorCprime[ RotationMatrix[{0, 0, 1}, \[Phi]]]] // Thread\) // Union;\)\(\n\) \)\), "\n", \(Off[Solve::svars]\), "\n", \(Solve[%%, entriesOfC] // Flatten\), "\n", \(\(\(On[Solve::svars]\)\(\n\) \)\), "\n", \(\(stiffnessTensorC /. %%;\)\), "\n", \(\(\(\(% // FromTo["\", "\"]\) // MatrixForm\)\(\n\) \)\), "\n", \(\(\(% // Flatten\) // Union\) // Rest\), "\n", \(Count[%, _?AtomQ]\)}], "Input"], Cell[BoxData[ \({c34 \[Rule] 0, c35 \[Rule] 0, c13 \[Rule] c23, c44 \[Rule] c55, c36 \[Rule] 0, c45 \[Rule] 0, c11 \[Rule] c12 + 2\ c66, c14 \[Rule] 0, c15 \[Rule] 0, c22 \[Rule] c12 + 2\ c66, c24 \[Rule] 0, c25 \[Rule] 0, c46 \[Rule] 0, c56 \[Rule] 0, c16 \[Rule] 0, c26 \[Rule] 0}\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(c12 + 2\ c66\), "c12", "c23", "0", "0", "0"}, {"c12", \(c12 + 2\ c66\), "c23", "0", "0", "0"}, {"c23", "c23", "c33", "0", "0", "0"}, {"0", "0", "0", "c55", "0", "0"}, {"0", "0", "0", "0", "c55", "0"}, {"0", "0", "0", "0", "0", "c66"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ \({c12, c23, c33, c55, c66, c12 + 2\ c66}\)], "Output"], Cell[BoxData[ \(5\)], "Output"] }, Open ]], Cell["\<\ whence we note that at most 5 parameters are needed to describe a \ transversely isotropic medium.\ \>", "Text"], Cell["\<\ This procedure may be applied even if the symmetry axis is oblique, \ although some numerical trick is here advisable in order to speed up \ computations:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(\(\(\(Flatten[stiffnessTensorC] == \n Flatten[NewStiffnessTensorCprime[ RotationMatrix[{1, 1, 1}/Sqrt[3], Pi/11\n]]] // Thread\) // Union\) // N;\)\(\n\) \)\), "\n", \(Off[Solve::svars]\ \), "\n", \(\(Solve[%%, entriesOfC] // Flatten\) // Chop\), "\n", \(\(\(On[Solve::svars]\)\(\ \)\(\n\) \)\), "\n", \(\(stiffnessTensorC /. %%;\)\), "\n", \(\(\(% // FromTo["\", "\"]\)\(\n\) \)\), "\n", \(\(\(% // Flatten\) // Union;\)\), "\n", \(Cases[%, _?AtomQ]\), "\n", \(% // Length\)}], "Input"], Cell[BoxData[ \({c11 \[Rule] 0.9999999999999996`\ c33, c12 \[Rule] 0.9999999999999992`\ c33 - 0.9999999999999997`\ c35 + 0.9999999999999993`\ c36 + 1.9999999999999987`\ c56 - 2.`\ c66, c13 \[Rule] 0.9999999999999997`\ c33 - 1.0000000000000004`\ c35 + 0.9999999999999993`\ c36 + 1.9999999999999991`\ c56 - 1.9999999999999998`\ c66, c14 \[Rule] 0.9999999999999998`\ c36, c15 \[Rule] 1.`\ c35, c16 \[Rule] 1.`\ c35, c22 \[Rule] 0.9999999999999994`\ c33, c23 \[Rule] 0.9999999999999996`\ c33 - 1.0000000000000002`\ c35 + 0.9999999999999996`\ c36 + 1.9999999999999976`\ c56 - 2.000000000000001`\ c66, c24 \[Rule] 1.0000000000000002`\ c35, c25 \[Rule] 0.9999999999999996`\ c36, c26 \[Rule] 1.0000000000000002`\ c35, c34 \[Rule] 1.`\ c35, c44 \[Rule] 1.0000000000000002`\ c66, c45 \[Rule] 0.9999999999999998`\ c56, c46 \[Rule] 0.9999999999999998`\ c56, c55 \[Rule] 1.`\ c66}\)], "Output"], Cell[BoxData[ \({{0.9999999999999996`\ c33, 0.9999999999999992`\ c33 - 0.9999999999999997`\ c35 + 0.9999999999999993`\ c36 + 1.9999999999999987`\ c56 - 2.`\ c66, 0.9999999999999997`\ c33 - 1.0000000000000004`\ c35 + 0.9999999999999993`\ c36 + 1.9999999999999991`\ c56 - 1.9999999999999998`\ c66, 0.9999999999999998`\ c36, 1.`\ c35, 1.`\ c35}, {0.9999999999999992`\ c33 - 0.9999999999999997`\ c35 + 0.9999999999999993`\ c36 + 1.9999999999999987`\ c56 - 2.`\ c66, 0.9999999999999994`\ c33, 0.9999999999999996`\ c33 - 1.0000000000000002`\ c35 + 0.9999999999999996`\ c36 + 1.9999999999999976`\ c56 - 2.000000000000001`\ c66, 1.0000000000000002`\ c35, 0.9999999999999996`\ c36, 1.0000000000000002`\ c35}, {0.9999999999999997`\ c33 - 1.0000000000000004`\ c35 + 0.9999999999999993`\ c36 + 1.9999999999999991`\ c56 - 1.9999999999999998`\ c66, 0.9999999999999996`\ c33 - 1.0000000000000002`\ c35 + 0.9999999999999996`\ c36 + 1.9999999999999976`\ c56 - 2.000000000000001`\ c66, c33, 1.`\ c35, c35, c36}, {0.9999999999999998`\ c36, 1.0000000000000002`\ c35, 1.`\ c35, 1.0000000000000002`\ c66, 0.9999999999999998`\ c56, 0.9999999999999998`\ c56}, {1.`\ c35, 0.9999999999999996`\ c36, c35, 0.9999999999999998`\ c56, 1.`\ c66, c56}, {1.`\ c35, 1.0000000000000002`\ c35, c36, 0.9999999999999998`\ c56, c56, c66}}\)], "Output"], Cell[BoxData[ \({c33, c35, c36, c56, c66}\)], "Output"], Cell[BoxData[ \(5\)], "Output"] }, Open ]], Cell["\<\ In this case, all the components of the transversely isotropic \ stiffness tensor are nonzero.\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Isotropic" }], "Subsubsection"], Cell["\<\ Isotropic stiffness tensors are invariant with respect to all \ rotations about any axis. Actually, it is enough to require transverse \ isotropy with respect to two coordinate axes, and the invariance condition \ now yields that two parameters are sufficient to describe an isotropic \ medium:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(\({\(Flatten[stiffnessTensorC] == \n Flatten[ NewStiffnessTensorCprime[ RotationMatrix[{1, 0, 0}, \[Phi]]]] // Thread\) // Union\n, \(Flatten[stiffnessTensorC] == \n Flatten[ NewStiffnessTensorCprime[ RotationMatrix[{0, 1, 0}, \[Phi]]]] // Thread\) // Union\n} // Flatten;\)\(\n\) \)\), "\n", \(Off[Solve::svars]\), "\n", \(Solve[%%, entriesOfC] // Flatten\), "\n", \(\(\(On[Solve::svars]\)\(\n\) \)\), "\n", \(\(stiffnessTensorC /. %%;\)\), "\n", \(\(\(\(% // FromTo["\", "\"]\) // MatrixForm\)\(\n\) \)\), "\n", \(\(\(% // Flatten\) // Union\) // Rest\), "\n", \(Count[%, _?AtomQ]\)}], "Input"], Cell[BoxData[ \({c11 \[Rule] c23 + 2\ c55, c22 \[Rule] c23 + 2\ c55, c12 \[Rule] c23, c66 \[Rule] c55, c16 \[Rule] 0, c26 \[Rule] 0, c14 \[Rule] 0, c25 \[Rule] 0, c46 \[Rule] 0, c56 \[Rule] 0, c33 \[Rule] c23 + 2\ c55, c36 \[Rule] 0, c13 \[Rule] c23, c15 \[Rule] 0, c24 \[Rule] 0, c44 \[Rule] c55, c45 \[Rule] 0, c34 \[Rule] 0, c35 \[Rule] 0}\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(c23 + 2\ c55\), "c23", "c23", "0", "0", "0"}, {"c23", \(c23 + 2\ c55\), "c23", "0", "0", "0"}, {"c23", "c23", \(c23 + 2\ c55\), "0", "0", "0"}, {"0", "0", "0", "c55", "0", "0"}, {"0", "0", "0", "0", "c55", "0"}, {"0", "0", "0", "0", "0", "c55"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ \({c23, c55, c23 + 2\ c55}\)], "Output"], Cell[BoxData[ \(2\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Subsubsection"], ". Cubic" }], "Subsubsection"], Cell["\<\ Cubic stiffness tensors are invariant with respect to rotations of \ \[Pi]/2 about each princpal coordinate axis. Accordingly, the invariance \ condition now yields that three parameters are sufficient to describe a cubic \ medium:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(\({\(Flatten[stiffnessTensorC] == \n Flatten[ NewStiffnessTensorCprime[RotationMatrix[{1, 0, 0}, Pi/2]]] // Thread\) // Union\n, \(Flatten[stiffnessTensorC] == \n Flatten[ NewStiffnessTensorCprime[RotationMatrix[{0, 1, 0}, Pi/2]]] // Thread\) // Union\n, \(Flatten[stiffnessTensorC] == \n Flatten[ NewStiffnessTensorCprime[RotationMatrix[{0, 0, 1}, Pi/2]]] // Thread\) // Union\n} // Flatten;\)\(\n\) \)\), "\n", \(Off[Solve::svars]\), "\n", \(Solve[%%, entriesOfC] // Flatten\), "\n", \(\(\(On[Solve::svars]\)\(\n\) \)\), "\n", \(\(stiffnessTensorC /. %%;\)\), "\n", \(\(cubicC = % // FromTo["\", "\"];\)\), "\n", \(\(\(% // MatrixForm\)\(\n\) \)\), "\n", \(\(\(% // Flatten\) // Union\) // Rest\), "\n", \(Count[%, _?AtomQ]\)}], "Input"], Cell[BoxData[ \({c11 \[Rule] c33, c12 \[Rule] c23, c13 \[Rule] c23, c14 \[Rule] 0, c15 \[Rule] 0, c16 \[Rule] 0, c22 \[Rule] c33, c24 \[Rule] 0, c25 \[Rule] 0, c26 \[Rule] 0, c34 \[Rule] 0, c35 \[Rule] 0, c36 \[Rule] 0, c44 \[Rule] c66, c45 \[Rule] 0, c46 \[Rule] 0, c55 \[Rule] c66, c56 \[Rule] 0}\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"c33", "c23", "c23", "0", "0", "0"}, {"c23", "c33", "c23", "0", "0", "0"}, {"c23", "c23", "c33", "0", "0", "0"}, {"0", "0", "0", "c66", "0", "0"}, {"0", "0", "0", "0", "c66", "0"}, {"0", "0", "0", "0", "0", "c66"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ \({c23, c33, c66}\)], "Output"], Cell[BoxData[ \(3\)], "Output"] }, Open ]] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". ", StyleBox["Anisotropic viscoelasticity", FontWeight->"Bold"] }], "Section"], Cell["\<\ Using the correspondence principle, one can modify the eigenvalues \ of an elasticity operator while retaining its original eigenvectors: in this \ way one gets a fully 3-D viscoelastic anisotropic constitutive model. This \ may be accomplished in three steps:\ \>", "Text"], Cell[TextData[{ "1. Write the stiffness tensor in canonical form, ", Cell[BoxData[ \(TraditionalForm\`C\_can\)]], " .\n2. Compute the eigenstiffnesses, i.e., the eigenvalues of ", Cell[BoxData[ \(TraditionalForm\`C\_can\)]], " .\n3. In the principal-axis decomposition of ", Cell[BoxData[ \(TraditionalForm\`C\_can\)]], " , substitute the eigenstiffnesses with complex viscoelastic moduli." }], "BeginNumberedList"], Cell["Step 1 may be obtained with the function", "Text"], Cell[BoxData[ \(\(FromTo["\", "\"]\)[cVoigt_] := Module[{a, b, F}, a = 1/Sqrt[2]; b = 1/2; F = {{1, 1, 1, a, a, a}, {1, 1, 1, a, a, a}, {1, 1, 1, a, a, a}, {a, a, a, b, b, b}, {a, a, a, b, b, b}, {a, a, a, b, b, b}}; cVoigt/F]\)], "Input"], Cell["\<\ so that the eigenstiffnesses of, e.g., a cubic stiffness operator \ are given with their multiplicities (Step 2) by\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Eigenvalues[\(FromTo["\", "\"]\)[ cubicC]]\)], "Input"], Cell[BoxData[ \({\(-c23\) + c33, \(-c23\) + c33, 2\ c23 + c33, 2\ c66, 2\ c66, 2\ c66}\)], "Output"] }, Open ]], Cell["in perfect agreement with Mehrabadi and Cowin (1990).", "Text"], Cell["\<\ For further details and applications, see Carcione and Cavallini \ (1994).\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". ", StyleBox["Conclusion", FontWeight->"Bold"] }], "Section"], Cell[TextData[{ StyleBox["The numerical modelling of wave propagation in anisotropic \ viscoelastic media (Carcione, 2001; Carcione et al., 1992) requires \ preliminary symbolic computations that, although conceptually trivial, are \ tedious and error-prone if performed by hand. Using the built-in ", FontVariations->{"CompatibilityType"->0}], StyleBox["Mathematica", FontSlant->"Italic", FontVariations->{"CompatibilityType"->0}], " facilities for symbolic computation (including algebraic manipulations, \ ODE solvers and Fourier transforms), one can produce software that greatly \ simplifies this task and yields deeper geometric and physical insight. Our \ treatment of viscoelastic rheologies may be adapted to simulate any network \ (e.g., in electrical engineering or systems theory) of linear constituents \ connected in series and/or in parallel." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["References", "Section"], Cell["\<\ Auld, B. A., 1990: Acoustic fields and waves in solids, Vol. 1, \ 2.nd edition, Robert Krieger Publishing Co.\ \>", "Reference"], Cell[TextData[{ "Boltzmann, L., 1874: ", StyleBox["Zur Theorie der elastichen ", FontFamily->"Arial"], "Nachwirkung", StyleBox[", Sitz. Kgl. Akad. Wiss. Wien (Math-Naturwiss Klasse) 70, ", FontFamily->"Arial"], "275-306." }], "Reference"], Cell["\<\ Carcione, J., 2001: Wave fields in real media (Handbook of \ geophysical exploration: seismic exploration), Pergamon.\ \>", "Reference"], Cell["\<\ Carcione, J. M., and Cavallini, F., 1994: A rheological model for \ anelastic media with applications to seismic wave propagation. Geophys. J. \ Internat. 119(1)338-348. \ \>", "Reference"], Cell["\<\ Carcione, J. M., Seriani, G., and Priolo, E., 1992: Wave simulation \ in three-dimensional anisotropic-viscoelastic media, 62nd Ann. Internat. Mtg: \ Soc. of Expl. Geophys., 1251-1254.\ \>", "Reference"], Cell["\<\ Crampin, S., 1981: A review of wave motion in anisotropic and \ cracked elastic media, Wave Motion, 3, 343-391.\ \>", "Reference"], Cell["\<\ Fabrizio, M., and Morro, A., 1992: Mathematical Problems in Linear \ Viscoelasticity, SIAM.\ \>", "Reference"], Cell["\<\ Hayes. M., 1980: Energy flux for trains of inhomogeneous plane \ waves, Proc. R. Soc. London A 370, 417-429.\ \>", "Reference"], Cell["\<\ Helbig, K., 1994: Foundations of anisotropy for exploration seimics \ (Handbook of geophysical exploration: seismic exploration), Pergamon.\ \>", \ "Reference"], Cell[TextData[{ "Ianniello, M. G., 1993: Elastic ", StyleBox["Nachwirkung", FontSlant->"Italic"], ", Brownian motion and the tide against determinism: 1835-1920, HSPS 24(1), \ 41-100." }], "Reference"], Cell["\<\ Landau, L., and Lifchitz, E., 1990: Th\[EAcute]orie de l'elasticit\ \[EAcute], Mir.\ \>", "Reference"], Cell["\<\ Mehrabadi, M. M. and Cowin, S. C., 1990: Eigentensors of linear \ anisotropic elastic materials, Q. Jl. Mech. & Appl. Math. 43(1), 15-41.\ \>", \ "Reference"] }, Open ]], Cell[CellGroupData[{ Cell["About the Authors", "SectionAboutAuthor"], Cell[TextData[{ StyleBox["Fabio Cavallini", "TR"], " is a tenure ", StyleBox["s", "TR"], "enior researcher at OGS, and a member of the Scientific Board of OGS. He \ has authored articles, and professional software in the area of seismic and \ electromagnetic wave propagation, oceanography, hydrology, and ecology. He \ holds an Italian Laurea in physics (cum laude) from the University of \ Trieste, Italy." }], "TextAboutAuthor"], Cell[TextData[{ StyleBox["G\[EAcute]za Seriani is vice-Director of the Geophysics \ department at OGS and responsible of the geophysical modelling group in the \ same department ", "TR"], ". He has authored articles, and professional software in the area of \ seismic wave propagation, in numerical wave modeling for complex geological \ structures and large scale parallell computing. He holds an Italian Laurea in \ physics from the University of Trieste, Italy." }], "TextAboutAuthor"], Cell[TextData[{ StyleBox["Fabio Cavallini", "AboutAuthorB"], "\n", StyleBox["Department of Geophysics of the Lithosphere\n", "AboutAuthorI"], StyleBox["Istituto Nazionale di Oceanografia e di Geofisica Sperimentale - \ OGS \nBorgo Grotta Gigante 42/C\n I-34010 Sgonico, Trieste, Italy", "TI"], StyleBox["\n", "AboutAuthorI"], StyleBox[ButtonBox["fcavallini@ogs.trieste.it", ButtonData:>{ URL[ "mailto:fkampas@wamsystems.com"], None}, ButtonStyle->"Hyperlink"], "AboutAuthorI"] }], "TextAboutAuthor"], Cell[TextData[{ StyleBox["G\[EAcute]za Seriani\n", "AboutAuthorB"], StyleBox["Department of Geophysics of the Lithosphere\n", "AboutAuthorI"], StyleBox["Istituto Nazionale di Oceanografia e di Geofisica Sperimentale - \ OGS \nBorgo Grotta Gigante 42/C\n I-34010 Sgonico, Trieste, Italy", "TI"], StyleBox["\n", "AboutAuthorI"], StyleBox[ButtonBox["gseriani@ogs.trieste.it", ButtonData:>{ URL[ "mailto:fkampas@wamsystems.com"], None}, ButtonStyle->"Hyperlink"], "AboutAuthorI"] }], "TextAboutAuthor"] }, Open ]] }, Open ]] }, FrontEndVersion->"5.2 for X", ScreenRectangle->{{0, 1920}, {0, 1200}}, PrintingStyleEnvironment->"Printout", WindowToolbars->"EditBar", WindowSize->{1440, 1122}, WindowMargins->{{70, Automatic}, {1, Automatic}}, PrintingCopies->1, PrintingPageRange->{1, Automatic}, PageHeaders->{{ Inherited, Inherited, Cell[ "Fabio Cavallini,G\[EAcute]za Seriani", "Header"]}, { Cell[ "Symbolic computations in viscoelasticity and anisotropic \ elasticity", "Header"], Inherited, Inherited}}, ShowSelection->True, Magnification->1, StyleDefinitions -> "IMS2006styles.nb" ] (******************************************************************* Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. *******************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1776, 53, 95, 3, 78, "Title"], Cell[1874, 58, 69, 0, 22, "Author"], Cell[1946, 60, 38, 0, 22, "Author"], Cell[1987, 62, 1058, 20, 105, "Abstract"], Cell[CellGroupData[{ Cell[3070, 86, 82, 4, 62, "SectionFirst"], Cell[3155, 92, 206, 5, 26, "Quote"], Cell[3364, 99, 1584, 24, 116, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[4985, 128, 136, 6, 62, "Section"], Cell[5124, 136, 698, 11, 62, "Text"], Cell[CellGroupData[{ Cell[5847, 151, 85, 4, 54, "Subsection"], Cell[CellGroupData[{ Cell[5957, 159, 100, 5, 42, "Subsubsection"], Cell[6060, 166, 434, 14, 26, "Text"], Cell[6497, 182, 110, 2, 47, "NumberedEquation"], Cell[6610, 186, 241, 8, 26, "Text"], Cell[6854, 196, 284, 7, 50, "NumberedEquation"], Cell[7141, 205, 247, 5, 26, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[7425, 215, 100, 5, 42, "Subsubsection"], Cell[7528, 222, 203, 5, 26, "Text"], Cell[7734, 229, 108, 3, 30, "NumberedEquation"], Cell[7845, 234, 355, 13, 26, "Text"], Cell[8203, 249, 260, 7, 26, "Text"], Cell[8466, 258, 159, 5, 26, "Text"], Cell[8628, 265, 455, 12, 32, "NumberedEquation"], Cell[9086, 279, 101, 3, 26, "Text"], Cell[9190, 284, 109, 2, 30, "NumberedEquation"], Cell[9302, 288, 64, 0, 26, "Text"], Cell[9369, 290, 573, 11, 72, "Input"], Cell[9945, 303, 145, 3, 44, "Text"], Cell[10093, 308, 542, 9, 88, "Input"], Cell[10638, 319, 186, 4, 26, "Text"], Cell[10827, 325, 548, 10, 120, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[11412, 340, 108, 5, 42, "Subsubsection"], Cell[11523, 347, 764, 26, 26, "Text"], Cell[12290, 375, 142, 2, 47, "NumberedEquation"], Cell[12435, 379, 359, 10, 26, "Text"], Cell[12797, 391, 190, 5, 26, "Text"], Cell[12990, 398, 117, 3, 42, "DisplayFormula"], Cell[13110, 403, 383, 13, 26, "Text"], Cell[13496, 418, 200, 4, 26, "Text"], Cell[13699, 424, 131, 2, 40, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[13867, 431, 93, 4, 42, "Subsubsection"], Cell[13963, 437, 173, 5, 26, "Text"], Cell[14139, 444, 124, 2, 30, "NumberedEquation"], Cell[14266, 448, 237, 5, 26, "Text"], Cell[14506, 455, 82, 1, 54, "NumberedEquation"], Cell[14591, 458, 432, 15, 26, "Text"], Cell[15026, 475, 137, 2, 56, "Input"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[15212, 483, 102, 4, 54, "Subsection"], Cell[15317, 489, 501, 12, 44, "Text"], Cell[15821, 503, 507, 9, 72, "Input"], Cell[16331, 514, 263, 7, 26, "Text"], Cell[16597, 523, 507, 9, 88, "Input"], Cell[CellGroupData[{ Cell[17129, 536, 87, 4, 42, "Subsubsection"], Cell[17219, 542, 114, 5, 26, "Text"], Cell[17336, 549, 70, 1, 23, "DisplayFormula"], Cell[17409, 552, 69, 0, 26, "Text"], Cell[17481, 554, 152, 3, 72, "Input"], Cell[17636, 559, 67, 0, 26, "Text"], Cell[CellGroupData[{ Cell[17728, 563, 146, 2, 40, "Input"], Cell[17877, 567, 53, 1, 65, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[17979, 574, 88, 4, 42, "Subsubsection"], Cell[18070, 580, 182, 6, 26, "Text"], Cell[18255, 588, 72, 1, 23, "DisplayFormula"], Cell[18330, 591, 69, 0, 26, "Text"], Cell[18402, 593, 71, 1, 40, "Input"], Cell[18476, 596, 44, 0, 26, "Text"], Cell[CellGroupData[{ Cell[18545, 600, 170, 2, 40, "Input"], Cell[18718, 604, 73, 1, 65, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[18840, 611, 95, 4, 42, "Subsubsection"], Cell[18938, 617, 152, 4, 26, "Text"], Cell[19093, 623, 114, 2, 40, "Input"], Cell[19210, 627, 59, 0, 26, "Text"], Cell[CellGroupData[{ Cell[19294, 631, 85, 1, 40, "Input"], Cell[19382, 634, 254, 6, 41, "Output"] }, Open ]], Cell[19651, 643, 49, 0, 26, "Text"], Cell[CellGroupData[{ Cell[19725, 647, 85, 1, 40, "Input"], Cell[19813, 650, 76, 1, 41, "Output"] }, Open ]], Cell[19904, 654, 49, 0, 26, "Text"], Cell[CellGroupData[{ Cell[19978, 658, 85, 1, 40, "Input"], Cell[20066, 661, 73, 1, 41, "Output"] }, Open ]], Cell[20154, 665, 55, 0, 26, "Text"], Cell[CellGroupData[{ Cell[20234, 669, 109, 2, 40, "Input"], Cell[20346, 673, 61, 1, 57, "Output"] }, Open ]], Cell[20422, 677, 47, 0, 26, "Text"], Cell[CellGroupData[{ Cell[20494, 681, 250, 4, 40, "Input"], Cell[20747, 687, 146, 2, 73, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[20942, 695, 90, 4, 42, "Subsubsection"], Cell[21035, 701, 145, 4, 26, "Text"], Cell[21183, 707, 108, 2, 40, "Input"], Cell[21294, 711, 59, 0, 26, "Text"], Cell[CellGroupData[{ Cell[21378, 715, 81, 1, 40, "Input"], Cell[21462, 718, 405, 10, 41, "Output"] }, Open ]], Cell[21882, 731, 49, 0, 26, "Text"], Cell[CellGroupData[{ Cell[21956, 735, 81, 1, 40, "Input"], Cell[22040, 738, 109, 2, 51, "Output"] }, Open ]], Cell[22164, 743, 49, 0, 26, "Text"], Cell[CellGroupData[{ Cell[22238, 747, 81, 1, 40, "Input"], Cell[22322, 750, 123, 2, 60, "Output"] }, Open ]], Cell[22460, 755, 55, 0, 26, "Text"], Cell[CellGroupData[{ Cell[22540, 759, 105, 2, 40, "Input"], Cell[22648, 763, 61, 1, 57, "Output"] }, Open ]], Cell[22724, 767, 47, 0, 26, "Text"], Cell[CellGroupData[{ Cell[22796, 771, 246, 4, 40, "Input"], Cell[23045, 777, 159, 2, 83, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[23253, 785, 88, 4, 42, "Subsubsection"], Cell[23344, 791, 237, 7, 26, "Text"], Cell[23584, 800, 135, 2, 56, "Input"], Cell[23722, 804, 59, 0, 26, "Text"], Cell[CellGroupData[{ Cell[23806, 808, 91, 1, 40, "Input"], Cell[23900, 811, 480, 11, 41, "Output"] }, Open ]], Cell[24395, 825, 49, 0, 26, "Text"], Cell[CellGroupData[{ Cell[24469, 829, 114, 2, 40, "Input"], Cell[24586, 833, 170, 3, 84, "Output"] }, Open ]], Cell[24771, 839, 49, 0, 26, "Text"], Cell[CellGroupData[{ Cell[24845, 843, 91, 1, 40, "Input"], Cell[24939, 846, 153, 2, 60, "Output"] }, Open ]], Cell[25107, 851, 55, 0, 26, "Text"], Cell[CellGroupData[{ Cell[25187, 855, 137, 2, 40, "Input"], Cell[25327, 859, 132, 2, 60, "Output"] }, Open ]], Cell[25474, 864, 47, 0, 26, "Text"], Cell[CellGroupData[{ Cell[25546, 868, 290, 4, 40, "Input"], Cell[25839, 874, 324, 5, 68, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[26212, 885, 90, 4, 42, "Subsubsection"], Cell[26305, 891, 159, 4, 26, "Text"], Cell[26467, 897, 166, 3, 40, "Input"], Cell[26636, 902, 59, 0, 26, "Text"], Cell[CellGroupData[{ Cell[26720, 906, 111, 2, 40, "Input"], Cell[26834, 910, 901, 20, 41, "Output"] }, Open ]], Cell[27750, 933, 49, 0, 26, "Text"], Cell[CellGroupData[{ Cell[27824, 937, 129, 2, 40, "Input"], Cell[27956, 941, 1093, 15, 226, "Output"] }, Open ]], Cell[29064, 959, 49, 0, 26, "Text"], Cell[CellGroupData[{ Cell[29138, 963, 111, 2, 40, "Input"], Cell[29252, 967, 269, 4, 63, "Output"] }, Open ]], Cell[29536, 974, 55, 0, 26, "Text"], Cell[CellGroupData[{ Cell[29616, 978, 161, 3, 40, "Input"], Cell[29780, 983, 199, 3, 64, "Output"] }, Open ]], Cell[29994, 989, 47, 0, 26, "Text"], Cell[CellGroupData[{ Cell[30066, 993, 329, 5, 40, "Input"], Cell[30398, 1000, 501, 7, 68, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[30948, 1013, 91, 4, 42, "Subsubsection"], Cell[31042, 1019, 142, 3, 26, "Text"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[31245, 1029, 127, 6, 62, "Section"], Cell[31375, 1037, 530, 10, 44, "Text"], Cell[CellGroupData[{ Cell[31930, 1051, 94, 4, 54, "Subsection"], Cell[32027, 1057, 143, 3, 26, "Text"], Cell[32173, 1062, 140, 4, 30, "NumberedEquation"], Cell[32316, 1068, 42, 0, 26, "Text"], Cell[32361, 1070, 68, 1, 31, "NumberedEquation"], Cell[32432, 1073, 349, 7, 44, "Text"], Cell[CellGroupData[{ Cell[32806, 1084, 371, 9, 120, "Input"], Cell[33180, 1095, 3534, 83, 185, "Output"], Cell[36717, 1180, 195, 3, 41, "Output"], Cell[36915, 1185, 36, 1, 41, "Output"] }, Open ]], Cell[36966, 1189, 76, 0, 26, "Text"], Cell[37045, 1191, 161, 3, 40, "Input"], Cell[37209, 1196, 55, 0, 26, "Text"], Cell[CellGroupData[{ Cell[37289, 1200, 405, 9, 88, "Input"], Cell[37697, 1211, 3372, 83, 185, "Output"] }, Open ]], Cell[41084, 1297, 88, 3, 26, "Text"], Cell[CellGroupData[{ Cell[41197, 1304, 739, 12, 72, "Input"], Cell[41939, 1318, 606, 14, 131, "Output"] }, Open ]], Cell[42560, 1335, 126, 3, 26, "Text"], Cell[42689, 1340, 101, 2, 27, "DisplayFormula"], Cell[42793, 1344, 37, 0, 26, "Text"], Cell[42833, 1346, 747, 13, 136, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[43617, 1364, 97, 4, 54, "Subsection"], Cell[43717, 1370, 122, 3, 26, "Text"], Cell[CellGroupData[{ Cell[43864, 1377, 91, 4, 42, "Subsubsection"], Cell[43958, 1383, 105, 3, 26, "Text"], Cell[44066, 1388, 123, 2, 23, "DisplayFormula"], Cell[44192, 1392, 41, 0, 26, "Text"], Cell[44236, 1394, 85, 1, 27, "DisplayFormula"], Cell[44324, 1397, 112, 5, 26, "Text"], Cell[44439, 1404, 111, 2, 40, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[44587, 1411, 88, 4, 42, "Subsubsection"], Cell[44678, 1417, 116, 3, 26, "Text"], Cell[44797, 1422, 120, 2, 40, "Input"], Cell[44920, 1426, 130, 4, 26, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[45087, 1435, 86, 4, 42, "Subsubsection"], Cell[45176, 1441, 73, 0, 26, "Text"], Cell[45252, 1443, 230, 4, 88, "Input"], Cell[45485, 1449, 21, 0, 26, "Text"], Cell[45509, 1451, 123, 2, 40, "Input"], Cell[45635, 1455, 110, 3, 26, "Text"], Cell[CellGroupData[{ Cell[45770, 1462, 80, 1, 40, "Input"], Cell[45853, 1465, 406, 11, 77, "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[46320, 1483, 113, 4, 54, "Subsection"], Cell[46436, 1489, 197, 4, 26, "Text"], Cell[CellGroupData[{ Cell[46658, 1497, 87, 4, 42, "Subsubsection"], Cell[46748, 1503, 228, 4, 26, "Text"], Cell[CellGroupData[{ Cell[47001, 1511, 74, 1, 40, "Input"], Cell[47078, 1514, 360, 11, 77, "Output"] }, Open ]], Cell[47453, 1528, 232, 4, 26, "Text"], Cell[CellGroupData[{ Cell[47710, 1536, 524, 12, 200, "Input"], Cell[48237, 1550, 245, 4, 41, "Output"], Cell[48485, 1556, 161, 2, 41, "Output"], Cell[48649, 1560, 574, 14, 131, "Output"], Cell[49226, 1576, 106, 2, 41, "Output"], Cell[49335, 1580, 36, 1, 41, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[49420, 1587, 99, 4, 42, "Subsubsection"], Cell[49522, 1593, 267, 5, 26, "Text"], Cell[CellGroupData[{ Cell[49814, 1602, 575, 14, 216, "Input"], Cell[50392, 1618, 321, 4, 41, "Output"], Cell[50716, 1624, 580, 14, 131, "Output"], Cell[51299, 1640, 73, 1, 41, "Output"], Cell[51375, 1643, 35, 1, 41, "Output"] }, Open ]], Cell[51425, 1647, 122, 3, 26, "Text"], Cell[51550, 1652, 178, 4, 26, "Text"], Cell[CellGroupData[{ Cell[51753, 1660, 622, 15, 248, "Input"], Cell[52378, 1677, 1037, 19, 57, "Output"], Cell[53418, 1698, 1552, 25, 89, "Output"], Cell[54973, 1725, 59, 1, 41, "Output"], Cell[55035, 1728, 35, 1, 41, "Output"] }, Open ]], Cell[55085, 1732, 118, 3, 26, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[55240, 1740, 86, 4, 42, "Subsubsection"], Cell[55329, 1746, 318, 6, 44, "Text"], Cell[CellGroupData[{ Cell[55672, 1756, 817, 19, 264, "Input"], Cell[56492, 1777, 395, 6, 57, "Output"], Cell[56890, 1785, 591, 14, 131, "Output"], Cell[57484, 1801, 58, 1, 41, "Output"], Cell[57545, 1804, 35, 1, 41, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[57629, 1811, 82, 4, 42, "Subsubsection"], Cell[57714, 1817, 255, 5, 26, "Text"], Cell[CellGroupData[{ Cell[57994, 1826, 1004, 23, 312, "Input"], Cell[59001, 1851, 344, 5, 41, "Output"], Cell[59348, 1858, 558, 14, 131, "Output"], Cell[59909, 1874, 49, 1, 41, "Output"], Cell[59961, 1877, 35, 1, 41, "Output"] }, Open ]] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[60069, 1886, 132, 6, 62, "Section"], Cell[60204, 1894, 284, 5, 26, "Text"], Cell[60491, 1901, 450, 11, 56, "BeginNumberedList"], Cell[60944, 1914, 56, 0, 26, "Text"], Cell[61003, 1916, 305, 5, 56, "Input"], Cell[61311, 1923, 139, 3, 26, "Text"], Cell[CellGroupData[{ Cell[61475, 1930, 105, 2, 40, "Input"], Cell[61583, 1934, 111, 2, 41, "Output"] }, Open ]], Cell[61709, 1939, 69, 0, 26, "Text"], Cell[61781, 1941, 98, 3, 26, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[61916, 1949, 115, 6, 62, "Section"], Cell[62034, 1957, 890, 15, 62, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[62961, 1977, 29, 0, 62, "Section"], Cell[62993, 1979, 142, 4, 36, "Reference"], Cell[63138, 1985, 256, 8, 23, "Reference"], Cell[63397, 1995, 146, 3, 22, "Reference"], Cell[63546, 2000, 199, 4, 22, "Reference"], Cell[63748, 2006, 213, 4, 22, "Reference"], Cell[63964, 2012, 140, 3, 22, "Reference"], Cell[64107, 2017, 120, 3, 22, "Reference"], Cell[64230, 2022, 137, 3, 22, "Reference"], Cell[64370, 2027, 170, 4, 22, "Reference"], Cell[64543, 2033, 211, 6, 22, "Reference"], Cell[64757, 2041, 112, 3, 22, "Reference"], Cell[64872, 2046, 168, 4, 22, "Reference"] }, Open ]], Cell[CellGroupData[{ Cell[65077, 2055, 47, 0, 86, "SectionAboutAuthor"], Cell[65127, 2057, 439, 9, 43, "TextAboutAuthor"], Cell[65569, 2068, 494, 8, 43, "TextAboutAuthor"], Cell[66066, 2078, 525, 11, 115, "TextAboutAuthor"], Cell[66594, 2091, 522, 10, 115, "TextAboutAuthor"] }, Open ]] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)