From 4f5e9b3c2450125964007a5b0dc81181f64171e5 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 4 Dec 2009 00:35:23 +0000 Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@3500 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/compute_com.cpp | 56 +++++++++++++++++++++++++++++++++++++++++++++ src/compute_com.h | 34 +++++++++++++++++++++++++++ src/style.h | 2 ++ 3 files changed, 92 insertions(+) create mode 100644 src/compute_com.cpp create mode 100644 src/compute_com.h diff --git a/src/compute_com.cpp b/src/compute_com.cpp new file mode 100644 index 0000000000..62e08cec6b --- /dev/null +++ b/src/compute_com.cpp @@ -0,0 +1,56 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "compute_com.h" +#include "update.h" +#include "group.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeCOM::ComputeCOM(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg) +{ + if (narg != 3) error->all("Illegal compute msd command"); + + vector_flag = 1; + size_vector = 3; + extvector = 0; + + vector = new double[3]; +} + +/* ---------------------------------------------------------------------- */ + +ComputeCOM::~ComputeCOM() +{ + delete [] vector; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeCOM::init() +{ + masstotal = group->mass(igroup); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeCOM::compute_vector() +{ + invoked_vector = update->ntimestep; + + group->xcm(igroup,masstotal,vector); +} diff --git a/src/compute_com.h b/src/compute_com.h new file mode 100644 index 0000000000..d07254465c --- /dev/null +++ b/src/compute_com.h @@ -0,0 +1,34 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifndef COMPUTE_COM_H +#define COMPUTE_COM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeCOM : public Compute { + public: + ComputeCOM(class LAMMPS *, int, char **); + ~ComputeCOM(); + void init(); + void compute_vector(); + + private: + double masstotal; +}; + +} + +#endif diff --git a/src/style.h b/src/style.h index fb7e3cf016..e869920a85 100644 --- a/src/style.h +++ b/src/style.h @@ -78,6 +78,7 @@ CommandStyle(write_restart,WriteRestart) #ifdef ComputeInclude #include "compute_centro_atom.h" #include "compute_cna_atom.h" +#include "compute_com.h" #include "compute_coord_atom.h" #include "compute_displace_atom.h" #include "compute_group_group.h" @@ -105,6 +106,7 @@ CommandStyle(write_restart,WriteRestart) #ifdef ComputeClass ComputeStyle(centro/atom,ComputeCentroAtom) ComputeStyle(cna/atom,ComputeCNAAtom) +ComputeStyle(com,ComputeCOM) ComputeStyle(coord/atom,ComputeCoordAtom) ComputeStyle(displace/atom,ComputeDisplaceAtom) ComputeStyle(group/group,ComputeGroupGroup)