Difference between RigidLink Beam or Bar
Difference between RigidLink Beam or Bar
Hello everybody,
I am trying to model the connection of a composite steel-concrete beam.
Can you tell me what the difference is between a beam type rigid link and a bar type rigid link with the selection on translation and rotation in the STKO menu?
Because if I use the first type I get this error:
Increment: 1. time_increment = 1.0. Current time = 0.0
WARNING PlainHandler :: handle () - constraint matrix not identity, ignoring constraint for node 53
non-varyng assumed
(the error is repeated also for other 3 nodes which are the ones in which I inserted the RL)
While in the second case I can get a complete analysis. Thank you.
I am trying to model the connection of a composite steel-concrete beam.
Can you tell me what the difference is between a beam type rigid link and a bar type rigid link with the selection on translation and rotation in the STKO menu?
Because if I use the first type I get this error:
Increment: 1. time_increment = 1.0. Current time = 0.0
WARNING PlainHandler :: handle () - constraint matrix not identity, ignoring constraint for node 53
non-varyng assumed
(the error is repeated also for other 3 nodes which are the ones in which I inserted the RL)
While in the second case I can get a complete analysis. Thank you.
Re: Difference between RigidLink Beam or Bar
The "bar" type is like an equalDOF for the translational DOFs:
let's say you select both displacement and rotations, is constraints the slave DOFs to be equal to the respective master DOFs.
For a 2D case it enforces the following:
The "beam" type instead is a real rigid link, in the sense that it couples displacements and rotations if there is a distance d = [dx; dy] > 0 between the master and slave nodes.
For a 2D case it enforces the following:
Whenever you have a constraint matrix (rigidLink or rigidDiaphragm) that is not equal to the identity matrix, you cannot use the Plain Handler (it cannot handle non-identity constraints and imposed-dispalcements != 0).
Use instead the one of the other handlers.
let's say you select both displacement and rotations, is constraints the slave DOFs to be equal to the respective master DOFs.
For a 2D case it enforces the following:
- Ux(slave) = Ux(master)
- Uy(slave) = Uy(master)
Code: Select all
|Ux(slave)| |1 0| |Ux(master)|
|Uy(slave)| = |0 1|*|Uy(master)|
For a 2D case it enforces the following:
- Ux(slave) = Ux(master)-Rz(master)*dy
- Uy(slave) = Uy(master)+Rz(master)*dx
- Rz(slave) = Rz(Master)
Code: Select all
|Ux(slave)| |1 0 -dy| |Ux(master)|
|Uy(slave)| = |0 1 dx|*|Uy(master)|
|Rz(slave)| |0 0 1| |Rz(master)|
Use instead the one of the other handlers.
Re: Difference between RigidLink Beam or Bar
ok thanks, now it also works with rigid link beam and a costrain handler penalty function. However, I have a problem with convergence:
I have attached an image in which I drew the scheme adopted for the connection model. I used a rigid link A to B and D to C (master nodes A and D). While between B and C I inserted a zero length element to simulate the presence of a connection stud. I was wondering if it was correct as modeling or if it throws me the above errors. Also, if it is correct, how can I read in the post-processor the stresses in the zero length element?? Thank you.
Code: Select all
WARNING - ForceBeamColumn3d::update - failed to get compatible element forces & deformations for element
....
Domain::update - domain failed in update
DisplacementControl::update - model failed to update for new dU
WARNING NewtonRaphson::solveCurrentStep() -the Integrator failed in update()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 0 with domain at load factor 139.694
OpenSees > analyze failed, returned: -3 error flag- Attachments
-
- stud.jpg (26.82 KiB) Viewed 7652 times
Re: Difference between RigidLink Beam or Bar
It is correct, assuming that the zeroLength between the 2 nodes are correctly defined in all necessary directions.
There could be many reasons for non-convergence.
Start by giving the zerolength an elastic material. If you keep having convergence problems, then it means that it is not due to material nonlinearity.
Another problem could be a wrong value for the penalty handler... It should be about 8 order of magninture higher then the largest stiffness you have in your model... But not too large.
Another common issue, when using the penalty handler, use a normDispIncr test, not a test on the NormUnbalance.
Check the above points, and if you keep having issues, post your SCD file (zipped) here
There could be many reasons for non-convergence.
Start by giving the zerolength an elastic material. If you keep having convergence problems, then it means that it is not due to material nonlinearity.
Another problem could be a wrong value for the penalty handler... It should be about 8 order of magninture higher then the largest stiffness you have in your model... But not too large.
Another common issue, when using the penalty handler, use a normDispIncr test, not a test on the NormUnbalance.
Check the above points, and if you keep having issues, post your SCD file (zipped) here
Re: Difference between RigidLink Beam or Bar
I tried but couldn't fix the problem. Place the file. Thank you.
- Attachments
-
- compositebeam.rar
- (135.36 KiB) Downloaded 280 times
Re: Difference between RigidLink Beam or Bar
Ok now it works.
See the attached file:
The main error was due to the lambda parameter of the Concrete02. You set it to 0.1, but it was too small, leading to a non-physical hysteretic loop (use the material tester to check that your parameters are correct)
Then I made few other changes to the analysis (krylov-newton, lower tolerance, higher number of iterations, smaller time steps).
Since your beam is already discretized, it's uselss and overkilling to use a force-based element, use instead a displacement-based element. It will converge faster.
See the attached file:
The main error was due to the lambda parameter of the Concrete02. You set it to 0.1, but it was too small, leading to a non-physical hysteretic loop (use the material tester to check that your parameters are correct)
Then I made few other changes to the analysis (krylov-newton, lower tolerance, higher number of iterations, smaller time steps).
Since your beam is already discretized, it's uselss and overkilling to use a force-based element, use instead a displacement-based element. It will converge faster.
You need to record material.strain and material.stress (you already did it). Then you can create a GaussPlot and choose material.strain and/or material.stress as a result. Note that it will show 6 components because your zero-length element has 6 uniaxial materials. But since it is called "stress" and has 6 components, STKO thinks it is a stress tensor in 3D, so you will see the 6 components called S11 S22 S33 S12 S23 S13, and also all the invariants. But in your case you are only interested in the first component S11, because it is the output of the first DOF of your zero-length, that is where you defined your steel material.how can I read in the post-processor the stresses in the zero length element??
Re: Difference between RigidLink Beam or Bar
Thanks, perfect
. Instead, if I want to model the concrete slab with a Shell element (ShellMIT4), it is better to use: 1) layerShell, in order to insert the reinforcement; 2) PlateFiber or 3) ElasticMembraneSection ??
In these cases, can I still use the Node-to-node rigid link to connect the zero length element with the shell face?
In these cases, can I still use the Node-to-node rigid link to connect the zero length element with the shell face?
Re: Difference between RigidLink Beam or Bar
Instead, if I want to model the concrete slab with a Shell element (ShellMIT4), it is better to use: 1) layerShell, in order to insert the reinforcement; 2) PlateFiber or 3) ElasticMembraneSection ??
- ElasticMembraneSection: NO, it is elastic
- PlateFiber: NO, it is non-linear, but with only 1 material and a fixed number of though-the-thickness integration points (fibers)
- LayeredShell: YES, it is non-linear, with a custom number of fibers, and each one can have a different material
Try to use the ASDShellQ4 element. It is a new element that we recently added to OpenSees. It is much more performant than the ShellMITC4, and supports very well geometric nonlinearity.... with a Shell element (ShellMIT4)...
Keep in mind that if you model it as a Shell, you need a nD (3D) material for concrete in the slab. If you use the OpenSees version pre-compiled by prof. Tarque, you have access to a very performant 3D Plastic-Damage model (DamageTC3D) that we implemented.
Another note regarding the modelling approach: I have seen that you draw directly in the CAD model many pieces of beams and many nodes (for connections). This is very tedious, especially if you have to do a huge model. Then I immagine that the steel property for your connections is actually a Force-Displacement law, rather then a stress-strain law, because they are punctual connections.
If instead it is fine for you to have distributed connections (that is, if you are not interested in the real number of connections), you can define the steel property as Force/Length - Displacement law (i.e. force per unit length). Then in the zeroLength element you can check the "distributed" option. In this way, after meshing, STKO will take your ForcePerUNitLength-Displacement law and multiply it by the tributary length of a node. In this way you can remesh your model without re-defining all the connections.
Here you can find the model (note that now I moved back to the force-beam-column element due to the issue in this other post viewtopic.php?f=27&t=1720#p2396:
Re: Difference between RigidLink Beam or Bar
Perfect. I have finally seen an example on the use of the layered shell. thank you
I have some questions about the model that you have modified:
If I understand correctly, you must first choose a constitutive bond for the different materials that make up the shell. Then insert them all with their thickness in order.
1) But why did you put 4 layers with the same thickness and the same material in the central part of the shell rather than just one?
2) Does the transition from DamageTC3D to plateFiber have to be done for shell elements? 3D to 2D?
3) Where can I find information on this DamageTC3D material to study it? As an alternative to this nD material, what could I use for a concrete shell?
4) Where can I find information on the ASDShellQ4 element to study it?
5) Both ASDShellQ4 and DamageTC3D can I also use them in opensees by manually compiling the code?
Yes, I inserted the connectors and then the rigid links through the cad tools. Instead, from the model, I saw that you entered two line elements rather than single points. Subsequently with a Node-to-Node interaction you have selected the first master line and then the second slave line. You have assigned zero length properties to this newly created interaction by checking the DISTRIBUITED box.
7) In opensees how can I manually insert a zero-length distribuited?
Thx for all.
If I understand correctly, you must first choose a constitutive bond for the different materials that make up the shell. Then insert them all with their thickness in order.
1) But why did you put 4 layers with the same thickness and the same material in the central part of the shell rather than just one?
2) Does the transition from DamageTC3D to plateFiber have to be done for shell elements? 3D to 2D?
3) Where can I find information on this DamageTC3D material to study it? As an alternative to this nD material, what could I use for a concrete shell?
4) Where can I find information on the ASDShellQ4 element to study it?
5) Both ASDShellQ4 and DamageTC3D can I also use them in opensees by manually compiling the code?
Yes, I inserted the connectors and then the rigid links through the cad tools. Instead, from the model, I saw that you entered two line elements rather than single points. Subsequently with a Node-to-Node interaction you have selected the first master line and then the second slave line. You have assigned zero length properties to this newly created interaction by checking the DISTRIBUITED box.
6) How Can I do that? For example, how can I change my rambergOsgood material for using with distribuited zero-length?you can define the steel property as Force/Length - Displacement law (i.e. force per unit length).
7) In opensees how can I manually insert a zero-length distribuited?
Thx for all.
Re: Difference between RigidLink Beam or Bar
Because every layer is made of just 1 material point, if the central part was made of only 1 point (layer), it would have been placed in the middle, so it would not have captured the flexural effect.1) But why did you put 4 layers with the same thickness and the same material in the central part of the shell rather than just one?
It is not mandatory for the DamageTC3D, because it internally can convert itself to a PlateFiber, but not all 3D material can do that, so I preferred to show you the standard way, that is, do it manually.2) Does the transition from DamageTC3D to plateFiber have to be done for shell elements? 3D to 2D?
https://www.researchgate.net/publicatio ... hear_walls3) Where can I find information on this DamageTC3D material to study it?
https://www.researchgate.net/publicatio ... onry_walls
PlasticDamageConcrete3dAs an alternative to this nD material, what could I use for a concrete shell?
This is the Pull Request that I made to add this new shell:4) Where can I find information on the ASDShellQ4 element to study it?
Here in the description of this file you can find all the references:
https://github.com/OpenSees/OpenSees/bl ... DShellQ4.h
ASDShellQ4 is in the official OpenSees repo, so yes.5) Both ASDShellQ4 and DamageTC3D can I also use them in opensees by manually compiling the code?
The DamageTC3D is distributed as a DLL by the pre-compiled version by prof. Tarque, so no.
Just insert your material parameter assuming that in X you have displacements, and in Y you have force per unit-length instead of just force6) How Can I do that? For example, how can I change my rambergOsgood material for using with distribuited zero-length?
It is not possible. In opensees all zero-length are lumped. STKO does a simple trick. Allows you to insert distributed values, and then (if -distribtued option is checked) it converts those distribueted springs into lumped springs.7) In opensees how can I manually insert a zero-length distribuited?