Hi,
I've been considering to apply the mass of my structure using the <-mass $massDens> option of the Force-Based Beam-Column Element in OpenSees 2.3.2.
My idea is to use this option together with an applied constant acceleration (gravity) and thus calculating and defining the mass for each node of the model will not be necessary - I have a rather big model, so all possibilities to rule out errors is welcome. This solution is essentially the same as that of foxchameleon (http://opensees.berkeley.edu/community/ ... =2&t=47048)
According to the wiki (http://opensees.berkeley.edu/wiki/index ... mn_Element) this should be an easy way to incorporate the dead load, since the mass defined this way is lumped in the mass matrix.
I checked the idea on a 2D horizontal cantilever comparing a model where a mass is defined on the free end to a model where no nodal mass is defined but the unit length mass is defined using the <-mass> option.
For the model with the nodal mass defined the results are the same as that obtained from a hand calculation.
For the model where the dead load of the member is given using the <-mass > option all results are zero - as if no load was applied, as if the masses were not lumped.
I tried following syntaxes:
element forceBeamColumn 1 1 2 10 201 1 -mass $mas;
element forceBeamColumn 1 1 2 10 201 1 -mass $mas $mas $mas;
The value of the variable mas was chosen to be a) realistic, b) very small, c) very big, even d) negative - still no displacements, neither internal actions.
Does anybody know for sure if this -mass option does not work or am I doing something wrong?
force based element, element mass density (per unit length)
Moderators: silvia, selimgunay, Moderators
Re: force based element, element mass density (per unit leng
Here is an example of an elastic FB cantilever column that shows that no matter which way you define the mass (nodal or distributed), the same mass matrix is formed and the results of the analysis are the same.
#units: kip,in
wipe
# define UNITS ----------------------------------------------------------------------------
set in 1.; # define basic units -- output units
set kip 1.; # define basic units -- output units
set sec 1.; # define basic units -- output units
set ft [expr 12.*$in]; # define engineering units
set ksi [expr $kip/pow($in,2)];
set psi [expr $ksi/1000.];
set lbf [expr $psi*$in*$in]; # pounds force
set pcf [expr $lbf/pow($ft,3)]; # pounds per cubic foot
set PI [expr 2*asin(1.0)]; # define constants
set g [expr 32.2*$ft/pow($sec,2)]; # gravitational acceleration
# ------------------------------
# Start of model generation
# ------------------------------
# create ModelBuilder (with 2-dimensions and 3 DOF/node)
model BasicBuilder -ndm 2 -ndf 3
#input parameters
set HCol [expr 96.*$in]; #column height
set DCol [expr 24.*$in]; #column diameter
set clearCover [expr 0.75*$in]; #clear cover of concrete
#derived quantities
set ACol [expr $DCol**2*$PI/4.0]; #area of the column cross-section
#mass
set gama [expr 150.*$pcf]
set Mass [expr $gama*$ACol*$HCol/2.]
set massDens [expr $gama*$ACol]
# Define geometry for model
# -------------------------
#node $tag $xCrd $yCrd
node 1 0.0 0.0
node 2 0.0 $HCol
#node 2 0.0 $HCol -mass $Mass $Mass 0.0
# set the boundary conditions
# fix tag DX DY Rot
fix 1 1 1 1
# Define coordinate transformation
# --------------------------------
set transfTag 1
# geomTransf Linear $transfTag
# geomTransf PDelta $transfTag
geomTransf Corotational $transfTag
#------------------------------------------------------
# Define uniaxial material
#--------------------------------------------------------
set matTag 1
set fc [expr 4.0*$ksi];
set Ec [expr 57000.*sqrt($fc*1000.)/1000.]; # the formula from ACI building code
uniaxialMaterial Elastic $matTag $Ec
#-----------------------
#Define Section
#-----------------------
set secnTag 1
set nfT 12
set nfR 8
set ro [expr $DCol/2.0]; #radius of the column cross-section
# define circular fiber section
section fiberSec $secnTag {
patch circ $matTag $nfT $nfR 0 0 0 $ro 0.0 360.0
}
#------------------------------
# Define elements
# -----------------------------
set nIP 5
#element forceBeamColumn 1 1 2 $nIP $secnTag $transfTag
element forceBeamColumn 1 1 2 $nIP $secnTag $transfTag -mass $massDens
#---------------------------------------------
# Modal analysis
#---------------------------------------------
set numModes 2
set lambda [eigen -fullGenLapack $numModes];
set omega {}
set T {}
set pi 3.141593
foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend T [expr (2*$pi)/sqrt($lam)]
}
puts "PERIODS: $T"
#units: kip,in
wipe
# define UNITS ----------------------------------------------------------------------------
set in 1.; # define basic units -- output units
set kip 1.; # define basic units -- output units
set sec 1.; # define basic units -- output units
set ft [expr 12.*$in]; # define engineering units
set ksi [expr $kip/pow($in,2)];
set psi [expr $ksi/1000.];
set lbf [expr $psi*$in*$in]; # pounds force
set pcf [expr $lbf/pow($ft,3)]; # pounds per cubic foot
set PI [expr 2*asin(1.0)]; # define constants
set g [expr 32.2*$ft/pow($sec,2)]; # gravitational acceleration
# ------------------------------
# Start of model generation
# ------------------------------
# create ModelBuilder (with 2-dimensions and 3 DOF/node)
model BasicBuilder -ndm 2 -ndf 3
#input parameters
set HCol [expr 96.*$in]; #column height
set DCol [expr 24.*$in]; #column diameter
set clearCover [expr 0.75*$in]; #clear cover of concrete
#derived quantities
set ACol [expr $DCol**2*$PI/4.0]; #area of the column cross-section
#mass
set gama [expr 150.*$pcf]
set Mass [expr $gama*$ACol*$HCol/2.]
set massDens [expr $gama*$ACol]
# Define geometry for model
# -------------------------
#node $tag $xCrd $yCrd
node 1 0.0 0.0
node 2 0.0 $HCol
#node 2 0.0 $HCol -mass $Mass $Mass 0.0
# set the boundary conditions
# fix tag DX DY Rot
fix 1 1 1 1
# Define coordinate transformation
# --------------------------------
set transfTag 1
# geomTransf Linear $transfTag
# geomTransf PDelta $transfTag
geomTransf Corotational $transfTag
#------------------------------------------------------
# Define uniaxial material
#--------------------------------------------------------
set matTag 1
set fc [expr 4.0*$ksi];
set Ec [expr 57000.*sqrt($fc*1000.)/1000.]; # the formula from ACI building code
uniaxialMaterial Elastic $matTag $Ec
#-----------------------
#Define Section
#-----------------------
set secnTag 1
set nfT 12
set nfR 8
set ro [expr $DCol/2.0]; #radius of the column cross-section
# define circular fiber section
section fiberSec $secnTag {
patch circ $matTag $nfT $nfR 0 0 0 $ro 0.0 360.0
}
#------------------------------
# Define elements
# -----------------------------
set nIP 5
#element forceBeamColumn 1 1 2 $nIP $secnTag $transfTag
element forceBeamColumn 1 1 2 $nIP $secnTag $transfTag -mass $massDens
#---------------------------------------------
# Modal analysis
#---------------------------------------------
set numModes 2
set lambda [eigen -fullGenLapack $numModes];
set omega {}
set T {}
set pi 3.141593
foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend T [expr (2*$pi)/sqrt($lam)]
}
puts "PERIODS: $T"
Re: force based element, element mass density (per unit leng
Thank you, Vesna.
I did not point it out, but my aim is/was to use this approach to model the dead load of the structure to use it in a static analysis. If I understand correctly, your answer means the masses defined using the <-mass> option are not included in the load vector.
Anyway, since then I solved the problem by writing an algorithm to calculate the masses for the nodes and applying these using the mass command, plus adding the gravity - this works quite well.
Thanks again.
I did not point it out, but my aim is/was to use this approach to model the dead load of the structure to use it in a static analysis. If I understand correctly, your answer means the masses defined using the <-mass> option are not included in the load vector.
Anyway, since then I solved the problem by writing an algorithm to calculate the masses for the nodes and applying these using the mass command, plus adding the gravity - this works quite well.
Thanks again.