How to achieve rotation and translation of a sphere at the same time

I want to implement the rotation and translation of the sphere at the same time, but fix Move Rotate and Fix Linear don’t work at the same time。I wonder if there is a proper way to achieve this movement。

It is extremely difficult to make a specific suggestion on such a vague description, thus please provide a minimal example input deck showing translation and rotation that you want to achieve (just comment out one of the two).

Hello, I am glad to get your reply! I want to achieve both rotation and translation of the hemispherical abrasive grain.Currently, I can only implement to achieve one type of motion, and cannot use rotation and translation together.I am also sending you a case study and look forward to receiving your guidance.

units metal
dimension 3
boundary p p p
atom_style atomic
neighbor 1.0 bin
neigh_modify every 1 delay 0 #check yes
timestep 0.004

#create atom
region     box block -200 800 -80 80 -20 255 units box
create_box  1 box 
lattice      fcc 3.615

#region
#up
region       hi-above block -50 50 -50 50 100 137 units box
region       hi-asperity sphere 0 0 137 30 units box
region       hi-sphere intersect 2 hi-asperity hi-above

#create_atoms
create_atoms    1 region hi-sphere

mass        * 63.546

#group

group      hi-sphere region hi-sphere
#group      hi-sphere type 1

#initial velocity
compute asp hi-sphere temp
velocity hi-sphere create 300 482748 temp asp

#pair_style
pair_style eam
pair_coeff    * * cuu3.eam

#min_style   cg
#minimize 1.0e-14 1.0e-16 10000 10000
#neigh_modify every 1 delay 5 check yes

#fix
fix   2 hi-sphere nve
fix   3 hi-sphere temp/rescale 500 300 300 0.1 1
fix_modify 3 temp asp

thermo           500

#variable
#variable     X equal step*0.004*1
#fix           5 hi-sphere move linear 1.0 0.0 0.0 units box
fix           6 hi-sphere move rotate 0.0 0.0 137.0 0.0 0.0 1.0 20.0
dump      1 all atom 100 dump.cu75dR10

neigh_modify every 1 delay 5
run 1000

#fix           6 hi-sphere move linear 1.0 0.0 0.0 units box

run          105000

Please note that there is an issue with your input example: you are applying a time integration and a thermostat to the fix move group. Fix move does its own update of positions and velocities and thus its group of atoms must not overlap with those of other time integration fixes.

If you want to do regular time integration and induce a translational and rotational motion you need to use fix addforce and fix addtorque, but that is not the same as what fix move would do.

To implement both translation and rotation in fix move, the source code of fix move needs to be extended to include such a combined motion. But that is rather straightforward to do by “cloning” the code for the rotation and adding the translation on top of that. I have just done this and included it in a pull request for LAMMPS on GitHub: Misc changes by stanmoore1 · Pull Request #3199 · lammps/lammps · GitHub

If you feel adventurous, you can download a snapshot of the updated source code from: https://github.com/lammps/lammps/archive/refs/heads/misc.zip
and compile an updated LAMMPS version with the new feature included.

the fix move command in your input would then be something like:

fix 6 hi-sphere move transrot $(1.0/3.615) 0.0 0.0 0.0 0.0 137.0 0.0 0.0 1.0 20.0