Prepare GPUMD mechanics-type workflows: friction, deposition, impact, and other group-based interface simulations. Use when the user needs `add_spring`, ghost-atom setups, layered 2D material shearing, deposition event sampling, or impact/collision dynamics.
Use this subskill for workflows where the physics is dominated by groups, fixed atoms, external drivers, or interface events rather than bulk equilibrium dynamics.
Covered targets:
Not covered (route elsewhere):
gpumd/transportgpumd/diffusiongpumd/phononheat_lan (Langevin) on a thermostat layer and fix 0 or
add_spring ghost_atom on driver layers.Pattern adapted from 31_Nanoribbon_friction. See
assets/examples/friction/run.in.
potential gr_bn_mos2.ilp
potential nep.txt
velocity 300
time_step 1
# group 0: ghost driver layer (external spring)
# group 1: thermostatted layer
# group 2: production layer
# group 3: fixed bottom
ensemble heat_lan 300 100 0 1 2 # Langevin only on group 1
fix 3 # freeze group 3 completely
add_spring ghost_atom 0 100.0 0.0 0.0 0.0 0 0.0005 0.0 0.0
dump_thermo 100
dump_exyz 10000 0 0
run 1000000
potential — may be listed more than once to combine intralayer + interlayer
potentials (e.g. nep.txt for the layers themselves and an ILP file for the
interlayer term).heat_lan T tau groups...
fix 3
add_spring ghost_atom g k x0 y0 z0 axis v0 vx vy
g and a ghost
atom that moves with velocity (vx, vy, vz). This drives shear motion.group:I:M columns in model.xyz.Post-process the spring force from thermo.out or a group-resolved dump
to recover the friction coefficient.
Pattern adapted from 16_Deposition and 27_Carbon_Cu111_deposition.
potential nep.txt
velocity 300
time_step 1
# group 0: bottom fixed substrate
# group 1: thermostatted substrate
# group 2: free surface / deposition target
ensemble heat_lan 300 100 0 1
fix 0
dump_thermo 100
dump_exyz 1000 0 0
run 100000
For actual deposition events the tutorial ships a deposition.py helper
that repeatedly inserts atoms above the slab and resumes the GPUMD run.
Expose it to the user rather than reinventing a deposition loop.
Key rules:
Use initial-velocity conditions on a group:
velocity 300
# after this point the user re-initializes a subset of atoms with a large
# directed velocity via a model.xyz vel:R:3 column, or with a second
# `velocity` call targeted at a group
ensemble nve
dump_thermo 100
dump_exyz 100 0 0
run 20000
The tutorial example uses a prepared initial model.xyz with directed
vel:R:3 columns on the projectile group, rather than modifying velocities
mid-run.
Groups are declared by adding one or more group:I:M columns to the
Properties header of model.xyz:
Properties=species:S:1:pos:R:3:group:I:1
Each group:I:M is a distinct grouping scheme. The M tells GPUMD how
many columns make up this grouping.
The upstream add_groups tool under GPUMD/tools/Analysis_and_Processing
can assign groups automatically from spatial criteria.
Read when needed:
model.xyz that matches the intended physicsrun.in with explicit thermostat / fix / spring / driver blocksfix: https://gpumd.org/gpumd/input_parameters/fix.htmladd_spring: https://gpumd.org/gpumd/input_parameters/add_spring.htmlheat_lan: https://gpumd.org/gpumd/input_parameters/ensemble.html16_Deposition, 20_Impact, 21_Fatigue,
27_Carbon_Cu111_deposition, 31_Nanoribbon_friction