Zerolength element

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

Moderators: silvia, selimgunay, Moderators

Post Reply
husseinokail
Posts: 10
Joined: Sun Mar 11, 2007 11:44 pm
Location: Ain Shams

Zerolength element

Post by husseinokail »

I created a small model with zerolength element connecting two point with the same co-ordinates

then i changed the coordinates so they are different
i got the same response in both cases

Is that possible???




This is the model

# --------------------------------------------------------------------------------------------------
# 2D Portal Frame-- Build Model
# nonlinearBeamColumn element, inelastic fiber section
#
# ^Y
# |
# 3_________(3)________4 __
# | | |
# | | |
# | | |
# (1) (2) LCol
# | | |
# | | |
# | | |
# =1= =2= _|_ -------->X
# |----------LBeam------------|
#

# 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 cu; # set up name of data directory
file mkdir $dataDir; # create data directory
# source LibUnits.tcl; # define basic and system units

# define GEOMETRY -------------------------------------------------------------
set LCol [expr 80.75]; # column length
set LBeam [expr 1.]; # beam length
set Weight [expr 100.]; # superstructure weight
# define section geometry
set HCol [expr 11.]; # Column Depth
set BCol [expr 11.]; # Column Width
set HBeam [expr 14.5]; # Beam Depth
set BBeam [expr 11.]; # Beam Width

# calculated parameters
set PCol [expr $Weight/2]; # nodal dead-load weight per column
# calculated geometry parameters
set ACol [expr $BCol*$HCol]; # cross-sectional area
set ABeam [expr $BBeam*$HBeam];
set IzCol [expr 1./12.*$BCol*pow($HCol,3)]; # Column moment of inertia
set IzBeam [expr 1./12.*$BBeam*pow($HBeam,3)]; # Beam moment of inertia

# nodal coordinates:
node 1 0 0; # node#, X, Y
node 2 10 10;


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

uniaxialMaterial Hysteretic 203 0.2 0.15 0. 1. -0.2 -0.05 -2 -0.5 1 0.00000001 0 0;
uniaxialMaterial Hysteretic 403 0.15 0.15 0. 1. -0.2 -0.05 -2 -0.5 1 0.00000001 0 0;

# define geometric transformation: performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system
set ColTransfTag 1; # associate a tag to column transformation
geomTransf Linear $ColTransfTag
# element connectivity:
element zeroLength 1 1 2 -mat 203 403 -dir 1 2
# Define RECORDERS -------------------------------------------------------------
recorder Node -file $dataDir/Disp.out -time -node 2 -dof 1 2 disp; # displacements of free nodes
recorder Node -file $dataDir/RBase.out -time -node 1 -dof 1 2 reaction; # support reaction

# Gravity-analysis parameters -- load-controlled static analysis
set Tol 1.0e-8;
set NstepGravity 1 ; # set variable which will be used to apply gravity in 10 steps
set DGravity [expr 1./$NstepGravity]; # load increment
integrator LoadControl $DGravity;
test NormDispIncr $Tol 10 ;
algorithm ModifiedNewton -initial
constraints Plain;
#numberer Plain;
numberer RCM;
#system BandGeneral;
system UmfPack
analysis Static;

#algorithm Newton;

analyze $NstepGravity; # apply vertical loads in 10 steps
# ------------------------------------------------- maintain constant gravity loads and reset time to zero
loadConst -time 0.0

# --------------------------------------------------------------------------------------------------
# Example4. 2D Portal Frame-- Static Reversed-Cyclic Analysis
# Silvia Mazzoni & Frank McKenna, 2006
# execute this file after you have built the model, and after you apply gravity
#
set LunitTXT "inch"; # define basic-unit text for output
set FunitTXT "kip"; # define basic-unit text for output
set TunitTXT "sec"; # define basic-unit text for output

# we need to set up parameters that are particular to the model.
set IDctrlNode 2; # node where displacement is read for displacement control
set IDctrlDOF 2; # degree of freedom of displacement read for displacement contro
# characteristics of cyclic analysis
set iDmax "0.001 .002 .003 .005 .0075 .009 .01 0.02 0.03 "; # vector of displacement-cycle peaks, in terms of storey drift ratio
set Dincr [expr 0.00001*$LCol]; # displacement increment for pushover. you want this to be very small, but not too small to slow down the analysis
set Fact $LCol; # scale drift ratio by storey height for displacement cycles
set CycleType Full; # you can do Full / Push / Half cycles with the proc
set Ncycles 1; # specify the number of cycles at each peak

# create load pattern for lateral pushover load
set Hload1 [expr $Weight/2]; # define the lateral load as a proportion of the weight so that the pseudo time equals the lateral-load coefficient when using linear load pattern
set Hload2 [expr $Weight/1.5]; # define the lateral load as a proportion of the weight so that the pseudo time equals the lateral-load coefficient when using linear load pattern

set iPushNode "2"; # define nodes where lateral load is applied in static lateral analysis
pattern Plain 200 Linear {; # define load pattern -- generalized
foreach PushNode $iPushNode {
load $PushNode $Hload1 $Hload2 0.0 0.0 0.0 0.0
}
}

# ----------- set up analysis parameters
source LibAnalysisStaticParameters.tcl; # constraintsHandler,DOFnumberer,system-ofequations,convergenceTest,solutionAlgorithm,integrator

# --------------------------------- perform Static Cyclic Displacements Analysis
source GeneratePeaks.tcl
set fmt1 "%s Cyclic analysis: CtrlNode %.3i, dof %.1i, Disp=%.4f %s"; # format for screen/file output of DONE/PROBLEM analysis
foreach Dmax $iDmax {
set iDstep [GeneratePeaks $Dmax $Dincr $CycleType $Fact]; # this proc is defined above
for {set i 1} {$i <= $Ncycles} {incr i 1} {
set zeroD 0
set D0 0.0
foreach Dstep $iDstep {
set D1 $Dstep
set Dincr [expr $D1 - $D0]
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr
analysis Static
set tc [getTime]
puts "$tc"
# ----------------------------------------------first analyze command------------------------
set ok [analyze 1]
# ----------------------------------------------if convergence failure-------------------------
if {$ok != 0} {
# if analysis fails, we try some other stuff
# performance is slower inside this loop global maxNumIterStatic; # max no. of iterations performed before "failure to converge" is ret'd
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 2000 0
algorithm Newton -initial
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
set putout [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
puts $putout
return -1
}; # end if
}; # end if
# -----------------------------------------------------------------------------------------------------
set D0 $D1; # move to next step
}; # end Dstep
}; # end i
}; # end of iDmaxCycl
# -----------------------------------------------------------------------------------------------------


if {$ok != 0 } {
puts [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
} else {
puts [format $fmt1 "DONE" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
}
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

sure, but don't do it, please!
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

You are getting thee same answer because the element has assumes zeroLength .. it doesn't check for zero length between nodes because there are situations were it is useful to useful to model using a zeroLength element.

if you want the results to differ as you move the nodes use a truss.
husseinokail
Posts: 10
Joined: Sun Mar 11, 2007 11:44 pm
Location: Ain Shams

Post by husseinokail »

Thanks
Post Reply