Hi, ruochun, thank you for your help sincerely! After some attempts, I 
succeeded in using  material-based properties. I realized that I should use 
functions in ChSystemGpuMesh:: instead of ChSystemGpu::. I will continue to 
learn it for a few days, and I will try to use DEM-Engine if I get the 
chance later. Thank you very much for your help!

在2023年9月9日星期六 UTC+8 18:37:20<Ruochun Zhang> 写道:

> Hi,
>
> To answer the questions:
>
> 1. They can be different. In that test, I didn't choose to set them 
> differently though. Is there anything that makes you concerned about this 
> choice?
>
> 2. Mesh material properties are specified by those S2M parameters. 
> Compared to real-world materials, the properties we use tend to be much 
> less stiff. This is to make the simulation easier to run, and it is a 
> common practice.
>
> 3. and 4. are very related, I'd like to talk about them together. The 
> short answer is that in your case you should use material-based properties, 
> instead of specifying stiffness and damping numbers. An example of using 
> material-based properties is demo_GPU_ballDrop. There, you specify Young's 
> modulus and Poisson's ratio and friction coefficient and such, and the 
> solver calculates the rest without you worrying about it. For aluminum or 
> titanium, you should know those material properties. But I should notify 
> you that using true Young's modulus could necessitate an extremely small 
> time step size for your simulation to run, and it is questionable whether 
> using true properties means much for increasing the fidelity of your 
> simulations.
>
> I admit that Eq.18 and Eq.19 make the text a bit less intuitive to 
> understand. Eq.18 and Eq.19 basically say that when you set normalStiffS2S, 
> normalDampS2S and such in the code, you are setting \hat{k} and 
> \hat{\gamma}, rather than k and \gamma. We need to convert \hat{k} and 
> \hat{\gamma} to k and \gamma to understand the physics, because Eq.3 and 4 
> use k and \gamma. But Chrono::GPU uses a nonlinear force model where the 
> force is proportional to \delta^{1.5}, rather than \delta. That is to say 
> the k and \gamma in Eq.3 and 4 are not independent of \delta. And indeed, k 
> and \gamma contain a \delta^{0.5} in them, as indicated in Eq.18 and Eq.19. 
> Also, k and \gamma are dependent on R and m, meaning that smaller particles 
> are effectively stiffer given the same material, and this is a part of the 
> force model. As for how to convert Young's modulus and such to k and 
> \gamma, as indicated in the paper you are referred to *Fleischmann, J.; 
> Serban, R.; Negrut, D.; Jayakumar, P. On the importance of displacement 
> history in soft-body contact models. J. Comput. Nonlinear Dyn. 2016, 11, 
> 044502*. Using this paper you can probably figure out a stiffness param 
> k' which is in front of \delta^{1.5}, then you know k' is independent of 
> \delta (since we use a force model proportional to \delta^{1.5}), and then 
> based on the particle size and mass, you can figure out \hat{k} which is 
> completely independent, and the solver asks for \hat{k}.
>
> After reading all these, you probably already decided to use the 
> material-based model. I would like to comment that the way \hat{k} and 
> \hat{\gamma} were implemented is more force model-oriented, without 
> considering much about the implications on materials (mindset: as long as 
> we can explain how they make into the force model, it is fine). This is 
> related to the fact that the stiffness and damping choices in many 
> situations are numerical viability-driven, rather than trying to capture a 
> specific material. You probably don't believe this now, but faithfully 
> setting the true stiffness and damping, in some DEM simulations, makes them 
> much more difficult to run while offering little accuracy boost for the 
> application you try to simulate.
>
> One last thing: If you use DEM-Engine, the only default model is 
> material-based, so know that if you switch to that tool you don't have to 
> worry about all these. Also note that the friction coefficient between two 
> materials, if you use the material-based model in Chrono::GPU, will always 
> be the larger one between the two. Whereas in DEM-Engine, you can specify 
> explicitly the friction coefficient between any pair of two materials 
> involved in a contact.
>
> Ruochun
>
> On Monday, September 4, 2023 at 5:14:27 AM UTC-5 [email protected] wrote:
>
>>  Hi, ruochun
>>
>> Thank you for your help sincerely!
>>
>> I still have some problems in the material, regarding the simulation 
>> parameters. Based on your last suggestion, I tried to use the material-based 
>> force model but still failed for some reasons. So I continued to set the 
>> parameters from .json like the demos in the Chrono::GPU. I also read some 
>> papers about Chrono, including the one you mentioned before: Chrono::GPU: An 
>> Open-Source Simulation Package for Ganular Dynamics Using the Discrete 
>> Element Method.
>>
>>
>> 1. I notice that the parameter of S2S、S2W、S2M are same, such as 
>> normalStiffS2S、normalStiffS2W、normalStiffS2M. I am confused because I think 
>> the granular material should be different to the mesh material, so why S2S 
>> and S2M are same?
>> 2. I don't know what the material of the mesh model in the demos are, 
>> such as the mixer in the demo_GPU_mixer.cpp and the ball in the 
>> demo_GPU_ballCosim.cpp 
>>
>> 3. I want to modify the parameters to simulate the simulation between 
>> different metals and particles, such as aluminum and titanium. Do you know 
>> how I should modify these parameters including 
>> normalStiff、normalDamp、tangentStiff、tangentDamp and static_friction_coeff?
>> 4. When reading the paper, I have some questions about this paper 
>> Chrono::GPU: An Open-Source Simulation Package for Ganular Dynamics Using 
>> the Discrete Element Method. 
>> You taught me once before that 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). I feel difficult to understand Eq.18 and 
>> Eq.19 and the text described it above and below. δn means small penetration 
>> which I understand it as a variable that tends to 0. I'm wondering how it 
>> convert to the parameter we need, namely the stiffness and damping 
>> coefficients kn, kt, γn, and γt.
>>
>> Sorry to bother you, but my core question is the third one. The other 
>> questions came up when I was exploring its solutions. I'd appreciate very 
>> much it if you knew it. And thank you so much for all the help you've been 
>> giving me!
>>
>> part of .json:
>>     "sphere_radius": 1,
>>     "sphere_density": 1,
>>
>>
>>     "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,
>> 在2023年3月12日星期日 UTC+8 15:42:59<Ruochun Zhang> 写道:
>>
>>> Hi,
>>>
>>> You are right about re-setting the material properties after loading a 
>>> checkpoint. In fact, I suggest you just pretend that the checkpoint file 
>>> stores particle size and location information only, and set everything one 
>>> more time should you need to restart a simulation. When you say there is no 
>>> force, do you mean *CollectMeshContactForces *returns 0 force always? 
>>> If that is the case then you probably should ensure that you re-set the 
>>> SPH2MESH material properties as well, since I didn't see related lines in 
>>> your snippet. And then ensure that the mesh indeed touches the granular 
>>> material when you measure. If you mean you try to output a contact pair 
>>> info file and it's empty then you probably need to manually call 
>>> *SetRecordingContactInfo(true)*.
>>>
>>> As you noted before, DEME <https://github.com/projectchrono/DEM-Engine> 
>>> is currently the DEM package being developed and maintained. Just letting 
>>> you know that it now has some proper introduction added to the readme 
>>> document that you may want to check out.
>>>
>>> Thank you,
>>> Ruochun
>>>
>>> On Saturday, March 11, 2023 at 2:22:26 AM UTC-6 [email protected] wrote:
>>>
>>>> Hi, Ruochun
>>>> Thank you for your help sincerely!
>>>> Now, I am trying material-based force model in my simulation which is 
>>>> similar to the demo_GPU_ballcosim.cpp. There are two simulations. When 
>>>> run_mode == 0, this run is particle settling phase. After it is done, I 
>>>> will have a settled bed of granular material and a checkpoint file to 
>>>> store 
>>>> this state through gpu_sys.WriteCheckpointFile(checkpoint_file). Then, we 
>>>> change run_mode from 0 to 1, load the checkpoint file and start the second 
>>>> simulation.
>>>> Now, I am trying to use material-based force model instead of using 
>>>> SetKn_SPH2SPH、SetGn_SPH2SPH、SetGt_SPH2SPH...
>>>> I use the setMatreialProperty from demo_GPU_ballDrop. In the setting 
>>>> phase, I still use gpu_sys.WriteCheckpointFile(checkpoint_file) to get the 
>>>> cheeckpoint file. I notice that in the checkpoint file, the parameter such 
>>>> as K_n_s2s、G_t_s2w、G_t_s2m..are 0. So, in the second simulation, the 
>>>> measured force is always 0. It looks as if there is no collision and the 
>>>> simulation goes very fast. To solve the problem, I use setMatreialProperty 
>>>> again in the second simulation, after load the checkpoint file. However, 
>>>> it 
>>>> didn't work. But the simulation runs at normal speed. I am confused about 
>>>> this and could you help me? Than you very much!
>>>>
>>>> void setMatreialProperty(ChSystemGpuMesh& gran_sys) {
>>>>     double cor_p = 0.5;  // use cor_p = 0.9 for sand or glass beads
>>>>     double cor_w = 0.5;
>>>>     double youngs_modulus = 1e8;
>>>>     double mu_s2s = 0.16;
>>>>     double mu_s2w = 0.45;
>>>>     double mu_roll = 0.09;
>>>>     double poisson_ratio = 0.24;
>>>>
>>>>     gran_sys.UseMaterialBasedModel(true);
>>>>     gran_sys.SetYoungModulus_SPH(youngs_modulus);
>>>>     gran_sys.SetYoungModulus_WALL(youngs_modulus);
>>>>     gran_sys.SetRestitution_SPH(cor_p);
>>>>     gran_sys.SetRestitution_WALL(cor_w);
>>>>     gran_sys.SetPoissonRatio_SPH(poisson_ratio);
>>>>     gran_sys.SetPoissonRatio_WALL(poisson_ratio);
>>>>     //gran_sys.SetRollingMode(CHGPU_ROLLING_MODE::SCHWARTZ);
>>>>     gran_sys.SetRollingMode(CHGPU_ROLLING_MODE::NO_RESISTANCE);
>>>>     gran_sys.SetRollingCoeff_SPH2SPH(mu_roll);
>>>>     gran_sys.SetRollingCoeff_SPH2WALL(mu_roll);
>>>>     gran_sys.SetFrictionMode(CHGPU_FRICTION_MODE::MULTI_STEP);
>>>>     gran_sys.SetStaticFrictionCoeff_SPH2SPH(mu_s2s);
>>>>     gran_sys.SetStaticFrictionCoeff_SPH2WALL(mu_s2w);
>>>> }
>>>>
>>>>
>>>> 在2023年1月18日星期三 UTC+8 06:16:18<Ruochun Zhang> 写道:
>>>>
>>>>> Hi,
>>>>>
>>>>> Simulations failing randomly is not a good sign... Perhaps the 
>>>>> simulation parameters are just on the verge of being valid. Or, it's also 
>>>>> possible that Chrono::GPU has some suspicious memory operations that 
>>>>> cause 
>>>>> troubles in some scenarios such as yours. But I cannot be sure. To answer 
>>>>> your questions...
>>>>>
>>>>>    1. Yes, this package is dimensionless. That means when it reads a 
>>>>>    file, it reads numerics only, not unit systems. Honestly, I don't 
>>>>> think 
>>>>>    your mesh file has a unit system baked into it either. Once it is 
>>>>> exported 
>>>>>    from your CAD system, there is no way to know the unit system you 
>>>>> used, nor 
>>>>>    does Chrono care about it. So if you created mesh in your CAD using an 
>>>>>    *mm*-based metric system and then in the simulation set the sphere 
>>>>>    radius to be 1, thinking it means 1cm, then this is the inconsistency 
>>>>> I 
>>>>>    talked about earlier. The way you are doing it implicitly makes this 
>>>>> "1" in 
>>>>>    sphere radius mean 1mm. There is no such thing as a switch in 
>>>>> Chrono::GPU 
>>>>>    that changes the way it interprets unit systems, the only thing that 
>>>>> can be 
>>>>>    relied on is that you do the scaling and unification of unit systems 
>>>>>    properly under the hood.
>>>>>    2. Chrono::GPU cannot do that. But the new DEM-Engine can do that.
>>>>>    3. In this case, you should use the material-based force model (by 
>>>>>    the way, the default force model in DEM-Engine is also 
>>>>> material-based). 
>>>>>    It's best if you check out the *demo_GPU_ballDrop *example. There 
>>>>>    you can see that you need to *UseMaterialBasedModel(true)* and 
>>>>>    then set the material properties, such as Young's modulus, etc.
>>>>>
>>>>> Thank you,
>>>>> Ruochun
>>>>>
>>>>> On Tuesday, January 17, 2023 at 7:31:26 AM UTC-6 [email protected] 
>>>>> wrote:
>>>>>
>>>>>> Hi, Ruochun
>>>>>> The last issue about failure in simulation is almost solved, I think 
>>>>>> the model is still too complex for the simulation. Finally, I remake the 
>>>>>> 3d 
>>>>>> model, for example by removing the sharp tips and I reduced 80 
>>>>>> percentage triangles of the curved surface in the stl. Also, I find 
>>>>>> there 
>>>>>> is a probability that the simulation will fail because I sometimes 
>>>>>> retest 
>>>>>> and it gets better.
>>>>>> At the same time, I have some other questions and I really appreciate 
>>>>>> your help .
>>>>>> 1.In your previous answer, you told me that Chrono is dimensionless 
>>>>>> and in Chrono GPU, the length is usually assumed to be in *cm *(no 
>>>>>> demo uses *mm *as its length unit).[image: 60mm.png]However, I load 
>>>>>> this blue mesh in the simulation, whose height is 60mm, and I don't 
>>>>>> transform:
>>>>>>  float trans = 1.f; 
>>>>>>  spoon_mixer_mesh->Transform(ChVector<>(0), ChMatrix33<>( trans )); 
>>>>>> But I set "sphere_radius" 1 which I did't make change in  
>>>>>> *demo_GPU_ballcosim.json*,  and the simulation as the picture make 
>>>>>> me a little confused.
>>>>>> 2.Can chrono's simulation obtain the force at each different contact 
>>>>>> point between the mesh and the particle? *CollectMeshContactForces* 
>>>>>> should 
>>>>>> be a measurement of the combined force.
>>>>>> 3.If I want to simulate a specific particle material, such as moon 
>>>>>> soil or cement, can you give me an idea on how to modify the parameters 
>>>>>> of 
>>>>>> the particle, because I see a lot of parameters such as normalStiffS2S 
>>>>>> static_friction_coeffS2S..... and I feel a bit confused. I feel like I 
>>>>>> should read some papers describing these material, but how should I 
>>>>>> relate 
>>>>>> them to the parameters in the simulation?
>>>>>> Thank you very much again!
>>>>>> 在2023年1月2日星期一 UTC+8 13:35:08<Ruochun Zhang> 写道:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> OK this mesh has an extremely sharp tip. That is a demanding physics 
>>>>>>> in terms of numerical simulations, you agree? DEM is based on geometry 
>>>>>>> penetration/overlap. Capture that microscopic particle--mesh overlap at 
>>>>>>> that mesh tip is not easy, considering the geometry's own thickness. 
>>>>>>> But 
>>>>>>> other than that, the mesh seems valid.
>>>>>>>
>>>>>>> I don't know what exact simulation you are running but say if you 
>>>>>>> are using particles of diameter 0.5cm or something and a Young's 
>>>>>>> modulus 
>>>>>>> 1e9, then I suppose the time step size has to be 1e-6s or something 
>>>>>>> like 
>>>>>>> that. It's likely that 1e-5 won't cut it. As for not getting any force 
>>>>>>> readings, I suspects it's because the simulation crashes right after 
>>>>>>> the 
>>>>>>> mesh tip hits the particles and all the readings you got were before 
>>>>>>> the 
>>>>>>> particles and mesh made contact, so they're all 0.
>>>>>>>
>>>>>>> To quickly do a proof of concept you can make a similar mesh that 
>>>>>>> does not have the tip, and repeat the simulation to see if it is 
>>>>>>> easier. I 
>>>>>>> even attached one, but it's just your mesh with the tip and most of the 
>>>>>>> top 
>>>>>>> structures removed. I imagine however, that tip is the key of the 
>>>>>>> physics 
>>>>>>> you are trying to simulate. If that is the case, eventually you have to 
>>>>>>> add 
>>>>>>> that part back, and go with small time step sizes since you have to.
>>>>>>>
>>>>>>> Thank you,
>>>>>>> Ruochun
>>>>>>>
>>>>>>> On Sunday, January 1, 2023 at 8:38:35 PM UTC-6 [email protected] 
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi, Ruochun
>>>>>>>> Thank you for your help! The thing that I am sure is about the 
>>>>>>>> using of CollectMeshContactForces, including the first argument. 
>>>>>>>> Because 
>>>>>>>> when I use 5e-5 time step,  CollectMeshContactForces works correctly, 
>>>>>>>> but 
>>>>>>>> when I use 1e-5, force and torque are always 0.
>>>>>>>> So I sent you some meshes, expecting for check. Meanwhile, I'd like 
>>>>>>>> to share how I got those reduced objs and stls.  I used a 3D modelling 
>>>>>>>> software called 'Meshmixer', it can reduce stls in a certain 
>>>>>>>> percentage, I 
>>>>>>>> set 50%. Before that, I export stls from the software 'soildworks' 
>>>>>>>> with 
>>>>>>>> minimum precision. Finally, I use solidworks again to import reduced 
>>>>>>>> stls 
>>>>>>>> and save as objs. In previous attempts, I have used the same approach 
>>>>>>>> to 
>>>>>>>> get stls and objs for simulation without problems. This time, I did 
>>>>>>>> the 
>>>>>>>> extra step of reducing the stl.
>>>>>>>> Thank you a lot!
>>>>>>>>
>>>>>>>> 在2023年1月2日星期一 UTC+8 07:37:43<Ruochun Zhang> 写道:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I think you did the right thing in terms of resolving the 
>>>>>>>>> too-many-triangles problem. C::GPU assumes that the triangles in the 
>>>>>>>>> mesh 
>>>>>>>>> you use are about the same size or bigger than the particle size. It 
>>>>>>>>> has 
>>>>>>>>> difficulty processing triangles that are much smaller than particles. 
>>>>>>>>> The 
>>>>>>>>> idea is that the mesh features preserved only by triangles that small 
>>>>>>>>> will 
>>>>>>>>> not benefit the simulation accuracy, since at that point the 
>>>>>>>>> bottleneck for 
>>>>>>>>> geometry representation accuracy becomes the particles/spheres. 
>>>>>>>>>
>>>>>>>>> But you have to make sure your resultant reduced mesh is valid. 
>>>>>>>>> The problem of not seeing forces or too many triangles in an SD could 
>>>>>>>>> be 
>>>>>>>>> because of that. The mesh needs to have correct outward normals, and 
>>>>>>>>> should 
>>>>>>>>> not have things like duplicate points/facets and such. If it is a 
>>>>>>>>> small 
>>>>>>>>> mesh, you can send it here and I could quickly check if it is 
>>>>>>>>> alright. 
>>>>>>>>> Also, when you use *CollectMeshContactForces *you have to make 
>>>>>>>>> sure you are querying the correct mesh, meaning the first argument, 
>>>>>>>>> the 
>>>>>>>>> integer, needs to match the returned numbering of the mesh when you 
>>>>>>>>> load 
>>>>>>>>> the mesh into the system.
>>>>>>>>>
>>>>>>>>> The negative local pos or too-many-sphere-in-SD type of error is 
>>>>>>>>> more common. Uninspiring as it sounds, it is most likely due to a 
>>>>>>>>> diverged/destabilized simulation. What you should do is: Reduce the 
>>>>>>>>> time 
>>>>>>>>> step size further; add more damping; or reduce the stiffness. Just 
>>>>>>>>> those 
>>>>>>>>> things that make DEM easier to run. The unusual splash as shown in 
>>>>>>>>> your 
>>>>>>>>> picture is one common symptom of insufficient temporal resolution. 
>>>>>>>>> But I 
>>>>>>>>> cannot say for sure, since there could be other causes, such as bad 
>>>>>>>>> meshes.
>>>>>>>>>
>>>>>>>>> Thank you,
>>>>>>>>> Ruochun
>>>>>>>>> On Sunday, January 1, 2023 at 6:34:24 AM UTC-6 [email protected] 
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi, Ruochun. Happy new year!
>>>>>>>>>> Thank you for your help! Recently, I used other objs in the 
>>>>>>>>>> simulation. At first, it showed the error 'xxx triangles are found 
>>>>>>>>>> in one 
>>>>>>>>>> of the SDs. The max allowance is 512' at the beginning of the 
>>>>>>>>>> simulation. I 
>>>>>>>>>> guess that the reason is my objs is too complex because it contains 
>>>>>>>>>> curves 
>>>>>>>>>> surface. I used stls to get objs. So to solve the error, I reduce my 
>>>>>>>>>> stls 
>>>>>>>>>> and objs. 
>>>>>>>>>> After that, the simulation seems can be started. However, during 
>>>>>>>>>> the simulation, there are many problems, 'Error! sphere xxxx has 
>>>>>>>>>> negative 
>>>>>>>>>> local pos in SDxxx...' I found your reply in the previous forum, 
>>>>>>>>>> the "step_size" is 5e-5, when I change it to 1e-5,  the force and 
>>>>>>>>>> torque 
>>>>>>>>>> got by gpu_sys.CollectMeshContactForces are always 0. And during the 
>>>>>>>>>> simution, particles will become abnormal as the following picture, 
>>>>>>>>>> but when 
>>>>>>>>>> I used my previous objs, everything is correct.
>>>>>>>>>> As I said before, there are many problems,  sometimes the error 
>>>>>>>>>> is about slots, and sometimes error is still about too much 
>>>>>>>>>> triangles 
>>>>>>>>>> during the simution instaed of at the beginning.
>>>>>>>>>> I was really confused and spent several days, looking forward to 
>>>>>>>>>> your help!
>>>>>>>>>>
>>>>>>>>>> [image: 1.jpg]
>>>>>>>>>>
>>>>>>>>>> 在2022年12月11日星期日 UTC+8 12:49:43<Ruochun Zhang> 写道:
>>>>>>>>>>
>>>>>>>>>>> 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/5678a41c-d222-4539-8c13-2826ec53704en%40googlegroups.com.

Reply via email to