Follows is my model, it model a nonlinear beam column under cyclic lateral load. When I get the moment curvature relationship the moment capacity is higher than what i get by manual calculations which is supposed to be 4 kips.inch Any mistakes in the model difinition you can see?
Thanks
# 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
# define GEOMETRY -------------------------------------------------------------
set LBeam [expr 16.]; # beam length
set Weight [expr 114*48*48*3.625/(12*12*12*1000)]; # superstructure weight
set B [expr 48.*.5];
set W [expr 3.625*.5];
# nodal coordinates:
node 1 0 0; # node#, X, Y
node 2 0 $LBeam;
# Single point constraints -- Boundary Conditions
fix 1 1 1 1; # node DX DY RZ
#fix 2 0 1 1; # node DX DY RZ
# MATERIAL parameters -------------------------------------------------------------------
set IDmas 3; # material ID tag -- masonry infill
set fm [expr -.7]; # CONCRETE Compressive Strength, ksi (+Tension, -Compression)
set fm1U $fm; # UNCONFINED concrete, maximum stress
set eps1U -0.0007; # strain at maximum strength of unconfined concrete
set fm2U [expr .1*$fm1U]; # ultimate stress
set eps2U -0.005; # strain at ultimate stress
set lambda 0.1; # ratio between unloading slope at $eps2 and initial slope $Ec
set ftmU 0.035; # tensile strength +tension
set Etms [expr $ftmU/0.005]; # tension softening stiffness
uniaxialMaterial Concrete02 $IDmas $fm1U $eps1U $fm2U $eps2U $lambda $ftmU $Etms; # build masonry
section fiberSec 500 {patch quad $IDmas 500 1 -$W -$B $W -$B $W $B -$W $B};
# 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
set numIntgrPts 5; # number of integration points for force-based element
element nonlinearBeamColumn 1 1 2 $numIntgrPts 500 $ColTransfTag; # self-explanatory when using variables
# Define RECORDERS -------------------------------------------------------------
recorder Node -file $dataDir/Disp.out -time -node 2 -dof 1 disp; # displacements of free nodes
recorder Element -file $dataDir/ColForces.out -time -ele 1 globalForce; # column forces
recorder Element -file $dataDir/F11.txt -time -ele 1 section 1 force;
recorder Element -file $dataDir/D11.txt -time -ele 1 section 1 deformation;
recorder Element -file $dataDir/F12.txt -time -ele 1 section 2 force;
recorder Element -file $dataDir/D12.txt -time -ele 1 section 2 deformation;
recorder Element -file $dataDir/F13.txt -time -ele 1 section 3 force;
recorder Element -file $dataDir/D13.txt -time -ele 1 section 3 deformation;
recorder Element -file $dataDir/F14.txt -time -ele 1 section 4 force;
recorder Element -file $dataDir/D14.txt -time -ele 1 section 4 deformation;
recorder Element -file $dataDir/F15.txt -time -ele 1 section 5 force;
recorder Element -file $dataDir/D15.txt -time -ele 1 section 5 deformation;
recorder Element -file $dataDir/S11.txt -time -ele 1 section 1 fiber 1.1825 0. stressStrain
recorder Element -file $dataDir/S12.txt -time -ele 1 section 2 fiber 1.1825 0. stressStrain
recorder Element -file $dataDir/S13.txt -time -ele 1 section 3 fiber 1.1825 0. stressStrain
recorder Element -file $dataDir/S14.txt -time -ele 1 section 4 fiber 1.1825 0. stressStrain
recorder Element -file $dataDir/S15.txt -time -ele 1 section 5 fiber 1.1825 0. stressStrain
# define GRAVITY -------------------------------------------------------------
pattern Plain 1 Linear {
load 2 0.0 -$Weight 0.0 -const
}
## Gravity-analysis parameters -- load-controlled static analysis
set Tol 1.0e-8;
constraints Plain;
numberer Plain;
system BandGeneral;
test NormDispIncr $Tol 10 ;
algorithm ModifiedNewton -initial
set NstepGravity 10; # set variable which will be used to apply gravity in 10 steps
set DGravity [expr 1./$NstepGravity]; # load increment
integrator LoadControl $DGravity;
analysis Static;
analyze $NstepGravity; # apply vertical loads in 10 steps
loadConst -time 0.0
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 1; # degree of freedom of displacement read for displacement contro
# characteristics of cyclic analysis
set iDmax "0.0005 0.001 0.0025 0.0030"; # vector of displacement-cycle peaks, in terms of storey drift ratio
set Dincr [expr 0.00001*$LBeam]; # displacement increment for pushover. you want this to be very small, but not too small to slow down the analysis
set Fact $LBeam; # scale drift ratio by storey height for displacement cycles
set CycleType Full; # you can do Full / Push / Half cycles with the proc
set Ncycles 2; # specify the number of cycles at each peak
# create load pattern for lateral pushover load
set Hload [expr $Weight/10]; # 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 $Hload 0.0 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]
}
Nonlinear Beam Column
Moderators: silvia, selimgunay, Moderators
-
- Posts: 10
- Joined: Sun Mar 11, 2007 11:44 pm
- Location: Ain Shams
-
- Posts: 10
- Joined: Sun Mar 11, 2007 11:44 pm
- Location: Ain Shams