0% found this document useful (0 votes)
25 views8 pages

Material and Geometric Nonlinear Analysis of Biot Truss

Uploaded by

Antonio Mateos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views8 pages

Material and Geometric Nonlinear Analysis of Biot Truss

Uploaded by

Antonio Mateos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

® tel +359 2 423 4455

34-36 Peyo Yavorov blvd, proektsoft.bg@gmail.com

Sofia 1164, Bulgaria https://calcpad.eu

A CALCPAD PROGRAM

FOR MATERIAL AND GEOMETRIC NONLINEAR


ANALYSIS OF PRESTRESSED ASYMMETRIC
BIOT TRUSS

─◊─◊──◊───◊────⧫────◊───◊──◊─◊─

(using large displacement theory)

by

Eng. Nedelcho Ganchovsky

12.2024
Page 1 / 8
Input data
𝑥⃗𝐽 = [0m 3m 9m], 𝑦⃗𝐽 = [0m 0m 0m], 𝑛𝐽 = len(𝑥⃗𝐽 ) = 3
Elements - [J1; J2]
1 2
transp(𝐸𝐽 ) = [ ] , 𝑛 = n𝑟𝑜𝑤𝑠 (𝐸𝐽 ) = 2, 𝐽1 (𝑒) = 𝐸𝐽 .𝑒,1 , 𝐽2 (𝑒) = 𝐸𝐽 .𝑒,2
2 3 𝐸
Element endpoint coordinates
𝑥1 (𝑒) = 𝑥⃗𝐽 .𝐽 , 𝑦1 (𝑒) = 𝑦⃗𝐽 .𝐽 , 𝑥2 (𝑒) = 𝑥⃗𝐽 .𝐽 , 𝑦2 (𝑒) = 𝑦⃗𝐽 .𝐽
1 (𝑒) 1 (𝑒) 2 (𝑒) 2 (𝑒)

2 2
Element lengths - 𝑙(𝑒) = √(𝑥2 (𝑒) − 𝑥1 (𝑒)) + (𝑦2 (𝑒) − 𝑦1 (𝑒))
𝑥2 (𝑒)−𝑥1 (𝑒) 𝑦2 (𝑒)−𝑦1 (𝑒)
Element directions - 𝑐(𝑒) = , 𝑠(𝑒) =
𝑙(𝑒) 𝑙(𝑒)

Transformation matrix
𝑡(𝑒) = [𝑐(𝑒); 𝑠(𝑒)| − 𝑠(𝑒); 𝑐(𝑒)], 𝑇(𝑒) = add(𝑡(𝑒); add(𝑡(𝑒); matrix(4; 4); 1; 1); 3; 3)
Supports - [joint; cx; cy]
1 1×1020 kN⁄m 1×1020 kN⁄m
𝑐𝐽 = [ ] , 𝑛 = n𝑟𝑜𝑤𝑠 (𝑐𝐽 ) = 2
3 1×1020 kN⁄m 1×1020 kN⁄m 𝑐
Material - steel
We assume bi-linear material model
Initial modulus of elasticity - 𝐸0 = 206GPa
Yield stress - 𝑓𝑦 = 500MPa
Ultimate tensile strength - 𝑓𝑢 = 600MPa
𝑓𝑦 500MPa
Yield strain - 𝜀𝑦 = 𝐸 = = 2.43‰
0 206GPa

Ultimate strain - 𝜀𝑢 = 20‰


𝑓𝑢 −𝑓𝑦 600MPa−500MPa
Modulus of elasticity after yield - 𝐸1 = 𝜀 = = 5.69GPa
𝑢 −𝜀𝑦 20‰−2.43‰

𝑖𝑓𝜀 < 𝜀𝑦 : 𝐸0 · 𝜀
Idealized stress-strain curve - 𝜎(𝜀) = {
𝑒𝑙𝑠𝑒: 𝑓𝑦 + 𝐸1 · (𝜀 − 𝜀𝑦 )

Page 2 / 8
Cross section – circular with diameter 𝜱 = 𝟐𝟎mm
𝜋·𝛷2 3.14·(20mm)2
Area - 𝐴 = = = 3.14cm2
4 4

Stiffness
Initial - 𝐸𝐴0 = 𝐸0 · 𝐴 = 206GPa · 3.14cm2 = 64716.8kN,𝐸𝐴 = 𝐸𝐴0 = 64716.8kN
After yield - 𝐸𝐴1 = 𝐸1 · 𝐴 = 5.69GPa · 3.14cm2 = 1787.76kN
Load - [Joint, Fx, Fy]
𝐹𝐽 = [2 0kN −70kN], 𝑛𝐹 = n𝑟𝑜𝑤𝑠 (𝐹𝐽 ) = 1
Prestressing force - 𝑃 = 20kN
𝑃 20kN
Initial stress - 𝜎𝑃 = 𝐴 = 3.14cm2 = 63.662MPa
𝜎𝑃 63.662MPa
Initial strain - 𝜀𝑃 = = = 0.000309
𝐸0 206GPa

Finite element formulation


We will formulate a 2D truss element with 3rd order geometric nonlinearity. The
equilibrium equations will be derived in local CS, for the deformed state of the structure,
assuming large displacements, as follows:

Relative displacements - 𝑢 = 𝑢2 − 𝑢1 , 𝑣 = 𝑣2 − 𝑣1 , 𝑧⃗ = [𝑢; 𝑣]


Length and elongation of the element in deformed state
𝛥𝑙(𝑒;𝑧)
𝑙′(𝑒; 𝑧) = √(𝑙(𝑒) + 𝑧1 )2 + 𝑧2 2 , 𝛥𝑙(𝑒; 𝑧) = 𝑙′(𝑒; 𝑧) − 𝑙(𝑒), 𝜀(𝑒; 𝑧) = + 𝜀𝑃
𝑙(𝑒)

Directions of the displaced axis of the element in the deformed state


𝑙(𝑒) + 𝑧1 𝑧2
𝑐𝑑 (𝑒; 𝑧) = , 𝑠𝑑 (𝑒; 𝑧) =
𝑙′(𝑒; 𝑧) 𝑙′(𝑒; 𝑧)
Axial force in element - 𝑁(𝑒; 𝑧) = 𝜎(𝜀(𝑒; 𝑧)) · 𝐴

Page 3 / 8
Horizontal reactive force at the right end - 𝐹𝑥 (𝑒; 𝑧) = 𝑁(𝑒; 𝑧) · 𝑐𝑑 (𝑒; 𝑧)
Vertical reactive force at the right end - 𝐹𝑦 (𝑒; 𝑧) = 𝑁(𝑒; 𝑧) · 𝑠𝑑 (𝑒; 𝑧)
Partial derivatives of element end reactive forces
1 𝑧2 2 𝑧2 · (𝑙(𝑒) + 𝑧1 )
𝐹′𝑥1 (𝑒; 𝑧) = − , 𝐹′𝑥2 (𝑒; 𝑧) =
𝑙(𝑒) 𝑙′(𝑒; 𝑧)3 𝑙′(𝑒; 𝑧)3
1 (𝑙(𝑒) + 𝑧1 )2
𝐹′𝑦1 (𝑒; 𝑧) = 𝐹′𝑥2 (𝑒; 𝑧), 𝐹′𝑦2 (𝑒; 𝑧) = −
𝑙(𝑒) 𝑙′(𝑒; 𝑧)3
We are not going to linearize the above equations by Taylor series as per [1]. We will use
them further directly in their implicit form.

Solution by Newton-Raphson’s method


We will express the parameters of the system as a function of the vector of the unknown
displacements:
𝑍⃗ = vector(2 · 𝑛𝐽 ) · mm = vector(2 · 3) · mm = [0mm 0mm 0mm 0mm 0mm 0mm]

Initial deflection at the intermediate joint - 𝑍⃗4 = 100mm = 100mm = 100mm


Extracting displacements for joint j - 𝑧𝐽 (𝑗) = [𝑍⃗2·𝑗−1 ; 𝑍⃗2·𝑗 ]

Relative displacements for element e - 𝑧𝑒 (𝑒) = 𝑡(𝑒) · (𝑧𝐽 (𝐽2 (𝑒)) − 𝑧𝐽 (𝐽1 (𝑒)))

Element reactive forces partial vector - 𝐹𝑒 (𝑒) = 𝑡(𝑒) · [𝐹𝑥 (𝑒; 𝑧𝑒 (𝑒)); 𝐹𝑦 (𝑒; 𝑧𝑒 (𝑒))]
Partial element Jacobi matrix
𝐽𝑒 (𝑒) = 𝑡(𝑒) · [𝐹′𝑥1 (𝑒; 𝑧𝑒 (𝑒)); 𝐹′𝑥2 (𝑒; 𝑧𝑒 (𝑒)) | 𝐹′𝑦1 (𝑒; 𝑧𝑒 (𝑒)); 𝐹′𝑦2 (𝑒; 𝑧𝑒 (𝑒))]
Target precision - 𝜀𝑚𝑎𝑥 = 10−12 = 1×10−12
Iteratively calculate the following equations of the Newton-Raphson’s method:
⃗⃗⃗⃗⃗)
norm𝑒 (𝛿𝑍
𝑍⃗0 = 𝑍⃗, ⃗⃗⃗⃗⃗
𝛿𝑍 = inverse (𝐽(𝑍⃗)) · 𝐹(𝑍⃗) , 𝑍⃗ = 𝑍⃗0 − ⃗⃗⃗⃗⃗
𝛿𝑍 , 𝜀= < 𝜀max
norm𝑒 (𝑍⃗)
Convergence reached at iteration - 𝑛 = 82. Relative error − 𝜀 = 9.1×10−13
Results
𝑧𝐽 (𝑗)
Joint displacements - 𝑍(𝑗) = round ( ) · 𝛿𝑧
𝛿𝑧

Joint J2 - Z2 = 𝑍(2) = [−44.71mm 772.72mm]


Reactions in supports
𝑟(𝑖) = row(𝑐𝐽 ; 𝑖) , 𝑗(𝑖) = take(1; 𝑟(𝑖)) , 𝑅(𝑖) = −𝑧𝐽 (𝑗(𝑖)) · last(𝑟(𝑖); 2)
Joint J1 - R1 = 𝑅(1) = [−179.81kN −47.01kN]
Joint J3 - R2 = 𝑅(2) = [179.81kN −22.99kN]
Element yield capacity - 𝑁𝑦 = 𝑓𝑦 · 𝐴 = 500MPa · 3.14cm2 = 157.08kN
Element ultimate capacity - 𝑁𝑢 = 𝑓𝑢 · 𝐴 = 600MPa · 3.14cm2 = 188.5kN

Page 4 / 8
Element axial forces - 𝑁𝑒 (𝑒) = 𝑁(𝑒; 𝑧𝑒 (𝑒))
Element Е1 - N1 = 𝑁𝑒 (1) = 185.85kN < 𝑁𝑢 = 188.5kN
Element Е2 - N2 = 𝑁𝑒 (2) = 181.27kN < 𝑁𝑢 = 188.5kN
Comparison to OpenSeesPy
The solution is performed by the following Python script:
import openseespy.opensees as ops
# Units of measurement
m = 1; N = 1; kN = 1000*N; Pa = N/m**2; MPa = Pa*1e6; GPa = Pa*1e9; cm = m/100
# Model properties
a = 3*m; b = 6*m # Joint spacing
E0 = 206*GPa # Initial modulus of elasticity
fy = 500*MPa # Yield stress
fu = 600*MPa # Ultimate tensile strength
εy = fy/E0 # Yield strain
εu = 0.02 # Ultimate strain
E1 = (fu - fy)/(εu - εy) # Residual modulus of elasticity
d = 2*cm # Cross section diameter
A = 3.14159265359*d**2/4 # Cross section area
F = 70*kN # Vertical load at the intermediate joint
P = 20*kN # Prestressing force
σp = P/A # Initial stress
# Model creation
ops.model('basic','-ndm',2,'-ndf',2)
ops.node(1,0,0); ops.fix(1,1,1)
ops.node(2,a,-1e-6*cm) # Small
ops.node(3,a+b,0); ops.fix(3,1,1)
ops.uniaxialMaterial('ElasticBilin',1,E0,E1,εy)
ops.uniaxialMaterial('InitStressMaterial',2,1,σp)
ops.element('corotTruss',1,1,2,A,2)
ops.element('corotTruss',2,2,3,A,2)
ops.timeSeries('Constant',1)
ops.pattern('Plain',1,1)
ops.load(2,0,-F)
# Running the analysis
ops.analysis('Static','-noWarnings')
ops.analyze(1)

Page 5 / 8
ops.reactions()
# Printing the results
print(f"Displacements: {["%.2fmm" % (f*1000) for f in ops.nodeDisp(2)]}")
print(f"Support reactions: {["%.2fkN" % (f/1000) \
for f in ops.nodeReaction(1)]}, {["%.2fkN" % (f/1000) \
for f in ops.nodeReaction(3)]}")
print(f"Element axial forces: {["%.2fkN" % (f/1000) \
for f in ops.basicForce(1)]}, {["%.2fkN" % (f/1000)
for f in ops.basicForce(2)]}")
Credits: The above code is based on a script, developed by Prof. Michael H. Scott, Oregon State University.

Results:
Displacements: ['-44.71mm', '-772.72mm']
Support reactions: ['-179.81kN', '47.01kN'], ['179.81kN', '22.99kN']
Element axial forces: ['185.85kN'], ['181.27kN']
Conclusion: Both solutions are identical up to five significant digits.
Comparison to linear-elastic material model and system behavior charts
Using the same algorithm in Calcpad, we also performed a solution with linear-elastic
material model, by entering sufficiently high values for the yield and tensile strengths. The
results are obtained as follows:
Results for linear elastic material model
𝑧𝐽 (𝑗)
Joint displacements - 𝑍(𝑗) = round ( ) · 𝛿𝑧
𝛿𝑧

Joint J2 - Z2 = 𝑍(2) = [−14.56mm 418.88mm]


Reactions in supports
𝑟(𝑖) = row(𝑐𝐽 ; 𝑖) , 𝑗(𝑖) = take(1; 𝑟(𝑖)) , 𝑅(𝑖) = −𝑧𝐽 (𝑗(𝑖)) · last(𝑟(𝑖); 2)
Joint J1 - R1 = 𝑅(1) = [−333.41kN −46.78kN]
Joint J3 - R2 = 𝑅(2) = [333.41kN −23.22kN]
Element axial forces - 𝑁𝑒 (𝑒) = 𝑁(𝑒; 𝑧𝑒 (𝑒))
Element Е1 - N1 = 𝑁𝑒 (1) = 336.68kN > 𝑁𝑢 = 188.5kN
Element Е2 - N2 = 𝑁𝑒 (2) = 334.22kN > 𝑁𝑢 = 188.5kN
Comparison to OpenSeesPy:
Displacements: ['-14.56mm', '-418.88mm']
Support reactions: ['-333.41kN', '46.78kN'], ['-0.00kN', '-0.00kN']
Element axial forces: ['336.68kN'], ['334.22kN']

Page 6 / 8
By applying material nonlinearity, we can activate “hidden” resistance resources that exist
in the structure. Yielding allows the structure to deflect further and work more efficiently,
due to the increased vertical projection of the internal axial forces in bars.
By gradually increasing the load at a certain step and recording the corresponding
displacements and forces, we can track the behavior of the system and display it graphically.
This was done for both models – linear and nonlinear material models, and the results are
displayed in the following diagrams:

Displacement - load chart Prestress - displacement chart


100
760
80
660
60

Z, mm
560
F, kN

40 linear
460
nonlin
20 linear 360
nonlin.
0 260
0 200 400 600 800 1000 0 40 80 120 160 200 240 280 320 360
Z, mm P, kN

Displacement - axial load chart Load - axial force chart

400 400

300 300
N, kN

N, kN

200 200

100 linear 100 linear


nonlin. nonlin.
0 0
0 200 400 600 800 1000 0 20 40 60 80 100
Z, mm F, kN

Until the steel yields the two graphs coincide completely. From then on, they diverge. The
displacements for the bi-linear material model grow faster, while the forces grow more
slowly. The first graph clearly shows zero initial stiffness (zero tangent slope). That is why
the system cannot be solved by linear analysis or assuming small displacements (1-st and 2-
nd order theories).

Page 7 / 8
References
[1] Levy, R., Spillers, W.R. Analysis of Geometrically nonlinear structures: Second Edition (2003)
Analysis of Geometrically nonlinear structures: Second Edition, p. 272. DOI: 10.1007/978-94-
017-0243-0
[2] McKenna, F., Fenves, G. L, and Scott, M. H. (2000) Open System for Earthquake Engi-
neering Simulation. University of California, Berkeley
http://opensees.berkeley.edu
[3] Mazzoni, S., McKenna, F., Scott, M. H., and Fenves, G. L. (2006) OpenSees Command
Language Manual. University of California, Berkeley
http://opensees.berkeley.edu/manuals/usermanual
[4] Minjie Zhu, Frank McKenna, Michael H. Scott, OpenSeesPy: Python library for the OpenSees fi-
nite element framework, SoftwareX, Volume 7, 2018, Pages 6-11, ISSN 2352-7110
https://doi.org/10.1016/j.softx.2017.10.009

Page 8 / 8

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy