###################################Header for General commands####################################################### atom_style granular #Simulation of particles boundary p p p #fixed boundaries -> particles will be deleted if leaving the simulation box x, y, z units si communicate single vel yes #default newton off #default ###################################System variables################################################################## #Definition of boundaries #variable xmin equal -0.3 #variable xmax equal 0.3 #variable ymin equal -0.6 #variable ymax equal 0.6 #variable zmin equal -0.6 #variable zmax equal 0.6 variable xmin equal -3 variable xmax equal 3 variable ymin equal -3 variable ymax equal 3 variable zmin equal -3 variable zmax equal 3 #Definition of the timestep variable dt equal 0.00001 #timestep = 0.0001 second; Each iteration step represents 0.0001 seconds. ###################################Specific variables for current simulation######################################### variable natoms equal 2 #1 -> particle #2->drum parts ####variable for material properties#### ####Young Modulus#### variable youngmodulus1 equal 5e8 #N/mm² variable youngmodulus2 equal 5e8 #N/mm² ####Poission ratio#### variable poission1 equal 0.3 variable poission2 equal 0.3 ####variable for contact properties#### ####coefficient of restitution#### variable CoR11 equal 0.6 variable CoR12 equal 0.6 variable CoR21 equal 0.6 variable CoR22 equal 0.6 ####sliding friction coefficient#### variable sf11 equal 0.5 variable sf12 equal 0.5 variable sf21 equal 0.5 variable sf22 equal 0.5 ####rolling friction coefficient#### variable rf11 equal 0.5 variable rf12 equal 0.5 variable rf21 equal 0.5 variable rf22 equal 0.5 ####variable for particle#### #Number of particle radius variable nradii equal 2 variable radius1 equal 0.1 #m variable radius2 equal 0.08 #m variable frac1 equal 0.20 #20% variable frac2 equal 0.80 #80% variable density equal 2500 #kg/m³ ####filling parameters#### variable filltime equal 50 #seconds #filltime to generate the particles variable fillmass equal 500 #kg #total mass of bulk material variable fillmassrate equal ${fillmass}/${filltime} #kg/s #mass rate for the particle generation variable fillsteps equal ${filltime}/${dt} #Transform time to iteration steps variable rotatime equal 100 #seconds #rotatime: how long will the drum rotate variable rotasteps equal ${rotatime}/${dt} #Transform time to iteration steps ####screw velocities#### variable drumPeriod equal 5 #s #Period of the drum rotation (time for 1 rotation) ###################################Defini/tion of simulationbox####################################################### region reg block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units box create_box 2 reg neighbor 0.004 bin #default neigh_modify every 1 check yes neigh_modify delay 0 #default #################################Definition of the contact models#################################################### #pair_style gran model hertz tangential history rolling_friction epsd2 #contact model pair_style gran model hertz tangential history tangential_damping on limitForce off pair_coeff * * #default timestep ${dt} fix integrator all nve/sphere #default fix gravi all gravity 9.81 vector 0.0 0.0 -1.0 #gravity of 9.81 m/s² in negative z direction ###################################Definition of Material properties################################################# fix m1 all property/global youngsModulus peratomtype ${youngmodulus1} ${youngmodulus2} fix m2 all property/global poissonsRatio peratomtype ${poission1} ${poission2} fix m3 all property/global coefficientRestitution peratomtypepair ${natoms} 0.6 0.6 0.6 0.6 fix m4 all property/global coefficientFriction peratomtypepair ${natoms} ${sf11} ${sf12} ${sf21} ${sf22} fix m5 all property/global coefficientRollingFriction peratomtypepair ${natoms} ${rf11} ${rf12} ${rf21} ${rf22} ###################################Generation and Loading of the Geometry .stl####################################### #fix Drum all mesh/surface file meshes/Drum.stl type 2 #scale 0.001 #Load Drum #fix Front all mesh/surface file meshes/Front.stl type 2 #scale 0.001 #Load Front face of the drum #fix Back all mesh/surface file meshes/Back.stl type 2 #scale 0.001 #Load Back face of the drum fix Drum all mesh/surface file meshes/SAGMill.stl type 2 #scale 0.001 #Load Drum fix Front all mesh/surface file meshes/SAGMillEndcap.stl type 2 #scale 0.001 #Load Front face of the drum fix walls all wall/gran model hertz tangential history rolling_friction epsd2 mesh n_meshes 2 meshes Drum Front ###################################Generation and Insertion of the particles######################################### fix pts1 all particletemplate/sphere 49979693 atom_type 1 density constant ${density} radius constant ${radius1} fix pts2 all particletemplate/sphere 67867979 atom_type 1 density constant ${density} radius constant ${radius2} fix pdd1 all particledistribution/discrete 86028121 ${nradii} pts1 ${frac1} pts2 ${frac2} #fix pdd1 all particledistribution/discrete/numberbased 32452867 ${nradii} pts1 ${frac1} pts2 ${frac2} fix ins_mesh all mesh/surface/planar file meshes/Insertionsface.stl type 1 scale 0.9 fix ins all insert/stream seed 86028157 distributiontemplate pdd1 & mass ${fillmass} massrate ${fillmassrate} overlapcheck yes all_in yes vel constant 0 0 -0.75 & insertion_face ins_mesh extrude_length 0.5 ###################################Dumping of the data for post-processing to visualize############################ shell mkdir post #Definition of the dumptime variable dumptime equal 0.05 # Every 0.05 s 1 image , timestep = 0.0001 second; Each iteration step represents 0.0001 seconds variable dumpstep equal ${dumptime}/${dt} #Transform to iteration steps #======= ID ========== variable nom string SAG012 #===================== #compute cpt all wall/gran/local force #compute cpt2 all reduce sum c_cpt[1] compute cout all pair/gran/local id force compute cwall all wall/gran/local id force dump dmpfrc all local ${dumpstep} particles/dump.force_*.liggghts c_cout[1] c_cout[2] c_cout[3] c_cout[4] c_cout[5] c_cout[6] dump dmpfrcw all local ${dumpstep} wall/dump.wall_*.liggghts c_cwall[1] c_cwall[2] c_cwall[3] c_cwall[4] c_cwall[5] c_cwall[6] dump dmpparticle all custom ${dumpstep} post/particles_*.liggghts id type x y z vx vy vz fx fy fz radius mass dump dmpDrum all mesh/stl ${dumpstep} post/Drum*.stl Drum #dump Drum dump dmpFront all mesh/stl ${dumpstep} post/Front*.stl Front #dump Front face #dump dmpBack all mesh/stl ${dumpstep} post/Back*.stl Back #dump Back face variable acc atom sqrt(fx*fx+fy*fy+fz*fz)/mass variable mv atom sqrt(vx*vx+vy*vy+vz*vz) variable ke atom (mass*v_mv*v_mv)/2 dump dmp all custom/vtk ${dumpstep} post/chute_*.vtk id type type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz v_acc mass radius v_mv v_ke dump dumpstress all mesh/gran/VTK ${dumpstep} post/mesh_*.vtk stress wear dump dmp0 all custom ${dumpstep} all/dump*.data id type x y z vx vy vz fx fy fz omegax omegay omegaz v_acc mass radius v_mv v_ke fix ts_check all check/timestep/gran ${dumpstep} 0.1 0.1 thermo_style custom step cpu atoms ke f_ts_check[1] f_ts_check[2] #f_ressort # ke thermo ${dumpstep} #####################################Thermo Dynamic #################################### #thermo_style custom step cpu atoms ke f_t[1] f_t[2] #f_ressort # ke #thermo 1000 ####################################RUN the simulation filling and rotation########################################################### fix MoveDrum all move/mesh mesh Drum rotate origin 0 0 0 axis 0. 1. 0. period ${drumPeriod} #Rotation of drum fix MoveFront all move/mesh mesh Front rotate origin 0 0 0 axis 0. 1. 0. period ${drumPeriod} #Rotation of front face #fix MoveBack all move/mesh mesh Back rotate origin 0 0 0 axis 1. 0. 0. period ${drumPeriod} #Rotation of #back face run ${rotasteps} run ${fillsteps} unfix ins