Belt conveyor with ribs

Submitted by ThomasR on Tue, 07/16/2013 - 05:47

Hi all,

I want to simulate a belt conveyor with ribs on the surface. (stl attached)
For a flat belt i would usually use the surface_vel command to specify the imported mesh as conveyor belt.
The Problem about this command is that there is no motion of the ribs. Think this behaviour is expected.

I thought about to generate single ribs as stl files and using move/mesh command to move ribs linear with the same velocity as the belt surface. At the end of the belt i would delete the ribs and enter new ribs at the otherside of the belt. I think this should be possible but doesnt sounds very smart to me.

Does anyone got some experience how to deal with this problems and could give me some advices how to do? Maybe got some other ideas i could try.

Thanks for help!

Cheers Thomas

AttachmentSize
Plain text icon belt.txt59.5 KB
ckloss's picture

ckloss | Thu, 07/18/2013 - 18:15

>>Does anyone got some experience how to deal with this problems and could give me some advices how to do?
you can use fix move/mesh with the "variable" style to move the mesh around in an arbitrary way

Cheers
Christoph

richti83's picture

richti83 | Thu, 07/18/2013 - 19:20

I did a Apron Feeder like this:


variable event1 equal round($D/(${vel}*${dt})) #swap moving every this step (i.e. distance between two bars/v)
######################## Eventloop #################################
label eventloop
variable b loop 1 ${maxelement}
variable c equal ${maxelement}-$b+1
variable d equal $c+7
unfix movecad$c #stop linear motion of last element in linear motion
fix rotcad$c all move/mesh mesh cad$c rotate origin ${porX} 0 ${porZ} axis 0 1 0 period $T

variable mod equal $d-round($d/5)*5 #there is no modulo function in liggghts so I used this work-a-round
if (${mod}==0) then "variable typ string platte1.stl" else "variable typ string platte2.stl" #make 4 normal plates and one with a liftbar

if "$b>7" then &
"unfix rotcad$d" &
"unfix wall" &
"undump vtk1" &
"undump vtk2" &
"unfix cad$d" &
"fix cad$d all mesh/surface/stress file ${typ} type 2 scale 1 move $E 0 $R rotate axis 0 1 0 angle -$B reference_point $E 0 $R" &
"fix movecad$d all move/mesh mesh cad$d linear ${vx} 0 ${vz}" &
"fix wall all wall/gran/hertz/history mesh n_meshes 93 meshes fixed1 fixed2 fixed3 fixed4 fixed5 fixed6 fixed7 fixed8 fixed9 fixed10 fixed11 fixed12 fixed13 fixed14 fixed15 fixed16 fixed17 fixed18 fixed19 fixed20 fixed21 fixed22 fixed23 cad1 cad2 cad3 cad4 cad5 cad6 cad7 cad8 cad9 cad10 cad11 cad12 cad13 cad14 cad15 cad16 cad17 cad18 cad19 cad20 cad21 cad22 cad23 cad24 cad25 cad26 cad27 cad28 cad29 cad30 cad31 cad32 cad33 cad34 cad35 cad36 cad37 cad38 cad39 cad40 cad41 cad42 cad43 cad44 cad45 cad46 cad47 cad48 cad49 cad50 cad51 cad52 cad53 cad54 cad55 cad56 cad57 cad58 cad59 cad60 cad61 cad62 cad63 cad64 cad65 cad66 cad67 cad68 cad69 cad70 rolling_friction typeC cohesion off" &
"dump vtk1 all mesh/gran/VTK ${dumpstep} postALL/dump_interpolated*.vtk forces stress stresscomponents area id output interpolate" &
"dump vtk2 all mesh/gran/VTK ${dumpstep} postALL/dump_faces*.vtk forces stress stresscomponents area id output face"
run ${event1}
next b
jump in_all_in_one.lmp eventloop
#######################################################################

We see some limitations in LIGGGHTS:
-the wall command needs to be concatinated by hand.
@Christoph: would it be possible to make fix wall/gran/h*** to work on group-id base or a wildcard which forces liggghts to use all fixes of type mesh/surface as walls ? AFAIK only one wall/gran fix is allowed so the only difference is between insertion-walls and walls which should interact with particles .....
- the dump styles needs to be undumped when you change the wall/gran fix otherwise liggghts will crash (I think this is unwanted behaviour)
- there is no modulo function in variable command but there is a work-a-round using round and math

best, Christian

I'm not an associate of DCS GmbH and not a core developer of LIGGGHTS®
ResearchGate | Contact

ThomasR | Fri, 07/19/2013 - 02:23

Hi,
Thanks for the replies.
I solved my problem similiar to Christians solution. Also using a loop for the linear movement of the rips on the belt surface and rotation around the drum on the end.

indrajit.jagtap | Thu, 09/25/2014 - 09:42

I was trying to setup the apron conveyor. I came across this forum topic. I set up the case using surface_vel for plane. I used single STL file for rib, which is fixed and unfixed at appropriate time interval. The speed of this rib is also adjusted to conveyor speed to provide apron conveyor setup.

The input deck snippet is as below:

###########################################################################################################
#A loop is set to run 50 times.
#Conveyor is modeled using surface velocity for plane and motion to ribs.
#Ribs are modeled using single STL file which is fixed and unfixed in a loop at appropriate time interval
#Rib velocity is adjusted to conveyour surface velocity
#For demo case, we need to have 4 ribs at a time on conveyor. Therefore, number 4 below in the loop.
# This can be made variable for actual case.
###########################################################################################################
variable a loop 50
label loop1

if '$a > 4' then &
'variable b equal $a-4' &
"unfix movecadrib$b" &
"unfix granwallrib$b" &
"unfix cadrib$b" &
'print "B = $b"' &
'variable b delete'

fix cadrib$a all mesh/surface file rib1.stl type 1 curvature 1e-05

fix granwallrib$a all wall/gran/hertz/history mesh n_meshes 1 meshes cadrib$a &
tangential_damping on rolling_friction cdt cohesion off
dump dmp_geomrib$a all mesh/vtk 1000 Post/cleated-program-1_cad-rib_*.vtk id

fix movecadrib$a all move/mesh mesh cadrib$a linear 2.0 0.0 0.0
run 5000

undump dmp_geomrib$a

next a
jump apron-conveyor-input.txt loop1
###########################################################################################################