Hi,

Chrono is dimensionless. So as you noted, there is an underlying consistent 
set of units. In Chrono GPU, the length is usually assumed to be in *cm *(no 
demo uses *mm *as its length unit), the mass is usually in *g*, the rest 
are in SI units. The force is therefore in *g·cm/s²*. Those are just one 
possible interpretation, and any interpretation that has consistency would 
go.

>From this paper <https://www.mdpi.com/2227-9717/9/10/1813>, The unit of 
normal stiffness is *g/s²* (the same as *k* in Eq. 3), and the unit of 
normal damping is *1/s* (similar to /gamma in Eq. 3, but Chrono ::GPU's 
damping will be multiplied by particle mass to form /gamma).

Ruochun

On Saturday, December 10, 2022 at 6:47:15 AM UTC-6 [email protected] wrote:

> hello, Ruochun. Thank you for your advice, now I am trying to prepare the 
> dataset, and everything seems good now!
> Then, I have a question about the unit in the *demo_GPU_ballcosim.json*. 
> In this json, the unit of  "sphere_radius"、"box_X" seems to be *mm*, but 
> the "grav_Z" equals -980, so I guess it's *cm/s^2* ? 
> The reason why I want to know is because the force I measured is over 1e8, 
> so I guess its unit is not N? 
> I noticed  that the chrono system should not have uniform unit, but all 
> units need to correspond. I would appreciate it very much if you could tell 
> me the units of the "normalStiffS2S"、normalDampS2S"  in this by the way.
>
>
> *demo_GPU_ballcosim.json*
> {
>   "sphere_radius": 1,
>   "sphere_density": 1,
>   "box_X": 300,
>   "box_Y": 300,
>   "box_Z": 200,
>   "step_size":  5e-5
>   "time_end": 2,
>
>   "grav_X": 0,
>   "grav_Y": 0,
>   "grav_Z": -980, 
>
>   "normalStiffS2S": 1e8,
>   "normalStiffS2W": 1e8,
>   "normalStiffS2M": 1e8,
>
>   "normalDampS2S": 10000,
>   "normalDampS2W": 10000,
>   "normalDampS2M": 10000,
>
>   "tangentStiffS2S": 1e8,
>   "tangentStiffS2W": 1e8,
>   "tangentStiffS2M": 1e8,
>
>   "tangentDampS2S": 2000,
>   "tangentDampS2W": 2000,
>   "tangentDampS2M": 2000,
>
>   "static_friction_coeffS2S": 0.5,
>   "static_friction_coeffS2W": 0.5,
>   "static_friction_coeffS2M": 0.5,
>
>   "cohesion_ratio": 0,
>   "adhesion_ratio_s2w": 0,
>   "adhesion_ratio_s2m": 0,
>
>   "verbose": 0,
>   "run_mode": 1,
>
>   "psi_T": 32,
>   "psi_L": 16,
>
>   "output_dir": "ballcosim",
>   "write_mode": "csv"
> }
> 在2022年11月25日星期五 UTC+8 06:33:36<Ruochun Zhang> 写道:
>
>> Hi,
>>
>> In terms of involving simulation results of Chrono::GPU in your 
>> reinforcement learning project, I would suggest you generate the dataset 
>> using Chrono::GPU, and then use the dataset in the training. You probably 
>> have to do that anyway, even if Chrono's DEM support is wrapped in Python.
>>
>> Ruochun
>>
>> On Thursday, November 24, 2022 at 8:23:18 AM UTC-6 Radu Serban wrote:
>>
>>> You are correct: Chrono::GPU is currently not wrapped in PyChrono. 
>>>
>>> But you can certainly use smooth contact (that is construct a 
>>> ChSystemSMC) in PyChrono. Where/what did you see that made you think that’s 
>>> not possible?
>>>
>>>  
>>>
>>> --Radu
>>>
>>>  
>>>
>>> *From:* 'yibing Yan' via ProjectChrono <[email protected]> 
>>> *Sent:* Thursday, 24 November 2022 13:37
>>> *To:* ProjectChrono <[email protected]>
>>> *Subject:* [chrono] Re: the GPU module and the multicore module
>>>
>>>  
>>>
>>>
>>> Hi,
>>>
>>>  
>>>
>>> Thank you for your advice, after trying for several days, I succeed in 
>>> using co-simulation, and it took only 10 minutes every one simulation. I 
>>> have another question now, as I said before, I am going to use 
>>> reinforcement learning with chrono. I think of using openAI and I also 
>>> found projectchrono <https://github.com/projectchrono>/*gym-chrono 
>>> <https://github.com/projectchrono/gym-chrono>*. However, I don't know 
>>> if I can realize what I have done with *PyChrono*, because the 
>>> Chrono::Engine Python module does not cover all the features of the C++ API.
>>>
>>> Meanwhile, in Project Chrono: Install the PYTHON module 
>>> <https://api.projectchrono.org/development/module_python_installation.html>,
>>>   
>>> I found maybe I can't use Chrono::GPU system and Chrono SMC system in 
>>> PyChrono. Can you give me any advice?
>>>
>>> Thank you very much again sincerely!
>>>
>>> 在2022年11月11日星期五 UTC+8 11:29:20<Ruochun Zhang> 写道:
>>>
>>> Hi,
>>>
>>>  
>>>
>>> What you wanted is possible. There is no problem creating two systems in 
>>> one script, the only problem is their interaction. You can do that via 
>>> co-simulation. Like a said, *demo_GPU_ballcosim *may give you an idea 
>>> on how to do that. The general idea is that your complex mechanical system 
>>> involving ChBodies and joints and such, will still be managed by a Chrono 
>>> SMC system. Those ChBodies can be instructed to receive external forces and 
>>> torques via accumulators; those external forces and torques in this case 
>>> should be queried from Chrono::GPU simulations. That is, you load obj 
>>> meshes into a Chrono::GPU system, and in each time step, you let it compute 
>>> the contact forces between meshes and particles, then feed that information 
>>> to ChBodies to update the locations of those bodies, then feed the new 
>>> locations of these obj meshes back to Chrono::GPU to complete one time 
>>> step, and then repeat.
>>>
>>>  
>>>
>>> If your particle system is large I wouldn't recommend doing runtime 
>>> visualization anyway, that'd be totally prohibiting in terms of 
>>> computational cost. Chrono::GPU can write particles and meshes to files, 
>>> and maybe you should generate movies based on those as a post-processing 
>>> step.
>>>
>>>  
>>>
>>> Thank you,
>>>
>>> Ruochun
>>>
>>>  
>>>
>>> On Thursday, November 10, 2022 at 6:41:44 AM UTC-6 [email protected] 
>>> wrote:
>>>
>>> Hi, thank you for your response!
>>>
>>> First of all, I may have to apologise for my language skills and I 
>>> really appreciate that you are willing to listen to my ideas. I'd like to 
>>> describe my question again. I have finished a complete complex experiment, 
>>> including around 10k granular objects, two objs of my own, one container by 
>>> using *utils::AddBoxGeometry* and several links and motors, such as 
>>> *ChLinkMotorRotationSpeed*、*ChLinkMotorLinearSpeed*、*ChLinkMateFix*. I 
>>> achieved it by using *the MCORE module*, although it can speed up the 
>>> program by using multiple threads, it still took 2 hours four one time 
>>> simulation.
>>>
>>>  
>>>
>>> Now I am considering using the reinforcement learning afterwards, so it 
>>> is important to improve the simulation speed. I am wondering if I can use 
>>> *Chrono::GPU* only for my  granular objects, and all other content 
>>> remains the same by using *the MCORE module.* More specifically, I plan 
>>> to use both *ChSystemMulticoreSMC* and *ChSystemGpuMesh* in one cpp. 
>>> The reason I want to do this is because *Chrono::GPU* is more like a 
>>> separate module, some of the functions I need for simulation can't be found 
>>> in *Chrono::GPU*, but can be found in *the MCORE module* and are 
>>> already realized through my previous efforts.
>>>
>>>  
>>>
>>> I also note that *Chrono::GPU *quote ChronoEngine_GPU、
>>> ChronoEngine_irrlicht、ChronoEngine_multicore、ChronoEngine_opengl、
>>> ChronoEngine_postprocess、ChronoEngine_robot and 
>>> *ChronoEngine_multicore(* *the MCORE module* *) *is the one which I 
>>> used now.  So I can use MCORE-functions in cpps in *Chrono::GPU*,by 
>>> including the .h insteading of modify the CMakeLists.txt. 
>>>
>>>  
>>>
>>> I tried and felt if this idea was unattainable. Because I need to create 
>>> two systems in one cpp. Meanwhile, for visualization, 
>>> *opengl::ChVisualSystemOpenGL* is used in *the* *MCORE module *and 
>>> *ChGpuVisualization* is used in *the Chrono::GPU *and I can't find an 
>>> interface between the two which means they can't be showed in one window. I 
>>> don't know how to solve this problem anymore and I wonder if you have any 
>>> suggestions.
>>>
>>>  
>>>
>>> I really appreciate your help!
>>>
>>>  
>>>
>>>  
>>>
>>>  
>>>
>>> 在2022年11月10日星期四 UTC+8 13:29:20<Ruochun Zhang> 写道:
>>>
>>> Hi,
>>>
>>>  
>>>
>>> I hope someone can provide better help on the linkage issue. What I can 
>>> say is that you can try building it with cuda11.6 and the newest gcc. If 
>>> you are using cuda11.8, or an ancient version of cuda or gcc, I cannot be 
>>> sure. I've been building it with the said configuration with no problem, on 
>>> Linux or Windows.
>>>
>>>  
>>>
>>> About Chrono::GPU's usage, yes it supports obj meshes. I am not sure 
>>> about what you meant by multi-core acceleration. I might, if you elaborate 
>>> a bit. And Chrono::GPU should interact with Chrono just fine, for that 
>>> maybe you can have a look at the *ballcosim *demo.
>>>
>>>  
>>>
>>> If you care about polydisperse spherical particles or complex shaped 
>>> particles, then DEM-Engine is the way to go. You can start using it now. 
>>> Indeed, documentations are being added. I can drop you a message when it 
>>> becomes more accessible. Right now, I attached a snippet from one of my 
>>> previous emails, to help you understand how to build this tool on Linux. In 
>>> terms of using it, I'd start with checking out and running its demos. And 
>>> then, the methods in *API.h* are mostly commented, which for now, may 
>>> serve as an ad-hoc documentation for you to understand what some of its 
>>> basic usages are.
>>>
>>> Thank you,
>>>
>>> Ruochun
>>>
>>> On Wednesday, November 9, 2022 at 2:19:40 AM UTC-6 [email protected] 
>>> wrote:
>>>
>>> Hi, thank you very much for your help!
>>>
>>> After last mail, I choosed to use the multicore, the simulation took 2 
>>> hours every time now,  because I was constantly adding requests and 
>>> features and the number of bodies comes to 10k. Meanwhile, I bought a 3080 
>>> and a new computer. I am considering using the reinforcement learning 
>>> afterwards, so it is important to improve the simulation speed.
>>>
>>> I have studied your response several times,I am wondering if I can only 
>>> use Chrono::GPU for my particle-related content, and all other content 
>>> remains the same, such as multi-core acceleration, loading my own obj. More 
>>> specifically, I plan to use both ChSystemMulticoreSMC and ChSystemGpuMesh. 
>>> When compile the project, there are errors "LNK2019:Unresolvable 
>>> external symbols" in every functions defined in GPU and used in the 
>>> Muticore and I feel this is a deeper issue involving linkers. So I would 
>>> like to ask for guidance or is there another way to use the Chrono::GPU as 
>>> a DEMsolver only for the particles.
>>>
>>> And I learned something about projectchrono 
>>> <https://github.com/projectchrono>/*DEM-Engine* 
>>> <https://github.com/projectchrono/DEM-Engine>, but I found  how to 
>>> Install DEM-Engine and the DEM-Engine usage are still waiting to be 
>>> added, I would love to try it if I could.
>>>
>>> Thank you again!
>>>
>>>  
>>>
>>> 在2022年9月24日星期六 UTC+8 14:45:22<Ruochun Zhang> 写道:
>>>
>>> Hi,
>>>
>>>  
>>>
>>> The GPU module does benefit a lot from more recent hardware. If your 
>>> test case does not feature a huge number of bodies, say some 10k, then 
>>> multicore can be a good choice. It probably requires less learning from you 
>>> too.
>>>
>>>  
>>>
>>> It should be noted that Chrono::GPU is not "Chrono on GPU". Most Chrono 
>>> core classes and methods cannot be used in Chrono::GPU. For all 
>>> purposes, Chrono::GPU can be seen as a standalone DEM solver for 
>>> monodisperse spherical particles, implemented on GPU. It should be used to 
>>> simulate granular materials, and it can interact with Chrono (core) so that 
>>> it becomes possible to bring a small number of more complex objects (such 
>>> as your spoon) into the simulation as well. So if you would like to use 
>>> Chrono::GPU, you have to start from its demos, to learn how to use its own 
>>> methods to instantiate and manage granular particles. Chrono::GPU's main 
>>> advantage is being fast. If your simulation has to involve millions of 
>>> granular particles, then multicore will not do and GPU is the choice.
>>>
>>>  
>>>
>>> More specifically, *CreateCylindricalContainerFromBoxes*  is not a 
>>> Chrono::GPU thing at all. *cohesion_ratio* is about the cohesion 
>>> between Chrono::GPU particles, and it has nothing to do with gravity, which 
>>> is set by *SetGravitationalAcceleration* in Chrono::GPU.
>>>
>>>  
>>>
>>> On a different note, Chrono's DEM/granular support on GPU is moving 
>>> towards a new direction. The support for complex granular particle shapes 
>>> will be added and it will become a duo-GPU solver. It will be based on 
>>> SBEL's 
>>> new DEM Engine <https://github.com/uwsbel/DEM-Engine>. Apart from being 
>>> more general and having higher efficiency, the usage of it is similar to 
>>> Chrono::GPU, as a standalone helper to Chrono core which manages the 
>>> granular part of the simulation, or work on its own as a dedicated DEM 
>>> solver. If from the previous conversation you believe Chrono::GPU is for 
>>> you, then likely this package will be of interest. More documentations and 
>>> user guides are being added to it. But again, it does benefit from recent 
>>> GPUs though. 
>>>
>>>  
>>>
>>> Thank you,
>>>
>>> Ruochun
>>>
>>>  
>>>
>>> On Sunday, September 18, 2022 at 2:13:24 AM UTC-5 [email protected] wrote:
>>>
>>> hello there,
>>>
>>> I am tring to perform a simulation which I want to put an object like a 
>>> spoon and scoop the sand(granular objects) to see the force in the process.
>>>
>>> I find that demo_GPU_mixer.cpp demo can be referenced, but I am not sure 
>>> whether I need to add a container holding those sand and give the granular 
>>> objects gravity. If this is so, should I use 
>>> *CreateCylindricalContainerFromBoxes* to add container and use 
>>> *cohesion_ratio*  in the .json to add the gravity? Also, I am sad that 
>>> I have a poor GPU so that it really take a long long time to run the gpu 
>>> module.
>>>
>>> Then I find that there are also some granular objects demos in the 
>>> multicore module, I find some demos about a container with granular 
>>> material. And I can run those demos faster.
>>>
>>> Now I am confused about what thing to do next is much better.
>>>
>>>  
>>>
>>> Any help will be appreciated, thank you so much in advance.
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "ProjectChrono" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/projectchrono/8e6dcb70-2812-4b15-aa00-845f77b9c67dn%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/projectchrono/8e6dcb70-2812-4b15-aa00-845f77b9c67dn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/projectchrono/be21ffc1-8694-46cb-bd9f-fcc2311b47d3n%40googlegroups.com.

Reply via email to