EqualDOF and axial deformation (please help me)
Moderators: silvia, selimgunay, Moderators
EqualDOF and axial deformation (please help me)
I’m working on a push-over analysis for a simple concrete frame (1 floor and 1 bay).
It should be suitable that same horizontal displacement occurs at the floor nodes. I got it using an EqualDof constrain. A singular situation arouses when I looked at analysis results: a no zero axial deformation for beam element is evaluated. How is it possible ?
Here is my script, please help me. Thanks in advance.
#Frame
source UnitàDiMisura.tcl
model BasicBuilder -ndm 2 -ndf 3
node 1 0.00 0.00
node 2 0.00 4.55 -mass 55290 0.0 0.0
node 3 11.7 4.55 -mass 68830 0.0 0.0
node 4 11.7 0.00
fix 1 1 1 1
fix 4 1 1 1
equalDOF 2 3 1
source Materiali.tcl
source SezioniCA.tcl
SezioniCA 1 0.6 0.4 0.03 2 1 7 7 0 0.000201 0.0 20 15 20 15;
SezioniCA 2 0.6 0.4 0.03 2 1 7 3 0 0.000201 0.0 20 15 20 15;
source TraveCA.tcl
TraveCA 3 0.5 0.4 0.03 4 1 7 5 3 0.000201 0.000201 18 15 18 15;
geomTransf PDelta 1
set intP 5
set nIter 1000
set tol 1.0e-16
#Colonne
element nonlinearBeamColumn 1 1 2 $intP 1 1 -iter $nIter $tol;
element nonlinearBeamColumn 2 4 3 $intP 2 1 -iter $nIter $tol;
#
set intT 5
set nIterT 1000
set tolT 1.0e-16
geomTransf PDelta 2
element nonlinearBeamColumn 4 2 3 $intT 3 2 -iter $nIterT $tolT;
#Carichi Verticali
pattern Plain 1 Constant {
load 2 0.0 -208.48 0.0
load 3 0.0 -252.43 0.0
}
system ProfileSPD
constraints Plain
test NormDispIncr 1.0e-6 1000 1
algorithm Newton
numberer RCM
integrator LoadControl 1
analysis Static
analyze 1;
loadConst -time 0.0;
pattern Plain 2 Linear {;
load 2 1.0 0.0 0.0
}
set numSteps 1000
set Fmax [expr 1000]
system ProfileSPD
constraints Plain
test NormDispIncr 1.0e-6 1000 1
algorithm Newton
numberer RCM
integrator LoadControl [expr $Fmax/$numSteps] 1 [expr $Fmax/$numSteps] [expr $Fmax/$numSteps];
analysis Static
#calcolo autovalori
recorder Node -file ReazioniVincoli.out -time -node 1 4 -dof 1 2 3 reaction;
recorder Node -file nodo2.out -time -node 2 3 4 -dof 1 disp;
recorder Element -file IOrdDiColonne.out -time -ele 1 2 globalForce;
recorder Element -file ILivTravi.out -time -ele 3 globalForce;
recorder Element -file ColonneIOrdFp.out -time -ele 1 2 3 4 5 section 1 force;
recorder Element -file ColonneIOrdDp.out -time -ele 1 2 3 4 5 section 1 deformation;
recorder Element -file ColonneIOrdFt.out -time -ele 1 2 3 4 5 section 5 force;
recorder Element -file ColonneIOrdDt.out -time -ele 1 2 3 4 5 section 5 deformation;
recorder Element -file LegameCostP35p_I_Ord(Inf_C).out -time -ele 1 section 1 fiber -0.3 0.0 stressStrain;
recorder Element -file LegameCostP35p_I_Ord(Inf_A).out -time -ele 1 section 1 fiber -0.27 0.0 stressStrain;
recorder Element -file LegameCostP35p_I_Ord(Sup_C).out -time -ele 1 section 1 fiber 0.3 0.0 stressStrain;
recorder Element -file LegameCostP35p_I_Ord(Sup_A).out -time -ele 1 section 1 fiber 0.27 0.0 stressStrain;
recorder Element -file LegameCostP35t_I_Ord(Inf_C).out -time -ele 1 section 5 fiber -0.3 0.0 stressStrain;
recorder Element -file LegameCostP35t_I_Ord(Inf_A).out -time -ele 1 section 5 fiber -0.27 0.0 stressStrain;
recorder Element -file LegameCostP35t_I_Ord(Sup_C).out -time -ele 1 section 5 fiber 0.3 0.0 stressStrain;
recorder Element -file LegameCostP35t_I_Ord(Sup_A).out -time -ele 1 section 5 fiber 0.27 0.0 stressStrain;
recorder Element -file LegameCostP36p_I_Ord(Inf_C).out -time -ele 2 section 1 fiber -0.3 0.0 stressStrain;
recorder Element -file LegameCostP36p_I_Ord(Inf_A).out -time -ele 2 section 1 fiber -0.27 0.0 stressStrain;
recorder Element -file LegameCostP36p_I_Ord(Sup_C).out -time -ele 2 section 1 fiber 0.3 0.0 stressStrain;
recorder Element -file LegameCostP36p_I_Ord(Sup_A).out -time -ele 2 section 1 fiber 0.27 0.0 stressStrain;
recorder Element -file LegameCostP36t_I_Ord(Inf_C).out -time -ele 2 section 5 fiber -0.3 0.0 stressStrain;
recorder Element -file LegameCostP36t_I_Ord(Inf_A).out -time -ele 2 section 5 fiber -0.27 0.0 stressStrain;
recorder Element -file LegameCostP36t_I_Ord(Sup_C).out -time -ele 2 section 5 fiber 0.3 0.0 stressStrain;
recorder Element -file LegameCostP36t_I_Ord(Sup_A).out -time -ele 2 section 5 fiber 0.27 0.0 stressStrain;
recorder Element -file LegameCostT35d_I_Ord(Inf_C).out -time -ele 3 section 1 fiber -0.25 0.0 stressStrain;
recorder Element -file LegameCostT35d_I_Ord(Inf_A).out -time -ele 3 section 1 fiber -0.22 0.0 stressStrain;
recorder Element -file LegameCostT35d_I_Ord(Sup_C).out -time -ele 3 section 1 fiber 0.25 0.0 stressStrain;
recorder Element -file LegameCostT35d_I_Ord(Sup_A).out -time -ele 3 section 1 fiber 0.22 0.0 stressStrain;
#Comando di analisi
analyze $numSteps;
P.S.: I use Opensees version 1.7.1 and I performed my analysis with the following materials: concrete04 and steel02.
It should be suitable that same horizontal displacement occurs at the floor nodes. I got it using an EqualDof constrain. A singular situation arouses when I looked at analysis results: a no zero axial deformation for beam element is evaluated. How is it possible ?
Here is my script, please help me. Thanks in advance.
#Frame
source UnitàDiMisura.tcl
model BasicBuilder -ndm 2 -ndf 3
node 1 0.00 0.00
node 2 0.00 4.55 -mass 55290 0.0 0.0
node 3 11.7 4.55 -mass 68830 0.0 0.0
node 4 11.7 0.00
fix 1 1 1 1
fix 4 1 1 1
equalDOF 2 3 1
source Materiali.tcl
source SezioniCA.tcl
SezioniCA 1 0.6 0.4 0.03 2 1 7 7 0 0.000201 0.0 20 15 20 15;
SezioniCA 2 0.6 0.4 0.03 2 1 7 3 0 0.000201 0.0 20 15 20 15;
source TraveCA.tcl
TraveCA 3 0.5 0.4 0.03 4 1 7 5 3 0.000201 0.000201 18 15 18 15;
geomTransf PDelta 1
set intP 5
set nIter 1000
set tol 1.0e-16
#Colonne
element nonlinearBeamColumn 1 1 2 $intP 1 1 -iter $nIter $tol;
element nonlinearBeamColumn 2 4 3 $intP 2 1 -iter $nIter $tol;
#
set intT 5
set nIterT 1000
set tolT 1.0e-16
geomTransf PDelta 2
element nonlinearBeamColumn 4 2 3 $intT 3 2 -iter $nIterT $tolT;
#Carichi Verticali
pattern Plain 1 Constant {
load 2 0.0 -208.48 0.0
load 3 0.0 -252.43 0.0
}
system ProfileSPD
constraints Plain
test NormDispIncr 1.0e-6 1000 1
algorithm Newton
numberer RCM
integrator LoadControl 1
analysis Static
analyze 1;
loadConst -time 0.0;
pattern Plain 2 Linear {;
load 2 1.0 0.0 0.0
}
set numSteps 1000
set Fmax [expr 1000]
system ProfileSPD
constraints Plain
test NormDispIncr 1.0e-6 1000 1
algorithm Newton
numberer RCM
integrator LoadControl [expr $Fmax/$numSteps] 1 [expr $Fmax/$numSteps] [expr $Fmax/$numSteps];
analysis Static
#calcolo autovalori
recorder Node -file ReazioniVincoli.out -time -node 1 4 -dof 1 2 3 reaction;
recorder Node -file nodo2.out -time -node 2 3 4 -dof 1 disp;
recorder Element -file IOrdDiColonne.out -time -ele 1 2 globalForce;
recorder Element -file ILivTravi.out -time -ele 3 globalForce;
recorder Element -file ColonneIOrdFp.out -time -ele 1 2 3 4 5 section 1 force;
recorder Element -file ColonneIOrdDp.out -time -ele 1 2 3 4 5 section 1 deformation;
recorder Element -file ColonneIOrdFt.out -time -ele 1 2 3 4 5 section 5 force;
recorder Element -file ColonneIOrdDt.out -time -ele 1 2 3 4 5 section 5 deformation;
recorder Element -file LegameCostP35p_I_Ord(Inf_C).out -time -ele 1 section 1 fiber -0.3 0.0 stressStrain;
recorder Element -file LegameCostP35p_I_Ord(Inf_A).out -time -ele 1 section 1 fiber -0.27 0.0 stressStrain;
recorder Element -file LegameCostP35p_I_Ord(Sup_C).out -time -ele 1 section 1 fiber 0.3 0.0 stressStrain;
recorder Element -file LegameCostP35p_I_Ord(Sup_A).out -time -ele 1 section 1 fiber 0.27 0.0 stressStrain;
recorder Element -file LegameCostP35t_I_Ord(Inf_C).out -time -ele 1 section 5 fiber -0.3 0.0 stressStrain;
recorder Element -file LegameCostP35t_I_Ord(Inf_A).out -time -ele 1 section 5 fiber -0.27 0.0 stressStrain;
recorder Element -file LegameCostP35t_I_Ord(Sup_C).out -time -ele 1 section 5 fiber 0.3 0.0 stressStrain;
recorder Element -file LegameCostP35t_I_Ord(Sup_A).out -time -ele 1 section 5 fiber 0.27 0.0 stressStrain;
recorder Element -file LegameCostP36p_I_Ord(Inf_C).out -time -ele 2 section 1 fiber -0.3 0.0 stressStrain;
recorder Element -file LegameCostP36p_I_Ord(Inf_A).out -time -ele 2 section 1 fiber -0.27 0.0 stressStrain;
recorder Element -file LegameCostP36p_I_Ord(Sup_C).out -time -ele 2 section 1 fiber 0.3 0.0 stressStrain;
recorder Element -file LegameCostP36p_I_Ord(Sup_A).out -time -ele 2 section 1 fiber 0.27 0.0 stressStrain;
recorder Element -file LegameCostP36t_I_Ord(Inf_C).out -time -ele 2 section 5 fiber -0.3 0.0 stressStrain;
recorder Element -file LegameCostP36t_I_Ord(Inf_A).out -time -ele 2 section 5 fiber -0.27 0.0 stressStrain;
recorder Element -file LegameCostP36t_I_Ord(Sup_C).out -time -ele 2 section 5 fiber 0.3 0.0 stressStrain;
recorder Element -file LegameCostP36t_I_Ord(Sup_A).out -time -ele 2 section 5 fiber 0.27 0.0 stressStrain;
recorder Element -file LegameCostT35d_I_Ord(Inf_C).out -time -ele 3 section 1 fiber -0.25 0.0 stressStrain;
recorder Element -file LegameCostT35d_I_Ord(Inf_A).out -time -ele 3 section 1 fiber -0.22 0.0 stressStrain;
recorder Element -file LegameCostT35d_I_Ord(Sup_C).out -time -ele 3 section 1 fiber 0.25 0.0 stressStrain;
recorder Element -file LegameCostT35d_I_Ord(Sup_A).out -time -ele 3 section 1 fiber 0.22 0.0 stressStrain;
#Comando di analisi
analyze $numSteps;
P.S.: I use Opensees version 1.7.1 and I performed my analysis with the following materials: concrete04 and steel02.
please include the supporting files.
still, i don't understand the question: you are imposing equal lateral displacement and are complaining that there is no axial deformation in the beam???
still, i don't understand the question: you are imposing equal lateral displacement and are complaining that there is no axial deformation in the beam???
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Thanks for reply.
Yes, I'm imposing that the ends of beam have same disp., but the beam have axial deformation. I expect that it is zero.
#Script UnitàDi Misura
#Grandezze fondamentali
set m 1.00; #unità di misura della lunghezza, metri
set sec 1.00; #unità di misura del tempo, secondi
set kN 1.00; #unità di misura della forza, kg massa
set k 1.00; #unità di misura della temperatura gradi kelvin
#Grandezze derivate
set mm [expr $m/1000];
set v [expr $m/$sec]; #velocità
set a [expr $m/ pow ($sec,2)]; #accelerazione
set frequenza [expr 1/$sec]; #frequenza, unità di misura hertz, Hz
set kgm [expr $kN/(1000*$a)]; #massa, kgmassa
set MPa [expr 1000*$kN/ pow ($m,2)]; #tensione in kiloPascal, ovvero in kN/m^2
#costanti
set PI [expr 2*asin(1.0)]; #pi greco
set g [expr 9.81*$a]; #accelerazione di gravità
#Script Materiali
#Calcestruzzo non confinato
set f01 [expr -33.5*$MPa];
set fu1 [expr -20.75*$MPa];
set Ec1 [expr 27400*$MPa];
uniaxialMaterial Concrete04 1 $f01 -0.0020 -0.0035 $Ec1 [expr 4.02*$MPa] 0.00015;
#Calcestruzzo confinato per pilastri 40x60 (staffe f8/15)
set f02 [expr -34.9*$MPa];
set fu2 [expr -29.9*$MPa];
set Ec2 [expr 27970*$MPa];
uniaxialMaterial Concrete04 2 $f02 -0.0020 -0.0042 $Ec2 [expr 4.2*$MPa] 0.00015;
#Calcestruzzo confinato per travi 40x50 (staffe f6/20)
set f04 [expr -34.1*$MPa];
set fu4 [expr -29.0*$MPa];
set Ec4 [expr 27640*$MPa];
uniaxialMaterial Concrete04 4 $f04 -0.0020 -0.0038 $Ec4 [expr 4.09*$MPa] 0.00015;
uniaxialMaterial Steel01 7 $fy $E0 0.0;
#Script Trave CA
# Definizione di una procedura che definisce sezione rettangolari in c.a. con armatura sia lungo il lato y che lungo quello z
# y
# |
# |
# |
# ---------------------
# |\ P5 /|
# | \°----°---°----°/ |
# | | As | |
# | | | |
# z ---------|P| P1 |P| h
# |3| |2|
# | | As | |
# | /°----°---°----°\ |
# |/ P4 \|
# ---------------------
# b
#
# Formal arguments
# id - tag for the section that is generated by this procedure
# h - overall height of the section (see above)
# b - overall width of the section (see above)
# cover - thickness of the cover patches
# coreID - material tag for the core patch
# coverID - material tag for the cover patches
# steelID - material tag for the reinforcing steel
# numBars - number of reinforcing bars on any given side of the section
# barArea - cross-sectional area of each reinforcing bar
# nfCoreY - number of fibers in the core patch in the y direction
# nfCoreZ - number of fibers in the core patch in the z direction
# nfCoverY - number of fibers in the cover patches with long sides in the y direction
# nfCoverZ - number of fibers in the cover patches with long sides in the z direction
#
# Notes
# The thickness of cover concrete is constant on all sides of the core.
# The number of bars is the same on any given side of the section.
# The reinforcing bars are all the same size.
# The number of fibers in the short direction of the cover patches is set to 1.
#
proc TraveCA {id h b cover coreID coverID steelID numBars numBars2 barArea barArea2 nfCoreY nfCoreZ nfCoverY nfCoverZ} {
# The distance from the section z-axis to the edge of the cover concrete
# in the positive y direction
set coverY [expr $h/2.0]
# The distance from the section y-axis to the edge of the cover concrete
# in the positive z direction
set coverZ [expr $b/2.0]
# The negative values of the two above
set ncoverY [expr -$coverY]
set ncoverZ [expr -$coverZ]
# Determine the corresponding values from the respective axes to the
# edge of the core concrete
set coreY [expr $coverY-$cover]
set coreZ [expr $coverZ-$cover]
set ncoreY [expr -$coreY]
set ncoreZ [expr -$coreZ]
# Define the fiber section
section fiberSec $id {
# Define the core patch
patch quadr $coreID $nfCoreZ $nfCoreY $ncoreY $coreZ $ncoreY $ncoreZ $coreY $ncoreZ $coreY $coreZ
# Define the four cover patches
patch quadr $coverID 1 $nfCoverY $ncoverY $coverZ $ncoreY $coreZ $coreY $coreZ $coverY $coverZ
patch quadr $coverID 1 $nfCoverY $ncoreY $ncoreZ $ncoverY $ncoverZ $coverY $ncoverZ $coreY $ncoreZ
patch quadr $coverID $nfCoverZ 1 $ncoverY $coverZ $ncoverY $ncoverZ $ncoreY $ncoreZ $ncoreY $coreZ
patch quadr $coverID $nfCoverZ 1 $coreY $coreZ $coreY $ncoreZ $coverY $ncoverZ $coverY $coverZ
# Define the steel along constant values of y (in the z direction)
layer straight $steelID $numBars $barArea $ncoreY $coreZ $ncoreY $ncoreZ
layer straight $steelID $numBars2 $barArea2 $coreY $coreZ $coreY $ncoreZ
}
}
#script SezioneCA
# Definizione di una procedura che definisce sezione rettangolari in c.a. con armatura sia lungo il lato y che lungo quello z
# y
# |
# |
# |
# ---------------------
# |\ P5 /|
# | \°----°---°----°/ |
# | ° As ° |
# | | | |
# z ---------|P°As2 P1 As2°P| h
# |3| |2|
# | ° As ° |
# | /°----°---°----°\ |
# |/ P4 \|
# ---------------------
# b
#
# Formal arguments
# id - tag for the section that is generated by this procedure
# h - overall height of the section (see above)
# b - overall width of the section (see above)
# cover - thickness of the cover patches
# coreID - material tag for the core patch
# coverID - material tag for the cover patches
# steelID - material tag for the reinforcing steel
# numBars - number of reinforcing bars on any given side of the section
# barArea - cross-sectional area of each reinforcing bar
# nfCoreY - number of fibers in the core patch in the y direction
# nfCoreZ - number of fibers in the core patch in the z direction
# nfCoverY - number of fibers in the cover patches with long sides in the y direction
# nfCoverZ - number of fibers in the cover patches with long sides in the z direction
#
# Notes
# The thickness of cover concrete is constant on all sides of the core.
# The number of bars is the same on any given side of the section.
# The reinforcing bars are all the same size.
# The number of fibers in the short direction of the cover patches is set to 1.
#
proc SezioniCA {id h b cover coreID coverID steelID numBars numBars2 barArea barArea2 nfCoreY nfCoreZ nfCoverY nfCoverZ} {
# The distance from the section z-axis to the edge of the cover concrete
# in the positive y direction
set coverY [expr $h/2.0]
# The distance from the section y-axis to the edge of the cover concrete
# in the positive z direction
set coverZ [expr $b/2.0]
# The negative values of the two above
set ncoverY [expr -$coverY]
set ncoverZ [expr -$coverZ]
# Determine the corresponding values from the respective axes to the
# edge of the core concrete
set coreY [expr $coverY-$cover]
set coreZ [expr $coverZ-$cover]
set ncoreY [expr -$coreY]
set ncoreZ [expr -$coreZ]
# Define the fiber section
section fiberSec $id {
# Define the core patch
patch quadr $coreID $nfCoreZ $nfCoreY $ncoreY $coreZ $ncoreY $ncoreZ $coreY $ncoreZ $coreY $coreZ
# Define the four cover patches
patch quadr $coverID 1 $nfCoverY $ncoverY $coverZ $ncoreY $coreZ $coreY $coreZ $coverY $coverZ
patch quadr $coverID 1 $nfCoverY $ncoreY $ncoreZ $ncoverY $ncoverZ $coverY $ncoverZ $coreY $ncoreZ
patch quadr $coverID $nfCoverZ 1 $ncoverY $coverZ $ncoverY $ncoverZ $ncoreY $ncoreZ $ncoreY $coreZ
patch quadr $coverID $nfCoverZ 1 $coreY $coreZ $coreY $ncoreZ $coverY $ncoverZ $coverY $coverZ
# Define the steel along constant values of y (in the z direction)
layer straight $steelID $numBars $barArea $ncoreY $coreZ $ncoreY $ncoreZ
layer straight $steelID $numBars $barArea $coreY $coreZ $coreY $ncoreZ
layer straight $steelID $numBars2 $barArea2 $coreY $ncoreZ $ncoreY $ncoreZ
layer straight $steelID $numBars2 $barArea2 $coreY $coreZ $ncoreY $coreZ
}
}
Yes, I'm imposing that the ends of beam have same disp., but the beam have axial deformation. I expect that it is zero.
#Script UnitàDi Misura
#Grandezze fondamentali
set m 1.00; #unità di misura della lunghezza, metri
set sec 1.00; #unità di misura del tempo, secondi
set kN 1.00; #unità di misura della forza, kg massa
set k 1.00; #unità di misura della temperatura gradi kelvin
#Grandezze derivate
set mm [expr $m/1000];
set v [expr $m/$sec]; #velocità
set a [expr $m/ pow ($sec,2)]; #accelerazione
set frequenza [expr 1/$sec]; #frequenza, unità di misura hertz, Hz
set kgm [expr $kN/(1000*$a)]; #massa, kgmassa
set MPa [expr 1000*$kN/ pow ($m,2)]; #tensione in kiloPascal, ovvero in kN/m^2
#costanti
set PI [expr 2*asin(1.0)]; #pi greco
set g [expr 9.81*$a]; #accelerazione di gravità
#Script Materiali
#Calcestruzzo non confinato
set f01 [expr -33.5*$MPa];
set fu1 [expr -20.75*$MPa];
set Ec1 [expr 27400*$MPa];
uniaxialMaterial Concrete04 1 $f01 -0.0020 -0.0035 $Ec1 [expr 4.02*$MPa] 0.00015;
#Calcestruzzo confinato per pilastri 40x60 (staffe f8/15)
set f02 [expr -34.9*$MPa];
set fu2 [expr -29.9*$MPa];
set Ec2 [expr 27970*$MPa];
uniaxialMaterial Concrete04 2 $f02 -0.0020 -0.0042 $Ec2 [expr 4.2*$MPa] 0.00015;
#Calcestruzzo confinato per travi 40x50 (staffe f6/20)
set f04 [expr -34.1*$MPa];
set fu4 [expr -29.0*$MPa];
set Ec4 [expr 27640*$MPa];
uniaxialMaterial Concrete04 4 $f04 -0.0020 -0.0038 $Ec4 [expr 4.09*$MPa] 0.00015;
uniaxialMaterial Steel01 7 $fy $E0 0.0;
#Script Trave CA
# Definizione di una procedura che definisce sezione rettangolari in c.a. con armatura sia lungo il lato y che lungo quello z
# y
# |
# |
# |
# ---------------------
# |\ P5 /|
# | \°----°---°----°/ |
# | | As | |
# | | | |
# z ---------|P| P1 |P| h
# |3| |2|
# | | As | |
# | /°----°---°----°\ |
# |/ P4 \|
# ---------------------
# b
#
# Formal arguments
# id - tag for the section that is generated by this procedure
# h - overall height of the section (see above)
# b - overall width of the section (see above)
# cover - thickness of the cover patches
# coreID - material tag for the core patch
# coverID - material tag for the cover patches
# steelID - material tag for the reinforcing steel
# numBars - number of reinforcing bars on any given side of the section
# barArea - cross-sectional area of each reinforcing bar
# nfCoreY - number of fibers in the core patch in the y direction
# nfCoreZ - number of fibers in the core patch in the z direction
# nfCoverY - number of fibers in the cover patches with long sides in the y direction
# nfCoverZ - number of fibers in the cover patches with long sides in the z direction
#
# Notes
# The thickness of cover concrete is constant on all sides of the core.
# The number of bars is the same on any given side of the section.
# The reinforcing bars are all the same size.
# The number of fibers in the short direction of the cover patches is set to 1.
#
proc TraveCA {id h b cover coreID coverID steelID numBars numBars2 barArea barArea2 nfCoreY nfCoreZ nfCoverY nfCoverZ} {
# The distance from the section z-axis to the edge of the cover concrete
# in the positive y direction
set coverY [expr $h/2.0]
# The distance from the section y-axis to the edge of the cover concrete
# in the positive z direction
set coverZ [expr $b/2.0]
# The negative values of the two above
set ncoverY [expr -$coverY]
set ncoverZ [expr -$coverZ]
# Determine the corresponding values from the respective axes to the
# edge of the core concrete
set coreY [expr $coverY-$cover]
set coreZ [expr $coverZ-$cover]
set ncoreY [expr -$coreY]
set ncoreZ [expr -$coreZ]
# Define the fiber section
section fiberSec $id {
# Define the core patch
patch quadr $coreID $nfCoreZ $nfCoreY $ncoreY $coreZ $ncoreY $ncoreZ $coreY $ncoreZ $coreY $coreZ
# Define the four cover patches
patch quadr $coverID 1 $nfCoverY $ncoverY $coverZ $ncoreY $coreZ $coreY $coreZ $coverY $coverZ
patch quadr $coverID 1 $nfCoverY $ncoreY $ncoreZ $ncoverY $ncoverZ $coverY $ncoverZ $coreY $ncoreZ
patch quadr $coverID $nfCoverZ 1 $ncoverY $coverZ $ncoverY $ncoverZ $ncoreY $ncoreZ $ncoreY $coreZ
patch quadr $coverID $nfCoverZ 1 $coreY $coreZ $coreY $ncoreZ $coverY $ncoverZ $coverY $coverZ
# Define the steel along constant values of y (in the z direction)
layer straight $steelID $numBars $barArea $ncoreY $coreZ $ncoreY $ncoreZ
layer straight $steelID $numBars2 $barArea2 $coreY $coreZ $coreY $ncoreZ
}
}
#script SezioneCA
# Definizione di una procedura che definisce sezione rettangolari in c.a. con armatura sia lungo il lato y che lungo quello z
# y
# |
# |
# |
# ---------------------
# |\ P5 /|
# | \°----°---°----°/ |
# | ° As ° |
# | | | |
# z ---------|P°As2 P1 As2°P| h
# |3| |2|
# | ° As ° |
# | /°----°---°----°\ |
# |/ P4 \|
# ---------------------
# b
#
# Formal arguments
# id - tag for the section that is generated by this procedure
# h - overall height of the section (see above)
# b - overall width of the section (see above)
# cover - thickness of the cover patches
# coreID - material tag for the core patch
# coverID - material tag for the cover patches
# steelID - material tag for the reinforcing steel
# numBars - number of reinforcing bars on any given side of the section
# barArea - cross-sectional area of each reinforcing bar
# nfCoreY - number of fibers in the core patch in the y direction
# nfCoreZ - number of fibers in the core patch in the z direction
# nfCoverY - number of fibers in the cover patches with long sides in the y direction
# nfCoverZ - number of fibers in the cover patches with long sides in the z direction
#
# Notes
# The thickness of cover concrete is constant on all sides of the core.
# The number of bars is the same on any given side of the section.
# The reinforcing bars are all the same size.
# The number of fibers in the short direction of the cover patches is set to 1.
#
proc SezioniCA {id h b cover coreID coverID steelID numBars numBars2 barArea barArea2 nfCoreY nfCoreZ nfCoverY nfCoverZ} {
# The distance from the section z-axis to the edge of the cover concrete
# in the positive y direction
set coverY [expr $h/2.0]
# The distance from the section y-axis to the edge of the cover concrete
# in the positive z direction
set coverZ [expr $b/2.0]
# The negative values of the two above
set ncoverY [expr -$coverY]
set ncoverZ [expr -$coverZ]
# Determine the corresponding values from the respective axes to the
# edge of the core concrete
set coreY [expr $coverY-$cover]
set coreZ [expr $coverZ-$cover]
set ncoreY [expr -$coreY]
set ncoreZ [expr -$coreZ]
# Define the fiber section
section fiberSec $id {
# Define the core patch
patch quadr $coreID $nfCoreZ $nfCoreY $ncoreY $coreZ $ncoreY $ncoreZ $coreY $ncoreZ $coreY $coreZ
# Define the four cover patches
patch quadr $coverID 1 $nfCoverY $ncoverY $coverZ $ncoreY $coreZ $coreY $coreZ $coverY $coverZ
patch quadr $coverID 1 $nfCoverY $ncoreY $ncoreZ $ncoverY $ncoverZ $coverY $ncoverZ $coreY $ncoreZ
patch quadr $coverID $nfCoverZ 1 $ncoverY $coverZ $ncoverY $ncoverZ $ncoreY $ncoreZ $ncoreY $coreZ
patch quadr $coverID $nfCoverZ 1 $coreY $coreZ $coreY $ncoreZ $coverY $ncoverZ $coverY $coverZ
# Define the steel along constant values of y (in the z direction)
layer straight $steelID $numBars $barArea $ncoreY $coreZ $ncoreY $ncoreZ
layer straight $steelID $numBars $barArea $coreY $coreZ $coreY $ncoreZ
layer straight $steelID $numBars2 $barArea2 $coreY $ncoreZ $ncoreY $ncoreZ
layer straight $steelID $numBars2 $barArea2 $coreY $coreZ $ncoreY $coreZ
}
}
please just mail me the input files, (mazzoni@berkeleyNOSPAM.edu -- remove NOSPAM)
i don't have fy defined, and all that.
i don't have fy defined, and all that.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
i looked over your file quickly, as you are having serious convergence problems.
i see that you are analyzing a portal frame with two nodes in the middle of the beam. why? if you want to do that, then you shouldn't use the force-based nonlinear beam-column elements with so many integration points each. This can lead to numerical problems, which you have. If you want to discretize your beam, you should use the displacement based nonlinear beam-column element. Still, I would really like to know why you are discretizing it.
also, please ramp up your gravity load and then hold it constant, don't just define it as constant, you could have problems in other cases, in case your structure goes nonlinear during gravity loads.
also, where/how are you imposing the equal displacement to the dof's?
i see that you are analyzing a portal frame with two nodes in the middle of the beam. why? if you want to do that, then you shouldn't use the force-based nonlinear beam-column elements with so many integration points each. This can lead to numerical problems, which you have. If you want to discretize your beam, you should use the displacement based nonlinear beam-column element. Still, I would really like to know why you are discretizing it.
also, please ramp up your gravity load and then hold it constant, don't just define it as constant, you could have problems in other cases, in case your structure goes nonlinear during gravity loads.
also, where/how are you imposing the equal displacement to the dof's?
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Excuse me if I'm hurried and thanks for your help
I understand my errors and I will correct it. I'm discretizing the beam in this way, because the reinforcement of beam at support is different than in middle beam.
I impose the equal displacement along x direction at the start of script TelaioProva (line 11, 12, 13) and I impose it with command equalDOF, I write:
equalDOF 2 3 1
equalDOF 2 4 1
equalDOF 2 5 1
However I examined example 5.1 the use the rigidDiaphragm Comman. In this example if section's beam is elastic the axial deformation of beam is zero, if section's beam is the same of column (fiber section) the beam's axial deformation is no zero.Why?
Silvia thaks a lot in advance and excuse me for no correct english.
I understand my errors and I will correct it. I'm discretizing the beam in this way, because the reinforcement of beam at support is different than in middle beam.
I impose the equal displacement along x direction at the start of script TelaioProva (line 11, 12, 13) and I impose it with command equalDOF, I write:
equalDOF 2 3 1
equalDOF 2 4 1
equalDOF 2 5 1
However I examined example 5.1 the use the rigidDiaphragm Comman. In this example if section's beam is elastic the axial deformation of beam is zero, if section's beam is the same of column (fiber section) the beam's axial deformation is no zero.Why?
Silvia thaks a lot in advance and excuse me for no correct english.
be careful when you impose such restrictions on displacement, as you are now introducing additional forces that would restrain axial deformation.
I would just release this deformation and allow the beam to extend, as it is supposed to....
I would just release this deformation and allow the beam to extend, as it is supposed to....
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
rigidDiaphragm problem
A "rigidDiaphragm" constraint has to be defined for simulating the response of a typical RC Moment-Resisting Frame building properly. Below I have explained why it is so, but first a little about the problem.silvia wrote:... you are now introducing additional forces that would restrain axial deformation.
I would just release this deformation and allow the beam to extend, as it is supposed to....
I encounter the same problem too. When I model my beams with fiber-sections elements and assign a "rigidDiaphragm". Particularly when I use a "TransformationConstraintHandler" for the analysis.
Even though nodal displacements indicate the two end nodes of my beams translate the same amout in the local-x direction of the element, program reports axial strain (and stress) in the beam in between the nodes. (This is indepent of the convergence tolerances or etc..)
It occurs when a "FiberSection" object is assigned to any one of the "nonlinearBeamColumn", "beamWithHinges" or "dispBeamColumn" element objects.
It doesn't occur when an "ElasticSection" object is assigned to any one of the above mentioned elements. Furthermore, it doesn't occur when an "elasticBeamColumn" element object is used.
When a "PenaltyConstraintHandler" is used in the analysis, these axial-strains(and stresses) are reduced compared to the case with a "TransformationConstraintHandler". However, this is not a good solution for other reasons.
I would be really grateful if someone can help to overcome this problem.
Taking into account the diaphragm action in the slab is crucial for simulating the moment-curvature response of beams properly. Generally, floor slabs of regular RC buildings have a very high in-plane stiffness. As a result the axial loads in beams are not very high. When the rigid-diaphragm is not modeled and the vertical members are connected with beams only, very large axial loads are computed for beams. These large axial loads, if the sections are modeled with fiber-sections, leads to unrealistically large bending strengths in beams. As a result the simulated failure mechanism of the frame would be unrealistic as a whole. Unfortunately, in many of the example scripts provided for OpenSees (where the beams are modeled with fiber-sections) this phenomenon can be observed.
For further info regarding the rigid-diaphragm assumption:
Paulay and Priestley(1992), "Seismic Design of Reinforced Concrete and Masonry Buildings", p.159:
"The in-plane stiffness of the floor system, consisting of cast-in-place slabs or prefabricated components with a cast-in-place reinforced concrete topping, is normally considered to be infinitely large. This is a reasonable assumption for framed buildings, with normal length-to-width ratios."
FEMA356(2000), Section.6.5.2.1:
"Action of the slab as a diaphragm interconnecting vertical elements shall be presented."
thank you!
the opensees examples have been kept simple as their objective is to show how to use the program. Modelling choices become important beyond that, and it is tough for us to commit to specific ones.
the opensees examples have been kept simple as their objective is to show how to use the program. Modelling choices become important beyond that, and it is tough for us to commit to specific ones.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Many thanks for all the help.
However, these axial loads in the beams do have significant impact on the global results.
For example:
If one runs Example4.1.tcl (in its current state in the CVS) after adding the following recorder into the file:
recorder Element -file beamGlobalForce.out -time -ele 12 14 globalForce
The last line of the file "beamGlobalForce.out" looks like:
...
31.9879 236.386 -49.2089 -6889.74 -236.386 49.2089-7282.43 21.9125 -37.0699 -5370.92 -21.9125 37.0699 -5305.2
(Red -> Force in X-axis, Blue -> Moment around Z-axis)
At the end of pushover analysis the axial loads in members 12 and 14 (which are girders) are 236 and 22 [kips], respectively. The corresponding bending moments are 7200 and 5300 [kips.in]. After reaching their flexural yielding strengths (6300 and 4700 [kips.in], respectively) at their section 1 at the step 24, these values increase slowly with the post-yielding stiffness till the end of analysis. Since both members have the same section properties (both section 3). This 34% difference in their flexural yield-strength is due to the difference in axial loads.
Since no constraint is defined in the input file, these results are as expected.
The question is:
However, these axial loads in the beams do have significant impact on the global results.
For example:
If one runs Example4.1.tcl (in its current state in the CVS) after adding the following recorder into the file:
recorder Element -file beamGlobalForce.out -time -ele 12 14 globalForce
The last line of the file "beamGlobalForce.out" looks like:
...
31.9879 236.386 -49.2089 -6889.74 -236.386 49.2089-7282.43 21.9125 -37.0699 -5370.92 -21.9125 37.0699 -5305.2
(Red -> Force in X-axis, Blue -> Moment around Z-axis)
At the end of pushover analysis the axial loads in members 12 and 14 (which are girders) are 236 and 22 [kips], respectively. The corresponding bending moments are 7200 and 5300 [kips.in]. After reaching their flexural yielding strengths (6300 and 4700 [kips.in], respectively) at their section 1 at the step 24, these values increase slowly with the post-yielding stiffness till the end of analysis. Since both members have the same section properties (both section 3). This 34% difference in their flexural yield-strength is due to the difference in axial loads.
Since no constraint is defined in the input file, these results are as expected.
The question is:
- If the user wants to model the diaphragm effect of the slab, and have the same zero axial load(and flexural strength) in the beams, how should the input file Example4.1.tcl be modified?
Is it possible to achieve this in OpenSees?
of course these are more modelling questions that are always debated, right?!
wouldn't the slab also contribute flexural strength? (not the one you are talking about due to the axial strain/force)...
wouldn't the slab also contribute flexural strength? (not the one you are talking about due to the axial strain/force)...
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104