changing structural properties during analysis

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

Moderators: silvia, selimgunay, Moderators

Post Reply
Horr
Posts: 31
Joined: Sat Jan 15, 2011 12:26 am
Location: Sharif University of Technology

changing structural properties during analysis

Post by Horr »

Hi,
I want to change one of the beams moment of inertia during the analysis steps. Is it possible?
Thanks
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: changing structural properties during analysis

Post by vesna »

It is posible if your section is Elastic. For this you need to use updateParameter Command (http://opensees.berkeley.edu/wiki/index ... t_Commands).
Horr
Posts: 31
Joined: Sat Jan 15, 2011 12:26 am
Location: Sharif University of Technology

Re: changing structural properties during analysis

Post by Horr »

Thank you, very much. I don't know how to use updateParameter command. All of examples are about soil and permeability.

My model is a frame with elastic beams and columns with rotational springs at beam ends (representing concentrated plasticity). The spring behavior is elastic-perfect-plastic. I want to reduce the moment of inertia of beams when the rotational spring is yielded. Now, questions:

1. How can I check if spring is yielded (in the code not as a record) to update the beams' moment of inertia?
2. How can I update the moment of inertia of special spring element?

Illustrating example:

uniaxialMaterial ElasticPP $matID $Eo $epsyP $epsyN 0.;
set Mpp [expr $Eo*$epsyP];
set Mnp [expr $Eo*$epsyN];
element elasticBeamColumn 1 2 3 $A $E $I 1;
element zeroLength 11 1 2 -mat $matID -dir 6;

for {set step 0} {$step <= 2000} {incr step} {
recorder Element -file Data/SpringMom.out -ele 11 force; # I wish to have spring moment as a parameter to compare with yeild moment
if {$SpringMom == $Mpp || $SpringMom == $Mnp } {
updateParameter 1 [expr $I/2]; # How should "I" be updated. Which parameter of the beam (element 1) is updated.
}
analyze 10 $dt;
}
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: changing structural properties during analysis

Post by vesna »

Do the analysis in the loop and monitor either displacement of the spring or force in the spring using "eleResponse" command (http://opensees.berkeley.edu/wiki/index ... se_Command) or "nodeDisp" command (http://opensees.berkeley.edu/wiki/index ... sp_Command) for each time step. Inside of the analysis loop you need a condition if yielding displacement (or strength) is reached to update a parameter of ElasticBeamColumn element.

For your case you need to do the following:
1. Define elastic beam element using dispBeamColumnWithSensitivity element (http://opensees.berkeley.edu/wiki/index ... ensitivity) and assigning to it Elastic section (http://opensees.berkeley.edu/wiki/index.php/Elastic)

2. Using "parameter" command (http://opensees.berkeley.edu/wiki/index ... er_Command) define a parameter that is to be updated.
3. Using "updateParameter" command (http://opensees.berkeley.edu/wiki/index ... er_Command) update the parameter.
Horr
Posts: 31
Joined: Sat Jan 15, 2011 12:26 am
Location: Sharif University of Technology

Re: changing structural properties during analysis

Post by Horr »

Thanks for your complete and brief reply. A great help. I will try it
Best Wishes,
Horr
Horr
Posts: 31
Joined: Sat Jan 15, 2011 12:26 am
Location: Sharif University of Technology

Re: changing structural properties during analysis

Post by Horr »

I’ve followed your comments by detail. The frame is analyzed, but the following message appears before analysis. What does it mean?

DispBeamColumn2D::setParameter<> - could not set parameter.
Parameter::Parameter 1 – no objects were able to identify parameter
Section 1 Iz
Parameter::Parameter 2 – no objects were able to identify parameter
Section 2 Iz
Parameter::Parameter 3 – no objects were able to identify parameter
Section 3 Iz
Parameter::Parameter 4 – no objects were able to identify parameter
Section 4 Iz
Parameter::Parameter 5 – no objects were able to identify parameter
Section 5 Iz
…………

Here is defining parameters in the code:

################ Assign BEAM SECTIONS ################
for {set level 1} {$level <= $NStory} {incr level} {
if {$level <= 6} {
set matID 4;
} elseif {$level <= 7} {
set matID 5;
} elseif {$level <= 9} {
set matID 6;
} else {
set matID 7;
};
section Elastic $level $E [lindex $A $matID-1] [lindex $I $matID-1];
}

################ Assign BEAM ELEMENTS ################
set numIntgrPts 5;
for {set level 1} {$level <= $NStory-1} {incr level} {
element dispBeamColumnWithSensitivity [expr 100+2*($level-1)+1] [expr 4+7*($level-1)] [expr 8+7*($level-1)] $numIntgrPts $level $IDBeamTransf;
element dispBeamColumnWithSensitivity [expr 100+2*$level] [expr 5+7*($level-1)] [expr 9+7*($level-1)] $numIntgrPts $level $IDBeamTransf;
}
element dispBeamColumnWithSensitivity [expr 100+2*($NStory-1)+1] [expr 4+7*($NStory-1)] [expr 7+7*($NStory-1)] $numIntgrPts $NStory $IDBeamTransf;
element dispBeamColumnWithSensitivity [expr 100+2*$NStory] [expr 5+7*($NStory-1)] [expr 8+7*($NStory-1)] $numIntgrPts $NStory $IDBeamTransf;

################ Assign BEAM PARAMETERS ################
for {set beam 1} {$beam <= 2*$NStory} {incr beam} {
for {set sec 1} {$sec <= $numIntgrPts} {incr sec} {
parameter [expr ($beam-1)*$numIntgrPts+$sec] element [expr 100+$beam] section $sec Iz;
}
}
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: changing structural properties during analysis

Post by vesna »

Why don't you test it on a simple cantilever column with only one element and 3 integration points. This way is hard figure out where is the problem.
Horr
Posts: 31
Joined: Sat Jan 15, 2011 12:26 am
Location: Sharif University of Technology

Re: changing structural properties during analysis

Post by Horr »

I didn’t think about it. I test it on the cantilever column you said. It seems “The number of parameters I have to create will be equal to number of elements not to number of integration point”. The code is below. I have the message even when the free end displacement of the cantilever beam was correct (18 cm). Do you agree?

wipe;
wipeAnalysis;

file mkdir Data;

model BasicBuilder -ndm 2 -ndf 3;

node 1 0. 0.;
node 2 0. 3.;

fix 1 1 1 1;

geomTransf Linear 1;

set E 100.e9;
set A [expr 25.e-4];
set I [expr 1000.e-8];

section Elastic 12345 $E $A [expr $I];
element dispBeamColumnWithSensitivity 1 1 2 5 12345 1;

parameter 1 element 1 section 12345 I;

#for {set beam 1} {$beam <= 5} {incr beam} {
# parameter $beam element 1 section $beam I;
#}
#
recorder Node -file Data/Disp.out -time -node 2 -dof 1 disp;

############### LOADS ################
set FPush 1.e4;
pattern Plain 10 Linear {
load 2 $FPush 0. 0.;
};

############### SOLVER ################

constraints Plain;
numberer RCM;
system BandGeneral;
test NormDispIncr 1.e-8 8;
algorithm Newton;
integrator LoadControl 0.1;
analysis Static;
for {set step 1} {$step <= 10} {incr step} {
if {$step == 1} {
updateParameter 1 [expr $I/2];
}
analyze 1;
}
puts "Disp: [nodeDisp 2 1]\n";
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: changing structural properties during analysis

Post by vesna »

I tested your code and did not get any message. It worked fine for me. I was using the latest 2.3.1 version of OpenSees. You can test your code better if you move

puts "Disp: [nodeDisp 2 1]\n";

inside of the loop. This way you can see the results at each time step. Also if you want to change your "I" at the 5th step of analysis you will be able to see how it changes.
Post Reply