hysteretic material model
Moderators: silvia, selimgunay, Moderators
hysteretic material model
Hi Silvia and all,
I made a very simple model to verify the hysteretic material model in OpenSees. The model had only one element which was truss element. I used OpenSees uniaxial hysteretic material with parameters from my FE analysis results.
The model was running without errors. But the results did not make sense.
After the model built, I applied the same force which was used to define my first point of the hysteretic curve but OpenSees gave me a totally different number of displacement. Could you please have a look at my code and tell me where the problem could be.
Thank you.
# SET UP ---------------------------------------------------------------------------------------------------
wipe;
model BasicBuilder -ndm 2 -ndf 3;
set dataDir Data;
file mkdir $dataDir;
set GMdir "../GMfiles/";
source LibUnits.tcl;
# define GEOMETRY -------------------------------------------------------------
set LConn [expr 12*$in];
# calculate locations of nodes
set X1 0.;
set Y1 0.;
set Y2 [expr $Y1 + $LConn];
# define nodal coordinates
node 11 $X1 $Y1
node 12 $X1 $Y2
# BOUNDARY CONDITIONS ---------------------------------------------------------
fix 11 1 1 1 # Fully fixed at base
fix 12 1 0 1 # Rotation, and lateral disp. restrained at top
# Hysteretic PROPERTIES ---------------------------------------
set ConnSecTag 1
set ConnMatTag 2
# Hysteretic material properties
set s1p [expr 2884.9*$lbf];
set e1p [expr 0.1*$in];
set s2p [expr 3355.1*$lbf];
set e2p [expr 0.145*$in];
set s3p [expr 8382.1*$lbf];
set e3p [expr 1.03*$in];
set s1n [expr -2884.9*$lbf];
set e1n [expr -0.1*$in];
set s2n [expr -3355.1*$lbf];
set e2n [expr -0.145*$in];
set s3n [expr -8382.1*$lbf];
set e3n [expr -1.03*$in]
set pinchX 1;
set pinchY 1;
set damage1 0.0;
set damage2 0.0;
uniaxialMaterial Hysteretic $ConnMatTag $s1p $e1p $s2p $e2p $s3p $e3p $s1n $e1n $s2n $e2n $s3n $e3n $pinchX $pinchY $damage1 $damage2
section Uniaxial $ConnSecTag $ConnMatTag P
# DEFINE ELEMENTS -------------------------------------------------------------
element truss 1 11 12 $ConnSecTag
# Define RECORDERS ------------------------------------------------------------
recorder Node -file $dataDir/DFree.out -time -node 12 -dof 2 disp;recorder Node -file $dataDir/RBase.out -time -node 11 -dof 2 reaction;
recorder Element -file $dataDir/E111.out -time -ele 1 globalForce
puts "Model Build!"
# APPLY VERTICAL LOAD --------------------------------------------------------
set V [expr -2884.9*$lbf]
pattern Plain 1 Linear { ; # define LoadPattern 1. impose load in a linear manner
load 12 0. $V 0. ; # apply force at node 12
}
constraints Plain;
numberer Plain;
system BandGeneral;
test NormDispIncr 1.0e-8 6 ;
algorithm Newton;
integrator LoadControl 0.1;
analysis Static
analyze 10;
puts "load done"
I made a very simple model to verify the hysteretic material model in OpenSees. The model had only one element which was truss element. I used OpenSees uniaxial hysteretic material with parameters from my FE analysis results.
The model was running without errors. But the results did not make sense.
After the model built, I applied the same force which was used to define my first point of the hysteretic curve but OpenSees gave me a totally different number of displacement. Could you please have a look at my code and tell me where the problem could be.
Thank you.
# SET UP ---------------------------------------------------------------------------------------------------
wipe;
model BasicBuilder -ndm 2 -ndf 3;
set dataDir Data;
file mkdir $dataDir;
set GMdir "../GMfiles/";
source LibUnits.tcl;
# define GEOMETRY -------------------------------------------------------------
set LConn [expr 12*$in];
# calculate locations of nodes
set X1 0.;
set Y1 0.;
set Y2 [expr $Y1 + $LConn];
# define nodal coordinates
node 11 $X1 $Y1
node 12 $X1 $Y2
# BOUNDARY CONDITIONS ---------------------------------------------------------
fix 11 1 1 1 # Fully fixed at base
fix 12 1 0 1 # Rotation, and lateral disp. restrained at top
# Hysteretic PROPERTIES ---------------------------------------
set ConnSecTag 1
set ConnMatTag 2
# Hysteretic material properties
set s1p [expr 2884.9*$lbf];
set e1p [expr 0.1*$in];
set s2p [expr 3355.1*$lbf];
set e2p [expr 0.145*$in];
set s3p [expr 8382.1*$lbf];
set e3p [expr 1.03*$in];
set s1n [expr -2884.9*$lbf];
set e1n [expr -0.1*$in];
set s2n [expr -3355.1*$lbf];
set e2n [expr -0.145*$in];
set s3n [expr -8382.1*$lbf];
set e3n [expr -1.03*$in]
set pinchX 1;
set pinchY 1;
set damage1 0.0;
set damage2 0.0;
uniaxialMaterial Hysteretic $ConnMatTag $s1p $e1p $s2p $e2p $s3p $e3p $s1n $e1n $s2n $e2n $s3n $e3n $pinchX $pinchY $damage1 $damage2
section Uniaxial $ConnSecTag $ConnMatTag P
# DEFINE ELEMENTS -------------------------------------------------------------
element truss 1 11 12 $ConnSecTag
# Define RECORDERS ------------------------------------------------------------
recorder Node -file $dataDir/DFree.out -time -node 12 -dof 2 disp;recorder Node -file $dataDir/RBase.out -time -node 11 -dof 2 reaction;
recorder Element -file $dataDir/E111.out -time -ele 1 globalForce
puts "Model Build!"
# APPLY VERTICAL LOAD --------------------------------------------------------
set V [expr -2884.9*$lbf]
pattern Plain 1 Linear { ; # define LoadPattern 1. impose load in a linear manner
load 12 0. $V 0. ; # apply force at node 12
}
constraints Plain;
numberer Plain;
system BandGeneral;
test NormDispIncr 1.0e-8 6 ;
algorithm Newton;
integrator LoadControl 0.1;
analysis Static
analyze 10;
puts "load done"
i guess the section definition affects the response. you should just do it directly:
# DEFINE ELEMENTS -------------------------------------------------------------
set Area 1.0
element truss 1 11 12 $Area $ConnMatTag
and you'll get good results.
# DEFINE ELEMENTS -------------------------------------------------------------
set Area 1.0
element truss 1 11 12 $Area $ConnMatTag
and you'll get good results.
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
Hi Silvia,
Thank you for your help. I tried to do it either ways. Both of my original code and the one modified as you instructed gave the same result, that was when the vertical load was 2884.9 lbf the displacement was 1.2in.
I defined my first point of hysteretic curve as 2884.9lbs and 0.1in. There should be a problem somewhere. I also tried different loads, the results were not correct at all. Please help me to figure it out.
Thank you.
Thank you for your help. I tried to do it either ways. Both of my original code and the one modified as you instructed gave the same result, that was when the vertical load was 2884.9 lbf the displacement was 1.2in.
I defined my first point of hysteretic curve as 2884.9lbs and 0.1in. There should be a problem somewhere. I also tried different loads, the results were not correct at all. Please help me to figure it out.
Thank you.
this worked:
[/quote]
Code: Select all
# SET UP ---------------------------------------------------------------------------------------------------
wipe;
model BasicBuilder -ndm 2 -ndf 3;
set dataDir Data;
file mkdir $dataDir;
set GMdir "../GMfiles/";
source LibUnits.tcl;
# define GEOMETRY -------------------------------------------------------------
set LConn [expr 12*$in];
# calculate locations of nodes
set X1 0.;
set Y1 0.;
set Y2 [expr $Y1 + $LConn];
# define nodal coordinates
node 11 $X1 $Y1
node 12 $X1 $Y2
# BOUNDARY CONDITIONS ---------------------------------------------------------
fix 11 1 1 1 # Fully fixed at base
fix 12 1 0 1 # Rotation, and lateral disp. restrained at top
# Hysteretic PROPERTIES ---------------------------------------
set ConnSecTag 1
set ConnMatTag 2
# Hysteretic material properties
set s1p [expr 2884.9*$lbf];
set e1p [expr 0.1*$in];
set s2p [expr 3355.1*$lbf];
set e2p [expr 0.145*$in];
set s3p [expr 8382.1*$lbf];
set e3p [expr 1.03*$in];
set s1n [expr -2884.9*$lbf];
set e1n [expr -0.1*$in];
set s2n [expr -3355.1*$lbf];
set e2n [expr -0.145*$in];
set s3n [expr -8382.1*$lbf];
set e3n [expr -1.03*$in]
set pinchX 1;
set pinchY 1;
set damage1 0.0;
set damage2 0.0;
uniaxialMaterial Hysteretic $ConnMatTag $s1p $e1p $s2p $e2p $s3p $e3p $s1n $e1n $s2n $e2n $s3n $e3n $pinchX $pinchY $damage1 $damage2
puts "uniaxialMaterial Hysteretic $ConnMatTag $s1p $e1p $s2p $e2p $s3p $e3p $s1n $e1n $s2n $e2n $s3n $e3n $pinchX $pinchY $damage1 $damage2 "
section Uniaxial $ConnSecTag $ConnMatTag P
# DEFINE ELEMENTS -------------------------------------------------------------
# element truss 1 11 12 $ConnSecTag
element truss 1 11 12 1.0 $ConnMatTag
# Define RECORDERS ------------------------------------------------------------
recorder Node -file $dataDir/DFree.out -time -node 12 -dof 2 disp;
recorder Node -file $dataDir/RBase.out -time -node 11 -dof 1 2 3 reaction;
recorder Element -file $dataDir/E111.out -time -ele 1 axialForce
puts "Model Build!"
# APPLY VERTICAL LOAD --------------------------------------------------------
set V [expr -2884.9*$lbf]
set V [expr 8382.1*$lbf];
puts V_$V
pattern Plain 1 Linear { ; # define LoadPattern 1. impose load in a linear manner
load 12 0. $V 0. ; # apply force at node 12
}
constraints Plain;
numberer Plain;
system BandGeneral;
test NormDispIncr 1.0e-8 6 ;
algorithm Newton;
integrator LoadControl 0.01;
analysis Static
analyze 100;
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
Hi silvia,
Sorry for my silly question. But if I divide my number by 12 I got resonable result so is the unit in the output file in ft. I input everything in inch and in the LibUnits.tcl, the basic and output unit for disp. is in inch. When I use the command put, I got the the number on the screen in kip and inch too.
So what is the unit of the output file from recorders?
Thank you so much for helping me.
Sorry for my silly question. But if I divide my number by 12 I got resonable result so is the unit in the output file in ft. I input everything in inch and in the LibUnits.tcl, the basic and output unit for disp. is in inch. When I use the command put, I got the the number on the screen in kip and inch too.
So what is the unit of the output file from recorders?
Thank you so much for helping me.
Thanks Silvia, that's what I thought too. Displacements were input in inch then outputs should be in inch too.
Now, when I run your script with the load of 8382.1 lbf, I got the disp. of 12.36inch (the number in the file is 12.36, assuming it is in inch). So this result is totally wrong because in my hysteretic curve, 8382.1lbf corresponds with 1.03inch. And the total length of my element is just 12inch. However, if we divide 12.36 by 12, we have 1.03.
So if the unit was right, the hysteretic material model had troubles. I don't know how to deal with this. I really need your help.
Now, when I run your script with the load of 8382.1 lbf, I got the disp. of 12.36inch (the number in the file is 12.36, assuming it is in inch). So this result is totally wrong because in my hysteretic curve, 8382.1lbf corresponds with 1.03inch. And the total length of my element is just 12inch. However, if we divide 12.36 by 12, we have 1.03.
So if the unit was right, the hysteretic material model had troubles. I don't know how to deal with this. I really need your help.