I have created 3 .stl geometries using the " mesh/surface" command. Now I want to make to of these to make contact without penetrating one another.
for eg. I am trying to oscillate one geometry , which will hit the other one and this will eventually set the particles in oscillation. Can anybody please suggest how do I go about doing this. I have attached a snapshot of my simulation with 3 different geometries ( 3 different colors). Here, the red one needs to hit the green one.
Thank you
Anand
Attachment | Size |
---|---|
![]() | 77.44 KB |
![]() | 1.8 KB |
![]() | 1.83 KB |
richti83 | Tue, 06/30/2015 - 14:37
coupled rigid body movement ...
... is not possible with liggghts(r) {-public}. There is no contact detection implemented for wall-wall interaction.
You can try to "fake" the behaviour when you clump the green qube out of particles and let the red plane hit the clumped qube. Offcourse it's only a hack and needs some expert knowledge.
I did something similar here: https://www.youtube.com/watch?v=-sEV54lBn1k (the yellow boxes are clumped particles) using the commercial multisphere feature.
Another way would be to model the "valve" in a pure multibody system (e.g. Dymola, Simulink, SimulationX, OpenModelica) and couple this system to liggghts:
http://www.baumaschine.de/awimas/publikationen/verwandte_themen/emi002.pdf (sorry it's german ..)
Feel free to contact me to learn more.
Best,
Christian.
anandmds | Wed, 07/01/2015 - 11:55
Thanks Christian
Now, I tried using create_atoms command along with "region" command to replicate the green qube. Its creating the required no. of atoms in my region, but the simulation does not run and it always exits with the following error,
INFO: more than 15 touching neighbor atoms found, growing contact history.
INFO: more than 30 touching neighbor atoms found, growing contact history.
INFO: more than 45 touching neighbor atoms found, growing contact history.
INFO: more than 60 touching neighbor atoms found, growing contact history.
INFO: more than 75 touching neighbor atoms found, growing contact history.
INFO: more than 90 touching neighbor atoms found, growing contact history.
INFO: more than 105 touching neighbor atoms found, growing contact history.
INFO: more than 120 touching neighbor atoms found, growing contact history.
INFO: more than 135 touching neighbor atoms found, growing contact history.
INFO: more than 150 touching neighbor atoms found, growing contact history.
INFO: more than 165 touching neighbor atoms found, growing contact history.
INFO: more than 180 touching neighbor atoms found, growing contact history.
INFO: more than 195 touching neighbor atoms found, growing contact history.
ERROR on proc 0: Neighbor list overflow, boost neigh_modify one (/build/buildd/liggghts-2.3.8/src/neigh_gran.cpp:432)
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
with errorcode 1.
NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
what to do ? thanks
richti83 | Wed, 07/01/2015 - 15:56
If I understand you right,
If I understand you right, you tried to generate particles inside the qube ?
You need to take care that the generated particles doesn't overlap the qube walls at generation step.
A common mistake is to forget to set the diamter of the particles after create_atoms command and in this case the default diameter is 1m which will lead to high overlap of atom/atoms, atoms & walls .
I could better see what you are doing wrong if I would have the inputskript ...
ckloss | Wed, 07/01/2015 - 16:43
Hi anandmd,
Hi anandmd,
Looks like you insert the particles into each other
I would debug the simulation step by step, maybe with first disabling the particle-particle interaction
Christoph
anandmds | Thu, 07/02/2015 - 06:25
Hey Christoph,
This is my code, I am trying simulate damping effect of granular particles on vibration, so if my code works now ( after amendments hopefully), I also need to calculate the acceleration of the top wall of the box containing granules, to check if if the particles have damped the external vibration or not. Also kindly suggest a better way of doing this if possible.
# Initialization
atom_style granular
atom_modify map array
boundary f f f
newton off
communicate single vel yes
units si
processors * * *
# Domain specification
region container block -0.6 0.6 -0.6 0.6 -0.42 0.3 units box
create_box 1 container
region insertion block -0.4 0.4 -0.4 0.4 0.1 0.26 units box
region stiff block -0.1 0.1 -0.1 0.1 -0.4 -0.001 units box #-----Lines 22-25 are trying to create the qube using atoms
lattice sc 0.05
create_atoms 1 region stiff units box
set region stiff diameter 0.05
neighbor 0.002 bin
neigh_modify delay 0 every 10 one 400 check yes
# Material and interaction properties required
fix m1 all property/global youngsModulus peratomtype 210e6
fix m2 all property/global poissonsRatio peratomtype 0.3
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.597
fix m4 all property/global coefficientFriction peratomtypepair 1 0.6
#fix t1 all property/atom temp scalar yes no no 300
#fix force_zwalls all property/atom WALLFORCE scalar no yes yes
pair_style gran/hertz/history
pair_coeff * *
fix cad1 all mesh/surface/stress file box.stl type 1
fix cad2 all mesh/surface/stress file substrate.stl type 1
fix geom all wall/gran/hertz/history mesh n_meshes 2 meshes cad1 cad2
fix m5 all property/global thermalConductivity peratomtype 50
fix m6 all property/global thermalCapacity peratomtype 452
fix hg all heat/gran/conduction initial_temperature 300 #---------------fixing initial temperature
#fix force_zwalls all property/atom WALLFORCE scalar yes yes yes 12
# Particle insertion
fix pts all particletemplate/sphere 1 atom_type 1 density constant 7850 radius constant 0.003
fix pdd all particledistribution/discrete 63243 1. pts 1.0
fix abc all insert/rate/region seed 100001 distributiontemplate pdd &
maxattempt 1000 nparticles 5000 particlerate 100000000 insert_every 1000 overlapcheck yes all_in yes vel constant 0. 0. -100 &
region insertion ntry_mc 1000000
run 5000
unfix abc
#set region insertion property/atom Temp 800.
timestep 0.0000001
fix integrate all nve/sphere
fix grav all gravity 9.81e3 vector 0.0 0.0 -1.0
# Thermodynamic output settings
compute mytemp all temp/sphere
compute pascal all pressure mytemp
thermo_style custom step atoms cpu etotal pe press ke
thermo 999
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
fix ctg all check/timestep/gran 1 0.01 0.01
run 1
unfix ctg
dump dmp1 all mesh/vtk 1000 new/boxnew/boxn*.vtk cad1 vel owner
dump para2 all mesh/vtk 1000 new/sub_stiff/s*.vtk cad2 stress vel
dump dmp2 all custom 1000 new/post1/comp*.vtk x y z f_hg
fix oscillate all move/mesh mesh cad2 wiggle amplitude 0. 0. 0.009 period 0.005
run 200000
and this code is showing the following error after " setting up run . . ."
Setting up run ...
Memory usage per processor = 12.3237 Mbytes
Step Atoms CPU TotEng PotEng Press KinEng
5000 5200 0 22195.352 0 14271.703 22195.352
ERROR on proc 0: Internal error (/build/buildd/liggghts-2.3.8/src/tri_mesh_I.h:90)
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
with errorcode 1.
anandmds | Thu, 07/02/2015 - 13:52
thanks christian, setting the
thanks christian, setting the diameter of the particle after create_atoms worked, now I created two separate group of atoms. one for green qube and other for red, and keeping the wallls of the box same as before. But even then, after setting their type to 1 and make the green qube group of atoms to oscillate, they pass right through the wall and also through red qube group of atoms. I am attaching the snapshot of my simulation named "simulation". kindly suggest how to make them to collide ( group atoms with wall, or group atoms with other group atoms ). I want the center pillar made of atoms to hit the base of the box containing the particles above, but it just passes through it.
thanks
richti83 | Fri, 07/03/2015 - 12:36
script ?
Could you attach your script to your first post ?
I guess you use fix ID GRP move wiggle for the created atoms, this will overrule the fix nve/sphere as it resets v and x of every atom in the group.
You misread my first post I think. You need to use fix rigid to integrate the qube as a rigid body, the bottom plane can be an STL.
search the forum how to install fix rigid by make yes-MOLECULE and how to use it to only integrate a specifix group of atoms.
scetch of the proposed setup:
|______ ______| Box as STL, filled with grain
```````#``````` Qube as clumped, rigid body, consisting of non-overlapping spheres
--------------- Plane as STL, moving with fix move/mesh
anandmds | Sat, 07/04/2015 - 13:58
hey christian, I am using .
hey christian, I am using . stl for both the box and plane and for clumping the cube, I am using " fix/rigid single " command. The program runs fine , atoms are created in the desired group, all is fine until I introduce the " fix/rigid single" command ( or fix/rigid group command for that matter ). The simulation shows that " 1 rigid body with 200 atoms created" with fix/rigid single command , but the moment anny atom from that rigid body comes into contact with the .stl wall, I shows " ERROR on proc 0: Internal error (/build/buildd/liggghts-2.3.8/src/tri_mesh_I.h:90) " every time. here is my script. pls help.
# Initialization
atom_style granular
atom_modify map array
boundary f f f
newton off
communicate single vel yes
units si
processors * * *
# Domain specification
region container block -0.6 0.6 -0.6 0.6 -0.49 0.4 units box
create_box 1 container
region insertion block -0.4 0.4 -0.4 0.4 0.0 0.26 units box
region box1 block -0.4 0.4 -0.4 0.4 0.0 0.3 units box
region stiff block -0.1 0.1 -0.1 0.1 -0.4 -0.005 units box #-----Lines 22-25 are trying to create the qube using atoms
lattice sc 0.05
create_atoms 1 region stiff units box
set region stiff diameter 0.05
#region substrate block -0.5 0.5 -0.5 0.5 -0.41 -0.4 units box #-----Lines 22-25 are trying to create the qube using atoms
#lattice sc 0.05
#create_atoms 1 region substrate units box
#set region substrate diameter 0.1 type 1
#group p1 region substrate
group p2 region stiff
neighbor 0.002 bin
neigh_modify delay 0 every 10 one 400 check yes
# Material and interaction properties required
fix m1 all property/global youngsModulus peratomtype 210e6
fix m2 all property/global poissonsRatio peratomtype 0.3
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.597
fix m4 all property/global coefficientFriction peratomtypepair 1 0.6
pair_style gran/hertz/history
pair_coeff * *
fix cad1 all mesh/surface/stress file box.stl type 1
fix cad2 all mesh/surface/stress file substrate.stl type 1
fix geom all wall/gran/hertz/history mesh n_meshes 2 meshes cad1 cad2
fix m5 all property/global thermalConductivity peratomtype 50
fix m6 all property/global thermalCapacity peratomtype 452
fix hg all heat/gran/conduction initial_temperature 300 #---------------fixing intial temperature
# Particle insertion
fix pts all particletemplate/sphere 1 atom_type 1 density constant 7850 radius constant 0.003
fix pdd all particledistribution/discrete 63243 1. pts 1.0
fix abc all insert/rate/region seed 100001 distributiontemplate pdd &
maxattempt 1000 nparticles 5000 particlerate 100000000 insert_every 1000 overlapcheck yes all_in yes vel constant 0. 0. -20 &
region insertion ntry_mc 1000000
run 5000
unfix abc
group forgrav region box1
timestep 0.000001
fix integrate forgrav nve/sphere
fix grav forgrav gravity 9.81e2 vector 0.0 0.0 -1.0
# Thermodynamic output settings
#compute mytemp all temp/sphere
#compute pascal all pressure mytemp
thermo_style custom step atoms cpu etotal pe press ke
thermo 1000
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
#thermo_modify temp mytemp press
fix ctg all check/timestep/gran 1 0.01 0.01
run 1
unfix ctg
#fix a1 all ave/time 100 5 15000 c_pascal file pressure.profile
#fix histo all ave/histo 1000 5 10000 0 0.15 100 c_pascal file press.histo ave one
dump dmp1 all mesh/vtk 1000 new/boxnew/boxn*.vtk cad1 vel owner
dump para2 all mesh/vtk 1000 new/sub_stiff/s*.vtk cad2 stress
dump dmp2 all custom 1000 new/post1/comp*.vtk x y z f_hg
# running to settle particles
run 1000
fix f1 p2 rigid single
fix oscillate all move/mesh mesh cad2 wiggle amplitude 0. 0. 0.009 period 0.0005
#fix 1a p1 move wiggle 0.0 0.0 0.07 0.0005 units box
#fix 1b p2 move wiggle 0.0 0.0 0.06 0.0005 units box
run 200000
thanks
anand
richti83 | Sat, 07/04/2015 - 17:32
Update
Try Update to Liggghts 3.X there has been a Bug with tri mesh i sometimes ago...
Consider the Syntax change for pair gran and wall gran.
anandmds | Sun, 07/05/2015 - 07:36
thanks a ton, I'll do that
thanks a ton, I'll do that and get back to you, but as it is, my context of using fix/rigid single ( by excluding the group from nve/sphere ) and in an overall manner is correct right ?
thanks
anand
anandmds | Mon, 07/06/2015 - 10:17
I have updated my version of
I have updated my version of LIGGGHTS to the new 3.2.0 one, and as per its syntax I have changed commands for " Pair gran" , " Pair_style" and " wall gran" accordingly. Still everything was as before, there were no problems until I introduced fix/rigid single (wherever in the code), please have a look.
# Initialization
atom_style granular
atom_modify map array
boundary f f f
newton off
communicate single vel yes
units si
processors * * *
# Domain specification
region container block -0.6 0.6 -0.6 0.6 -0.49 0.4 units box
create_box 1 container
region insertion block -0.4 0.4 -0.4 0.4 0.0 0.26 units box
region box1 block -0.4 0.4 -0.4 0.4 0.0 0.3 units box
region stiff block -0.1 0.1 -0.1 0.1 -0.4 -0.005 units box #-----Lines 22-25 are trying to create the qube using atoms
lattice sc 0.05
create_atoms 1 region stiff units box
set region stiff diameter 0.05
#region substrate block -0.5 0.5 -0.5 0.5 -0.41 -0.4 units box #-----Lines 22-25 are trying to create the qube using atoms
#lattice sc 0.05
#create_atoms 1 region substrate units box
#set region substrate diameter 0.1 type 1
group p2 region stiff
fix f1 p2 rigid single
neighbor 0.002 bin
neigh_modify delay 0 every 10 one 400 check yes
# Material and interaction properties required
fix m1 all property/global youngsModulus peratomtype 210e6
fix m2 all property/global poissonsRatio peratomtype 0.3
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.597
fix m4 all property/global coefficientFriction peratomtypepair 1 0.6
pair_style gran model hertz tangential history
pair_coeff * *
fix cad1 all mesh/surface/stress file box.stl type 1
fix cad2 all mesh/surface/stress file substrate.stl type 1
fix geom all wall/gran model hertz tangential history mesh n_meshes 2 meshes cad1 cad2
fix m5 all property/global thermalConductivity peratomtype 50
fix m6 all property/global thermalCapacity peratomtype 452
fix hg all heat/gran/conduction initial_temperature 300 #---------------fixing intial temperature
# Particle insertion
fix pts all particletemplate/sphere 1 atom_type 1 density constant 7850 radius constant 0.003
fix pdd all particledistribution/discrete 63243 1. pts 1.0
fix abc all insert/rate/region seed 100001 distributiontemplate pdd &
maxattempt 1000 nparticles 5000 particlerate 100000000 insert_every 1000 overlapcheck yes all_in yes vel constant 0. 0. -20 &
region insertion ntry_mc 1000000
run 5000
unfix abc
group forgrav region box1
timestep 0.000001
fix integrate forgrav nve/sphere
fix grav forgrav gravity 9.81e2 vector 0.0 0.0 -1.0
# Thermodynamic output settings
#compute mytemp all temp/sphere
#compute pascal all pressure mytemp
thermo_style custom step atoms cpu ke
thermo 1000
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
#thermo_modify temp mytemp press
fix ctg all check/timestep/gran 1 0.01 0.01
run 1
unfix ctg
#fix a1 all ave/time 100 5 15000 c_pascal file pressure.profile
#fix histo all ave/histo 1000 5 10000 0 0.15 100 c_pascal file press.histo ave one
dump dmp1 all mesh/vtk 1000 new/boxnew2/boxn*.vtk cad1 vel owner
dump para2 all mesh/vtk 1000 new/sub_stiff2/s*.vtk cad2 stress
dump dmp2 all custom 1000 new/post2/comp*.vtk x y z f_hg
# running to settle particles
run 1000
fix oscillate all move/mesh mesh cad2 wiggle amplitude 0 0 0.005 period 0.005
#fix s2 p2 setforce 0.0 0.0 50 region stiff
#fix f2 p1 rigid group 1 p2
run 200000
once the simulation starts, Its giving me this . . .
Setting up run ...
Import and parallelization of mesh cad1 containing 12 triangle(s) successful
Import and parallelization of mesh cad2 containing 12 triangle(s) successful
[anand-HP:02651] *** Process received signal ***
[anand-HP:02651] Signal: Segmentation fault (11)
[anand-HP:02651] Signal code: Address not mapped (1)
[anand-HP:02651] Failing at address: (nil)
[anand-HP:02651] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10340) [0x7f2fe4dce340]
[anand-HP:02651] [ 1] /home/a-force/LIGGGHTS-PUBLIC/src/lmp_fedora() [0x5a3f49]
[anand-HP:02651] [ 2] /home/a-force/LIGGGHTS-PUBLIC/src/lmp_fedora() [0x72a705]
[anand-HP:02651] [ 3] /home/a-force/LIGGGHTS-PUBLIC/src/lmp_fedora() [0x81d463]
[anand-HP:02651] [ 4] /home/a-force/LIGGGHTS-PUBLIC/src/lmp_fedora() [0x7bd7c6]
[anand-HP:02651] [ 5] /home/a-force/LIGGGHTS-PUBLIC/src/lmp_fedora() [0x702226]
[anand-HP:02651] [ 6] /home/a-force/LIGGGHTS-PUBLIC/src/lmp_fedora() [0x6fff5f]
[anand-HP:02651] [ 7] /home/a-force/LIGGGHTS-PUBLIC/src/lmp_fedora() [0x700a96]
[anand-HP:02651] [ 8] /home/a-force/LIGGGHTS-PUBLIC/src/lmp_fedora() [0x40dda6]
[anand-HP:02651] [ 9] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f2fe4a1aec5]
[anand-HP:02651] [10] /home/a-force/LIGGGHTS-PUBLIC/src/lmp_fedora() [0x40ec3f]
[anand-HP:02651] *** End of error message ***
Segmentation fault (core dumped)
thanks
anand
richti83 | Mon, 07/06/2015 - 10:34
Sorry I can not reproduce
Sorry I can not reproduce this without having the geometry. Works well without fix wall/gran.
anandmds | Mon, 07/06/2015 - 11:41
i have uploaded the
i have uploaded the geometries of the box and the plane that I am using in the script. ( .stl formats) , so is " fix rigid single " working without any glitches ?
richti83 | Mon, 07/06/2015 - 12:55
OK, the mistake is that your
OK, the mistake is that your rigid body has an initial overlap with the mesh cad2. I just moved it D/2 in -z direction and everything looks fine.
fix cad1 all mesh/surface/stress file box.stl type 1
fix cad2 all mesh/surface/stress file substrate.stl type 1 move 0 0 -0.025 #move bottom mesh by D/2
#
fix geom all wall/gran model hertz tangential history mesh n_meshes 2 meshes cad1 cad2
result: https://drive.google.com/file/d/0B16_X8nrVquiOE90czFJZXRWXzQ/view?usp=sh...
Please let me know what do you expect to happen in this simulation ?
At the moment the rigid box wiggles between the bottom plane and the top box, but for what are the particles in the box good ??
anandmds | Mon, 07/06/2015 - 13:23
Thanks a lot for responding
Thanks a lot for responding , actually I expect the plane to oscillate and hit the rigid column ( or rigid body made by collective atoms ) and this in turn should hit the top box containing the particles, and when the top box tries to oscillate or (move), the particles inside should try to dampen it. Like a chain reaction and I should be able to measure the final displacement of the box. This is what I expect from my simulation. When I dont have " fix rigid single " command the plane goes through the rigid group of atoms without actually hitting them. when I introduce " fix rigid single" I get segmentation fault error. Please help.
thanks and regards
anand
richti83 | Mon, 07/06/2015 - 13:47
As I said, the segmentation
As I said, the segmentation fault with fix rigid single happens because of the initial overlap of the spheres representating the qube with the bottom plane. This script works for me:
https://drive.google.com/file/d/0B16_X8nrVquieTRIVWcwQnBxLW8/view?usp=sh...
BUT: it will not do what you want because the cad1 is fixed in space, there is no rigid body coupling in liggghts ! And the movement of cad2 will not be influenced by any contacts because fix move mesh does not take the particle forces into account.
The premium version of liggghts [1] includes a fix mesh 6DOF which would be able to react on external forces of an clumped & rigid body, but I guess it is not designed to work in this way.
I have a non-released coupling between liggghts (DEM) and Modelica FMU to drive a mesh by external forces - but I will not give it away for free and I think it is overkill.
I can imagine that it will do something similar to your idea when you make the top geometry out of particles too and does not apply gravity to it, BUT you will see more effect of the particle-particle interaction than from the "free particles" damping.
In summery: this problem can not be investigated with a pure DEM simulation.
[1] http://www.dcs-computing.com/premium-versions-liggghtsr-and-cfdemrcoupling
anandmds | Tue, 07/07/2015 - 06:28
Thanks a LOT for clarifying
Thanks a LOT for clarifying this, otherwise I would have been trying this for a long time, but in vain. I have requested my institution to purchase the premium version, lets see how things get on from there. Also, you mentioned the name " Modelica FMU ", can you please tell me what does it actually do ?
regards
anand
richti83 | Tue, 07/07/2015 - 08:48
Modelica FMU
In my world there are two types of mechanical simulations:
I) bodies connected with rods and joints but almost no contacts (multibody system [MBS])
II) "free", primitive bodies (spheres) with no conjunction but a lot of contacts among each other (DEM System, in fact it is a multibody system too, but I don't call it like this)
Now there a hand full programs to model a MBS System (like a car, a wheelloader, a bucket elevator ..see my Youtube [1] chanel for more examples) eg. MSC ADAMS, Matlab Simulink, Dymola, SimulationX.
Some of the MBS Software packages allow the export to a so called Functional Mockup Unit (FMU) [2]. I've written a fix to import a FMU for CoSimulation into liggghts(r), integrate it with dt_DEM, extract the positions, velocities, orientation and rotational velocity and applay this values to a mesh/surface . Also there is a force-feedback between mesh/surface/stress to respond on particle forces in the MBS.
[1] https://www.youtube.com/user/richtisoft
[2] https://www.fmi-standard.org/tools
anandmds | Tue, 07/07/2015 - 09:19
thanks a lot for sharing all
thanks a lot for sharing all that a information, all you work is really very impressive. I must say I am left with a crave for learning more !! I shall be in touch.
thanks again.
regards
Anand
richti83 | Tue, 07/07/2015 - 18:00
Where are you from and what
Where are you from and what is your final aim? Are you a student or an employee?
anandmds | Wed, 07/08/2015 - 06:44
I am from India, I am a
I am from India, I am a student doing my Masters ( By Research) MS program in the Indian Institute Of Technology, Madras. I am doing my research in vibration damping effects of granular material, for which I need to perform different particle simulations tests. For this my advisor recommended to use LIGGGHTS, after which I found it was really useful and user friendly. So, I want to explore more about this software as to how it can solve my different problems. Any suggestions as to where I can get to know more about coding in LIGGGHTS ?
regards
Anand