Hi all,
I am currently working on a 5-span bridge model. There are 4 columns at each bent. Although column bases are pinned, I get moment values at the column bases. Using print command, I double-checked that columns are pinned at the base. I really don't know why I'm getting moment values at the pin-based columns when I run the gravity loading analysis. When I run the earthquake analysis, the moment values at the column bases I get are bigger than the gravity loading analysis results. Here is my model:
wipe
source units.tcl
model BasicBuilder -ndm 3 -ndf 6
# -------- DECK PROPERTIES
set Ad 6.73;
set Idy 109.6;
set Idz 1.82;
set Idp [expr $Idy+$Idz];
set Jd 6.25;
set offset 0.78;
# -------- COLUMN PROPERTIES
set Ac 1.169;
set Icy 0.109;
set Icz 0.109;
set Icp [expr $Icy+$Icz];
set Jc [expr $Icy+$Icz];
# -------- CONCRETE PROPERTIES(Parameters for Concrete01(Kent-Park Model) Material)
set Ec 27606;
set Gc [expr $Ec/2.4];
set gamma 0.0224261505;
set rho [expr $gamma/9.81];
# Confined Concrete
set ccTag 1;
set fcc -47.4;
set epscc -0.0057;
set fccu -35.34;
set epsccu -0.0226;
# Unconfined Concrete
set ucTag 2;
set fc -34.5;
set epsc -0.002;
set fcu -22.96;
set epscu -0.004;
# Additional Paramaeters for Concrete07(Mander Model) Material
set ft 2.0;
set epst 0.0001;
set xp 2.0;
set xnu 2.0;
set xnc 3.965;
set ru 2.6657;
set rc 1.4311;
# -------- STEEL PROPERTIES
set sTag 3;
set fy 475.0;
set Es 200000.0;
set b 0.02;
set R0 18.0;
set cR1 0.925;
set cR2 0.15;
# -------- LONGITUDIONAL REBAR PROPERTIES
set Dbar 3.58e-2;
# -------- BRIDGE GEOMETRY
set X {0.000 15.000 43.800 71.800 102.200 126.000};
set Z {0.000 0.000 0.000 0.000 0.000 0.000};
set colH {0.000 9.000 9.600 9.360 8.360 0.000};
set colpBent 4.;
if {$colpBent == 1} {
set cpb "single";
} else {
set cpb "multiple";
}
set colSpacing 3.067;
set discrtX {3. 6. 7. 8. 5.};
# -------- DECK NODES
# Nodal Masses for Each Span
set M "";
set Mr "";
set Mt "";
set Le "";
for {set i 1} {$i <= [llength $discrtX]} {incr i} {
set L [expr [lindex $X $i]-[lindex $X [expr $i-1]]];
set l [expr $L/[lindex $discrtX [expr $i-1]]];
set mass [expr $rho*$l*$Ad];
set massRot [expr $rho*$Ad*pow($l,3)/12.];
set massTor [expr $rho*$Idp*$l];
lappend Le $l;
lappend M $mass;
lappend Mr $massRot;
lappend Mt $massTor;
}
set nodesDeck 1;
for {set i 1} {$i <= [llength $discrtX]} {incr i} {
set nodesDeck [expr $nodesDeck+int([lindex $discrtX [expr $i-1]])];
}
# Assigning Nodes
set spanCount 1;
set corX 0.0;
set corY 0.0;
set corZ 0.0;
set bentNodes "";
set deckNodalWghts "";
set bentNode [expr 1+int([lindex $discrtX 0])];
set deckEndNodes "";
for {set i 1} {$i <= $nodesDeck} {incr i} {
set nodeTag [expr 100+$i];
set m [lindex $M [expr $spanCount-1]];
set mr [lindex $Mr [expr $spanCount-1]];
set mt [lindex $Mt [expr $spanCount-1]];
if {$i == 1 || $i == $nodesDeck} {
node $nodeTag $corX $corY $corZ -mass [expr $m/2.] [expr $m/2.] [expr $m/2.] [expr $mt/2.] [expr $mr/2.] [expr $mr/2.];
set corX [expr $corX+[lindex $Le [expr $spanCount-1]]];
lappend deckEndNodes $nodeTag;
set nodalWght [expr -$m*$g/2];
lappend deckNodalWghts $nodalWght;
} else {
if {$i == $bentNode} {
set m [expr ([lindex $M [expr $spanCount-1]]+[lindex $M $spanCount])/2];
set mr [expr ([lindex $Mr [expr $spanCount-1]]+[lindex $Mr $spanCount])/2];
set mt [expr ([lindex $Mt [expr $spanCount-1]]+[lindex $Mt $spanCount])/2];
node $nodeTag $corX $corY $corZ -mass $m $m $m $mt $mr $mr;
set bentNode [expr $bentNode+int([lindex $discrtX $spanCount])];
lappend bentNodes $nodeTag;
set spanCount [expr $spanCount+1];
set corX [expr $corX+[lindex $Le [expr $spanCount-1]]];
set nodalWght [expr -$m*$g];
lappend deckNodalWghts $nodalWght;
} else {
node $nodeTag $corX $corY $corZ -mass $m $m $m $mt $mr $mr;
set corX [expr $corX+[lindex $Le [expr $spanCount-1]]];
set nodalWght [expr -$m*$g];
lappend deckNodalWghts $nodalWght;
}
}
}
# -------- COLUMN NODES
set colBaseNodes "";
set colTipNodes "";
set plHingeLengths "";
set colNodalWghts "";
for {set i 1} {$i <= [expr [llength $X]-2]} {incr i} {
set nodeTag [expr 100*($i+1)];
set corX [lindex $X $i];
set corZ [expr -$colSpacing*($colpBent-1)/2.];
set Lc [lindex $colH $i];
set Lpl [expr 0.08*$Lc+0.022*$fy*$Dbar];
lappend plHingeLengths $Lpl;
set m [expr $rho*$Lc*$Ac/2.];
set mr [expr $rho*$Ac*pow($Lc,3)/24.];
set mt [expr $rho*$Icp*$Lc/2.];
for {set j 1} {$j <= $colpBent} {incr j} {
node [expr $nodeTag+int($j)] $corX [expr -$offset-$Lc] $corZ -mass $m $m $m $mr $mt $mr;
lappend colBaseNodes [expr $nodeTag+int($j)];
node [expr $nodeTag+10+int($j)] $corX [expr -$offset] $corZ -mass $m $m $m $mr $mt $mr;
lappend colTipNodes [expr $nodeTag+10+int($j)];
set corZ [expr $corZ+$colSpacing];
set colWght [expr -$m*$g];
lappend colNodalWghts $colWght;
}
}
# -------- BOUNDARY CONDITIONS
# At the Column Bases
if {$cpb == "single"} {
for {set i 1} {$i <= [llength $colBaseNodes]} {incr i} {
fix [lindex $colBaseNodes [expr $i-1]] 1 1 1 1 1 1;
}
} else {
for {set i 1} {$i <= [llength $colBaseNodes]} {incr i} {
fix [lindex $colBaseNodes [expr $i-1]] 1 1 1 0 0 0;
}
}
# At the Deck Ends
fix [lindex $deckEndNodes 0] 1 1 1 1 0 0;
fix [lindex $deckEndNodes 1] 0 1 1 1 0 0;
# -------- RIGID BENT CAP
for {set i 1} {$i <= [expr [llength $X]-2]} {incr i} {
set masterNodeTag [lindex $bentNodes [expr $i-1]];
for {set j 1} {$j <= $colpBent} {incr j} {
set slaveNodeTag [lindex $colTipNodes [expr $i*int($colpBent)-(int($colpBent)-$j+1)]];
rigidLink beam $masterNodeTag $slaveNodeTag;
}
}
# -------- UNIAXIAL MATERIAL FOR CONCRETE
uniaxialMaterial Concrete07 $ccTag $fcc $epscc $Ec $ft $epst $xp $xnc $rc;
uniaxialMaterial Concrete07 $ucTag $fc $epsc $Ec $ft $epst $xp $xnu $ru;
#uniaxialMaterial Concrete01 $ccTag $fcc $epscc $fccu $epsccu;
#uniaxialMaterial Concrete01 $ucTag $fc $epsc $fcu $epscu;
# -------- UNIAXIAL MATERIAL FOR STEEL
uniaxialMaterial Steel02 $sTag $fy $Es $b $R0 $cR1 $cR2;
# -------- CONCRETE COLUMN SECTION
set GJ [expr $Gc*$Jc];
set colSecTag 1;
section fiberSec $colSecTag -GJ $GJ {
patch circ $ccTag 10 10 0.0 0.0 0.0 0.52 0 360
patch circ $ucTag 10 2 0.0 0.0 0.52 0.61 0 360
layer circ $sTag 11 0.001 0.0 0.0 0.5021 8.18 171.82
layer circ $sTag 11 0.001 0.0 0.0 0.5021 188.18 351.82
}
# -------- GEOMETRIC TRANSFORMATION
set beamTrans 1;
set columnTrans 2;
geomTransf Linear $beamTrans 0 0 1;
geomTransf Linear $columnTrans 0 0 1;
# -------- DECK ELEMENTS
for {set i 1} {$i <= [expr $nodesDeck-1]} {incr i} {
element elasticBeamColumn $i [expr 100+$i] [expr 100+$i+1] $Ad $Ec $Gc $Jd $Idy $Idz $beamTrans;
}
# -------- COLUMN ELEMENTS
set colElements "";
for {set i 1} {$i <= [expr [llength $X]-2]} {incr i} {
set Lp [lindex $plHingeLengths [expr $i-1]];
for {set j 1} {$j <= $colpBent} {incr j} {
set iNode [lindex $colBaseNodes [expr $i*int($colpBent)-(int($colpBent)-$j+1)]];
set jNode [lindex $colTipNodes [expr $i*int($colpBent)-(int($colpBent)-$j+1)]];
set eleTag [expr 100*($i+1)+$j];
#element elasticBeamColumn $eleTag $iNode $jNode $Ac $Ec $Gc $Jc $Icy $Icz $columnTrans;
#element forceBeamColumn $eleTag $iNode $jNode 4 $colSecTag $columnTrans
element beamWithHinges $eleTag $iNode $jNode $colSecTag $Lp $colSecTag $Lp $Ec $Ac $Icz $Icy $Gc $Jc $columnTrans;
lappend colElements $eleTag;
}
}
# -------- GRAVITY LOADING
set GravTag 1;
set spanCur 1;
set dtGrav 0.1;
set Nsteps [expr int(1./$dtGrav)];
set tol 1.0e-8;
set NtestSteps 20;
pattern Plain $GravTag "Linear" {
for {set i 1} {$i <= $nodesDeck} {incr i} {
set nodeTag [expr 100+$i];
if {$nodeTag == [lindex $deckEndNodes 0]} {
set P [lindex $deckNodalWghts [expr $i-1]];
set l [lindex $Le [expr $spanCur-1]];
set w [expr -2.*$P/$l];
set Mz [expr -$w*pow($l,2)/12.];
load $nodeTag 0.0 $P 0.0 0.0 0.0 $Mz;
} elseif {$nodeTag == [lindex $deckEndNodes 1]} {
set P [lindex $deckNodalWghts [expr $i-1]];
set l [lindex $Le [expr $spanCur-1]];
set w [expr -2.*$P/$l];
set Mz [expr $w*pow($l,2)/12.];
load $nodeTag 0.0 $P 0.0 0.0 0.0 $Mz;
} elseif {$nodeTag == [lindex $bentNodes [expr $spanCur-1]]} {
set P [lindex $deckNodalWghts [expr $i-1]];
set P1 [lindex $deckNodalWghts [expr $i-2]];
set P2 [lindex $deckNodalWghts [expr $i]];
set l1 [lindex $Le [expr $spanCur-1]];
set l2 [lindex $Le [expr $spanCur]];
set w1 [expr -$P1/$l1];
set w2 [expr -$P2/$l2];
set M1z [expr $w1*pow($l1,2)/12.];
set M2z [expr $w2*pow($l2,2)/12.];
load $nodeTag 0.0 $P 0.0 0.0 0.0 [expr $M1z-$M2z];
set spanCur [expr $spanCur+1];
} else {
set P [lindex $deckNodalWghts [expr $i-1]];
load $nodeTag 0.0 $P 0.0 0.0 0.0 0.0;
}
}
for {set j 1} {$j <= [llength $colTipNodes]} {incr j} {
set nodeTag [lindex $colTipNodes [expr $j-1]];
set P [lindex $colNodalWghts [expr $j-1]];
load $nodeTag 0.0 $P 0.0 0.0 0.0 0.0;
}
}
# -------- GRAVITY LOADING ANALYSES
constraints Transformation
numberer RCM
system BandGeneral
test EnergyIncr $tol $NtestSteps
algorithm Newton
integrator LoadControl $dtGrav
analysis Static
analyze $Nsteps
wipeAnalysis
loadConst -time 0.0;
Moment values at the pin-based columns
Moderators: silvia, selimgunay, Moderators
Re: Moment values at the pin-based columns
Hi,
How did you check the column moments ?
I added element recorders and I tried to run your model. For each element, there is zero moment at the lower end (which are pinned) and some moment were present in the top end ...
Try to record the reactions at the base nodes also. If the columns are pinned, then you will see zero moment reactions at the base nodes...
Thanks,
Jeena
How did you check the column moments ?
I added element recorders and I tried to run your model. For each element, there is zero moment at the lower end (which are pinned) and some moment were present in the top end ...
Try to record the reactions at the base nodes also. If the columns are pinned, then you will see zero moment reactions at the base nodes...
Thanks,
Jeena
Re: Moment values at the pin-based columns
Hi Jeena,
Thanks for reply. I was actually getting moment values at the base nodes that are pinned in dynamic analysis. I figured out that I assigned translational and rotational masses to the pinned base ends. That's why, I was getting small moment values at the base nodes when I ran my model with a ground motion.
Thanks for reply. I was actually getting moment values at the base nodes that are pinned in dynamic analysis. I figured out that I assigned translational and rotational masses to the pinned base ends. That's why, I was getting small moment values at the base nodes when I ran my model with a ground motion.
-
- Posts: 1
- Joined: Thu Nov 12, 2015 3:19 pm
- Location: PRAIRIE VIEW A&M UNIVERSITY
Re: Moment values at the pin-based columns
Hi,
I am currently working on a school project that requires me to analyse an entire bridge. I looked in the forum and found this bridge that I will be using as an example. I read the tcl script and a lot of things are very confusing to me. I am also new to Opensees and I am asking for help if you guys don't mind.
I am currently working on a school project that requires me to analyse an entire bridge. I looked in the forum and found this bridge that I will be using as an example. I read the tcl script and a lot of things are very confusing to me. I am also new to Opensees and I am asking for help if you guys don't mind.