Computing structural reaction forces

classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

Computing structural reaction forces

willstring
Hello!  I was wondering if it was possible to compute the structural reaction forces in Granoo when I use displacement controlled loading? I'm using the _ImposeDisplacement plugin to apply a displacement to a single block in the middle of a sheet:

<PlugIn Id="_ImposeDisplacement"  Z="-3.333333*t"  Set="load"/>

Is it possible to get the reaction forces that cause this displacement?

Obviously one could apply a force as well, but in many loading scenarios (e.g., fracture), this is unstable and displacement controlled loading is preferred over force control.


Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

Damien André
Administrator
Hello, you need a sensor here. This is exlpained in the tutorial and/or you can take a look in the Continous/TensileTest example to see how sensors are implemented.

Cheers, Damien.
Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

willstring
Okay I think I've got it, it compiles and runs and gives an answer:

PlugIn_InitSensor::Run()
{
  Core::SetOf<DEM::ElementT<Shape::Polyhedron>>& leftSet = Core::SetOf<DEM::ElementT<Shape::Polyhedron>>::Get("load");
  auto& el =leftSet(0);
  Util::Sensor::New(el, &DEM::ElementT<Shape::Polyhedron>::Position, "Position");

  Util::Sensor::New(el, &DEM::ElementT<Shape::Polyhedron>::Force, "Force");

}

Here, the "Force" is the reaction force, no?  E.g., if you apply a displacement load, it is the force required to maintain that displacement?
Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

Damien André
Administrator
Yes, but in your case, I suppose that you want the reaction of many discrete elements. It should be something like :
PlugIn_InitSensor::Run()
{
  Core::SetOf<Physic::Body>& set = Core::SetOf<Physic::Body>::Get("my_set_id");
  Util::Sensor::New(set, &Core::SetOf<Physic::Body>::ResultantForce, "Force");
  // ...... all your sensor here 
} 
If your compiler fails, you can try this :
PlugIn_InitSensor::Run()
{
  Core::SetOf<Physic::Body>& set = Core::SetOf<Physic::Body>::Get("my_set_id");
  Util::Sensor::New(set, &Core::ExtendedSetOf<Physic::Body>::ResultantForce, "Force");
  // ...... all your sensor here 
} 

Don't forget to trigger the "on-the-fly" writting of the sensors txt file with the "_WriteSensorData" plugin in your *.inp file.

Hope this help, Damien.
Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

willstring
Okay well getting somewhere here, but I can't seem to get the right reaction forces but I''m probably missing something.  See image below: its just 3 blocks, the top and bottom block are clamped completely and the top block is displaced downward to smash the middle block.  This should produce a reaction force on the top block.

However the Sensors file for the top block looks quite strange (https://www.dropbox.com/s/p77mvtbicvjdx12/Sensors.txt?dl=0)  

It gives exactly the correct position of the top block but the reaction forces appear to have random zero values; for this case its pure compression and the reaction force should be basically a linear ramp with time.

If you want I can post the full source code.

Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

Damien André
Administrator
I have no idea of what you are currently doing with GranOO but it looks funny :)

For your problem, do you trigger the WriteSensors plugin after the IntegrateAcceleration plugin ? Can you share your *.inp file ?

Cheers, Damien.
Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

willstring
Hello,

Yes, I trigger WriteSensors after IntegrateAcceleration-- If you like you can take a look at the input file here:

https://www.dropbox.com/s/ro75lkwldzlstre/input001.inp?dl=0

Its basically supposed to mimic a 2-spring 2-mass system, where the larger blocks are the masses, and the two contact surfaces act as the springs.  If you look in the Sensors file, the rightmost force column is interspersed with "0.0000000000e+00"; I'm not sure why this is but i'm probably missing something here.

Thanks again for the help!
Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

Damien André
Administrator
Hello, the _ApplyBondLoad plugin is missing. Add it just before the _IntegrateAcceleration plugin. It should work !!
Cheers, DA.
Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

willstring
Alright getting somewhere here the results are improved see attached, this is basically a plot of the reaction force.  The appears to be correct but there are still unexplained discontinuities in the plot where the reaction force randomly jumps to exactly zero.  A bit stuck here! Any thoughts as to why this might be?  I'm happy to post the full source if you want to take a look...

Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

Damien André
Administrator
Hello, these discontinuities are often generated while using simulation with contacts. The interpeneration is very low and the sudden jumps correpond to contact loss. If you take lower values of contact stiffness, these jumps should disappear.
Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

willstring
Hello-- Thanks again for your response and the help.  Sorry to be a pain but I still can't get the random zeros to disappear.

I tried lowering the contact stiffness from 10^6 to 10, and they were still there.

Moreover I tried another simulation with just two blocks (See below), the bottom block is completely clamped.  The top block is also clamped except the Z-displacement is prescribed so it smashes into the bottom block.

The slope is on average exactly equal to the contact stiffness that I put into the code but there are still random discontinuities.  (Presumably the initial offset is due to damping)



Any thoughts? I think we're getting close!
Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

Damien André
Administrator
Hum, this is strange.
I already have experienced this problem and I still not have a solution. To be honest, I don't know if this a GranOO's bug or if it is normal.

I am sorry :( I can not help anymore. I have no idea.
If you solve or if you get additional information about this issue, please let us know.
Reply | Threaded
Open this post in threaded view
|

Re: Computing structural reaction forces

Mr.Happy
I have the same issue. I noticed that the 'penetration' variable goes to zero even though there is penetration. This effects my results. Any solutions?