mphowardlab / mphowardlab/azplugins

SLLOD Algorithm

Open
#35 10 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C++
Stars
27
Forks
18
Avg merge
1h 8m
Merged PRs (30d)
1

Description

To implement the SLLOD algorithm for a homogeneous linear planar (Couette) shear flow, we need:

  1. a triclinic box deforming from -45 deg to +45 deg and flipping back in a periodic way
  2. each particle leaving the box in gradient direction at the bottom needs to get +shear_rate to its velocity, the ones leaving at the top need to get -shear_rate
  3. A thermostat which applies a gradient field consistent with box deformation and thermal fluctuations relative to the gradient
  4. And of course correct equations of motion.

Since these things are all tightly coupled together, only one class should be written: a SLLOD IntegrationMethodTwoStep. See TwoStepLangevinFlow for an example. The box can be updated to the current deformation based on the time step internally in the integrator, probably at the end of step 1, with a call to pdata->setGlobalBox(). When the integration of the equations of motion (i.e., update the positions) is done in step 1, the velocity wrapping for crossing pbcs can also be applied inside the integrator. If the box gets updated in step 1, then the forces will be computed before step 2 using the deformed box shape, correctly capturing the relative motion of the boxes.

The common convention in azplugins is to use z as gradient direction and x as flow direction (see RNEMD implementation).

The lammps implementation can be used as a model, see documentation and corresponding source code

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading hoomd/md/IntegrationMethodTwoStep.h and the linked TwoStepLangevinFlow example, then compare azplugins/ReversePerturbationFlow.h with the LAMMPS fix_nvt_sllod.cpp source and documentation. Done means a single SLLOD IntegrationMethodTwoStep implements the listed box deformation, boundary velocity updates, thermostat, and equations of motion using the stated shear convention.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
hpc
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.