|
| 1 | +<?xml version="1.0"?> |
| 2 | +<CLBConfig version="2.0" permissive="true" output="output/"> |
| 3 | + <Units> |
| 4 | + <Param name="H" value="1m" gauge="32"/> |
| 5 | + <Param name="L" value="1x" gauge="1m"/> |
| 6 | + <Param name="nu" value="1m2/s" gauge="0.16"/><!-- 1s --> |
| 7 | + <Param name="rho" value="1kg/m3" gauge="1"/> |
| 8 | + </Units> |
| 9 | + <Geometry nx="1x" ny="1m+2" nz="1x" px="-0.5x" py="-1" pz="-0.5x"> |
| 10 | + <BGK><Box/></BGK> |
| 11 | + <MovingWall_N mask="ALL" name="topwall"><Box dy="-1"/></MovingWall_N> |
| 12 | + <Wall mask="ALL"><Box ny="1"/></Wall> |
| 13 | + </Geometry> |
| 14 | + <Model> |
| 15 | + <Param name="VelocityX" value="1m/s" zone="topwall"/> |
| 16 | + <RemoteForceInterface integrator="LAMMPS" radius="3/m" height="1m/m" length="1x/m" iterations="5s" vtk_it="1s" log_it="100"> |
| 17 | + units cgs |
| 18 | + boundary p f f |
| 19 | + newton off # required off for tangential history |
| 20 | + atom_style sphere |
| 21 | + atom_modify map array |
| 22 | + atom_modify sort 1 0.4 |
| 23 | + communicate single vel yes |
| 24 | + processors * 1 1 |
| 25 | + |
| 26 | + neighbor 0.006 bin # ensure skin distance + rp_lrg + rp_sml > dp_lrg |
| 27 | + neigh_modify delay 0 |
| 28 | + |
| 29 | + # Declare domain |
| 30 | + variable len2 equal ${length}*0.5 |
| 31 | + region domain block -${len2} ${len2} 0 ${height} -${len2} ${len2} |
| 32 | + create_box 1 domain |
| 33 | + |
| 34 | + # Specify particle groups |
| 35 | + group particle_group type 1 |
| 36 | + |
| 37 | + # Define region for particle insertion |
| 38 | + region pack block -${len2} ${len2} 0 ${height} -${len2} ${len2} |
| 39 | + |
| 40 | + # Insert particles |
| 41 | + fix part_1 particle_group particletemplate/sphere 17891 atom_type 1 density constant 1.0 radius constant ${radius} |
| 42 | + fix dist particle_group particledistribution/discrete 18143 1 part_1 1 |
| 43 | + fix ins particle_group insert/pack seed 100003 distributiontemplate dist maxattempt 500 insert_every once overlapcheck yes all_in yes region pack volumefraction_region 0.30000 check_dist_from_subdomain_border no |
| 44 | + run 1 |
| 45 | + |
| 46 | + # Specify particle groups |
| 47 | + group particle_group type 1 |
| 48 | + |
| 49 | + # Define material properties (from which kn kt etc. are calculated for hertz interactions) |
| 50 | + soft_particles yes |
| 51 | + fix m1 all property/global youngsModulus peratomtype 30000.000000 # defines kn, kt, gamma_n, gamma_t |
| 52 | + fix m2 all property/global poissonsRatio peratomtype 0.5 # defines kn, kt, gamma_n, gamma_t |
| 53 | + fix m3 all property/global coefficientRestitution peratomtypepair 1 0.8 # defines damping, must be >0.05 |
| 54 | + fix m4 all property/global coefficientFriction peratomtypepair 1 0.5 # defines friction |
| 55 | + |
| 56 | + fix topwall all mesh/surface/stress file example/data/plane1x1.stl type 1 scale ${length} rotate axis 1 0 0 angle 90 move -${len2} ${height} -${len2} surface_vel 1 0 0 |
| 57 | + fix bottomwall all mesh/surface/stress file example/data/plane1x1.stl type 1 scale ${length} rotate axis 1 0 0 angle 90 move -${len2} 0 -${len2} |
| 58 | + |
| 59 | + # Define physics for particle interactions |
| 60 | + pair_style gran model hertz tangential history # 'tangential off' sets Ft=0; 'tangential no_history' incorporates damping to Ft, sets kt=0; 'tangential history' incorporate kt and damping into Ft |
| 61 | + pair_coeff * * |
| 62 | + |
| 63 | + fix granwalls all wall/gran model hertz tangential history mesh n_meshes 2 meshes topwall bottomwall |
| 64 | + |
| 65 | + # Apply integration |
| 66 | + fix integr particle_group nve/sphere |
| 67 | + |
| 68 | + # Couple to TCLB |
| 69 | + fix tclb all external pf/callback 1 1 |
| 70 | + |
| 71 | + variable time equal step*dt |
| 72 | + variable tfx equal f_topwall[1] |
| 73 | + variable tfy equal f_topwall[2] |
| 74 | + variable tfz equal f_topwall[3] |
| 75 | + variable bfx equal f_bottomwall[1] |
| 76 | + variable bfy equal f_bottomwall[2] |
| 77 | + variable bfz equal f_bottomwall[3] |
| 78 | + dump forces all mesh/vtk ${vtk_it} ${output}_wall_*.vtk output interpolate id stress stresscomponents |
| 79 | + fix forceslog all print ${log_it} "${time},${tfx},${tfy},${tfz},${bfx},${bfy},${bfz}" file ${output}_forces.csv title "t,tFx,tFy,tFz,bFx,bFy,bFz" screen no |
| 80 | + |
| 81 | + dump vtk_dump all atom/vtk ${vtk_it} ${output}_part_*.vtu |
| 82 | + |
| 83 | + |
| 84 | + timestep ${timestep} |
| 85 | + |
| 86 | + run ${iterations} |
| 87 | + </RemoteForceInterface> |
| 88 | + </Model> |
| 89 | + <!-- <VTK Iterations="1000" what="U,Solid"/> --> |
| 90 | + <!-- 10s 1.8m/s 0.01Pa 1/Pa--> |
| 91 | + <Log Iterations="100"/> |
| 92 | + <VTK Iterations="5s"/> |
| 93 | + <Solve Iterations="5s"/> |
| 94 | +</CLBConfig> |
0 commit comments