Difference between RigidLink Beam or Bar

Telec
Posts: 30
Joined: Sun Oct 11, 2020 8:27 am

Difference between RigidLink Beam or Bar

Post by Telec » Wed Oct 14, 2020 5:24 pm

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.

STKO Team
Posts: 3066
Joined: Tue Oct 29, 2019 8:45 am

Re: Difference between RigidLink Beam or Bar

Post by STKO Team » Thu Oct 15, 2020 8:29 am

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:
  • Ux(slave) = Ux(master)
  • Uy(slave) = Uy(master)
If you look at it in matrix form, U(slave) = C : U(master), you can see that the constraint matrix is equal to the Identity matrix, because translations and displacements are un-coupled:

Code: Select all

|Ux(slave)|   |1 0| |Ux(master)|
|Uy(slave)| = |0 1|*|Uy(master)|
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:
  • Ux(slave) = Ux(master)-Rz(master)*dy
  • Uy(slave) = Uy(master)+Rz(master)*dx
  • Rz(slave) = Rz(Master)
If you look at it in matrix form, U(slave) = C : U(master), you can see that the constraint matrix is NOT equal to the Identity matrix, because translations and displacements are coupled:

Code: Select all

|Ux(slave)|   |1 0 -dy| |Ux(master)|
|Uy(slave)| = |0 1  dx|*|Uy(master)|
|Rz(slave)|   |0 0   1| |Rz(master)|
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.

Telec
Posts: 30
Joined: Sun Oct 11, 2020 8:27 am

Re: Difference between RigidLink Beam or Bar

Post by Telec » Thu Oct 15, 2020 11:36 am

ok thanks, now it also works with rigid link beam and a costrain handler penalty function. However, I have a problem with convergence:

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
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.
Attachments
stud.jpg
stud.jpg (26.82 KiB) Viewed 7652 times

STKO Team
Posts: 3066
Joined: Tue Oct 29, 2019 8:45 am

Re: Difference between RigidLink Beam or Bar

Post by STKO Team » Mon Oct 19, 2020 8:26 am

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

Telec
Posts: 30
Joined: Sun Oct 11, 2020 8:27 am

Re: Difference between RigidLink Beam or Bar

Post by Telec » Mon Oct 19, 2020 11:06 am

I tried but couldn't fix the problem. Place the file. Thank you.
Attachments
compositebeam.rar
(135.36 KiB) Downloaded 280 times

STKO Team
Posts: 3066
Joined: Tue Oct 29, 2019 8:45 am

Re: Difference between RigidLink Beam or Bar

Post by STKO Team » Mon Oct 19, 2020 3:09 pm

Ok now it works.
See the attached file:
compositebeam.zip
(201.7 KiB) Downloaded 301 times

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)
C02.png
C02.png (182.06 KiB) Viewed 7578 times

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.
how can I read in the post-processor the stresses in the zero length element??
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.
C020.png
C020.png (289.58 KiB) Viewed 7578 times

Telec
Posts: 30
Joined: Sun Oct 11, 2020 8:27 am

Re: Difference between RigidLink Beam or Bar

Post by Telec » Mon Oct 19, 2020 7:21 pm

Thanks, perfect :D :D . 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?

STKO Team
Posts: 3066
Joined: Tue Oct 29, 2019 8:45 am

Re: Difference between RigidLink Beam or Bar

Post by STKO Team » Tue Oct 20, 2020 10:56 am

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
... with a Shell element (ShellMIT4)...
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.

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:
compositebeamshell_distributed.zip
(167.29 KiB) Downloaded 288 times

Telec
Posts: 30
Joined: Sun Oct 11, 2020 8:27 am

Re: Difference between RigidLink Beam or Bar

Post by Telec » Wed Oct 21, 2020 10:20 am

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.
you can define the steel property as Force/Length - Displacement law (i.e. force per unit length).
6) How Can I do that? For example, how can I change my rambergOsgood material for using with distribuited zero-length?

7) In opensees how can I manually insert a zero-length distribuited?
Thx for all.

STKO Team
Posts: 3066
Joined: Tue Oct 29, 2019 8:45 am

Re: Difference between RigidLink Beam or Bar

Post by STKO Team » Wed Oct 21, 2020 11:06 am

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?
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.
2) Does the transition from DamageTC3D to plateFiber have to be done for shell elements? 3D to 2D?
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.
3) Where can I find information on this DamageTC3D material to study it?
https://www.researchgate.net/publicatio ... hear_walls
https://www.researchgate.net/publicatio ... onry_walls
As an alternative to this nD material, what could I use for a concrete shell?
PlasticDamageConcrete3d
4) Where can I find information on the ASDShellQ4 element to study it?
This is the Pull Request that I made to add this new shell:
Here in the description of this file you can find all the references:
https://github.com/OpenSees/OpenSees/bl ... DShellQ4.h
5) Both ASDShellQ4 and DamageTC3D can I also use them in opensees by manually compiling the code?
ASDShellQ4 is in the official OpenSees repo, so yes.
The DamageTC3D is distributed as a DLL by the pre-compiled version by prof. Tarque, so no.
6) How Can I do that? For example, how can I change my rambergOsgood material for using with distribuited zero-length?
Just insert your material parameter assuming that in X you have displacements, and in Y you have force per unit-length instead of just force
7) In opensees how can I manually insert a zero-length distribuited?
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.

Post Reply