"eleLoad" command not working with "forceBeamColumn" 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
SINHA
Posts: 12
Joined: Tue May 02, 2017 10:47 pm
Location: IIT Roorkee

"eleLoad" command not working with "forceBeamColumn" element

Post by SINHA » Mon Aug 21, 2017 5:24 am

wipe
wipe all

model BasicBuilder -ndm 3 -ndf 6;

# Create Nodes
# Command: node $nodeTag $X $Y $Z
node 1 0 0 0;
node 2 5 0 0;
node 3 0 0 5;
node 4 5 0 5;
node 5 0 4 0;
node 6 5 4 0;
node 7 0 4 5;
node 8 5 4 5;

# Fixing base nodes

fix 1 1 1 1 1 1 1;
fix 2 1 1 1 1 1 1;
fix 3 1 1 1 1 1 1;
fix 4 1 1 1 1 1 1;

# Define mass to nodes

mass 5 1000 1000 1000 0 0 0;
mass 6 1000 1000 1000 0 0 0;
mass 7 1000 1000 1000 0 0 0;
mass 8 1000 1000 1000 0 0 0;

# Define materials for force columns

# CONCRETE tag f'c ec0 f'cu ecu
# Core concrete (confined)
uniaxialMaterial Concrete01 1 -44.0e6 -0.004 -36.0 -0.014

# Cover concrete (unconfined)
uniaxialMaterial Concrete01 2 -44.0e6 -0.004 1.0 -0.006

# STEEL
# Reinforcing steel
set fy 500e6; # Yield stress
set Es 200e9; # Young's modulus
set dia 25e-3; # Diameter of the Reinforcing bar
set steelTagCol 3;
# tag fy E0 b
uniaxialMaterial Steel01 $steelTagCol $fy $Es $dia

# Define cross-section for nonlinear columns
# set some paramaters
set Width 0.5
set Depth 0.5

set cover 0.04;
set As 3927e-6; # area of no. 8 bars

set secID 1; # section tag for section fibre

# some variables derived from the parameters
set y1 [expr $Depth/2.0]
set z1 [expr $Width/2.0]

section Fiber $secID {

# Create the concrete core fibers
patch rect 1 10 1 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover]

# Create the concrete cover fibers (top, bottom, left, right)
patch rect 2 10 1 [expr -$y1] [expr $z1-$cover] $y1 $z1
patch rect 2 10 1 [expr -$y1] [expr -$z1] $y1 [expr $cover-$z1]
patch rect 2 2 1 [expr -$y1] [expr $cover-$z1] [expr $cover-$y1] [expr $z1-$cover]
patch rect 2 2 1 [expr $y1-$cover] [expr $cover-$z1] $y1 [expr $z1-$cover]

# Create the reinforcing fibers (left, middle, right)
layer straight 3 3 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
layer straight 3 2 $As 0.0 [expr $z1-$cover] 0.0 [expr $cover-$z1]
layer straight 3 3 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]

}

# set up geometric transformation of element

set TransfTag 1;
geomTransf Linear $TransfTag 0 0 -1; # PDelta Transformation

set NumIntgrPts 5; # Number of Integration Points

# Define Column elements

element forceBeamColumn 1 1 5 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 2 2 6 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 3 3 7 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 4 4 8 $NumIntgrPts $secID $TransfTag;



# set up geometric transformation of beam element

set TransfTag 2;
geomTransf Linear $TransfTag 0 1 0; # PDelta Transformation

set NumIntgrPts 5; # Number of Integration Points

# Define beam elements

element forceBeamColumn 5 5 6 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 6 6 8 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 7 7 8 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 8 5 7 $NumIntgrPts $secID $TransfTag; # columns

# Define recorders

recorder Element -file BeamForce.out -time -eleRange 5 8 force;
recorder Node -file NodeReaction.out -time -nodeRange 1 4 -dof 1 2 3 reaction;
recorder Element -file ColForce.out -time -ele 1 2 3 4 force;

# Define gravity load

pattern Plain 1 Linear {

eleLoad -ele 1 -type -beamUniform 0 0 -100e3;
eleLoad -ele 2 -type -beamUniform 0 0 -100e3;
eleLoad -ele 3 -type -beamUniform 0 0 -100e3;
eleLoad -ele 4 -type -beamUniform 0 0 -100e3;
eleLoad -ele 5 -type -beamUniform -100e3 0;
eleLoad -ele 6 -type -beamUniform -100e3 0;
eleLoad -ele 7 -type -beamUniform -100e3 0;
eleLoad -ele 8 -type -beamUniform -100e3 0;


}

# Gravity Analysis Parameters (load-controlled static analysis)

set Tol 1.0e-8; # convergence tolerance for test


constraints Plain; # how it handles boundary conditions
numberer RCM; # 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 (large model: try UmfPack)
test EnergyIncr $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.0/$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

loadConst -time 0.0 # maintain constant gravity loads and reset time to zero

puts "Model Built and Gravity Analysis done"

##########################################

Output for this script i.e. Node Displacement, Column Force etc.. is showing zero, whatever load is applied.

please anyone help me.

selimgunay
Posts: 913
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: "eleLoad" command not working with "forceBeamColumn" ele

Post by selimgunay » Mon Aug 21, 2017 10:49 pm

Could you try it with nodal loads to identify whether it is due to the eleload or something else in the model or the recorders?

SINHA
Posts: 12
Joined: Tue May 02, 2017 10:47 pm
Location: IIT Roorkee

Re: "eleLoad" command not working with "forceBeamColumn" ele

Post by SINHA » Tue Aug 22, 2017 6:18 am

Yes nodal load is working properly but element load is not working. Actually elemental load is not working with any of nonlinear type of element.

selimgunay
Posts: 913
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: "eleLoad" command not working with "forceBeamColumn" ele

Post by selimgunay » Wed Aug 23, 2017 12:33 am

I think your syntax is not correct for elements 5 to 8. I tried it for elements 1 to 4 and it works fine. Below script works.

wipe
wipe all

model BasicBuilder -ndm 3 -ndf 6;

# Create Nodes
# Command: node $nodeTag $X $Y $Z
node 1 0 0 0;
node 2 5 0 0;
node 3 0 0 5;
node 4 5 0 5;
node 5 0 4 0;
node 6 5 4 0;
node 7 0 4 5;
node 8 5 4 5;

# Fixing base nodes

fix 1 1 1 1 1 1 1;
fix 2 1 1 1 1 1 1;
fix 3 1 1 1 1 1 1;
fix 4 1 1 1 1 1 1;

# Define mass to nodes

mass 5 1000 1000 1000 0 0 0;
mass 6 1000 1000 1000 0 0 0;
mass 7 1000 1000 1000 0 0 0;
mass 8 1000 1000 1000 0 0 0;

# Define materials for force columns

# CONCRETE tag f'c ec0 f'cu ecu
# Core concrete (confined)
uniaxialMaterial Concrete01 1 -44.0e6 -0.004 -36.0 -0.014

# Cover concrete (unconfined)
uniaxialMaterial Concrete01 2 -44.0e6 -0.004 1.0 -0.006

# STEEL
# Reinforcing steel
set fy 500e6; # Yield stress
set Es 200e9; # Young's modulus
set dia 25e-3; # Diameter of the Reinforcing bar
set steelTagCol 3;
# tag fy E0 b
uniaxialMaterial Steel01 $steelTagCol $fy $Es $dia

# Define cross-section for nonlinear columns
# set some paramaters
set Width 0.5
set Depth 0.5

set cover 0.04;
set As 3927e-6; # area of no. 8 bars

set secID 1; # section tag for section fibre

# some variables derived from the parameters
set y1 [expr $Depth/2.0]
set z1 [expr $Width/2.0]

section Fiber $secID {

# Create the concrete core fibers
patch rect 1 10 1 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover]

# Create the concrete cover fibers (top, bottom, left, right)
patch rect 2 10 1 [expr -$y1] [expr $z1-$cover] $y1 $z1
patch rect 2 10 1 [expr -$y1] [expr -$z1] $y1 [expr $cover-$z1]
patch rect 2 2 1 [expr -$y1] [expr $cover-$z1] [expr $cover-$y1] [expr $z1-$cover]
patch rect 2 2 1 [expr $y1-$cover] [expr $cover-$z1] $y1 [expr $z1-$cover]

# Create the reinforcing fibers (left, middle, right)
layer straight 3 3 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
layer straight 3 2 $As 0.0 [expr $z1-$cover] 0.0 [expr $cover-$z1]
layer straight 3 3 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]

}

# set up geometric transformation of element

set TransfTag 1;
geomTransf Linear $TransfTag 0 0 -1; # PDelta Transformation

set NumIntgrPts 5; # Number of Integration Points

# Define Column elements

element forceBeamColumn 1 1 5 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 2 2 6 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 3 3 7 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 4 4 8 $NumIntgrPts $secID $TransfTag;



# set up geometric transformation of beam element

set TransfTag 2;
geomTransf Linear $TransfTag 0 1 0; # PDelta Transformation

set NumIntgrPts 5; # Number of Integration Points

# Define beam elements

element forceBeamColumn 5 5 6 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 6 6 8 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 7 7 8 $NumIntgrPts $secID $TransfTag;
element forceBeamColumn 8 5 7 $NumIntgrPts $secID $TransfTag; # columns

# Define recorders

recorder Element -file BeamForce.out -time -eleRange 5 8 force;
recorder Node -file NodeReaction.out -time -nodeRange 1 4 -dof 1 2 3 reaction;
recorder Element -file ColForce.out -time -ele 1 2 3 4 force;

# Define gravity load

pattern Plain 1 Linear {




eleLoad -ele 1 -type -beamUniform 0.0 0.0 -3000.0;
eleLoad -ele 2 -type -beamUniform 0.0 0.0 -3000.0;
eleLoad -ele 3 -type -beamUniform 0.0 0.0 -3000.0;
eleLoad -ele 4 -type -beamUniform 0.0 0.0 -3000.0;
}

# Gravity Analysis Parameters (load-controlled static analysis)

set Tol 1.0e-8; # convergence tolerance for test


constraints Plain; # how it handles boundary conditions
numberer RCM; # 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 (large model: try UmfPack)
test EnergyIncr $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.0/$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

loadConst -time 0.0 # maintain constant gravity loads and reset time to zero

puts "Model Built and Gravity Analysis done"

SINHA
Posts: 12
Joined: Tue May 02, 2017 10:47 pm
Location: IIT Roorkee

Re: "eleLoad" command not working with "forceBeamColumn" ele

Post by SINHA » Fri Aug 25, 2017 10:36 pm

I have copied above written script and run it. But all the result is showing Zero. Can you check it again please and if you got any result other than zero please upload that result too. Thank you.

gkourpa
Posts: 1
Joined: Mon Jul 10, 2017 1:13 am
Location: University of Patras

Re: "eleLoad" command not working with "forceBeamColumn" ele

Post by gkourpa » Tue Sep 19, 2017 4:48 am

I have exactly the same problem as SINHA has posted. The command eleLoad simply does not work with forceBeamColumn (or any other nonlinear element). Also in my model, if I substitute the nonlinear elements with simple elastic ones, the command works fine. When the forceBeamColumn is used however (in the exact same model) all nodal displacements and element forces are zero!

I even checked this with the example provided here: http://opensees.berkeley.edu/wiki/index ... _W-Section
and exactly the same happens if you run only the gravity loads. Zero displacements everywhere!

It is also important to say that when I print all the domain information, then the correct elemental loads that I have input are shown. It is the element itself that does not take account of the elemental loads correctly.

After digging into the source code I found that the the member function addLoad for the ForceBeamColumn3d element has two implementations, one of which has been commented out and the other is active (but much shorter than the same implementation for the ElasticBeam3d element, which I used as a reference). Therefore, I am quite confident that the problem should reside in that part of the code. After rebuilding the program using the commented implementations guess what it worked and I got deformations!

Of course, I am sure that the developers had a reason to change the implementation of the function, but anywhay at least until getting a reply, this should work for you two.

duguyihan
Posts: 13
Joined: Wed Dec 02, 2015 4:05 am
Location: Hunan University

Re: "eleLoad" command not working with "forceBeamColumn" ele

Post by duguyihan » Sun Oct 15, 2017 4:42 pm

The post by gkourpa is great!
I'd like to mention that actually dispBeamColumn element can be assigned with eleload and reasonable results can be obtained in 3D frame structural analysis. However, forceBeamColumn element with eleload just shows "0"!. Really hope this bug will be fixed in the future.

jazzieman
Posts: 6
Joined: Thu Jul 09, 2020 4:18 pm
Location: Mayaguez, Puerto Rico

Re: "eleLoad" command not working with "forceBeamColumn" element

Post by jazzieman » Sat May 22, 2021 7:34 am

I'm currently working on a 3d frame on openseespy and I'm having the same problem. I'm getting zeros in forces/reaction after applying 'beamUniform' load to a forcebeamcolumn.
Alan Rivera
Ph.D. Candidate Structural Engineering
University of Puerto Rico, Mayaguez Campus

Post Reply