Book Image

Extending and Modifying LAMMPS Writing Your Own Source Code

By : Dr. Shafat Mubin, Jichen Li
Book Image

Extending and Modifying LAMMPS Writing Your Own Source Code

By: Dr. Shafat Mubin, Jichen Li

Overview of this book

LAMMPS is one of the most widely used tools for running simulations for research in molecular dynamics. While the tool itself is fairly easy to use, more often than not you’ll need to customize it to meet your specific simulation requirements. Extending and Modifying LAMMPS bridges this learning gap and helps you achieve this by writing custom code to add new features to LAMMPS source code. Written by ardent supporters of LAMMPS, this practical guide will enable you to extend the capabilities of LAMMPS with the help of step-by-step explanations of essential concepts, practical examples, and self-assessment questions. This LAMMPS book provides a hands-on approach to implementing associated methodologies that will get you up and running and productive in no time. You’ll begin with a short introduction to the internal mechanisms of LAMMPS, and gradually transition to an overview of the source code along with a tutorial on modifying it. As you advance, you’ll understand the structure, syntax, and organization of LAMMPS source code, and be able to write your own source code extensions to LAMMPS that implement features beyond the ones available in standard downloadable versions. By the end of this book, you’ll have learned how to add your own extensions and modifications to the LAMMPS source code that can implement features that suit your simulation requirements.
Table of Contents (21 chapters)
1
Section 1: Getting Started with LAMMPS
4
Section 2: Understanding the Source Code Structure
11
Section 3: Modifying the Source Code

Writing a fix to apply a 2D spring force

This is the list of changes that are made to the source code:

  • The new files that are created are fix_addforceXY.cpp and fix_addforceXY.h.
  • The existing files that have been modified are fix_addforce.cpp and fix_addforce.h.
  • The methods that are modified are constructor, init(), and post_force().
  • The input parameters are x0, y0, kx, and ky.
  • Other quantities that are introduced are kxstr[], kystr[], kxstyle, kystyle, kxvar, kyvar, and ework[].
  • The LAMMPS syntax is fix FIX_NAME GROUP addforceXY x0 y0 zvalue kx ky (we will look at this syntax shortly in this section).

In this section, we will write a fix that applies a 2D, non-radially symmetric spring force on an atom directed toward a specified point.

Theory (2D spring force)

In this setup, we have an atom in a 2D system at location (x, y) that experiences a force pointing toward a point that depends on the spring constants and in the x and y directions...