Hi Wenxuan,
1. You can generate particles after the system initialization in DEME. An example is
GRCPrep_Part1, where new particles are brought into the simulation in batches after the simulation starts using
AddClumps then
UpdateClumps. However, defining how they are generated is the responsibility of the user. If you would like to generate at a mass rate, then you have to write in your script the code that instantiates the initial positions of the particles that suffice this mass rate, and add them to the simulation with an appropriate frequency. Of course, depending on the problem to simulate, sometimes it's easier to generate all particles needed first, then use some sort of geometry to help release them with a certain flow rate into the simulation region of interest.
2. I am not sure if you meant whether it can simulate a (mesh-represented) conveyor belt, or simulate using a specific contact force model called the conveyor belt model. If it's just mesh--particle contact with a moving mesh, then DEME can do that. If the challenge is that the mesh is deformable, then DEME can do that as well (see
the flexible mesh demo) as well, but it is more advanced and the deformation of the mesh has to be simulated using an external solid mechanics solver: DEME can only provide the granular force the belt experiences, but not calculate how it deforms. However, if the idea is that the soft-material nature of the belt is modeled by a special force model (instead of the default Hertz--Mindlin model) rather than the actual deformation of the belt, then it can be done with a custom force model (a good example with a custom force model is used is probably
the material fracture demo). This is also a more advanced usage of DEME, and it is certainly not a one-liner call. In short, this is a scientific question. The approach and the viability depend on what you'd like to explore and achieve with the simulation.
3. I don't know if I understand the question correctly. I think you meant scenarios such as a rotating object that also revolves around something else. You can do this and there is more than one way. You can use a tracker to track the geometry, then set the position and quaternion of the geometry using this tracker step by step, so you have explicit control over it, regardless of how complex the motion is. You can probably use
the electrostatic demo as the example, and see how the
rod_tracker object is used to
SetPos of the geometry step by step. Another approach is when the motion is simple enough and prescribed, you can give this geometry a family tag and then use
SetFamilyPrescribedLinVel along with
SetFamilyPrescribedAngVel to enforce the motion. The
SetFamilyPrescribedAngVel method sets the prescribed rotational motion of the geometry about its own local coordinate system, then the
SetFamilyPrescribedLinVel method can be used to define the global revolution you probably need (you can write something like
sin(3.14 * t) as the prescribed motion).
The excavator plowing demo might help you understand the usage.
Thank you,
Ruochun