BILIN MATERIAL PROBLEM
Moderators: silvia, selimgunay, Moderators
BILIN MATERIAL PROBLEM
Hi,
I want to model a zero lenght element element with Opensees using bilin material ( http://opensees.berkeley.edu/wiki/index ... n_Material )
And then I want to apply a reverse cycle such as:
set L 1
set WCol 1;
# 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.01 0.04 0.08"; # vector of displacement-cycle peaks, in terms of storey drift ratio
set Dincr [expr 0.001*$L]; # displacement increment for pushover. you want this to be very small, but not too small to slow down the analysis
set Fact $L; # scale drift ratio by storey height for displacement cycles
set CycleType Full; # you can do Full / Push / Half cycles with the proc
set Ncycles 3; # specify the number of cycles at each peak
# create load pattern for lateral pushover load
set Hload [expr $WCol/2]; # 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
}
}
I have tried my model in elastic materials or in others such as steel01 and it works. But when I do it for bilin material it doesnt work. I think it has to do somehting with the analysis, till now I was doing Static analysis. And the model worked for a pushover, but when I was applying the cycle I was obtaining wierd results or it wasn't working.
Now I am trying to do Transient analysis but I dont get it to work either.
Any tips or advices?
Thank you
I want to model a zero lenght element element with Opensees using bilin material ( http://opensees.berkeley.edu/wiki/index ... n_Material )
And then I want to apply a reverse cycle such as:
set L 1
set WCol 1;
# 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.01 0.04 0.08"; # vector of displacement-cycle peaks, in terms of storey drift ratio
set Dincr [expr 0.001*$L]; # displacement increment for pushover. you want this to be very small, but not too small to slow down the analysis
set Fact $L; # scale drift ratio by storey height for displacement cycles
set CycleType Full; # you can do Full / Push / Half cycles with the proc
set Ncycles 3; # specify the number of cycles at each peak
# create load pattern for lateral pushover load
set Hload [expr $WCol/2]; # 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
}
}
I have tried my model in elastic materials or in others such as steel01 and it works. But when I do it for bilin material it doesnt work. I think it has to do somehting with the analysis, till now I was doing Static analysis. And the model worked for a pushover, but when I was applying the cycle I was obtaining wierd results or it wasn't working.
Now I am trying to do Transient analysis but I dont get it to work either.
Any tips or advices?
Thank you
Re: BILIN MATERIAL PROBLEM
What is the direction of your zeroLength element. I see that you are applying the load in x direction.
parameters of Bilin material are very sensitive. I recommend you to read the paper (reference 8: http://opensees.berkeley.edu/wiki/index ... n_Material) to set up the parameters in a right way.
parameters of Bilin material are very sensitive. I recommend you to read the paper (reference 8: http://opensees.berkeley.edu/wiki/index ... n_Material) to set up the parameters in a right way.
Re: BILIN MATERIAL PROBLEM
This is my model. Oh thank you for the reference 8 I'll read it, it looks really helpful.
Is it possible that one or two days ago you posted an example of zero element with triangular load and recording the deformed angle? Where did I go? I would like to run it and "play" with it to learn. Could you paste it again here?
Thank you
# MODEL
# SET UP --------------------------------------------------------------------------------------
wipe;
model basic -ndm 2 -ndf 3;
file mkdir Data;
# DEFINE GEOMETRY-------------------------------------------------------------------------------
node 1 0 0;
node 2 0 0;
# BOUNDARY CONDITIONS---------------------------------------------------------------------------
fix 1 1 1 1;
fix 2 0 1 1;
# MATERIAL PROPERTIES---------------------------------------------------------------------------
set K 29000
set Fy 1000
set dp 0.01
set dpc 0.1
set alpha 0.025
set lambda 2000
uniaxialMaterial Bilin 1 $K $alpha $alpha $Fy $Fy $lambda $lambda $lambda $lambda 1 1 1 1 $dp $dp $dpc $dpc 0.001 0.001 $dpc $dpc 0.10 0.10
# DEFINE ELEMENTS---------------------------------------------------------------------------
set transfTag 1;
geomTransf Linear $transfTag;
element zeroLength 1 1 2 -mat 1 -dir 1
# DEFINE RECORDERS------------------------------------------------------------------------------------
recorder Node -file Data/RBase1.out -time -node 1 -dof 1 reaction;
recorder Node -file Data/Disp13.out -time -node 2 -dof 1 disp;
loadConst -time 0.0
puts "Model Built"
Is it possible that one or two days ago you posted an example of zero element with triangular load and recording the deformed angle? Where did I go? I would like to run it and "play" with it to learn. Could you paste it again here?
Thank you
# MODEL
# SET UP --------------------------------------------------------------------------------------
wipe;
model basic -ndm 2 -ndf 3;
file mkdir Data;
# DEFINE GEOMETRY-------------------------------------------------------------------------------
node 1 0 0;
node 2 0 0;
# BOUNDARY CONDITIONS---------------------------------------------------------------------------
fix 1 1 1 1;
fix 2 0 1 1;
# MATERIAL PROPERTIES---------------------------------------------------------------------------
set K 29000
set Fy 1000
set dp 0.01
set dpc 0.1
set alpha 0.025
set lambda 2000
uniaxialMaterial Bilin 1 $K $alpha $alpha $Fy $Fy $lambda $lambda $lambda $lambda 1 1 1 1 $dp $dp $dpc $dpc 0.001 0.001 $dpc $dpc 0.10 0.10
# DEFINE ELEMENTS---------------------------------------------------------------------------
set transfTag 1;
geomTransf Linear $transfTag;
element zeroLength 1 1 2 -mat 1 -dir 1
# DEFINE RECORDERS------------------------------------------------------------------------------------
recorder Node -file Data/RBase1.out -time -node 1 -dof 1 reaction;
recorder Node -file Data/Disp13.out -time -node 2 -dof 1 disp;
loadConst -time 0.0
puts "Model Built"
Re: BILIN MATERIAL PROBLEM
Your model looks good. The only problem I see is positive sign for Fy in negative direction. It has to be negative. I updated the wiki page for Bilin material to point out that sign of effective yield strength for negative loading direction is negative.
Here is the example for the cyclic analysis of a rotational spring using Bilin material. Parameters of the material are set such that it is not accounted for damage. You could see that for the two cycles of the same magnitude there is no degradation of strength.
# ------------------------------------------------------------
# Rotational Spring (zeroLength element) with Bilin Materail
#-------------------------------------------------------------
# SET UP ----------------------------------------------------------------------------
wipe; # clear memory of all past model definitions
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm=#dimension, ndf=#dofs
# nodal coordinates:
node 1 0 0; # node#, X, Y
node 2 0 0
# Single point constraints -- Boundary Conditions
fix 1 1 1 1; # node DX DY RZ
fix 2 1 1 0; # node DX DY RZ
# Define ELEMENTS -------------------------------------------------------------
# Material parameters
set matTagB 1
set K0 19246333.333
set as_Plus 0.0014
set My_Plus 10938.
set Lamda_S 1000.
set Lamda_C 1000.
set Lamda_A 1000.
set Lamda_K 1000.
set c_S 1.0
set c_C 1.0
set c_A 1.0
set c_K 1.0
set theta_p_Plus 0.02
set theta_pc_Plus 0.16
set Res_Pos 0.4
set theta_u_Plus 0.4
set D_Plus 1.0
uniaxialMaterial Bilin $matTagB $K0 $as_Plus $as_Plus $My_Plus [expr -$My_Plus] $Lamda_S $Lamda_C $Lamda_A $Lamda_K $c_S $c_C $c_A $c_K \ $theta_p_Plus $theta_p_Plus $theta_pc_Plus $theta_pc_Plus $Res_Pos $Res_Pos $theta_u_Plus $theta_u_Plus $D_Plus $D_Plus
# rotational hinge:
element zeroLength 1 1 2 -mat $matTagB -dir 6
# Create recorder
recorder Node -file Mphi.out -time -node 2 -dof 3 disp; # curvature (col 2)
recorder Element -file Moment.out -time -ele 1 force; # moment (col 7)
#Apply CYCLIC load
#------------------------------------
pattern Plain 1 Linear {
load 2 0.0 0.0 1.0;
}
# Set up analysis parameters
constraints Penalty 1.0e15 1.0e15 ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1.e-6 25 0 ;
algorithm Newton ;
set controlnode 2
set loaddirection 3
set currentDisp 0.0
set ratio [expr 1./1000.]
foreach DincrT {0.8 -1.6 0.8 0.8 -1.6 0.8 1.2 -2.4 1.2 1.2 -2.4 1.2} {
set nSteps 1000.0
set Dincr [expr $ratio*$DincrT/$nSteps]
integrator DisplacementControl $controlnode $loaddirection $Dincr
analysis Static
if { $Dincr > 0 } {
set Dmax [expr $Dincr*$nSteps]
set ok 0
while {$ok == 0 && $currentDisp < $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 0
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
} elseif { $Dincr < 0 } {
set Dmax [expr $Dincr*$nSteps/2]
set ok 0
while {$ok == 0 && $currentDisp > $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 0
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
}
}
print -node 2
Here is the example for the cyclic analysis of a rotational spring using Bilin material. Parameters of the material are set such that it is not accounted for damage. You could see that for the two cycles of the same magnitude there is no degradation of strength.
# ------------------------------------------------------------
# Rotational Spring (zeroLength element) with Bilin Materail
#-------------------------------------------------------------
# SET UP ----------------------------------------------------------------------------
wipe; # clear memory of all past model definitions
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm=#dimension, ndf=#dofs
# nodal coordinates:
node 1 0 0; # node#, X, Y
node 2 0 0
# Single point constraints -- Boundary Conditions
fix 1 1 1 1; # node DX DY RZ
fix 2 1 1 0; # node DX DY RZ
# Define ELEMENTS -------------------------------------------------------------
# Material parameters
set matTagB 1
set K0 19246333.333
set as_Plus 0.0014
set My_Plus 10938.
set Lamda_S 1000.
set Lamda_C 1000.
set Lamda_A 1000.
set Lamda_K 1000.
set c_S 1.0
set c_C 1.0
set c_A 1.0
set c_K 1.0
set theta_p_Plus 0.02
set theta_pc_Plus 0.16
set Res_Pos 0.4
set theta_u_Plus 0.4
set D_Plus 1.0
uniaxialMaterial Bilin $matTagB $K0 $as_Plus $as_Plus $My_Plus [expr -$My_Plus] $Lamda_S $Lamda_C $Lamda_A $Lamda_K $c_S $c_C $c_A $c_K \ $theta_p_Plus $theta_p_Plus $theta_pc_Plus $theta_pc_Plus $Res_Pos $Res_Pos $theta_u_Plus $theta_u_Plus $D_Plus $D_Plus
# rotational hinge:
element zeroLength 1 1 2 -mat $matTagB -dir 6
# Create recorder
recorder Node -file Mphi.out -time -node 2 -dof 3 disp; # curvature (col 2)
recorder Element -file Moment.out -time -ele 1 force; # moment (col 7)
#Apply CYCLIC load
#------------------------------------
pattern Plain 1 Linear {
load 2 0.0 0.0 1.0;
}
# Set up analysis parameters
constraints Penalty 1.0e15 1.0e15 ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1.e-6 25 0 ;
algorithm Newton ;
set controlnode 2
set loaddirection 3
set currentDisp 0.0
set ratio [expr 1./1000.]
foreach DincrT {0.8 -1.6 0.8 0.8 -1.6 0.8 1.2 -2.4 1.2 1.2 -2.4 1.2} {
set nSteps 1000.0
set Dincr [expr $ratio*$DincrT/$nSteps]
integrator DisplacementControl $controlnode $loaddirection $Dincr
analysis Static
if { $Dincr > 0 } {
set Dmax [expr $Dincr*$nSteps]
set ok 0
while {$ok == 0 && $currentDisp < $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 0
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
} elseif { $Dincr < 0 } {
set Dmax [expr $Dincr*$nSteps/2]
set ok 0
while {$ok == 0 && $currentDisp > $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 0
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
}
}
print -node 2
Re: BILIN MATERIAL PROBLEM
Thank you for the code.
I have also read the paper "Deterioration modeling of steel components in support of collapse prediction of steel moment frames under earthquake loading" Dimitrios G. Lignos, A.M ASCE, Helmut Krawinkler, M. ASCE. And it has helped me understanding more in deep some of the parameters of the bilin material.
However I am trying to obtained a cycle with deterioration but i still get no degradation. Basically I am changing D_plus, or the cumulative plastic rotation. But nothing changes. Do you think you may know why is that happening to me?
I have also read the paper "Deterioration modeling of steel components in support of collapse prediction of steel moment frames under earthquake loading" Dimitrios G. Lignos, A.M ASCE, Helmut Krawinkler, M. ASCE. And it has helped me understanding more in deep some of the parameters of the bilin material.
However I am trying to obtained a cycle with deterioration but i still get no degradation. Basically I am changing D_plus, or the cumulative plastic rotation. But nothing changes. Do you think you may know why is that happening to me?
Re: BILIN MATERIAL PROBLEM
I do not know the reason for you not being able to capture the degradation. I suggest you to contact the author of the material to see if he can help you.
Hysteretic material is very good in capturing degradation. You can also try that one.
Hysteretic material is very good in capturing degradation. You can also try that one.
Re: BILIN MATERIAL PROBLEM
Alright the problem was that I had opensees 2.2.2 not the last version. and it was giving problems with the bilin material.
I just downloaded the newest version and everything works.
I just downloaded the newest version and everything works.
Re: BILIN MATERIAL PROBLEM
I am glad you solved your problem.
-
- Posts: 12
- Joined: Mon Apr 25, 2011 12:19 pm
- Location: University of Tehran
BILIN MATERIAL and degradation of strength
Hi dear vesna, Could I use your code when I want account damage and degradation of strength for my model? I run your code and see just two cycle, how can I see more cycle with degradation? thank you very much
Re: BILIN MATERIAL PROBLEM
You will have to expand the line shown below for whatever number of cycles you have in your analysis:
foreach DincrT {0.8 -1.6 0.8 0.8 -1.6 0.8 1.2 -2.4 1.2 1.2 -2.4 1.2} {
For each cycle you need to provide 3 values: magnitude, -2*magnitude, and magnitude.
foreach DincrT {0.8 -1.6 0.8 0.8 -1.6 0.8 1.2 -2.4 1.2 1.2 -2.4 1.2} {
For each cycle you need to provide 3 values: magnitude, -2*magnitude, and magnitude.
-
- Posts: 12
- Joined: Mon Apr 25, 2011 12:19 pm
- Location: University of Tehran
Re: BILIN MATERIAL PROBLEM
Thank you very much dear Vesna, it worked. my research includes hysteresis calibration and it's my first time that I'm using bilin material, I hope your help will ease the work I have to do, thanks again.
-
- Posts: 3
- Joined: Sun Apr 05, 2015 11:18 pm
- Location: Babol
Re: BILIN MATERIAL PROBLEM
hi
excuse me how do i calculate these parameters?
set K0 19246333.333
set as_Plus 0.0014
set My_Plus 10938.
set Lamda_S 1000.
set Lamda_C 1000.
set Lamda_A 1000.
set Lamda_K 1000.
set c_S 1.0
set c_C 1.0
set c_A 1.0
set c_K 1.0
set theta_p_Plus 0.02
set theta_pc_Plus 0.16
set Res_Pos 0.4
set theta_u_Plus 0.4
set D_Plus 1.0
excuse me how do i calculate these parameters?
set K0 19246333.333
set as_Plus 0.0014
set My_Plus 10938.
set Lamda_S 1000.
set Lamda_C 1000.
set Lamda_A 1000.
set Lamda_K 1000.
set c_S 1.0
set c_C 1.0
set c_A 1.0
set c_K 1.0
set theta_p_Plus 0.02
set theta_pc_Plus 0.16
set Res_Pos 0.4
set theta_u_Plus 0.4
set D_Plus 1.0