Rotational Springs
Moderators: silvia, selimgunay, Moderators
Rotational Springs
Hi,
I am modeling a cantilever beam but I would like to introduce a semi-rigid connection at the base instead of a complete fixity, i.e. a rotational spring.
I understood that the way to do that is by adding another node at the same base location and adding a zero-length element.
First question: If I add a zero-length element with a UniaxialMaterial that defines force/deformation or stress/strain relationship, how do I define the moment-rotation relationship?
Second question: If I use zero-length Section element instead and I define the section properties in order to model a specific flexural stiffness, would that work?
Thanks,
Linda
I am modeling a cantilever beam but I would like to introduce a semi-rigid connection at the base instead of a complete fixity, i.e. a rotational spring.
I understood that the way to do that is by adding another node at the same base location and adding a zero-length element.
First question: If I add a zero-length element with a UniaxialMaterial that defines force/deformation or stress/strain relationship, how do I define the moment-rotation relationship?
Second question: If I use zero-length Section element instead and I define the section properties in order to model a specific flexural stiffness, would that work?
Thanks,
Linda
sure.
the uniaxial material is not limited to stress and strain. it represents the force-deformation response of the corresponding dofs -- moment-rotation in the case of a zero-length element assigned to the rotational dof -- remember to constrain the other dofs.
the uniaxial material is not limited to stress and strain. it represents the force-deformation response of the corresponding dofs -- moment-rotation in the case of a zero-length element assigned to the rotational dof -- remember to constrain the other dofs.
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
Thank you Silvia.
Just to make sure I understand correctly: So, if node 1 is the fixity, I add another node (node 2) at the same location. I use EqualDOF to constrain node 2 to node 1 in the translational directions. Then, I link node1 and node2 with a zero-length element. I define the uniaxial material to have a certain rotational stiffness in dir 3. Is that right?
Thanks,
Linda.
Just to make sure I understand correctly: So, if node 1 is the fixity, I add another node (node 2) at the same location. I use EqualDOF to constrain node 2 to node 1 in the translational directions. Then, I link node1 and node2 with a zero-length element. I define the uniaxial material to have a certain rotational stiffness in dir 3. Is that right?
Thanks,
Linda.
Dr. Silvia,
I am using an elastic Perfectly Plastic Uniaxial Material to represent the moment –rotation relationship. Do you know how Opensees handles the zero-length element after the ultimate moment is reached?
My system of equations does not converge and I think the problem comes from the material definition for the spring.
Thank you!
I am using an elastic Perfectly Plastic Uniaxial Material to represent the moment –rotation relationship. Do you know how Opensees handles the zero-length element after the ultimate moment is reached?
My system of equations does not converge and I think the problem comes from the material definition for the spring.
Thank you!
Dr. Silvia,
I tried to use Steel02 instead of EPP material as you recommended. However, Opensees is still not able to converge the system of equations. Do you have any ideas of why this might be the case? Here is my code:
# all units are kip, inch, second, rad
# SET UP ______________________________________________________
wipe;
model basic -ndm 2 -ndf 3;
file mkdir data;
# define GEOMETRY _____________________________________________
# nodal coordinates
node 1 0 0;
node 2 0 144;
node 3 0 288;
node 4 0 144;
node 5 240 144;
node 6 0 288;
node 7 240 288;
node 8 240 144;
node 9 240 288;
node 10 240 0;
# single point coordinates - Boundary Conditions
fix 1 1 1 0;
fix 10 1 1 0;
#nodal masses:
mass 2 0.259 0.0 0.0; # assign nodal masses to master nodes only
mass 3 0.259 0.0 0.0;
mass 9 0.259 0.0 0.0;
mass 8 0.259 0.0 0.0;
# define ELEMENTS _____________________________________________
geomTransf PDelta 1; # geom tranf.
#connectivity
element elasticBeamColumn 1 1 2 28.2 29000 833 1;
element elasticBeamColumn 2 2 3 28.2 29000 833 1;
element elasticBeamColumn 3 4 5 14.1 29000 484 1;
element elasticBeamColumn 4 6 7 14.1 29000 484 1;
element elasticBeamColumn 5 8 9 28.2 29000 833 1;
element elasticBeamColumn 6 10 8 28.2 29000 833 1;
# Semi-Rigid Connections
fix 2 0 0 0; # Allpied at the master nodes
fix 3 0 0 0;
fix 9 0 0 0;
fix 8 0 0 0;
equalDOF 2 4 1 2;
equalDOF 3 6 1 2;
equalDOF 9 7 1 2;
equalDOF 8 5 1 2;
uniaxialMaterial Steel02 1 1989 786732 0.001;
element zeroLength 7 2 4 -mat 1 -dir 3;
element zeroLength 8 3 6 -mat 1 -dir 3;
element zeroLength 9 9 7 -mat 1 -dir 3;
element zeroLength 10 8 5 -mat 1 -dir 3;
# define RECORDERS ____________________________________________
recorder Node -file Data/DNode2SemiRigid1.out -time -node 2 -dof 1 disp;
recorder Node -file Data/DNode3SemiRigid1.out -time -node 3 -dof 1 disp;
#defne GRAVITY ________________________________________________
pattern Plain 1 Linear {
load 2 0.0 -100.0 0.0;
load 3 0.0 -100.0 0.0;
load 9 0.0 -100.0 0.0;
load 8 0.0 -100.0 0.0;
}
constraints Lagrange;
numberer Plain;
system BandSPD;
test NormDispIncr 1.0e-8 100;
algorithm Newton;
integrator LoadControl 0.1;
analysis Static;
analyze 10;
loadConst -time 0.0;
# define Lateral Load ________________________________________
pattern Plain 2 Linear {
load 2 10.0 0.0 0.0;
load 3 10.0 0.0 0.0;
}
# pushover: displacement analysis
integrator LoadControl 0.1;
analyze 10;
puts "Done!"
Thank you!
I tried to use Steel02 instead of EPP material as you recommended. However, Opensees is still not able to converge the system of equations. Do you have any ideas of why this might be the case? Here is my code:
# all units are kip, inch, second, rad
# SET UP ______________________________________________________
wipe;
model basic -ndm 2 -ndf 3;
file mkdir data;
# define GEOMETRY _____________________________________________
# nodal coordinates
node 1 0 0;
node 2 0 144;
node 3 0 288;
node 4 0 144;
node 5 240 144;
node 6 0 288;
node 7 240 288;
node 8 240 144;
node 9 240 288;
node 10 240 0;
# single point coordinates - Boundary Conditions
fix 1 1 1 0;
fix 10 1 1 0;
#nodal masses:
mass 2 0.259 0.0 0.0; # assign nodal masses to master nodes only
mass 3 0.259 0.0 0.0;
mass 9 0.259 0.0 0.0;
mass 8 0.259 0.0 0.0;
# define ELEMENTS _____________________________________________
geomTransf PDelta 1; # geom tranf.
#connectivity
element elasticBeamColumn 1 1 2 28.2 29000 833 1;
element elasticBeamColumn 2 2 3 28.2 29000 833 1;
element elasticBeamColumn 3 4 5 14.1 29000 484 1;
element elasticBeamColumn 4 6 7 14.1 29000 484 1;
element elasticBeamColumn 5 8 9 28.2 29000 833 1;
element elasticBeamColumn 6 10 8 28.2 29000 833 1;
# Semi-Rigid Connections
fix 2 0 0 0; # Allpied at the master nodes
fix 3 0 0 0;
fix 9 0 0 0;
fix 8 0 0 0;
equalDOF 2 4 1 2;
equalDOF 3 6 1 2;
equalDOF 9 7 1 2;
equalDOF 8 5 1 2;
uniaxialMaterial Steel02 1 1989 786732 0.001;
element zeroLength 7 2 4 -mat 1 -dir 3;
element zeroLength 8 3 6 -mat 1 -dir 3;
element zeroLength 9 9 7 -mat 1 -dir 3;
element zeroLength 10 8 5 -mat 1 -dir 3;
# define RECORDERS ____________________________________________
recorder Node -file Data/DNode2SemiRigid1.out -time -node 2 -dof 1 disp;
recorder Node -file Data/DNode3SemiRigid1.out -time -node 3 -dof 1 disp;
#defne GRAVITY ________________________________________________
pattern Plain 1 Linear {
load 2 0.0 -100.0 0.0;
load 3 0.0 -100.0 0.0;
load 9 0.0 -100.0 0.0;
load 8 0.0 -100.0 0.0;
}
constraints Lagrange;
numberer Plain;
system BandSPD;
test NormDispIncr 1.0e-8 100;
algorithm Newton;
integrator LoadControl 0.1;
analysis Static;
analyze 10;
loadConst -time 0.0;
# define Lateral Load ________________________________________
pattern Plain 2 Linear {
load 2 10.0 0.0 0.0;
load 3 10.0 0.0 0.0;
}
# pushover: displacement analysis
integrator LoadControl 0.1;
analyze 10;
puts "Done!"
Thank you!
OK Dr. Silvia,
Currently, the master and slave nodes are connected as follows:
fix 2 0 0 0; # Allpied at the master nodes
fix 3 0 0 0;
fix 9 0 0 0;
fix 8 0 0 0;
# fix 4 0 0 0;
# fix 6 0 0 0'
# fix 7 0 0 0;
# fix 5 0 0 0;
equalDOF 2 4 1 2;
equalDOF 3 6 1 2;
equalDOF 9 7 1 2;
equalDOF 8 5 1 2;
uniaxialMaterial Steel02 1 1989 786732 0.1;
element zeroLength 7 2 4 -mat 1 -dir 3;
element zeroLength 8 3 6 -mat 1 -dir 3;
element zeroLength 9 9 7 -mat 1 -dir 3;
element zeroLength 10 8 5 -mat 1 -dir 3;
This way all 3 dofs between master and slave notes are linked. When I tried to run the model as it is, I get the following error:
WARNING BandGenLinLapackSolver::solve<> -LAPACK routine returned 8
WARNING NewtonRaphson::solveCurrentStep<> -the LinearSysOfEqn failed in solve<>
StaticAnalysis::analyze<> - the Algorithm failed at iteration: 0 with domain at load factor 0.1
OpenSees > analyze failed, returned: -3 error flag
So , I tried to apply the same fixity conditions (fix 4 0 0 0, etc.) to the slave notes as well. Now, OpenSees gives me the following:
WARNING invalid fixity 3 – load 6 3 fixities
Expected integer but got “0”
I also applied fix 1 1 1 1 instead of fix 1 1 1 0 at my supports, which I originally had ,but it did not change the massage warnings at all. What am I constraining incorrectly?
I read over your massage from im_pce, since he/she encountered very similar problem. In his/her case you recommended the following command:
fix 2 0 0 1;
However, this fixity will not work for me, since I am trying to model a semi-rigid connection with nonlinearity in the rotational dof.
Would you please help me figure out why my model is unstable? Thank you so much!
Currently, the master and slave nodes are connected as follows:
fix 2 0 0 0; # Allpied at the master nodes
fix 3 0 0 0;
fix 9 0 0 0;
fix 8 0 0 0;
# fix 4 0 0 0;
# fix 6 0 0 0'
# fix 7 0 0 0;
# fix 5 0 0 0;
equalDOF 2 4 1 2;
equalDOF 3 6 1 2;
equalDOF 9 7 1 2;
equalDOF 8 5 1 2;
uniaxialMaterial Steel02 1 1989 786732 0.1;
element zeroLength 7 2 4 -mat 1 -dir 3;
element zeroLength 8 3 6 -mat 1 -dir 3;
element zeroLength 9 9 7 -mat 1 -dir 3;
element zeroLength 10 8 5 -mat 1 -dir 3;
This way all 3 dofs between master and slave notes are linked. When I tried to run the model as it is, I get the following error:
WARNING BandGenLinLapackSolver::solve<> -LAPACK routine returned 8
WARNING NewtonRaphson::solveCurrentStep<> -the LinearSysOfEqn failed in solve<>
StaticAnalysis::analyze<> - the Algorithm failed at iteration: 0 with domain at load factor 0.1
OpenSees > analyze failed, returned: -3 error flag
So , I tried to apply the same fixity conditions (fix 4 0 0 0, etc.) to the slave notes as well. Now, OpenSees gives me the following:
WARNING invalid fixity 3 – load 6 3 fixities
Expected integer but got “0”
I also applied fix 1 1 1 1 instead of fix 1 1 1 0 at my supports, which I originally had ,but it did not change the massage warnings at all. What am I constraining incorrectly?
I read over your massage from im_pce, since he/she encountered very similar problem. In his/her case you recommended the following command:
fix 2 0 0 1;
However, this fixity will not work for me, since I am trying to model a semi-rigid connection with nonlinearity in the rotational dof.
Would you please help me figure out why my model is unstable? Thank you so much!
Dr. Silvia,
I tried running a simple candeliver beam with a semi-rigid connection at the support (instead of complete fixity). OpenSees still gives me the same error massages, so I know my problem is fundamental. I fixed node 2 (the slave node) to make sure my model is stable, but I am still unable to get results. Do I have to specify “fix 1 0 0 0” for the master node? Even then, it is not working! Would you please help me? Why are my constraints inadequate? My script is as follows:
wipe;
model basic -ndm 2 -ndf 3;
file mkdir data;
# define GEOMETRY _____________________________________________
# nodal coordinates
node 1 0 0;
node 2 0 0;
node 3 0 144;
# single point coordinates - Boundary Conditions
#nodal masses:
mass 3 0.259 0.0 0.0;
fix 2 1 1 1;
fix 1 0 0 0;
# define ELEMENTS _____________________________________________
geomTransf Linear 1; # geom tranf.
#connectivity
element elasticBeamColumn 1 1 3 28.2 29000 833 1;
# Semi-Rigid Connections
uniaxialMaterial Steel02 1 1989 786700 0.1;
element zeroLength 2 1 2 -mat 1 -dir 3;
equalDOF 1 2 1 2;
# define RECORDERS ____________________________________________
recorder Node -file Data/DNode2SemiRigid1.out -time -node 2 -dof 1 disp;
recorder Node -file Data/DNode3SemiRigid1.out -time -node 3 -dof 1 disp;
#defne GRAVITY ________________________________________________
pattern Plain 1 Linear {
load 3 0.0 -100.0 0.0;
}
constraints Plain;
numberer Plain;
system BandGeneral;
test NormDispIncr 1.0e-3 20;
algorithm Newton;
integrator LoadControl 0.1;
analysis Static;
analyze 10;
I really appreciate your help!
I tried running a simple candeliver beam with a semi-rigid connection at the support (instead of complete fixity). OpenSees still gives me the same error massages, so I know my problem is fundamental. I fixed node 2 (the slave node) to make sure my model is stable, but I am still unable to get results. Do I have to specify “fix 1 0 0 0” for the master node? Even then, it is not working! Would you please help me? Why are my constraints inadequate? My script is as follows:
wipe;
model basic -ndm 2 -ndf 3;
file mkdir data;
# define GEOMETRY _____________________________________________
# nodal coordinates
node 1 0 0;
node 2 0 0;
node 3 0 144;
# single point coordinates - Boundary Conditions
#nodal masses:
mass 3 0.259 0.0 0.0;
fix 2 1 1 1;
fix 1 0 0 0;
# define ELEMENTS _____________________________________________
geomTransf Linear 1; # geom tranf.
#connectivity
element elasticBeamColumn 1 1 3 28.2 29000 833 1;
# Semi-Rigid Connections
uniaxialMaterial Steel02 1 1989 786700 0.1;
element zeroLength 2 1 2 -mat 1 -dir 3;
equalDOF 1 2 1 2;
# define RECORDERS ____________________________________________
recorder Node -file Data/DNode2SemiRigid1.out -time -node 2 -dof 1 disp;
recorder Node -file Data/DNode3SemiRigid1.out -time -node 3 -dof 1 disp;
#defne GRAVITY ________________________________________________
pattern Plain 1 Linear {
load 3 0.0 -100.0 0.0;
}
constraints Plain;
numberer Plain;
system BandGeneral;
test NormDispIncr 1.0e-3 20;
algorithm Newton;
integrator LoadControl 0.1;
analysis Static;
analyze 10;
I really appreciate your help!
this is the error i get:
OpenSees > analyze 10;
WARNING PlainHandler::handle() - constraint at dof 0 already specified for constrained node in MP_Constraint at node 2
WARNING PlainHandler::handle() - constraint at dof 1 already specified for constrained node in MP_Constraint at node 2
WARNING BandGenLinLapackSolver::solve() -LAPACK routine returned 5
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysOfEqn failed in solve()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 0 with domain at load factor 0.1
OpenSees > analyze failed, returned: -3 error flag
-3
OpenSees > analyze 10;
WARNING PlainHandler::handle() - constraint at dof 0 already specified for constrained node in MP_Constraint at node 2
WARNING PlainHandler::handle() - constraint at dof 1 already specified for constrained node in MP_Constraint at node 2
WARNING BandGenLinLapackSolver::solve() -LAPACK routine returned 5
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysOfEqn failed in solve()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 0 with domain at load factor 0.1
OpenSees > analyze failed, returned: -3 error flag
-3
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
Exactly!
I can use Lagrange instead of Plain for the constraints handler. This fixes the first warning. However, I am not able to eliminate the last 2 warnings, namely:
WARNING BandGenLinLapackSolver::solve() -LAPACK routine returned 5
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysOfEqn failed in solve()
As you mentioned earlier, the model does not seem to be constrained correctly. Here is what I have done:
1) I linked dofs 1 and 2 for the master and slave nodes using equalDOF
2) I created a zerolength member to link dof 3 between the master and slave node.
These steps cover all dofs, since the beam is in 2D. However, the beam is still not stable. What am I missing?
Thank you!
I can use Lagrange instead of Plain for the constraints handler. This fixes the first warning. However, I am not able to eliminate the last 2 warnings, namely:
WARNING BandGenLinLapackSolver::solve() -LAPACK routine returned 5
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysOfEqn failed in solve()
As you mentioned earlier, the model does not seem to be constrained correctly. Here is what I have done:
1) I linked dofs 1 and 2 for the master and slave nodes using equalDOF
2) I created a zerolength member to link dof 3 between the master and slave node.
These steps cover all dofs, since the beam is in 2D. However, the beam is still not stable. What am I missing?
Thank you!
Dr. Silvia,
Assigning node 2 to be the master node helped. I had to change the “test” command to EnergyIncr, but I am finally getting results. However, the results do not make physical sense. The displacement for dof 1 at the free node (node 3) is negative, while the horizontal force at this node is applied at the positive direction. I am also applying a negative force in the y-direction at node3, and considering P-Delta effects. I went over the script a few times and everything seems OK. Why am I getting such results?
I really appreciate your help!
Assigning node 2 to be the master node helped. I had to change the “test” command to EnergyIncr, but I am finally getting results. However, the results do not make physical sense. The displacement for dof 1 at the free node (node 3) is negative, while the horizontal force at this node is applied at the positive direction. I am also applying a negative force in the y-direction at node3, and considering P-Delta effects. I went over the script a few times and everything seems OK. Why am I getting such results?
I really appreciate your help!