(************** Content-type: application/mathematica ************** 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[ 96352, 2505]*) (*NotebookOutlinePosition[ 99244, 2587]*) (* CellTagsIndexPosition[ 98682, 2570]*) (*WindowFrame->Normal*) Notebook[{ Cell[BoxData[ \(ClearAll["\<`*\>"]\)], "Input", AspectRatioFixed->True], Cell["\<\ Finite Element Analysis of Two and Three Dimensional Truss Structures\ \>", "Title", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[" by Zafer Gurdal ", "Author"], StyleBox["\[Copyright]", "Author", FontFamily->"Symbol", FontSlant->"Plain"], StyleBox[ " Copyright 1993\n Departments of Aerospace and Ocean Engineering \n and \ Engineering Science and Mechanics - 0219\n Virginia Polytehnic Institute and \ State University\n Blacksburg, VA 24061", "Author"] }], "Subsubtitle", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "This notebook is intended to be used as a tutorial to demonstrate the use \ of ", StyleBox["Mathematica", FontSlant->"Italic"], " and ", StyleBox["Mathematica", FontSlant->"Italic"], " programing for displacement and stresses analysis of 2-D and 3-D truss \ structures." }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[TextData["Initializations"], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "Following lines establish the environment for the tutorial and load the ", StyleBox["Mathematica", FontSlant->"Italic"], " package that has the various modules needed for the calculations. ", "\n", "The first line in the next cell is to display two dimensional lists as \ matrices, and the next one sets the default font for the displayed text. " }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[BoxData[{ \(\($PrePrint = If[MatrixQ[#1], MatrixForm[#1], #1] &;\)\), "\n", \(\($DefaultFont = {"\", 12};\)\)}], "Input", AspectRatioFixed->True], Cell[TextData[{ "Next we need to load the ", StyleBox["Mathematica", FontSlant->"Italic"], " package ", StyleBox["FEM.m", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " from the appropriate directory. This Program is provided in the link \ \"FEM.m\" under the PROGRAMS on the course web page. First. download the \ FEM.m file as a text file to one of your directories so that you can load it \ into your ", StyleBox["Mathematica", FontSlant->"Italic"], " notebook session. \nTo find the current directory ", StyleBox["Mathematica", FontSlant->"Italic"], " expects to load from use" }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(Directory[]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \("C:\\Program Files\\Wolfram Research\\Mathematica\\4.1"\)], "Output"] }, Open ]], Cell["\<\ Following line may be used to set the current directory to be the one that \ includes the program that you would like to load.\ \>", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(SetDirectory["\"]\)], "Input"], Cell[BoxData[ \("C:\\Documents and Settings\\zgurdal\\My \ Documents\\VATECH\\COURSES\\PROGRAM_M_FILES"\)], "Output"] }, Open ]], Cell["To find the names of the files in the current directory use", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(FileNames[]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({"FEM.m"}\)], "Output"] }, Open ]], Cell[TextData[{ "To load a program file use ", StyleBox["<<", FontColor->RGBColor[1, 0, 0]], " with appropriate path leading from the current directory to the \ directory in which the file you want to load resides " }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[BoxData[ \(<< "\"\)], "Input", AspectRatioFixed->True], Cell[TextData[{ "In order to find the operations that are currently supported by the ", StyleBox["FEM.m", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " package use; " }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(\(?SymbolicFEM\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \("Following modules are available in the truss Finite Element Program, \ showNodes, elementLength, dirCos, eStiffMat, \ globalMatrix, assembleGlobalMatrix, reducedGlobalMatrix, \ showStructure. There will also be plotting utilities in the near \ future"\)], "Print", CellTags->"Info3216495278-8722696"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Input ", "Section", Evaluatable->False, AspectRatioFixed->True], Cell["\<\ The elements of the truss are defined by three lists which specify a) the \ location of the node points, b) nodal connectivity of the truss elements, \ and c) cross-sectional properties of the elements. \ \>", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell["a) Node Points: ", "Subsection", FontSize->18], Cell[TextData[{ "The first list is the list of x- y- and z-coordinates of the node points \ along with the node numbers. For a 2-D truss structure with nn nodes, the \ form of the list is \n", Cell[BoxData[ FormBox[ RowBox[{ FormBox[ RowBox[{ RowBox[{ FormBox[ RowBox[{ FormBox[\({{x\_1\), "TraditionalForm"], ",", \(y\_1\)}], "TraditionalForm"], "}"}], ",", \({x\_2\)}], "TraditionalForm"], ",", \(y\_2\)}], TraditionalForm]]], "}, ......., ", Cell[BoxData[ \(TraditionalForm\`{x\_nn, \ y\_nn\)]], "}. \nFor 3-D trusses, the z-coordimates are added for each node. Note \ that the numbering of the nodes is arbitrary, and may not follow a sequential \ numbering scheme. " }], "Text", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(nodeLocations = {\ {1, {0, \ 0}}, \ {2, {h, \ 0}}, \ {3, \ {h, \ h}}, \ {4, \ {2 h, \ 0}}}\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({{1, {0, 0}}, {2, {h, 0}}, {3, {h, h}}, {4, {2\ h, 0}}}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["b) Element Connectivity: ", "Subsection", FontSize->18], Cell[TextData[{ "Each element is connected to two nodes. The nodal connectivity is the \ list of two nodes numbers that define each element. For a truss with ", StyleBox["ne", FontColor->RGBColor[1, 0, 0]], " elements, we have \n{{1, ", Cell[BoxData[ \(TraditionalForm\`{nd\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`nd\_2\)]], "}}, {2, ", Cell[BoxData[ \(TraditionalForm\`{nd\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`nd\_2\)]], "}},..., {", StyleBox["ne, ", FontColor->RGBColor[1, 0, 0]], Cell[BoxData[ \(TraditionalForm\`{nd\_1\)]], ",", StyleBox[" ", FontColor->RGBColor[1, 0, 0]], Cell[BoxData[ \(TraditionalForm\`nd\_2\)]], "}}}\nNumbering of the elements is also arbitrary, and does not have to \ follow a sequential scheme. The node numbers, however, must appear in the \ node point list discussed above. " }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(elementNodes = {{1, {1, 3}}, {2, {1, 2}}, {3, {2, 3}}, {4, {2, 4}}, {5, {3, 4}}\ }\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({{1, {1, 3}}, {2, {1, 2}}, {3, {2, 3}}, {4, {2, 4}}, {5, {3, 4}}}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["c) Element Properties: ", "Subsection", FontSize->18], Cell[TextData[{ "Cross-sectional properties, and the modulus of each element are rovided in \ a list of length ", StyleBox["ne", FontColor->RGBColor[1, 0, 0]], " in which the first entry is the area of the member and the second is the \ Young's modulus of the material." }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(elementProperties = {\ {1, {Ar, YE}}, {2, {Ar, YE}}, {3, {Ar, YE}}, {4, {Ar, YE}}, {5, {Ar, YE}}\ \ }\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({{1, {Ar, YE}}, {2, {Ar, YE}}, {3, {Ar, YE}}, {4, {Ar, YE}}, {5, {Ar, YE}}}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["\<\ d) Graphical Representation of the Input (Numeric Data Only): \ \>", "Subsection", FontSize->18], Cell[TextData[{ "If the numerical values of the node point coordinates and the element \ properties are provided, it is possible to graphically verify the model. Two \ utility modules, ", StyleBox["showNodes", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " and ", StyleBox["showElements", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " may be used for this purpose. " }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(\(?showNodes\)\)], "Input"], Cell[BoxData[ \("showNodes[nodes, Options] shows the nodal points in either 2- or \ 3-D space depending on the input. The argument nodes is a list of node point \ coordinates provided in the following form, {NodeNo, {x-coord, y-coord, \ z-coord}}. Default options are pointColor -> RGBColor[1,0,0] pointSize -> \ PointSize[0.01]"\)], "Print", CellTags->"Info3216495292-5915026"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\(?showElements\)\)], "Input"], Cell[BoxData[ \("showElements[nodes, locs, Options] shows the configuration of \ the elements. The argument nodes is a list of nodal connectivity for the \ elements. The form of the list for a truss element is {ElementNo,{Node1, \ Node2}}. For a triangular element, for example, the form is \ {ElementNo,{Node1, Node2, Node3}}. The argument locs is the list of nodal \ coordinates. Its form, for example, for a 2-D problem is {NodeNo, {x-coord, \ y-coord}}. Type Options[showElements] to see the optional arguments."\)], \ "Print", CellTags->"Info3216495292-1617452"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(nodeLocations\)], "Input"], Cell[BoxData[ \({{1, {0, 0}}, {2, {h, 0}}, {3, {h, h}}, {4, {2\ h, 0}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(nodes\ = \ nodeLocations\ /. \ h\ -> \ 100.0\)], "Input"], Cell[BoxData[ \({{1, {0, 0}}, {2, {100.`, 0}}, {3, {100.`, 100.`}}, {4, {200.`, 0}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(g1\ = \ showNodes[\ nodes, \ pointSize -> PointSize[0.035], \ pointColor -> RGBColor[0, 1, 0]]\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Times-Italic %%IncludeFont: Times-Italic /Times-Italic findfont 12 scalefont setfont % Scaling calculations 0.0238095 0.0047619 0.0147151 0.00588604 [ [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath 0 1 0 r .035 w .02381 .01472 Mdot .5 .01472 Mdot .5 .60332 Mdot .97619 .01472 Mdot % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 177.938}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHg"], ImageRangeCache->{{{0, 431}, {265.875, 0}} -> {-5.19691, -2.50052, 0.73223, \ 0.592386}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(elements\ = \ elementProperties\ /. \ {Ar -> 1.0, \ YE -> 1.0\ 10^7}\)], "Input"], Cell[BoxData[ \({{1, {1.`, 1.`*^7}}, {2, {1.`, 1.`*^7}}, {3, {1.`, 1.`*^7}}, {4, {1.`, 1.`*^7}}, {5, {1.`, 1.`*^7}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(g2\ = \ showElements[\ \ elementNodes, \ nodes, \ AspectRatio -> \ Automatic]\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Times-Italic %%IncludeFont: Times-Italic /Times-Italic findfont 12 scalefont setfont % Scaling calculations 0.0238095 0.0047619 0.0147151 0.00588604 [ [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath 1 0 0 r .02 w [ ] 0 setdash .02381 .01472 m .5 .60332 L s .02381 .01472 m .5 .01472 L s .5 .01472 m .5 .60332 L s .5 .01472 m .97619 .01472 L s .5 .60332 m .97619 .01472 L s % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 177.938}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgOol:O02kOol8O02lOol:O00?Ool000ioo`Yl0;]oo`Ql0;ao o`Yl00moo`003goo2W`0^Woo27`0^goo2W`047oo000@Ool:O02iOol8O02jOol:O00AOol0015oo`Yl 0;Qoo`Ql0;Uoo`Yl019oo`004Woo2W`0]goo27`0^7oo2W`04goo000BOol;O02fOol8O02gOol;O00C Ool001=oo`Yl0;Ioo`Ql0;Moo`Yl01Aoo`0057oo2W`0]Goo27`0]Woo2W`05Goo000EOol:O02dOol8 O02eOol:O00FOol001Ioo`Yl0;=oo`Ql0;Aoo`Yl01Moo`005goo2W`0/Woo27`0/goo2W`067oo000G Ool:O02bOol8O02cOol:O00HOol001Qoo`Yl0;5oo`Ql0;9oo`Yl01Uoo`006Goo2W`0/7oo27`0/Goo 2W`06Woo000JOol:O02_Ool8O02`Ool:O00KOol001]oo`Yl0:ioo`Ql0:moo`Yl01aoo`006goo2W`0 [Woo27`0[goo2W`077oo000LOol:O02]Ool8O02^Ool:O00MOol001eoo`Yl0:aoo`Ql0:eoo`Yl01io o`007Woo2W`0Zgoo27`0[7oo2W`07goo000OOol:O02ZOol8O02[Ool:O00POol001moo`Yl0:Yoo`Ql 0:]oo`Yl021oo`0087oo2W`0ZGoo27`0ZWoo2W`08Goo000QOol:O02XOol8O02YOol:O00ROol0029o o`Yl0:Moo`Ql0:Qoo`Yl02=oo`008goo2W`0YWoo27`0Ygoo2W`097oo000SOol;O02UOol8O02VOol; O00TOol002Aoo`Yl0:Eoo`Ql0:Ioo`Yl02Eoo`009Goo2W`0Y7oo27`0YGoo2W`09Woo000VOol:O02S Ool8O02TOol:O00WOol002Moo`Yl0:9oo`Ql0:=oo`Yl02Qoo`00:7oo2W`0XGoo27`0XWoo2W`0:Goo 000XOol:O02QOol8O02ROol:O00YOol002Uoo`Yl0:1oo`Ql0:5oo`Yl02Yoo`00:Woo2W`0Wgoo27`0 X7oo2W`0:goo000[Ool:O02NOol8O02OOol:O00/Ool002aoo`Yl09eoo`Ql09ioo`Yl02eoo`00;7oo 2W`0WGoo27`0WWoo2W`0;Goo000]Ool:O02LOol8O02MOol:O00^Ool002ioo`Yl09]oo`Ql09aoo`Yl 02moo`00;goo2W`0VWoo27`0Vgoo2W`0<7oo000`Ool:O02IOol8O02JOol:O00aOol0031oo`Yl09Uo o`Ql09Yoo`Yl035oo`00Goo2W`0T7oo27`0TGoo2W`0 >Woo000iOol:O02@Ool8O02AOol:O00jOol003Yoo`Yl08moo`Ql091oo`Yl03]oo`00>goo2W`0SWoo 27`0Sgoo2W`0?7oo000lOol:O02=Ool8O02>Ool:O00mOol003eoo`Yl08aoo`Ql08eoo`Yl03ioo`00 ?Goo2W`0S7oo27`0SGoo2W`0?Woo000nOol:O02;Ool8O02Ool004ioo`Yl07]oo`Ql07aoo`Yl04mo o`00CWoo2W`0Ngoo27`0O7oo2W`0Cgoo001?Ool:O01jOol8O01kOol:O01@Ool0051oo`Yl07Uoo`Ql 07Yoo`Yl055oo`00DGoo2W`0N7oo27`0NGoo2W`0DWoo001BOol:O01gOol8O01hOol:O01COol0059o o`]l07Ioo`Ql07Moo`]l05=oo`00Dgoo2W`0MWoo27`0Mgoo2W`0E7oo001DOol:O01eOol8O01fOol: O01EOol005Eoo`Yl07Aoo`Ql07Eoo`Yl05Ioo`00EWoo2W`0Lgoo27`0M7oo2W`0Egoo001GOol:O01b Ool8O01cOol:O01HOol005Moo`Yl079oo`Ql07=oo`Yl05Qoo`00F7oo2W`0LGoo27`0LWoo2W`0FGoo 001IOol:O01`Ool8O01aOol:O01JOol005Yoo`Yl06moo`Ql071oo`Yl05]oo`00Fgoo2W`0KWoo27`0 Kgoo2W`0G7oo001KOol:O01^Ool8O01_Ool:O01LOol005aoo`Yl06eoo`Ql06ioo`Yl05eoo`00GGoo 2W`0K7oo27`0KGoo2W`0GWoo001NOol:O01[Ool8O01/Ool:O01OOol005moo`Yl06Yoo`Ql06]oo`Yl 061oo`00Ggoo2W`0JWoo27`0Jgoo2W`0H7oo001POol:O01YOol8O01ZOol:O01QOol0065oo`Yl06Qo o`Ql06Uoo`Yl069oo`00HWoo2W`0Igoo27`0J7oo2W`0Hgoo001SOol:O01VOol8O01WOol:O01TOol0 06=oo`]l06Eoo`Ql06Ioo`]l06Aoo`00I7oo2W`0IGoo27`0IWoo2W`0IGoo001UOol:O01TOol8O01U Ool:O01VOol006Ioo`Yl06=oo`Ql06Aoo`Yl06Moo`00Igoo2W`0HWoo27`0Hgoo2W`0J7oo001XOol: O01QOol8O01ROol:O01YOol006Qoo`Yl065oo`Ql069oo`Yl06Uoo`00JGoo2W`0H7oo27`0HGoo2W`0 JWoo001ZOol:O01OOol8O01POol:O01[Ool006]oo`Yl05ioo`Ql05moo`Yl06aoo`00K7oo2W`0GGoo 27`0GWoo2W`0KGoo001/Ool:O01MOol8O01NOol:O01]Ool006eoo`Yl05aoo`Ql05eoo`Yl06ioo`00 KWoo2W`0Fgoo27`0G7oo2W`0Kgoo001_Ool:O01JOol8O01KOol:O01`Ool0071oo`Yl05Uoo`Ql05Yo o`Yl075oo`00L7oo2W`0FGoo27`0FWoo2W`0LGoo001aOol:O01HOol8O01IOol:O01bOol0079oo`Yl 05Moo`Ql05Qoo`Yl07=oo`00Lgoo2W`0EWoo27`0Egoo2W`0M7oo001dOol:O01EOol8O01FOol:O01e Ool007Aoo`]l05Aoo`Ql05Eoo`]l07Eoo`00MGoo2W`0E7oo27`0EGoo2W`0MWoo001fOol:O01COol8 O01DOol:O01gOol007Moo`Yl059oo`Ql05=oo`Yl07Qoo`00N7oo2W`0DGoo27`0DWoo2W`0NGoo001i Ool:O01@Ool8O01AOol:O01jOol007Uoo`Yl051oo`Ql055oo`Yl07Yoo`00NWoo2W`0Cgoo27`0D7oo 2W`0Ngoo001kOol:O01>Ool8O01?Ool:O01lOol007aoo`Yl04eoo`Ql04ioo`Yl07eoo`00OGoo2W`0 C7oo27`0CGoo2W`0OWoo001mOol:O01goo27`0?7oo2W`0Sgoo002>Ool:O00kOol8O00lOol:O02?Ool008moo`Yl03Yoo`Ql03]oo`Yl 091oo`00T7oo2W`0>Goo27`0>Woo2W`0TGoo002AOol:O00hOol8O00iOol:O02BOol0099oo`Yl03Mo o`Ql03Qoo`Yl09=oo`00TWoo2g`0=Woo27`0=goo2g`0Tgoo002COol:O00fOol8O00gOol:O02DOol0 09Aoo`Yl03Eoo`Ql03Ioo`Yl09Eoo`00UGoo2W`0=7oo27`0=Goo2W`0UWoo002FOol:O00cOol8O00d Ool:O02GOol009Moo`Yl039oo`Ql03=oo`Yl09Qoo`00Ugoo2W`0OolCO03?Ool00"], ImageRangeCache->{{{0, 431}, {265.875, 0}} -> {-5.19691, -2.50052, 0.73223, \ 0.592386}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Show[\ g2, \ g1, \ AspectRatio\ -> \ Automatic\ ]\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .5 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Times-Italic %%IncludeFont: Times-Italic /Times-Italic findfont 12 scalefont setfont % Scaling calculations 0.0238095 0.0047619 0.0119048 0.0047619 [ [ 0 0 0 0 ] [ 1 .5 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .5 L 0 .5 L closepath clip newpath 1 0 0 r .02 w [ ] 0 setdash .02381 .0119 m .5 .4881 L s .02381 .0119 m .5 .0119 L s .5 .0119 m .5 .4881 L s .5 .0119 m .97619 .0119 L s .5 .4881 m .97619 .0119 L s 0 1 0 r .035 w .02381 .0119 Mdot .5 .0119 Mdot .5 .4881 Mdot .97619 .0119 Mdot % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 144}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHg7oo2g`0T7oo27`0T7oo37`0>Goo000iOol;O02?Ool8O02?Oolgoo2g`0SGoo27`0SGoo37`0?7oo000lOol;O02Ool;O01jOol8O01jOolgoo27`0?7oo37`0SGoo002>Ool;O00jOol8O00kOol< O02>Ool008moo`]l03Uoo`Ql03Yoo`al08moo`00T7oo2g`0>7oo27`0>Goo37`0T7oo002AOol;O00g Ool8O00hOolOol"], ImageRangeCache->{{{0, 431}, {215, 0}} -> {-5.24524, -2.50054, 0.732566, \ 0.732566}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["\<\ There are other graphics utility modules that can be used to represent the \ cross-sectional areas of truss members. Those will be introduced later in \ representing the structures. \ \>", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Element Stiffness Matrices and Global Stiffness Matrix", "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "In addition to the input element and nodal data, certain properties of \ the elements are needed in order to construct the element stiffness matrix of \ the truss elements. These properties are the length of the elements and \ their position in space, which are described by the direction cosines of the \ angles each member make from the coordinate axes. The following modules, ", StyleBox["elementLengths", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " and ", StyleBox["dirCos", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " may be used to compute those properties. " }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell["a) Direction Cosines: ", "Subsection", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(\(?elementLength\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \("elementLength[enodes, nlocs] computes the length of every \ truss element using the element nodal connectivity matrix enodes and \ nodal location matrix nlocs."\)], "Print", CellTags->"Info3216495390-5511677"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(lengths = elementLength[elementNodes, nodeLocations]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", \(\@2\ \@h\^2\)}, {"2", \(\@h\^2\)}, {"3", \(\@h\^2\)}, {"4", \(\@h\^2\)}, {"5", \(\@2\ \@h\^2\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(lengths\ /. \ h -> 100\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", \(100\ \@2\)}, {"2", "100"}, {"3", "100"}, {"4", "100"}, {"5", \(100\ \@2\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell["Direction cosines of the elements are obtained by using . ", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(\(?dirCos\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \("dirCos[enodes, nlocs_List, elens] computes the directional \ cosines of elements, enodes, whose nodal coordinates are given in \ nlocs and lengths given in elens. The module may be used for either a \ single element, or for the entire list of elements."\)], "Print", CellTags->"Info3216495390-3443889"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(cos = dirCos[elementNodes, nodeLocations, lengths]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({{1, {h\/\(\@2\ \@h\^2\), h\/\(\@2\ \@h\^2\)}}, {2, {h\/\@h\^2, 0}}, {3, {0, h\/\@h\^2}}, {4, {h\/\@h\^2, 0}}, {5, {h\/\(\@2\ \@h\^2\), \(-\(h\/\(\@2\ \@h\^2\)\)\)}}}\)], \ "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(cos\ /. \ h -> 100\)], "Input"], Cell[BoxData[ \({{1, {1\/\@2, 1\/\@2}}, {2, {1, 0}}, {3, {0, 1}}, {4, {1, 0}}, {5, {1\/\@2, \(-\(1\/\@2\)\)}}}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["b) Element Stiffness Matrices: ", "Subsection", FontSize->18], Cell["\<\ Element stiffness matrices may be computed directly using the element \ properties, and lengths and directional cosines. \ \>", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(\(?eStiffMat\)\)], "Input"], Cell[BoxData[ \("eStiffMat[eprops,elens,cs] Computes the element stiffness \ matrices of a list of elements with properties eprops, lengths \ elens, and direction cosines cs. The element stiffness matrix of a \ single element may also be computed by providing only a single eprops, \ elens, and cs."\)], "Print", CellTags->"Info3216495391-2149240"] }, Open ]], Cell["\<\ Make sure that the element directional cosines are defined (either \ symbolically or numerically) before executing the next line. \ \>", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(locals = eStiffMat[elementProperties, lengths\ , \ cos\ ]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({{{\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\), \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\), \ \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\)\)}, {\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\), \(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\)\)}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\), \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\), \(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\), \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\), \(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)}}, {{\(Ar\ YE\)\/\@h\^2, 0, \(-\(\(Ar\ YE\)\/\@h\^2\)\), 0}, {0, 0, 0, 0}, {\(-\(\(Ar\ YE\)\/\@h\^2\)\), 0, \(Ar\ YE\)\/\@h\^2, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, \(Ar\ YE\)\/\@h\^2, 0, \(-\(\(Ar\ YE\)\/\@h\^2\)\)}, {0, 0, 0, 0}, {0, \(-\(\(Ar\ YE\)\/\@h\^2\)\), 0, \(Ar\ YE\)\/\@h\^2}}, {{\(Ar\ YE\)\/\@h\^2, 0, \(-\(\(Ar\ YE\)\/\@h\^2\)\), 0}, {0, 0, 0, 0}, {\(-\(\(Ar\ YE\)\/\@h\^2\)\), 0, \(Ar\ YE\)\/\@h\^2, 0}, {0, 0, 0, 0}}, {{\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\), \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\ \)\)}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\ \), \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\)}, \ {\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\ \(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)}}}\)], \ "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(locals[\([1]\)]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\)}, {\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\)}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\)}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(locals[\([2]\)]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\(Ar\ YE\)\/\@h\^2\), "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0"}, {"0", "0", "0", "0"}, {\(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(\(Ar\ YE\)\/\@h\^2\), "0"}, {"0", "0", "0", "0"} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(locals[\([3]\)]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0", "0", "0"}, {"0", \(\(Ar\ YE\)\/\@h\^2\), "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\)}, {"0", "0", "0", "0"}, {"0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(\(Ar\ YE\)\/\@h\^2\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(locals[\([4]\)]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\(Ar\ YE\)\/\@h\^2\), "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0"}, {"0", "0", "0", "0"}, {\(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(\(Ar\ YE\)\/\@h\^2\), "0"}, {"0", "0", "0", "0"} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(locals[\([5]\)]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\)}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\)\)}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\)\)}, {\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["c) Global Stiffness Matrix: ", "Subsection", FontSize->18], Cell[TextData[{ "Computation of the global stiffness matrix may be done either one of two \ ways. If the element stiffness matrices are available, then ", StyleBox["assembleGlobalMatrix[...]", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " may be used. If the element stiffness matrices are not computed, then \ one can directly compute the global stiffness matrix using ", StyleBox["globalMatrix[.....]", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " . " }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(\(?assembleGlobalMatrix\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \("assembleGlobalMatrix[elmat,nlocs,enodes] computes the global \ stiffness matrix from the element stiffness matrices provided in \ elmat."\)], "Print", CellTags->"Info3216495391-7681631"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(globalK = assembleGlobalMatrix[locals, nodeLocations, elementNodes]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(\(Ar\ \ YE\)\/\(2\ \@2\ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\ \(2\ \@2\ \@h\^2\)\)\), "0", "0"}, {\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\), "0", "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\ \(2\ \@2\ \@h\^2\)\)\), "0", "0"}, {\(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(\(2\ Ar\ YE\)\/\@h\^2\), "0", "0", "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0"}, {"0", "0", "0", \(\(Ar\ YE\)\/\@h\^2\), "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", "0"}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\), "0", "0", \(\(Ar\ YE\)\/\(\@2\ \@h\^2\)\), "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\), "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(\@2\ \@h\^2\)\), \ \(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\)}, {"0", "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\), \(\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \ \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\)}, {"0", "0", "0", "0", \(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[TextData[{ "In a commercial code, element stiffness matrices are transparent to the \ user. Providing only the nodal connectivity, node point locations, and \ element properties are enough to compute the lobal stiffness matrix. In this \ program the function ", StyleBox["globalMatrix[.....]", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " computes the global stiffness matrix directly. " }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(\(?globalMatrix\)\)], "Input"], Cell[BoxData[ \("globalMatrix[enodes,nlocs,eprops] assembles the global \ stiffness matrix for the structure directly from the list of element \ nodal connectivity enodes, the list of nodal coordinates nlocs, and \ the list of element properties Ei Ai provided in eprops. "\)], \ "Print", CellTags->"Info3216495391-4699456"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(globalKnew = globalMatrix[elementNodes, nodeLocations, elementProperties]\)], "Input",\ AspectRatioFixed->True], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(\(Ar\ \ YE\)\/\(2\ \@2\ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\ \(2\ \@2\ \@h\^2\)\)\), "0", "0"}, {\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(\(Ar\ YE\)\/\(2\ \@2\ \ \@h\^2\)\), "0", "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\ \(2\ \@2\ \@h\^2\)\)\), "0", "0"}, {\(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(\(2\ Ar\ YE\)\/\@h\^2\), "0", "0", "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0"}, {"0", "0", "0", \(\(Ar\ YE\)\/\@h\^2\), "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", "0"}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\), "0", "0", \(\(Ar\ YE\)\/\(\@2\ \@h\^2\)\), "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)}, {\(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\), "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(\@2\ \@h\^2\)\), \ \(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\)}, {"0", "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\), \(\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \ \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\)}, {"0", "0", "0", "0", \(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\), \(-\(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)\), \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(globalK \[Equal] globalKnew\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(True\)], "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Nodal Restraints and Reduced Global Stiffness Matrix", "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "Restraint on nodal degrees of freedom is specified by a list whose \ elements are the node number, ", StyleBox["no", FontFamily->"Courier", FontWeight->"Bold"], ", and its associated restraint state, ", StyleBox["{no, {uR, vR, wR}}", FontFamily->"Courier", FontWeight->"Bold"], " . For the four bar truss (four nodes) structure with the two lefth hand \ nodes restrained (nodes 1 and 3) the following specifies that the both the u \ and v displacements of those nodes are restrained to have zero displacements \ \"0\". The free nodes have \"1\". " }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(nodeRestraints = {{1, {0, 0}}, {2, {1, 1}}, {3, {1, 1}}, \ {4, {1, 0}}\ }\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({{1, {0, 0}}, {2, {1, 1}}, {3, {1, 1}}, {4, {1, 0}}}\)], "Output"] }, Open ]], Cell[TextData[ "Given the nodal restraint vector, the following module reduces the stiffness \ matrix. "], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->14], Cell[CellGroupData[{ Cell[BoxData[ \(\(?reduceGlobalMatrix\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \("reduceGlobalMatrix[glb, rest] reduces the global stiffness \ matrix glb with the nodal restraints provided in rest."\)], "Print", CellTags->"Info3216495482-6674438"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Kstiff = reduceGlobalMatrix[globalK, nodeRestraints]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\(2\ Ar\ YE\)\/\@h\^2\), "0", "0", "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\)}, {"0", \(\(Ar\ YE\)\/\@h\^2\), "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0"}, {"0", "0", \(\(Ar\ YE\)\/\(\@2\ \@h\^2\)\), "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\)}, {"0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(\@2\ \@h\^2\)\), \ \(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)}, {\(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\), \(\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell["\<\ Note that, for free nodes the \"1\" may be dropped from the restrained nodes \ list. In a commercial code, only those nodes that are restrained are \ specified. \ \>", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(nodeRestraints = {{1, {0, 0}}, \ {4, {1, 0}}\ }\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({{1, {0, 0}}, {4, {1, 0}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Kstiff1\ = reduceGlobalMatrix[globalK, nodeRestraints]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\(2\ Ar\ YE\)\/\@h\^2\), "0", "0", "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\)}, {"0", \(\(Ar\ YE\)\/\@h\^2\), "0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0"}, {"0", "0", \(\(Ar\ YE\)\/\(\@2\ \@h\^2\)\), "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\)}, {"0", \(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(\@2\ \@h\^2\)\), \ \(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)}, {\(-\(\(Ar\ YE\)\/\@h\^2\)\), "0", \(-\(\(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)\), \(\(Ar\ YE\)\/\(2\ \ \@2\ \@h\^2\)\), \(\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\)\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Kstiff\ == Kstiff1\)], "Input"], Cell[BoxData[ \(True\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Nodal Forces and Solution"], "Section", Evaluatable->False, AspectRatioFixed->True], Cell["\<\ Nodal forces are specified similar to the nodal restraints with a list of \ node numbers at which the forces are specified. The forces are the second \ elements of the elements of the list. For the 4-bar truss with a force \ acting at node 2, vertically down, we have \ \>", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(nodeForces = {\ {3, \ {0, \(-Pload\)}}\ \ }\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({{3, {0, \(-Pload\)}}}\)], "Output"] }, Open ]], Cell[TextData[{ "For a complete force vector (before reducing the size to account for the \ nodal restraints, one can use the module ", StyleBox["forceVector", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " to see the complete right-hand-side force vector. " }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(\(?forceVector\ \)\)], "Input"], Cell[BoxData[ \("forceVector[forces_, nNodes_Integer] needs a description written for \ it"\)], "Print", CellTags->"Info3216495494-6568000"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(forceVector[\ nodeForces, \ 4]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0"}, {"0", "0"}, {"0", \(-Pload\)}, {"0", "0"} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[TextData[{ "To reduce the nodal forces use ", StyleBox["reduceForceVector", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " . This module constucts the right-hand-side vector that can be used to \ solve the displacement degrees of freedom." }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(\(?reduceForceVector\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \("reduceForceVector[forc, rest, nNodes] reduces the force vector \ forc using restraint definitions rest."\)], "Print", CellTags->"Info3216495494-2764126"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(RHS\ = \ reduceForceVector[\ nodeForces, \ nodeRestraints, \ 4]\)], "Input"], Cell[BoxData[ \({0, 0, 0, \(-Pload\), 0}\)], "Output"] }, Open ]], Cell[TextData[{ "The unknowns of the problem are the displacements at those nodes that are \ free to move. To solve for the unknown displacements, ", Cell[BoxData[ \(TraditionalForm\`{u\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`v\_1, \ u\_2, \ ...\( .\(, \ etc\)\)\)]], "}, set up the system, " }], "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(unknown = {u2, v2, u3, v3, \ u4}\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({u2, v2, u3, v3, u4}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(system = Kstiff . unknown == RHS\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({\(2\ Ar\ u2\ YE\)\/\@h\^2 - \(Ar\ u4\ YE\)\/\@h\^2, \(Ar\ v2\ \ YE\)\/\@h\^2 - \(Ar\ v3\ YE\)\/\@h\^2, \(Ar\ u3\ YE\)\/\(\@2\ \@h\^2\) - \(Ar\ \ u4\ YE\)\/\(2\ \@2\ \@h\^2\), \(Ar\ u4\ YE\)\/\(2\ \@2\ \@h\^2\) - \(Ar\ v2\ \ YE\)\/\@h\^2 + v3\ \((\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(\@2\ \@h\^2\))\), \ \(-\(\(Ar\ u2\ YE\)\/\@h\^2\)\) - \(Ar\ u3\ YE\)\/\(2\ \@2\ \@h\^2\) + \(Ar\ \ v3\ YE\)\/\(2\ \@2\ \@h\^2\) + u4\ \((\(Ar\ YE\)\/\@h\^2 + \(Ar\ YE\)\/\(2\ \@2\ \@h\^2\))\)} == \ {0, 0, 0, \(-Pload\), 0}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(soln = Flatten[\ N[Solve[system, unknown]]\ ]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({u2 \[Rule] \(0.5`\ \@h\^2\ Pload\)\/\(Ar\ YE\), u3 \[Rule] \(0.5`\ \@h\^2\ Pload\)\/\(Ar\ YE\), u4 \[Rule] \(\@h\^2\ Pload\)\/\(Ar\ YE\), v2 \[Rule] \(-\(\(1.9142135623730951`\ \@h\^2\ Pload\)\/\(Ar\ YE\)\)\), v3 \[Rule] \(-\(\(1.9142135623730951`\ \@h\^2\ Pload\)\/\(Ar\ YE\)\)\)}\ \)], "Output"] }, Open ]], Cell["\<\ Rather than soling the system of equations, we could have inverted the matrix \ and multiply the force vector. \ \>", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(Kinverse\ = \ Inverse[Kstiff]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\@h\^2\/\(Ar\ YE\)\), \(-\(\@h\^2\/\(2\ Ar\ YE\)\)\), \(\@h\^2\ \/\(2\ Ar\ YE\)\), \(-\(\@h\^2\/\(2\ Ar\ YE\)\)\), \(\@h\^2\/\(Ar\ YE\)\)}, {\(-\(\@h\^2\/\(2\ Ar\ YE\)\)\), \(\(2\ h\^6\ \((\(3\ Ar\^4\ \ YE\^4\)\/\(4\ h\^4\) + \(Ar\^4\ YE\^4\)\/\(\@2\ h\^4\))\)\)\/\(Ar\^5\ \@h\^2\ \ YE\^5\)\), \(-\(\@h\^2\/\(2\ Ar\ YE\)\)\), \(\(2\ h\^6\ \((\(Ar\^4\ YE\^4\)\/\ \(4\ h\^4\) + \(Ar\^4\ YE\^4\)\/\(\@2\ h\^4\))\)\)\/\(Ar\^5\ \@h\^2\ \ YE\^5\)\), \(-\(\@h\^2\/\(Ar\ YE\)\)\)}, {\(\@h\^2\/\(2\ Ar\ YE\)\), \(-\(\@h\^2\/\(2\ Ar\ YE\)\)\), \(\(2\ \ h\^6\ \((\(Ar\^4\ YE\^4\)\/\(4\ h\^4\) + \(Ar\^4\ YE\^4\)\/\(\@2\ h\^4\))\)\ \)\/\(Ar\^5\ \@h\^2\ YE\^5\)\), \(-\(\@h\^2\/\(2\ Ar\ YE\)\)\), \ \(\@h\^2\/\(Ar\ YE\)\)}, {\(-\(\@h\^2\/\(2\ Ar\ YE\)\)\), \(\(2\ h\^6\ \((\(Ar\^4\ YE\^4\)\ \/\(4\ h\^4\) + \(Ar\^4\ YE\^4\)\/\(\@2\ h\^4\))\)\)\/\(Ar\^5\ \@h\^2\ \ YE\^5\)\), \(-\(\@h\^2\/\(2\ Ar\ YE\)\)\), \(\(2\ h\^6\ \((\(Ar\^4\ YE\^4\)\/\ \(4\ h\^4\) + \(Ar\^4\ YE\^4\)\/\(\@2\ h\^4\))\)\)\/\(Ar\^5\ \@h\^2\ \ YE\^5\)\), \(-\(\@h\^2\/\(Ar\ YE\)\)\)}, {\(\@h\^2\/\(Ar\ YE\)\), \(-\(\@h\^2\/\(Ar\ YE\)\)\), \ \(\@h\^2\/\(Ar\ YE\)\), \(-\(\@h\^2\/\(Ar\ YE\)\)\), \(\(2\ \@h\^2\)\/\(Ar\ \ YE\)\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Kinverse\ . \ RHS\)], "Input"], Cell[BoxData[ \({\(\@h\^2\ Pload\)\/\(2\ Ar\ YE\), \(-\(\(2\ h\^6\ Pload\ \((\(Ar\^4\ \ YE\^4\)\/\(4\ h\^4\) + \(Ar\^4\ YE\^4\)\/\(\@2\ h\^4\))\)\)\/\(Ar\^5\ \@h\^2\ \ YE\^5\)\)\), \(\@h\^2\ Pload\)\/\(2\ Ar\ YE\), \(-\(\(2\ h\^6\ Pload\ \((\(Ar\ \^4\ YE\^4\)\/\(4\ h\^4\) + \(Ar\^4\ YE\^4\)\/\(\@2\ h\^4\))\)\)\/\(Ar\^5\ \ \@h\^2\ YE\^5\)\)\), \(\@h\^2\ Pload\)\/\(Ar\ YE\)}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(soln\)], "Input"], Cell[BoxData[ \({u2 \[Rule] \(0.5`\ \@h\^2\ Pload\)\/\(Ar\ YE\), u3 \[Rule] \(0.5`\ \@h\^2\ Pload\)\/\(Ar\ YE\), u4 \[Rule] \(\@h\^2\ Pload\)\/\(Ar\ YE\), v2 \[Rule] \(-\(\(1.9142135623730951`\ \@h\^2\ Pload\)\/\(Ar\ YE\)\)\), v3 \[Rule] \(-\(\(1.9142135623730951`\ \@h\^2\ Pload\)\/\(Ar\ YE\)\)\)}\ \)], "Output"] }, Open ]], Cell["\<\ The displacements of all the nodes are (including the zero displacements \ specified through nodeRestraints) \ \>", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(nodeRestraints\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({{1, {0, 0}}, {4, {1, 0}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(displacements = {0, 0, u2, v2, u3, v3, u4, 0} /. soln\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({0, 0, \(0.5`\ \@h\^2\ Pload\)\/\(Ar\ YE\), \(-\(\(1.9142135623730951`\ \@h\ \^2\ Pload\)\/\(Ar\ YE\)\)\), \(0.5`\ \@h\^2\ Pload\)\/\(Ar\ YE\), \ \(-\(\(1.9142135623730951`\ \@h\^2\ Pload\)\/\(Ar\ YE\)\)\), \(\@h\^2\ \ Pload\)\/\(Ar\ YE\), 0}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Structural Configuration", "Section", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[BoxData[ \(Information["\", LongForm \[Rule] False]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \("showStructure[nodes,locs,areas_Optional] shows the \ configuration of the truss by plotting the nodal points and the \ truss members. If the optional cross-sectional areas of the members \ are provided in a list areas, then the thicknesses of the members are \ shown proportional to the areas of the members."\)], "Print", CellTags->"Info3216495516-7563905"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(undeforemed\ = \ showStructure[elementNodes, nodes]\)], "Input", AspectRatioFixed->True], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .5 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Times-Italic %%IncludeFont: Times-Italic /Times-Italic findfont 12 scalefont setfont % Scaling calculations 0.0238095 0.0047619 0.0119048 0.0047619 [ [ 0 0 0 0 ] [ 1 .5 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .5 L 0 .5 L closepath clip newpath 0 g 2 Mabswid [ ] 0 setdash .02381 .0119 m .5 .4881 L s .02381 .0119 m .5 .0119 L s .5 .0119 m .5 .4881 L s .5 .0119 m .97619 .0119 L s .5 .4881 m .97619 .0119 L s .03 w .02381 .0119 Mdot .5 .0119 Mdot .5 .4881 Mdot .97619 .0119 Mdot % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 144}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgGoo1000VGoo0`00VGoo1000>Woo000jOol4002HOol3002HOol4000kOol003]oo`@009Moo`<009Mo o`@003aoo`00?7oo1000UWoo0`00UWoo1000?Goo000mOol4002EOol3002EOol4000nOol003ioo`@0 09Aoo`<009Aoo`@003moo`00?goo1000Tgoo0`00Tgoo1000@7oo0010Ool4002BOol3002BOol40011 Ool0045oo`@0095oo`<0095oo`@0049oo`00@Woo1000T7oo0`00T7oo1000@goo0013Ool4002?Ool3 002?Ool40014Ool004Aoo`@008ioo`<008ioo`@004Eoo`00AGoo1000SGoo0`00SGoo1000AWoo0016 Ool4002Ool40014Ool30014Ool4002?Ool008mo o`@004=oo`<004=oo`@0091oo`00T7oo1000@Woo0`00@Woo1000TGoo002AOol40011Ool30011Ool4 002BOol0099oo`@0041oo`<0041oo`@009=oo`00Tgoo1000?goo0`00?goo1000U7oo002DOol4000n Ool3000nOol4002EOol009Eoo`@003eoo`<003eoo`@009Ioo`00UWoo1000?7oo0`00?7oo1000Ugoo 002GOol4000kOol3000kOol4002HOol009Qoo`@003Yoo`<003Yoo`@009Uoo`00VGoo1000>Goo0`00 >Goo1000VWoo002JOol4000hOol3000hOol4002KOol009]oo`@003Moo`<003Moo`@009aoo`00W7oo 1000=Woo0`00=Woo1000WGoo002MOol4000eOol3000eOol4002NOol009ioo`@003Aoo`<003Aoo`@0 09moo`00Wgoo1000Ool3000>Ool40035Ool00Ool00"], ImageRangeCache->{{{0, 431}, {215, 0}} -> {-5.24524, -2.50054, 0.732566, \ 0.732566}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["\<\ It is also possible to show the deformed shape of the structure by adding the \ nodal displacements to the node point locations. \ \>", "Text", Evaluatable->False, AspectRatioFixed->True, FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(displacements\)], "Input"], Cell[BoxData[ \({0, 0, \(0.5`\ \@h\^2\ Pload\)\/\(Ar\ YE\), \(-\(\(1.9142135623730951`\ \@h\ \^2\ Pload\)\/\(Ar\ YE\)\)\), \(0.5`\ \@h\^2\ Pload\)\/\(Ar\ YE\), \ \(-\(\(1.9142135623730951`\ \@h\^2\ Pload\)\/\(Ar\ YE\)\)\), \(\@h\^2\ \ Pload\)\/\(Ar\ YE\), 0}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(UVdisplacements\ = \ Partition[\ displacements, \ 2\ ]\ /. \ {h \[Rule] \ 100, \ Pload\ \[Rule] 100\ 10^3, \ Ar \[Rule] 1, \ YE \[Rule] \ 1.0\ 10^7}\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0"}, {"0.49999999999999994`", \(-1.9142135623730951`\)}, {"0.49999999999999994`", \(-1.9142135623730951`\)}, {"1.`", "0"} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(magFactor\ = \ 10\)], "Input"], Cell[BoxData[ \(10\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(nodesDeformed\ = \ MapThread[\ {#1[\([1]\)], \ {#1[\([2, 1]\)] + magFactor*#2[\([1]\)], \ #1[\([2, 2]\)] + magFactor*#2[\([2]\)]}}\ &, \ {nodes, \ UVdisplacements}]\)], "Input"], Cell[BoxData[ \({{1, {0, 0}}, {2, {105.`, \(-19.14213562373095`\)}}, {3, {105.`, 80.85786437626905`}}, {4, {210.`, 0}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(deformed\ = \ showStructure[elementNodes, nodesDeformed]\)], "Input", AspectRatioFixed->True], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .47619 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Times-Italic %%IncludeFont: Times-Italic /Times-Italic findfont 12 scalefont setfont % Scaling calculations 0.0238095 0.00453515 0.0981503 0.00453515 [ [ 0 0 0 0 ] [ 1 .47619 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .47619 L 0 .47619 L closepath clip newpath 0 g 2 Mabswid [ ] 0 setdash .02381 .09815 m .5 .46485 L s .02381 .09815 m .5 .01134 L s .5 .01134 m .5 .46485 L s .5 .01134 m .97619 .09815 L s .5 .46485 m .97619 .09815 L s .03 w .02381 .09815 Mdot .5 .01134 Mdot .5 .46485 Mdot .97619 .09815 Mdot % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 137.125}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHg7oo000hOol5002IOol3002IOol5000iOol003Uoo`D009Qo o`<009Qoo`D003Yoo`00>goo1@00UWoo0`00UWoo1@00?7oo000lOol5002EOol3002EOol5000mOol0 03eoo`D009Aoo`<009Aoo`D003ioo`00?goo1000Tgoo0`00Tgoo1000@7oo0010Ool5002AOol3002A Ool50011Ool0045oo`D0091oo`<0091oo`D0049oo`00@Woo1@00Sgoo0`00Sgoo1@00@goo0014Ool5 002=Ool3002=Ool50015Ool004Eoo`D008aoo`<008aoo`D004Ioo`00AWoo1@00Rgoo0`00Rgoo1@00 Agoo0018Ool50029Ool30029Ool50019Ool004Uoo`D008Qoo`<008Qoo`D004Yoo`00BWoo1@00Qgoo 0`00Qgoo1@00Bgoo001Ool50013Ool30013 Ool5002?Ool008moo`D0049oo`<0049oo`D0091oo`00T7oo1@00@Goo0`00@Goo1@00TGoo002BOol4 0010Ool30010Ool4002COol009=oo`D003ioo`<003ioo`D009Aoo`00U7oo1@00?Goo0`00?Goo1@00 UGoo002EOol5000lOol3000lOol5002FOol009Moo`D003Yoo`<003Yoo`D009Qoo`00V7oo1@00>Goo 0`00>Goo1@00VGoo002IOol5000hOol3000hOol5002JOol009]oo`D003Ioo`<003Ioo`D009aoo`00 W7oo1@00=Goo0`00=Goo1@00WGoo002MOol5000dOol3000dOol5002NOol009moo`@003=oo`<003=o o`@00:1oo`00X7oo1@00"], ImageRangeCache->{{{0, 431}, {204.688, 0}} -> {-5.54755, -21.6427, \ 0.769472, 0.769472}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Show[\ undeforemed, \ deformed\ ]\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .56734 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Times-Italic %%IncludeFont: Times-Italic /Times-Italic findfont 12 scalefont setfont % Scaling calculations 0.0238095 0.00453515 0.100321 0.00453515 [ [ 0 0 0 0 ] [ 1 .56734 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .56734 L 0 .56734 L closepath clip newpath 0 g 2 Mabswid [ ] 0 setdash .02381 .10032 m .47732 .55384 L s .02381 .10032 m .47732 .10032 L s .47732 .10032 m .47732 .55384 L s .47732 .10032 m .93084 .10032 L s .47732 .55384 m .93084 .10032 L s .03 w .02381 .10032 Mdot .47732 .10032 Mdot .47732 .55384 Mdot .93084 .10032 Mdot 2 Mabswid .02381 .10032 m .5 .46702 L s .02381 .10032 m .5 .01351 L s .5 .01351 m .5 .46702 L s .5 .01351 m .97619 .10032 L s .5 .46702 m .97619 .10032 L s .03 w .02381 .10032 Mdot .5 .01351 Mdot .5 .46702 Mdot .97619 .10032 Mdot % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 163.375}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgOol3002>Ool@000iOol003=ooa0009=oo`<009=ooa0003Aoo`00;Goo4@00V7oo0`00V7oo 4@00;Woo000XOol@002NOol3002NOol@000YOol002=ooa000:=oo`<00:=ooa0002Aoo`002Goo0P00 4Woo4000Wgoo0P0027oo0`00ZGoo40004Goo0P002goo0006Ool8000:Ool@002QOol80005Ool3002^ Ool@0009Ool80008Ool000Eoo`X000=ooa400:Eoo`X000Aoo`<00;9ooa80009oo`X000Moo`001Goo 6000Zgoo2P0017oo0`00/Woo7P001goo0005Oooo002A0002OolB0007Ool000Aoool009<000Moo`d0 00Ioo`0017ooo`00T`0027oo30001Woo0005Ool;002hOol:0004Ool3002bOol:000:Ool:0007Ool0 00Eoo``00;Moo`X000Aoo`<00;9oo`X000Uoo`/000Moo`001Goo3@00]Woo2P0017oo0`00/Goo2`00 27oo30001goo0006Ool>002eOol80005Ool3002`Ool;0007Ool=0008Ool000Uoo`8000=oo`L00;Mo o`<000Moo`<00:moo`@000=oo`8000Uoo`D000Aoo`8000]oo`003goo1`00]Woo0`001goo0`00[Woo 10003Woo1@004Woo000@Ool7002eOol30007Ool3002]Ool4000>Ool4000DOol0015oo`P00;=oo`<0 00Moo`<00:aoo`@000eoo`D001Eoo`004Woo2000/Woo0`001goo0`00Zgoo10003Goo1@005Woo000C Ool8002aOol30007Ool3002ZOol4000=Ool5000GOol001Aoo`T00:moo`<000Moo`<00:Uoo`@000ao o`D001Uoo`005Goo2@00[Woo0`001goo0`00Z7oo100037oo1@006Woo000FOol9002]Ool30007Ool3 002WOol4000Goo000^Ool40008Ool5002=Ool30007Ool3002?Ool40004Ool5000kOol0 02moo`@000Qoo`D008aoo`<000Moo`<008ioo`@000Aoo`D003aoo`00<7oo100027oo1@00Rgoo0`00 1goo0`00SGoo100017oo1@00?Goo000aOol40009Ool50029Ool30007Ool3002Goo 10002goo1@00Ogoo0`001goo0`00Q7oo100000=oo`0000000`00BGoo000jOol4000;Ool5001nOol3 0007Ool30023Ool400000goo00000003001:Ool003]oo`@000aoo`D007aoo`<000Moo`<0089oo`T0 04aoo`00?7oo100037oo1@00Ngoo0`001goo0`00PGoo2@00CGoo000mOol4000Ool003ioo`@000eoo`@007Uoo`<000Moo`<007moo`P0051oo`00?goo10003Goo 1@00Mgoo0`001goo0`00OWoo2000DGoo0010Ool4000=Ool5001fOol30007Ool3001mOol8001BOol0 045oo`@000eoo`D007Eoo`<000Moo`<007aoo`P005=oo`00@Woo10003Woo1@00Lgoo0`001goo0`00 Ngoo1`00EGoo0013Ool4000>Ool5001bOol30007Ool3001jOol7001FOol004Aoo`@000ioo`D0075o o`<000Moo`<007Uoo`L005Moo`00AGoo10003goo1@00Kgoo0`001goo0`00N7oo1P00FGoo0016Ool4 000?Ool5001^Ool30007Ool3001gOol6001JOol004Moo`@000moo`D006eoo`<000Moo`<007Ioo`H0 05]oo`00B7oo100047oo1@00Jgoo0`001goo0`00MGoo1@00GGoo0019Ool4000@Ool5001ZOol30007 Ool3001dOol5001NOol004Yoo`@0011oo`D006Uoo`<000Moo`<007=oo`D005moo`00Bgoo10004Goo 1000J7oo0`001goo0`00LWoo1000HGoo001Goo0`001goo0`00@goo10001goo1000QGoo001`Ool4000LOol5000gOol3 0007Ool30011Ool50007Ool40026Ool0075oo`@001aoo`D003Ioo`<000Moo`<0041oo`D000Moo`@0 08Moo`00LWoo100077oo1@00=Goo0`001goo0`00?goo1@001goo1000R7oo001cOol4000MOol5000c Ool30007Ool3000mOol50008Ool40029Ool007Aoo`@001eoo`D0039oo`<000Moo`<003aoo`D000Qo o`@008Yoo`00MGoo10007Goo1@00goo1@0027oo1000Rgoo001fOol4000NOol5 000_Ool30007Ool3000iOol50009Ool4002Ool4002NOol008Uoo`@002=oo`D0 01Moo`<000Moo`<0025oo`D000ioo`@009moo`00RWoo100097oo1@005Goo0`001goo0`007goo1@00 3goo1000X7oo002;Ool4000TOol5000DOol30007Ool3000NOol5000?Ool4002QOol008aoo`@002Ao o`D001=oo`<000Moo`<001eoo`D000moo`@00:9oo`00SGoo10009Goo1@004Goo0`001goo0`006goo 1@0047oo1000Xgoo002>Ool4000UOol5000@Ool30007Ool3000JOol5000@Ool4002TOol008moo`@0 02Eoo`D000moo`<000Moo`<001Uoo`D0011oo`@00:Eoo`00T7oo10009Woo1@003Goo0`001goo0`00 5goo1@004Goo1000YWoo002AOol4000VOol5000Ool5000COol4002] Ool009Qoo`@002Qoo`D000=oo`<000Moo`<000eoo`D001=oo`@00:ioo`00VGoo1000:7oo1@000Woo 0`001goo0`0037oo1@004goo1000[goo002JOol4000YOol80007Ool3000:Ool5000DOol4002`Ool0 09]oo`@002Uoo`L000Moo`<000Uoo`D001Aoo`@00;5oo`00W7oo1000:Goo1P001goo0`0027oo1@00 57oo1000/Woo002MOol4000ZOol40007Ool30007Ool4000EOol4002cOol009ioo`@002Yoo`D000Eo o`<000Eoo`D001Eoo`@00;Aoo`00Wgoo1000:Goo1P0017oo0`0017oo1@005Goo1000]Goo002POol4 000XOol70003Ool30003Ool5000EOol4002fOol00:5oo`@002Moo`<00003Ool0000000d001Ioo`@0 0;Moo`00XWoo10009Woo0`000Woo3@005Woo1000^7oo002SOol4000UOol30003Ool;000FOol4002i Ool00:Aoo`@002Aoo`<000=oo`X001Ioo`@00;Yoo`00YGoo10008goo0`000Woo300057oo1000^goo 002VOol4000ROol30002Ool<000COol4002lOol00:Moo`@0025oo`<000=oo`X001=oo`@00;eoo`00 Z7oo100087oo0`000goo2P004Woo1000_Woo002YOol4000OOol30003Ool:000AOol4002oOol00:Yo o`@001ioo`<000Aoo`P0015oo`@00<1oo`00Zgoo10007Goo0`001goo0P004goo1000`Goo002/Ool4 000LOol3000KOol40032Ool00:eoo`@001]oo`<001Yoo`@00<=oo`00[Woo10006Woo0`006Goo1000 a7oo002_Ool4000IOol3000HOol40035Ool00;1oo`@001Qoo`<001Moo`@00Ool00;Uoo`@0 00moo`<000ioo`@00"], ImageRangeCache->{{{0, 431}, {244.063, 0}} -> {-5.45936, -22.1214, \ 0.768858, 0.768858}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Element Strains"], "Section", Evaluatable->False, AspectRatioFixed->True], Cell["\<\ In order to compute the strains in each element, nodal displacements need to \ be converted to the element coordinates and the displacement at the nodes of \ each element must be subtracted and divided by the length of the element. \ The elements transformation matrix can be obtained if the directional cosines \ are available. \ \>", "Text", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times", FontSize->18], Cell[TextData[{ "The module ", StyleBox["elementStrains", FontFamily->"Courier", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], " may be used to compute the strains. Nodal displacements along with node \ point locations and element connectivity are needed for the strain \ computation. " }], "Text", FontSize->18], Cell[CellGroupData[{ Cell[BoxData[ \(\(\(nodeLocations\)\(\ \)\)\)], "Input"], Cell[BoxData[ \({{1, {0, 0}}, {2, {h, 0}}, {3, {h, h}}, {4, {2\ h, 0}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(elementNodes\)], "Input"], Cell[BoxData[ \({{1, {1, 3}}, {2, {1, 2}}, {3, {2, 3}}, {4, {2, 4}}, {5, {3, 4}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(displacements\)], "Input"], Cell[BoxData[ \({0, 0, \(0.5`\ \@h\^2\ Pload\)\/\(Ar\ YE\), \(-\(\(1.9142135623730951`\ \@h\ \^2\ Pload\)\/\(Ar\ YE\)\)\), \(0.5`\ \@h\^2\ Pload\)\/\(Ar\ YE\), \ \(-\(\(1.9142135623730951`\ \@h\^2\ Pload\)\/\(Ar\ YE\)\)\), \(\@h\^2\ \ Pload\)\/\(Ar\ YE\), 0}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(strains = elementStrains[elementNodes, nodeLocations, displacements]\ // N\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \({\(-\(\(0.7071067811865475`\ h\ Pload\)\/\(Ar\ \@h\^2\ YE\)\)\), \(0.5`\ \ h\ Pload\)\/\(Ar\ \@h\^2\ YE\), \(0.`\ h\ Pload\)\/\(Ar\ \@h\^2\ YE\), \ \(0.5`\ h\ Pload\)\/\(Ar\ \@h\^2\ YE\), \(-\(\(0.7071067811865475`\ h\ \ Pload\)\/\(Ar\ \@h\^2\ YE\)\)\)}\)], "Output"] }, Open ]] }, Open ]] }, FrontEndVersion->"4.1 for Microsoft Windows", ScreenRectangle->{{0, 1024}, {0, 723}}, WindowToolbars->{}, CellGrouping->Automatic, WindowSize->{1016, 696}, WindowMargins->{{0, Automatic}, {Automatic, 0}}, PrivateNotebookOptions->{"ColorPalette"->{RGBColor, 128}}, ShowCellLabel->True, ShowCellTags->False, RenderingOptions->{"ObjectDithering"->True, "RasterDithering"->False}, CharacterEncoding->"MacintoshAutomaticEncoding", Magnification->1.5, StyleDefinitions -> "Classroom.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->{ "Info3216495278-8722696"->{ Cell[6195, 221, 374, 6, 135, "Print", CellTags->"Info3216495278-8722696"]}, "Info3216495292-5915026"->{ Cell[11282, 406, 392, 6, 135, "Print", CellTags->"Info3216495292-5915026"]}, "Info3216495292-1617452"->{ Cell[11764, 420, 587, 9, 185, "Print", CellTags->"Info3216495292-1617452"]}, "Info3216495390-5511677"->{ Cell[36236, 954, 257, 4, 85, "Print", CellTags->"Info3216495390-5511677"]}, "Info3216495390-3443889"->{ Cell[37683, 1010, 347, 5, 110, "Print", CellTags->"Info3216495390-3443889"]}, "Info3216495391-2149240"->{ Cell[39065, 1061, 382, 6, 135, "Print", CellTags->"Info3216495391-2149240"]}, "Info3216495391-7681631"->{ Cell[45883, 1246, 225, 4, 60, "Print", CellTags->"Info3216495391-7681631"]}, "Info3216495391-4699456"->{ Cell[48804, 1317, 366, 6, 110, "Print", CellTags->"Info3216495391-4699456"]}, "Info3216495482-6674438"->{ Cell[52853, 1433, 204, 3, 60, "Print", CellTags->"Info3216495482-6674438"]}, "Info3216495494-6568000"->{ Cell[56902, 1567, 147, 3, 35, "Print", CellTags->"Info3216495494-6568000"]}, "Info3216495494-2764126"->{ Cell[57949, 1610, 184, 3, 60, "Print", CellTags->"Info3216495494-2764126"]}, "Info3216495516-7563905"->{ Cell[63902, 1798, 426, 6, 135, "Print", CellTags->"Info3216495516-7563905"]} } *) (*CellTagsIndex CellTagsIndex->{ {"Info3216495278-8722696", 97281, 2530}, {"Info3216495292-5915026", 97397, 2533}, {"Info3216495292-1617452", 97514, 2536}, {"Info3216495390-5511677", 97631, 2539}, {"Info3216495390-3443889", 97747, 2542}, {"Info3216495391-2149240", 97865, 2545}, {"Info3216495391-7681631", 97983, 2548}, {"Info3216495391-4699456", 98100, 2551}, {"Info3216495482-6674438", 98218, 2554}, {"Info3216495494-6568000", 98335, 2557}, {"Info3216495494-2764126", 98452, 2560}, {"Info3216495516-7563905", 98569, 2563} } *) (*NotebookFileOutline Notebook[{ Cell[1705, 50, 77, 2, 72, "Input"], Cell[1785, 54, 142, 5, 174, "Title", Evaluatable->False], Cell[1930, 61, 437, 11, 242, "Subsubtitle", Evaluatable->False], Cell[2370, 74, 404, 14, 126, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[2799, 92, 92, 2, 93, "Section", Evaluatable->False], Cell[2894, 96, 480, 12, 175, "Text", Evaluatable->False], Cell[3377, 110, 176, 3, 98, "Input"], Cell[3556, 115, 758, 23, 213, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[4339, 142, 70, 2, 72, "Input"], Cell[4412, 146, 89, 1, 71, "Output"] }, Open ]], Cell[4516, 150, 237, 7, 89, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[4778, 161, 132, 2, 124, "Input"], Cell[4913, 165, 121, 2, 71, "Output"] }, Open ]], Cell[5049, 170, 163, 4, 52, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[5237, 178, 70, 2, 72, "Input"], Cell[5310, 182, 43, 1, 71, "Output"] }, Open ]], Cell[5368, 186, 330, 10, 89, "Text", Evaluatable->False], Cell[5701, 198, 73, 2, 72, "Input"], Cell[5777, 202, 315, 11, 90, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[6117, 217, 75, 2, 72, "Input"], Cell[6195, 221, 374, 6, 135, "Print", CellTags->"Info3216495278-8722696"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[6618, 233, 73, 2, 93, "Section", Evaluatable->False], Cell[6694, 237, 321, 8, 126, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[7040, 249, 55, 1, 86, "Subsection"], Cell[7098, 252, 877, 23, 221, "Text"], Cell[CellGroupData[{ Cell[8000, 279, 163, 3, 72, "Input"], Cell[8166, 284, 89, 1, 71, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[8304, 291, 64, 1, 86, "Subsection"], Cell[8371, 294, 1008, 34, 261, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[9404, 332, 154, 3, 72, "Input"], Cell[9561, 337, 110, 2, 71, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[9720, 345, 62, 1, 86, "Subsection"], Cell[9785, 348, 379, 11, 126, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[10189, 363, 173, 3, 98, "Input"], Cell[10365, 368, 120, 2, 71, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[10534, 376, 109, 3, 86, "Subsection"], Cell[10646, 381, 561, 18, 128, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[11232, 403, 47, 1, 72, "Input"], Cell[11282, 406, 392, 6, 135, "Print", CellTags->"Info3216495292-5915026"] }, Open ]], Cell[CellGroupData[{ Cell[11711, 417, 50, 1, 72, "Input"], Cell[11764, 420, 587, 9, 185, "Print", CellTags->"Info3216495292-1617452"] }, Open ]], Cell[CellGroupData[{ Cell[12388, 434, 46, 1, 72, "Input"], Cell[12437, 437, 89, 1, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[12563, 443, 80, 1, 72, "Input"], Cell[12646, 446, 113, 2, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[12796, 453, 144, 3, 98, "Input"], Cell[12943, 458, 4213, 90, 279, 699, 42, "GraphicsData", "PostScript", \ "Graphics"], Cell[17159, 550, 130, 3, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[17326, 558, 110, 2, 72, "Input"], Cell[17439, 562, 145, 2, 99, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[17621, 569, 127, 3, 72, "Input"], Cell[17751, 574, 8941, 159, 279, 790, 54, "GraphicsData", "PostScript", \ "Graphics"], Cell[26695, 735, 130, 3, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[26862, 743, 83, 1, 72, "Input"], Cell[26948, 746, 7698, 149, 228, 842, 60, "GraphicsData", "PostScript", \ "Graphics"], Cell[34649, 897, 130, 3, 71, "Output"] }, Open ]], Cell[34794, 903, 296, 8, 126, "Text", Evaluatable->False] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[35139, 917, 121, 2, 93, "Section", Evaluatable->False], Cell[35263, 921, 782, 20, 238, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[36070, 945, 61, 1, 86, "Subsection"], Cell[CellGroupData[{ Cell[36156, 950, 77, 2, 72, "Input"], Cell[36236, 954, 257, 4, 85, "Print", CellTags->"Info3216495390-5511677"] }, Open ]], Cell[CellGroupData[{ Cell[36530, 963, 111, 2, 72, "Input"], Cell[36644, 967, 344, 10, 198, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[37025, 982, 56, 1, 72, "Input"], Cell[37084, 985, 323, 10, 168, "Output"] }, Open ]], Cell[37422, 998, 163, 4, 52, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[37610, 1006, 70, 2, 72, "Input"], Cell[37683, 1010, 347, 5, 110, "Print", CellTags->"Info3216495390-3443889"] }, Open ]], Cell[CellGroupData[{ Cell[38067, 1020, 109, 2, 72, "Input"], Cell[38179, 1024, 224, 4, 151, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[38440, 1033, 52, 1, 72, "Input"], Cell[38495, 1036, 139, 2, 94, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[38683, 1044, 70, 1, 86, "Subsection"], Cell[38756, 1047, 234, 7, 89, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[39015, 1058, 47, 1, 72, "Input"], Cell[39065, 1061, 382, 6, 135, "Print", CellTags->"Info3216495391-2149240"] }, Open ]], Cell[39462, 1070, 243, 7, 89, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[39730, 1081, 116, 2, 72, "Input"], Cell[39849, 1085, 1774, 25, 629, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[41660, 1115, 48, 1, 72, "Input"], Cell[41711, 1118, 867, 17, 224, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[42615, 1140, 48, 1, 72, "Input"], Cell[42666, 1143, 401, 9, 178, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[43104, 1157, 48, 1, 72, "Input"], Cell[43155, 1160, 401, 9, 178, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[43593, 1174, 48, 1, 72, "Input"], Cell[43644, 1177, 401, 9, 178, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[44082, 1191, 48, 1, 72, "Input"], Cell[44133, 1194, 867, 17, 224, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[45049, 1217, 67, 1, 86, "Subsection"], Cell[45119, 1220, 652, 18, 165, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[45796, 1242, 84, 2, 72, "Input"], Cell[45883, 1246, 225, 4, 60, "Print", CellTags->"Info3216495391-7681631"] }, Open ]], Cell[CellGroupData[{ Cell[46145, 1255, 133, 3, 72, "Input"], Cell[46281, 1260, 1873, 33, 404, "Output"] }, Open ]], Cell[48169, 1296, 557, 14, 164, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[48751, 1314, 50, 1, 72, "Input"], Cell[48804, 1317, 366, 6, 110, "Print", CellTags->"Info3216495391-4699456"] }, Open ]], Cell[CellGroupData[{ Cell[49207, 1328, 141, 4, 72, "Input"], Cell[49351, 1334, 1873, 33, 404, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[51261, 1372, 86, 2, 72, "Input"], Cell[51350, 1376, 38, 1, 71, "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[51449, 1384, 119, 2, 93, "Section", Evaluatable->False], Cell[51571, 1388, 696, 18, 201, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[52292, 1410, 145, 3, 72, "Input"], Cell[52440, 1415, 86, 1, 71, "Output"] }, Open ]], Cell[52541, 1419, 202, 6, 44, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[52768, 1429, 82, 2, 72, "Input"], Cell[52853, 1433, 204, 3, 60, "Print", CellTags->"Info3216495482-6674438"] }, Open ]], Cell[CellGroupData[{ Cell[53094, 1441, 111, 2, 72, "Input"], Cell[53208, 1445, 853, 17, 270, "Output"] }, Open ]], Cell[54076, 1465, 274, 8, 89, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[54375, 1477, 106, 2, 72, "Input"], Cell[54484, 1481, 60, 1, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[54581, 1487, 114, 2, 72, "Input"], Cell[54698, 1491, 853, 17, 270, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[55588, 1513, 52, 1, 72, "Input"], Cell[55643, 1516, 38, 1, 71, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[55730, 1523, 102, 2, 93, "Section", Evaluatable->False], Cell[55835, 1527, 382, 9, 126, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[56242, 1540, 102, 2, 72, "Input"], Cell[56347, 1544, 56, 1, 71, "Output"] }, Open ]], Cell[56418, 1548, 405, 12, 127, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[56848, 1564, 51, 1, 72, "Input"], Cell[56902, 1567, 147, 3, 35, "Print", CellTags->"Info3216495494-6568000"] }, Open ]], Cell[CellGroupData[{ Cell[57086, 1575, 63, 1, 72, "Input"], Cell[57152, 1578, 282, 9, 132, "Output"] }, Open ]], Cell[57449, 1590, 391, 12, 90, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[57865, 1606, 81, 2, 72, "Input"], Cell[57949, 1610, 184, 3, 60, "Print", CellTags->"Info3216495494-2764126"] }, Open ]], Cell[CellGroupData[{ Cell[58170, 1618, 104, 2, 72, "Input"], Cell[58277, 1622, 58, 1, 71, "Output"] }, Open ]], Cell[58350, 1626, 420, 13, 126, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[58795, 1643, 91, 2, 72, "Input"], Cell[58889, 1647, 54, 1, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[58980, 1653, 91, 2, 72, "Input"], Cell[59074, 1657, 560, 9, 221, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[59671, 1671, 104, 2, 72, "Input"], Cell[59778, 1675, 346, 6, 150, "Output"] }, Open ]], Cell[60139, 1684, 223, 7, 89, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[60387, 1695, 63, 1, 72, "Input"], Cell[60453, 1698, 1427, 24, 350, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[61917, 1727, 51, 1, 72, "Input"], Cell[61971, 1730, 393, 5, 192, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[62401, 1740, 37, 1, 72, "Input"], Cell[62441, 1743, 346, 6, 150, "Output"] }, Open ]], Cell[62802, 1752, 221, 7, 89, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[63048, 1763, 73, 2, 72, "Input"], Cell[63124, 1767, 60, 1, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[63221, 1773, 112, 2, 72, "Input"], Cell[63336, 1777, 283, 5, 150, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[63668, 1788, 91, 2, 93, "Section", Evaluatable->False], Cell[CellGroupData[{ Cell[63784, 1794, 115, 2, 72, "Input"], Cell[63902, 1798, 426, 6, 135, "Print", CellTags->"Info3216495516-7563905"] }, Open ]], Cell[CellGroupData[{ Cell[64365, 1809, 111, 2, 72, "Input"], Cell[64479, 1813, 7657, 148, 228, 833, 59, "GraphicsData", "PostScript", \ "Graphics"], Cell[72139, 1963, 130, 3, 71, "Output"] }, Open ]], Cell[72284, 1969, 217, 6, 89, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[72526, 1979, 46, 1, 72, "Input"], Cell[72575, 1982, 283, 5, 150, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[72895, 1992, 213, 4, 98, "Input"], Cell[73111, 1998, 357, 9, 132, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[73505, 2012, 51, 1, 72, "Input"], Cell[73559, 2015, 36, 1, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[73632, 2021, 251, 5, 150, "Input"], Cell[73886, 2028, 148, 2, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[74071, 2035, 116, 2, 72, "Input"], Cell[74190, 2039, 7361, 144, 218, 865, 59, "GraphicsData", "PostScript", \ "Graphics"], Cell[81554, 2185, 130, 3, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[81721, 2193, 66, 1, 72, "Input"], Cell[81790, 2196, 12255, 222, 258, 1126, 80, "GraphicsData", "PostScript", \ "Graphics"], Cell[94048, 2420, 130, 3, 71, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[94227, 2429, 92, 2, 93, "Section", Evaluatable->False], Cell[94322, 2433, 442, 10, 163, "Text", Evaluatable->False], Cell[94767, 2445, 339, 10, 127, "Text"], Cell[CellGroupData[{ Cell[95131, 2459, 60, 1, 72, "Input"], Cell[95194, 2462, 89, 1, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[95320, 2468, 45, 1, 72, "Input"], Cell[95368, 2471, 110, 2, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[95515, 2478, 46, 1, 72, "Input"], Cell[95564, 2481, 283, 5, 150, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[95884, 2491, 150, 4, 72, "Input"], Cell[96037, 2497, 287, 4, 94, "Output"] }, Open ]] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)