changing structural properties during analysis
Moderators: silvia, selimgunay, Moderators
changing structural properties during analysis
Hi,
I want to change one of the beams moment of inertia during the analysis steps. Is it possible?
Thanks
I want to change one of the beams moment of inertia during the analysis steps. Is it possible?
Thanks
Re: changing structural properties during analysis
It is posible if your section is Elastic. For this you need to use updateParameter Command (http://opensees.berkeley.edu/wiki/index ... t_Commands).
Re: changing structural properties during analysis
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;
}
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;
}
Re: changing structural properties during analysis
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.
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.
Re: changing structural properties during analysis
Thanks for your complete and brief reply. A great help. I will try it
Best Wishes,
Horr
Best Wishes,
Horr
Re: changing structural properties during analysis
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;
}
}
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;
}
}
Re: changing structural properties during analysis
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.
Re: changing structural properties during analysis
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";
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";
Re: changing structural properties during analysis
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.
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.