hysteretic material model

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
nvquan
Posts: 9
Joined: Fri Sep 07, 2007 6:49 pm
Location: Weidlinger Associates, INC

hysteretic material model

Post by nvquan »

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"
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

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.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
nvquan
Posts: 9
Joined: Fri Sep 07, 2007 6:49 pm
Location: Weidlinger Associates, INC

Post by nvquan »

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.
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

this worked:

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; 
[/quote]
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
nvquan
Posts: 9
Joined: Fri Sep 07, 2007 6:49 pm
Location: Weidlinger Associates, INC

Post by nvquan »

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.
nvquan
Posts: 9
Joined: Fri Sep 07, 2007 6:49 pm
Location: Weidlinger Associates, INC

Post by nvquan »

it's not in ft either. The unit seems to be 1/12 of an inch, because when I devide the number in the output file by 12, I got the correct answer in inch. Could you please explain this for me. Thanks a lot!
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

the output is in the same units as the input.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
nvquan
Posts: 9
Joined: Fri Sep 07, 2007 6:49 pm
Location: Weidlinger Associates, INC

Post by nvquan »

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.
Post Reply