FSI Simulation Details

129 views
Skip to first unread message

Mohammad Wasfi

unread,
Aug 22, 2023, 12:26:13 PM8/22/23
to ProjectChrono
  Hi, 

I had some questions that I was hoping you could help me with. I have been studying the FSI demos to try to better understand the FSI module. I have mostly been using the DEM engine, so I have noticed some significant differences between the DEM module and the FSI module. I am trying to duplicate a simulation that I have done in the DEM ( https://drive.google.com/file/d/1L9Br1Vf9hsFkjXqbhAZGNpgVep3p5YK_/view?usp=drive_link). In this simulation, I first initialize a bed with specific materials' properties (Young's modulus, possession ratio, static friction, rolling friction,  coefficient of restitution, and cohesion energy density (the cohesion module is implemented by me)). Then I settle the bed. After the bed is settled, I drop the screw in a drop phase. After the screw is settled on the bed, I start rotating the screw at 1 rad/s while restricting its movement in the x direction and applying a down force on it.  

To duplicate this simulation, I started with the DEMO_FSI_SingleWheelTest where I started switching the wheel geometry to my geometry and changing the bed size to what is in the DEM simulation( https://drive.google.com/file/d/18KhOFfXNEIlgcoLTvxTi27XL5soYB4yz/view?usp=drive_link - FSI_ScrewTest.cpp). The simulation looks okay but I got stuck on many things after. I was wondering if you could help me with this stuff:

1- the bed looked too rigid. I have tried to figure out what to change to get a similar bed to what is in my DEM simulation but I could not. My bed in the DEM sim is generated using a PD sampler and then is allowed to settle. I have noticed that there is no settling phase in the FSI simulation. Is this normal for FSI simulations? What is controlling the rigidity of the bed in this simulation? 

2- Bed properties? I have noticed that you get some of the parameters from a JSON file and some of them are defined in the simulation. However, it seems that FSI simulations use some different properties for the bed than what is used in DEM.  Is it possible to define the bed using ONLY the material properties that I used in my DEM simulation (mentioned above)? Also, I could not find where the particle radius is defined in the simulation and was wondering if the kernelLength parameter is the same as the particle radius. Finally, I would like to set all my simulation parameters in my .cpp file instead of using a JSON file and was wondering about the appropriate way to set such parameters (such as Young's modulus, Can I have a code example?). 

3- I was wondering about the best way to restrict motion in some of the directions. Also, what is the best way to apply forces to the mesh?

Thank you so much for your help in advance, 

FSI_ScrewTest.cpp

Luning Bakke

unread,
Aug 23, 2023, 7:11:51 PM8/23/23
to ProjectChrono
Hello Mohammad,

Please take a look at my reply in blue.

1- the bed looked too rigid. I have tried to figure out what to change to get a similar bed to what is in my DEM simulation but I could not. My bed in the DEM sim is generated using a PD sampler and then is allowed to settle. I have noticed that there is no settling phase in the FSI simulation. Is this normal for FSI simulations? What is controlling the rigidity of the bed in this simulation?

As you have mentioned, DEM and CRM are different approaches for modeling granular material. For DEM, you need a settling phase, so the particles are packed. For CRM approach, the entire soil bed is modeled as a continuum, you don't need settling phase, in fact, whatever soil depth you got after settling in DEM, you can use that thickness to model the soil bed in SPH. The rigidity of the soil can be tuned using Young's Modulus, I will cover more later.
That being said,  when I looked at the CMakeCache you posted, I noticed you set the flag "USE_FSI_DOUBLE" to be "ON". For the release/8.0 branch (which is what I believe you are using now), there is a bug when using double precision, which results in your terrain look rigid. The bug was fixed in main, see here . You can either make the change in your own code, or switch to single precision (set USE_FSI_DOUBLE to be OFF in your cmake). 

2- Bed properties? I have noticed that you get some of the parameters from a JSON file and some of them are defined in the simulation. However, it seems that FSI simulations use some different properties for the bed than what is used in DEM.  Is it possible to define the bed using ONLY the material properties that I used in my DEM simulation (mentioned above)? Also, I could not find where the particle radius is defined in the simulation and was wondering if the kernelLength parameter is the same as the particle radius. Finally, I would like to set all my simulation parameters in my .cpp file instead of using a JSON file and was wondering about the appropriate way to set such parameters (such as Young's modulus, Can I have a code example?).

Every parameters you see in JSON file can be set using APIs. For parameters related to granular soil, take a look at the code here. There's some book keeping you need to sort out, in terms of what parameters are included in the struct ElasticMaterialProperties, such as particle diameter, friction coefficient, Youngs modulus, etc. For more details on the physical meaning of those parameters, you can read this paper (sec 2.1.1 on the rheology, and some applications). You can use the API SetElasticSPH() to modify your terrain parameters, rather than JSON. See an example in demo_VEH_SPHTerrain_Obstacles.cpp. Note that kernelLength defines how large a neighborhood of particles is going to have influence on the particle of interest, which is not the same as particle radius.

3- I was wondering about the best way to restrict motion in some of the directions. Also, what is the best way to apply forces to the mesh?

This is on the multibody dynamics setup. Note that in the single wheel test demo, global x is the longitudinal direction of the wheel, and global y is the lateral direction, global z is the gravity. There is a prismatic joint between chassis and the axle allowing motion in z direction, prismatic joint between ground and chassis with a prescribed velocity in x direction, and prescribed rotation on the wheel in y direction. In this example, the wheel has restricted motion in y dir. You can modify your screw problem accordingly. For more examples on multibody setup, you can look at the demos in demos/mbs folder. To apply force to your screw object, you can modify the mass of the axle body.

single_wheel_sketch.png

Thank you,
Luning

Mohammad Wasfi

unread,
Aug 24, 2023, 12:28:26 AM8/24/23
to ProjectChrono
This is great. Thank you so much Luning. I appreciate your help!

Mohammad Wasfi

unread,
Aug 24, 2023, 12:41:56 AM8/24/23
to ProjectChrono
Just one more thing. I cannot access the paper that has the physical meanings of the parameters that you mentioned since it's on the university website. I cannot even see its name. Would you mind sharing the name of the paper so I can search for it online. 

Thank you so much in advance, 

Luning Bakke

unread,
Aug 24, 2023, 11:09:43 AM8/24/23
to ProjectChrono
Here's the link,


This is the paper name:

Hu, Wei, et al. "Modeling granular material dynamics and its two-way coupling with moving solid bodies using a continuum representation and the SPH method." Computer Methods in Applied Mechanics and Engineering 385 (2021): 114022.

Mohammad Wasfi

unread,
Aug 24, 2023, 3:01:33 PM8/24/23
to ProjectChrono
Thank you so much Luning, appreciate all the help!
Reply all
Reply to author
Forward
0 new messages