Tick Action: "c" Subscript, "g" "M" "a" "i" "n" , BaselinecgMain
every
Min Step Time: 00
ms
Original truss, highlight applied forces
58
Expression 59: polygon left parenthesis, "P" left bracket, "A" Subscript, "I" , Baseline . "x" , right bracket , "P" left bracket, "A" Subscript, "I" , Baseline . "y" , right bracket , right parenthesis left brace, "A" Subscript, "I" , Baseline . "x" less than "A" Subscript, "I" , Baseline . "y" , right bracepolygonPAI.x,PAI.yAI.x<AI.y
59
Deflected truss - Reddish is tension, blueish is compression
60
Expression 61: "P" Subscript, "d" "e" "f" "l" , Baseline equals "P" plus 0.0 1 times "U"Pdefl=P+0.01·U
61
Expression 62: polygon left parenthesis, "P" Subscript, "d" "e" "f" "l" , Baseline left bracket, "A" Subscript, "I" , Baseline . "x" , right bracket , "P" Subscript, "d" "e" "f" "l" , Baseline left bracket, "A" Subscript, "I" , Baseline . "y" , right bracket , right parenthesis left brace, "A" Subscript, "I" , Baseline . "x" less than "A" Subscript, "I" , Baseline . "y" , right bracepolygonPdeflAI.x,PdeflAI.yAI.x<AI.y
62
Expression 63: "t" Subscript, "m" "C" "o" "l" "o" "r" , Baseline equals 0.5 plus 0.5 StartFraction, "M" Subscript, "F" , Baseline Over max left parenthesis, StartAbsoluteValue, "M" Subscript, "F" , Baseline , EndAbsoluteValue , right parenthesis , EndFractiontmColor=0.5+0.5MFmaxMF
63
Expression 64: "s" Subscript, "c" "o" "l" "o" "r" , Baseline left parenthesis, "c" , right parenthesis equals 255 left parenthesis, 3 "c" squared minus 2 "c" cubed , right parenthesisscolorc=2553c2−2c3
64
Expression 65: "m" Subscript, "c" "o" "l" "o" "r" , Baseline equals rgb left parenthesis, "s" Subscript, "c" "o" "l" "o" "r" , Baseline left parenthesis, "t" Subscript, "m" "C" "o" "l" "o" "r" , Baseline , right parenthesis , "s" Subscript, "c" "o" "l" "o" "r" , Baseline left parenthesis, 0.4 , right parenthesis , "s" Subscript, "c" "o" "l" "o" "r" , Baseline left parenthesis, 1 minus "t" Subscript, "m" "C" "o" "l" "o" "r" , Baseline , right parenthesis , right parenthesismcolor=rgbscolortmColor,scolor0.4,scolor1−tmColor
65
Fixed points
66
Expression 67: "P" left bracket, left bracket, 1... "N" Subscript, "f" "i" "x" "e" "d" , Baseline , right bracket , right bracketP1...Nfixed
67
Expression 68:
68
Stiffness matrix parameters for each member
Hide this folder from students.
69
Expression 70: "m" Subscript, "d" , Baseline equals "P" left bracket, "A" Subscript, "I" , Baseline . "y" , right bracket minus "P" left bracket, "A" Subscript, "I" , Baseline . "x" , right bracketmd=PAI.y−PAI.x
Expression 75: "m" Subscript, "k" "n" , Baseline equals "m" Subscript, "k" , Baseline times "m" Subscript, "n" , Baselinemkn=mk·mn
75
Expression 76: "m" Subscript, "t" , Baseline left parenthesis, "i" , "v" , right parenthesis equals "m" Subscript, "k" "n" , Baseline left bracket, "i" , right bracket times left parenthesis, "m" Subscript, "n" , Baseline left bracket, "i" , right bracket times "v" , right parenthesismti,v=mkni·mni·v
Expression 81: "c" Subscript, "g" "R" "e" "s" "e" "t" , Baseline equals "c" Subscript, "g" "C" "o" "u" "n" "t" "e" "r" , Baseline to 0 , "r" Subscript, "c" "g" , Baseline to left bracket, left parenthesis, infinity , infinity , right parenthesis , right bracketcgReset=cgCounter→0,rcg→∞,∞
81
Expression 82: "c" Subscript, "g" "T" "o" "l" "e" "r" "a" "n" "c" "e" , Baseline equals 10 to the negative 6th powercgTolerance=10−6
82
Expression 83:
83
Initialization
84
Expression 85: "x" Subscript, "c" "g" "I" "n" "i" "t" , Baseline equals left bracket, "F" Subscript, "V" , Baseline left bracket, "i" , right bracket for "i" equals left bracket, "N" Subscript, "f" "i" "x" "e" "d" , Baseline plus 1... "N" , right bracket , right bracketxcgInit=FVifori=Nfixed+1...N
85
Expression 86: "c" Subscript, "g" "I" "n" "i" "t" , Baseline equals "x" Subscript, "c" "g" , Baseline to "x" Subscript, "c" "g" "I" "n" "i" "t" , Baseline , "r" Subscript, "c" "g" , Baseline to "x" Subscript, "c" "g" "I" "n" "i" "t" , Baseline , "p" Subscript, "c" "g" , Baseline to "x" Subscript, "c" "g" "I" "n" "i" "t" , BaselinecgInit=xcg→xcgInit,rcg→xcgInit,pcg→xcgInit
86
Expression 87:
87
Stiffness-vector product
88
Expression 89: "p" Subscript, "c" "g" "P" "a" "d" , Baseline equals left bracket, left brace, "i" greater than "N" Subscript, "f" "i" "x" "e" "d" , Baseline : "p" Subscript, "c" "g" , Baseline left bracket, "i" minus "N" Subscript, "f" "i" "x" "e" "d" , Baseline , right bracket , left parenthesis, 0 , 0 , right parenthesis , right brace for "i" equals left bracket, 1... "N" , right bracket , right bracketpcgPad=i>Nfixed:pcgi−Nfixed,0,0fori=1...N
89
Expression 90: "p" Subscript, "c" "g" "D" "i" "f" "f" , Baseline equals "p" Subscript, "c" "g" "P" "a" "d" , Baseline left bracket, "A" Subscript, "I" , Baseline . "x" , right bracket minus "p" Subscript, "c" "g" "P" "a" "d" , Baseline left bracket, "A" Subscript, "I" , Baseline . "y" , right bracketpcgDiff=pcgPadAI.x−pcgPadAI.y
90
Expression 91: "A" Subscript, "p" "C" "g" , Baseline equals left bracket, Start sum from "j" equals "A" Subscript, "s" "t" "a" "r" "t" , Baseline left bracket, "i" , right bracket to "A" Subscript, "e" "n" "d" , Baseline left bracket, "i" , right bracket , end sum, left parenthesis, "m" Subscript, "t" , Baseline left parenthesis, "j" , "p" Subscript, "c" "g" "D" "i" "f" "f" , Baseline left bracket, "j" , right bracket , right parenthesis , right parenthesis for "i" equals left bracket, "N" Subscript, "f" "i" "x" "e" "d" , Baseline plus 1... "N" , right bracket , right bracketApCg=Aendi∑j=Astartimtj,pcgDiffjfori=Nfixed+1...N
91
Expression 92:
92
Iteration step
93
Expression 94: alpha Subscript, "c" "g" , Baseline equals StartFraction, total left parenthesis, "r" Subscript, "c" "g" , Baseline times "r" Subscript, "c" "g" , Baseline , right parenthesis Over total left parenthesis, "p" Subscript, "c" "g" , Baseline times "A" Subscript, "p" "C" "g" , Baseline , right parenthesis , EndFractionαcg=totalrcg·rcgtotalpcg·ApCg
94
Expression 95: "r" Subscript, "c" "g" 1 , Baseline left parenthesis, , right parenthesis equals "r" Subscript, "c" "g" , Baseline minus alpha Subscript, "c" "g" , Baseline times "A" Subscript, "p" "C" "g" , Baselinercg1=rcg−αcg·ApCg
95
Expression 96: "c" Subscript, "g" "I" "t" "e" "r" , Baseline equals "x" Subscript, "c" "g" , Baseline to "x" Subscript, "c" "g" , Baseline plus alpha Subscript, "c" "g" , Baseline times "p" Subscript, "c" "g" , Baseline , "p" Subscript, "c" "g" , Baseline to "r" Subscript, "c" "g" 1 , Baseline left parenthesis, , right parenthesis plus StartFraction, total left parenthesis, StartAbsoluteValue, "r" Subscript, "c" "g" 1 , Baseline left parenthesis, , right parenthesis , EndAbsoluteValue squared , right parenthesis Over total left parenthesis, "r" Subscript, "c" "g" , Baseline times "r" Subscript, "c" "g" , Baseline , right parenthesis , EndFraction times "p" Subscript, "c" "g" , Baseline , "r" Subscript, "c" "g" , Baseline to "r" Subscript, "c" "g" 1 , Baseline left parenthesis, , right parenthesiscgIter=xcg→xcg+αcg·pcg,pcg→rcg1+totalrcg12totalrcg·rcg·pcg,rcg→rcg1
Expression 100: "c" Subscript, "g" "S" "t" "e" "p" , Baseline equals left brace, "c" Subscript, "g" "C" "o" "u" "n" "t" "e" "r" , Baseline less than 1 : "c" Subscript, "g" "I" "n" "i" "t" , Baseline , "c" Subscript, "g" "I" "t" "e" "r" , Baseline , right bracecgStep=cgCounter<1:cgInit,cgIter
100
Expression 101: "c" Subscript, "g" "M" "a" "i" "n" "S" "t" "e" "p" , Baseline equals "c" Subscript, "g" "S" "t" "e" "p" , Baseline , "c" Subscript, "g" "C" "o" "u" "n" "t" "e" "r" , Baseline to "c" Subscript, "g" "C" "o" "u" "n" "t" "e" "r" , Baseline plus 1cgMainStep=cgStep,cgCounter→cgCounter+1
101
Expression 102: "c" Subscript, "g" "E" "r" "r" "o" "r" , Baseline equals StartRoot, mean left parenthesis, "r" Subscript, "c" "g" , Baseline times "r" Subscript, "c" "g" , Baseline , right parenthesis , EndRootcgError=meanrcg·rcg
102
Expression 103: "c" Subscript, "g" "M" "a" "i" "n" , Baseline equals "c" Subscript, "g" "M" "a" "i" "n" "S" "t" "e" "p" , Baseline left brace, "c" Subscript, "g" "E" "r" "r" "o" "r" , Baseline greater than "c" Subscript, "g" "T" "o" "l" "e" "r" "a" "n" "c" "e" , Baseline , right bracecgMain=cgMainStepcgError>cgTolerance
103
Expression 104:
104
[DON'T OPEN]
Variables for conjugate gradient
Hide this folder from students.
105
Expression 109:
109
Get node deflection and member forces
Hide this folder from students.
110
deflection - zero at fixed nodes, solver result at free nodes
111
Expression 112: "U" equals left bracket, left brace, "i" less than or equal to "N" Subscript, "f" "i" "x" "e" "d" , Baseline : left parenthesis, 0 , 0 , right parenthesis , "x" Subscript, "c" "g" , Baseline left bracket, "i" minus "N" Subscript, "f" "i" "x" "e" "d" , Baseline , right bracket , right brace for "i" equals left bracket, 1... "N" , right bracket , right bracketU=i≤Nfixed:0,0,xcgi−Nfixedfori=1...N
112
member force: projection of deflection on unit direction, normalized by member length
113
Expression 114: "M" Subscript, "F" , Baseline equals StartFraction, "P" left bracket, "A" Subscript, "I" , Baseline . "y" , right bracket minus "P" left bracket, "A" Subscript, "I" , Baseline . "x" , right bracket Over StartAbsoluteValue, "P" left bracket, "A" Subscript, "I" , Baseline . "y" , right bracket minus "P" left bracket, "A" Subscript, "I" , Baseline . "x" , right bracket , EndAbsoluteValue squared , EndFraction times left parenthesis, "U" left bracket, "A" Subscript, "I" , Baseline . "y" , right bracket minus "U" left bracket, "A" Subscript, "I" , Baseline . "x" , right bracket , right parenthesisMF=PAI.y−PAI.xPAI.y−PAI.x2·UAI.y−UAI.x
114
Expression 115:
115
Helper functions
Hide this folder from students.
116
linear time prefix sum by @fad
117
Expression 118: "p" Subscript, "r" "e" "f" "i" "x" "S" "u" "m" , Baseline left parenthesis, "x" , right parenthesis equals left brace, "x" .count less than or equal to 1 : "x" , left parenthesis, left brace, mod left parenthesis, "i" , 2 , right parenthesis equals 0 : 0 , "x" left bracket, "i" , right bracket , right brace plus left brace, "i" equals 1 : 0 , "y" left bracket, StartFraction, "i" Over 2 , EndFraction , right bracket , right brace for "i" equals left bracket, 1... "x" . , right bracket , right parenthesis with "y" equals "p" Subscript, "r" "e" "f" "i" "x" "S" "u" "m" , Baseline left parenthesis, "x" left bracket, 2 "j" minus 1 , right bracket plus "x" left bracket, 2 "j" , right bracket for "j" equals left bracket, 1...floor left parenthesis, StartFraction, "x" . Over 2 , EndFraction , right parenthesis , right bracket , right parenthesis , right braceprefixSumx=x.count≤1:x,modi,2=0:0,xi+i=1:0,yi2fori=1...x.countwithy=prefixSumx2j−1+x2jforj=1...floorx.count2