Hi, Ruochun
After changing the time step to 5e-6, although the particle velocity
after collision is not greater than the velocity before collision, the
rebound height of the particles after collision can almost reach the
initial position, and the CoR between the particles and the wall is only
0.3. What is the reason for this?
Best regards,
Wenxuan
在2024年10月24日星期四 UTC+8 14:08:27<Ruochun Zhang> 写道:
> Hi Wenxuan,
>
> This is typical when the step size is not sufficient to fully resolve the
> contact process. You can try a series of different time step sizes (1e-4,
> 1e-5, 1e-6, 1e-7, to give an example) to see how your selection affects the
> fidelity of the bounce curve and how it converges.
>
> Thank you,
> Ruochun
>
> On Thursday, October 24, 2024 at 11:18:29 AM UTC+8 [email protected]
> wrote:
>
>> Hi, Ruochun
>>
>> I conducted a simple simulation of a single ball falling, but the
>> calculated results were not quite as expected. The speed of particles after
>> collision with the wall is greater than the speed before collision, this
>> phenomenon contradicts the theory of collision energy loss.
>> [image: Screenshot from 2024-10-24 11-16-03.png]
>> The code is as follows:
>>
>> #include <core/ApiVersion.h>
>> #include <core/utils/ThreadManager.h>
>> #include <DEM/API.h>
>> #include <DEM/HostSideHelpers.hpp>
>> #include <DEM/utils/Samplers.hpp>
>>
>> #include <cstdio>
>> #include <chrono>
>> #include <filesystem>
>> #include <random>
>>
>> using namespace deme;
>> using namespace std::filesystem;
>>
>>
>> int main()
>> {
>> // 1: 设置输出信息级别
>> DEMSolver DEMSim;
>> DEMSim.UseFrictionalHertzianModel();
>> DEMSim.SetVerbosity(STEP_METRIC);
>> DEMSim.SetOutputFormat(OUTPUT_FORMAT::CSV);
>> DEMSim.SetNoForceRecord();
>>
>> // 2: 定义颗粒材料物性参数和壁面材料物性参数
>> auto mat_type_walls = DEMSim.LoadMaterial({{"E", 1e8}, {"nu", 0.3}, {
>> "CoR", 0.3}, {"mu", 1}});
>> auto mat_type_particles = DEMSim.LoadMaterial({{"E", 1e9}, {"nu", 0.3}, {
>> "CoR", 0.7}, {"mu", 1}});
>>
>> // 3: 设置材料之间接触参数
>> DEMSim.SetMaterialPropertyPair("CoR", mat_type_walls, mat_type_particles,
>> 0.3);
>>
>> // 4: 添加颗粒模板
>> float density = 2500;
>> float radius = 0.025;
>> float mass1 = density * 4. / 3. * PI * radius * radius * radius;
>> auto sphere_template1 = DEMSim.LoadSphereType(mass1, radius,
>> mat_type_particles);
>>
>> // 5. 导入几何体
>> auto box_outer = DEMSim.AddWavefrontMeshObject("box.obj", mat_type_walls
>> );
>> box_outer->Scale(0.001);
>>
>> // 6. 设置全局参数
>> float settle_frame_time = 0.001;
>> float settle_batch_time = 1.0;
>> unsigned int currframe = 0;
>> path out_dir = current_path();
>> out_dir += "/00_Factory1_Output";
>> create_directory(out_dir);
>> DEMSim.InstructBoxDomainDimension({-1.2, 1.2}, {-1.2, 1.2}, {-1.2, 1.2});
>> DEMSim.SetGravitationalAcceleration(make_float3(0, 0, -9.81));
>>
>> // 7. 设置求解时间步长及初始化
>> DEMSim.SetInitTimeStep(1e-4);
>> DEMSim.SetInitBinSize(2 * radius);
>> DEMSim.Initialize();
>>
>>
>> // 8. 生成颗粒
>> float3 particle_pos = make_float3(0, 0, 0);
>> std::vector<float3> particle_pos_total;
>> particle_pos_total.push_back(particle_pos);
>> auto particles = DEMSim.AddClumps(sphere_template1, particle_pos_total);
>> particles->SetVel(make_float3(0, 0, 0));
>> DEMSim.UpdateClumps();
>> std::cout << "Current number of clumps: " << DEMSim.GetNumClumps() << std
>> ::endl;
>>
>> // 9. 迭代计算
>> for (float t = 0; t < settle_batch_time; t += settle_frame_time)
>> {
>> std::cout << "Frame: " << currframe << std::endl;
>> char filename[200], meshfilename[200];
>> sprintf(meshfilename, "%s/DEMdemo_mesh_%04d.vtk", out_dir.c_str(),
>> currframe);
>> sprintf(filename, "%s/DEMdemo_output_%04d.csv", out_dir.c_str(),
>> currframe++);
>> DEMSim.WriteSphereFile(std::string(filename));
>> DEMSim.WriteMeshFile(std::string(meshfilename));
>> DEMSim.DoDynamicsThenSync(settle_frame_time);
>> }
>>
>> // 打印计算结束标志
>> std::cout << "Calculation complete!" << std::endl;
>> return 0;
>> }
>>
>
--
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 visit
https://groups.google.com/d/msgid/projectchrono/b89b55c2-a32d-4482-b20d-fed0fe3e5b35n%40googlegroups.com.