assign lateral road problem

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
mijin
Posts: 8
Joined: Tue Sep 15, 2015 5:16 am
Location: PNU

assign lateral road problem

Post by mijin »

hi. Dear fmk, every
I have just question about lateral load related to static push over ad cycling loading.
I saw that there were a lot of example about assigning lateral load.
I have had a question why did the lateral load assign when I used displacement control..
fortunately, I understand a little the lateral load is just reference load.
But I have questions. :roll:
1) Do I assign the lateral load randomly? no matter what the force value is?
2) if the load is reference load for easy and fast analysis, I think the force would be same whatever the load value is.
However, my analysis results are different depending on lateral load value.
Please tell me why and what should I do..

I'll attach my script content below the body.
I always thank you for helping me. :D
Have good day!

################Script content ###############

# SET UP ----------------------------------------------------------------------------
wipe; # clear memory of all past model definitions
model BasicBuilder -ndm 2 -ndf 3;

# Define the model builder, ndm=#dimension, ndf=#dofs
set dataDir angleanalysis; # set up name of data directory
file mkdir $dataDir; # create data directory
set analysisType "pushover"

# define GEOMETRY -------------------------------------------------------------
set h 137.85; # vertical leg length
set l 61.85; # horizontal leg length
set mass_v 3.615; # vertical leg weight(kg)
set mass_h 1.709; # horizontal leg weight(kg)
set g 9.81; #gravity accelation (m/s^2)

# define section geometry
set t 15.9; # leg thickness
set w 254; # leg Width

# calculated parameters
set Weight_v [expr $mass_v*$g/1000.];
set Weight_h [expr $mass_h*$g/1000.];
set Weight [expr $Weight_v+$Weight_h];
set Weight1 [expr $Weight_v+($Weight_h/2.)]; # 1 node dead-load weight of column and beam
set Weight2 [expr $Weight_h/2.]; # 3 node dead-load weight of beam
set mass1 [expr $mass_v+($mass_h/2.)]; # mass of 1 node
set mass2 [expr $mass_h/2.]; # mass of 2 node
set mass [expr $mass_v+$mass_h];
set MHor [expr 1./12.*($Weight_h/$l)*pow($l,2)]; # beam-end moment due to distributed load.

# nodal coordinates:
node 1 0 0; # node#, X, Y
node 2 $l 0;
node 3 0 $h;

# Single point constraints -- Boundary Conditions
fix 1 0 0 0; # node DX DY RZ
fix 2 0 1 0; # node DX DY RZ
fix 3 1 1 1;

# nodal masses:
mass 1 $mass 0. 0.; # node#, Mx My Mz, Mass=Weight/g, neglect rotational inertia at nodes

puts "Geometry Done!!"

# Define ELEMENTS & SECTIONS -------------------------------------------------------------
set HSecTag 1; # assign a tag number to the Horizontal leg section tag
set HMatTagFlex 2; # assign a tag number to the Horizontal leg flexural behavior
set HMatTagAxial 3; # assign a tag number to the Horizontal leg axial behavior
set VSecTag 4; # assign a tag number to the Vertical leg section tag
set VMatTagFlex 5; # assign a tag number to the Vertical flexural behavior
set VMatTagAxial 6; # assign a tag number to the Vertical axial behavior

# Define Material properties ---------------------------------------------------------------

uniaxialMaterial Hysteretic 1 0.279 0.001395 0.4185 0.047895 -0.279 -0.001395 -0.4185 -0.047895 1 1 0 0;



# Define Section properties ---------------------------------------------------------------

set numt 4; #assign number of fibers along the thickness
set numw 1; #assign number of fibers along the Width
set y1 [expr -$t/2];
set y2 [expr $t/2];
set z1 [expr -$w/2];
set z2 [expr $w/2];

section Fiber 1 {
patch quad 1 $numt $numw $y1 $z1 $y2 $z1 $y2 $z2 $y1 $z2
;}

# Define Transformation ---------------------------------------------------------------

geomTransf Linear 1 ;
geomTransf Linear 2 ;

# Define Element connectivity ---------------------------------------------------------------
# element nonlinearBeamColumn $eleTag $iNode $jNode $numlntgrPts $secTag $transfTag

element nonlinearBeamColumn 1 1 2 3 1 1
element nonlinearBeamColumn 2 1 3 3 1 2

# Define RECORDERS -------------------------------------------------------------
recorder Node -file $dataDir/DRollder.out -time -node 2 -dof 1 disp; # displacements of roller nodes
recorder Element -file $dataDir/Force.out -time -ele 2 localforce; # element forces
recorder Element -file $dataDir/Forces.out -time -ele 1 section 1 stressStrain ;

puts "Modelling Done!!"

############################################################################
# Gravity Analysis #
############################################################################

# define GRAVITY -------------------------------------------------------------
pattern Plain 1 Linear {
load 1 0 -$Weight $MHor
}
# pattern Plain 2 Linear {
# load 2 0 -$Weight2 $MHor; # distributed superstructure-weight on beam
#}

# Gravity-analysis parameters -- load-controlled static analysis

set Tol 1.0e-8; # convergence tolerance for test
constraints Plain; # how it handles boundary conditions
numberer Plain; # renumber dof's to minimize band-width (optimization), if you want to
system BandGeneral; # how to store and solve the system of equations in the analysis
test NormDispIncr $Tol 10 ; # determine if convergence has been achieved at the end of an iteration step
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
set NstepGravity 10; # apply gravity in 10 steps
set DGravity [expr 1./$NstepGravity]; # first load increment;
integrator LoadControl $DGravity; # determine the next time step for an analysis
analysis Static; # define type of analysis static or transient
analyze $NstepGravity; # apply gravity
# ------------------------------------------------- maintain constant gravity loads and reset time to zero

loadConst -time 0.0
puts "Gravity Analysis Done!"

############################################################################
# Pushover Analysis #
############################################################################

if {$analysisType == "pushover"} {
puts "Running Pushover..."

# assign lateral loads and create load pattern

pattern Plain 3 Linear {
load 1 0.3 0.0 0.0;

load 2 0.3 0.0 0.0 ;

}

# displacement parameters
set IDctrlNode 2; # node where disp is read for disp control
set IDctrlDOF 1; # degree of freedom read for disp control (1 = x displacement)
set Dmax 15 ; # maximum displacement of pushover: 10% roof drift
set Dincr 0.005; # displacement increment

# analysis commands
constraints Plain; # how it handles boundary conditions
numberer RCM; # renumber dof's to minimize band-width (optimization)
system BandGeneral; # how to store and solve the system of equations in the analysis (large model: try UmfPack)
# test NormUnbalance 1.0e-8 400; # tolerance, max iterations
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr; # use displacement-controlled analysis
analysis Static; # define type of analysis: static for pushover
set Nsteps [expr int($Dmax/$Dincr)];# number of pushover analysis steps
set ok [analyze $Nsteps]; # this will return zero if no convergence problems were encountered
puts "Pushover complete"; # display this message in the command window
}
wipe all;
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: assign lateral road problem

Post by fmk »

the ref load inside the pattern does not matter; what matters inside the load pattern is that the relative values at the different nodes are correct. the reference loads are typically chosen to make yur understanding of the results easier; typically a 1.0 unit load is applied at node of interesest and others scaled accordingly.

the results will be the same whichever the ref load provided you account for them properly in the reading of your results, e.g. the ref load you used is 0.3; if you look at the pseudo time at the end of the analysis, i.e. result of [getTime], it is 128.696 .. meaning applied load is 188.696*0.3 = 38.609 at the nodes. If you had instead used 0.1 reference load the final result would have been 386.089 .. meaning an applied load of 386.089 * 0.1 = 38.609 and if you had used a 1.0 for the reference loads the pseudo time would have been 38.609 for an applied load at the nodes of 38.609

if you hit the same points on he load curve, i.e. the same displacement increment in displacement control or load factor scaled appropriately in load control the points in the output file should all agree (with the exception of the first column if you are recording the pseudo time)

which is why the reference loads, while they can be an
mijin
Posts: 8
Joined: Tue Sep 15, 2015 5:16 am
Location: PNU

Re: assign lateral road problem

Post by mijin »

I appreciate your help.
I can understand your helpful answer a little..But it is remained to wonder.
I think the time and load factor entered pattern load relates to Domain object.
so i have some questions.

1) In the case of Static analysis, it is no need to consider the time. why I enter the time series command in load pattern ? What is the exactly time's meaning?
really time? or about iteration?

2) I want displacement control of static pushover. so I decide Algorithm Newton or ModifiedNewton. In integrator command,I put incremental displacement and maximum displacement. In this situation, why I put the pattern load related to time series command ? In general programs, it's enough to solve the program without load.
ashf
Posts: 31
Joined: Sat Sep 26, 2015 5:06 am

Re: assign lateral road problem

Post by ashf »

you should use [getTime] in the end of your analysis engine (but there aren't any time series )in order to understand what factories are needed for load in any step to reach displacement control(So that I have understood!).
Post Reply