diff --git a/src/change_box.cpp b/src/change_box.cpp new file mode 100644 index 0000000000000000000000000000000000000000..471b167914138e8fcc1ea52bcccb9dd23c00217b --- /dev/null +++ b/src/change_box.cpp @@ -0,0 +1,63 @@ +/* ---------------------------------------------------------------------- + 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 "string" +#include "change_box.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "output.h" +#include "error.h" + +using namespace LAMMPS_NS; + +enum{ORTHO,TRICLINIC}; + +/* ---------------------------------------------------------------------- */ + +ChangeBox::ChangeBox(LAMMPS *lmp) : Pointers(lmp) {} + +/* ---------------------------------------------------------------------- */ + +void ChangeBox::command(int narg, char **arg) +{ + if (domain->box_exist == 0) + error->all("Change_box command before simulation box is defined"); + if (narg != 1) error->all("Illegal change_box command"); + + int style; + if (strcmp(arg[0],"ortho") == 0) style = ORTHO; + else if (strcmp(arg[0],"triclinic") == 0) style = TRICLINIC; + + if (style == ORTHO && domain->triclinic == 0) + error->all("Change_box operation is invalid"); + if (style == TRICLINIC && domain->triclinic == 1) + error->all("Change_box operation is invalid"); + if (style == ORTHO && + (domain->xy != 0.0 || domain->yz != 0.0 || domain->xz != 0.0)) + error->all("Cannot change box to orthogonal when tilt is non-zero"); + + if (output->ndump) + error->all("Cannot change box with dumps defined"); + for (int i = 0; i < modify->nfix; i++) + if (modify->fix[i]->no_change_box) + error->all("Cannot change box with certain fixes defined"); + + if (style == ORTHO) domain->triclinic = 0; + else domain->triclinic = 1; + domain->xy = domain->yz = domain->xz = 0.0; + + domain->set_global_box(); + if (style == TRICLINIC) domain->set_lamda_box(); + domain->set_local_box(); +} diff --git a/src/change_box.h b/src/change_box.h new file mode 100644 index 0000000000000000000000000000000000000000..1dcc5d963493e25e07a171ae1a4c5d2e4ef1cbd5 --- /dev/null +++ b/src/change_box.h @@ -0,0 +1,29 @@ +/* ---------------------------------------------------------------------- + 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 CHANGE_BOX_H +#define CHANGE_BOX_H + +#include "pointers.h" + +namespace LAMMPS_NS { + +class ChangeBox : protected Pointers { + public: + ChangeBox(class LAMMPS *); + void command(int, char **); +}; + +} + +#endif diff --git a/src/fix.cpp b/src/fix.cpp index 4d05902476a77ef57eb700f1f26865470e726f8b..1a50c866433814908a038740b22a9c0a176ab69d 100644 --- a/src/fix.cpp +++ b/src/fix.cpp @@ -41,7 +41,7 @@ Fix::Fix(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) pressure_every = 0; rigid_flag = 0; virial_flag = 0; - no_convert_box = 0; + no_change_box = 0; comm_forward = comm_reverse = 0; neigh_half_once = neigh_half_every = 0; diff --git a/src/fix.h b/src/fix.h index 475b79afe4ae5173040b1a2db0f2842270a30685..551358dc492cdf8f576e20d51a64e8bf99c6488f 100644 --- a/src/fix.h +++ b/src/fix.h @@ -33,7 +33,7 @@ class Fix : protected Pointers { int pressure_every; // how often fix needs virial computed int rigid_flag; // 1 if Fix integrates rigid bodies, 0 if not int virial_flag; // 1 if Fix contributes to virial, 0 if not - int no_convert_box; // 1 if cannot swap ortho <-> triclinic + int no_change_box; // 1 if cannot swap ortho <-> triclinic int comm_forward; // size of forward communication (0 if none) int comm_reverse; // size of reverse communication (0 if none) diff --git a/src/fix_ave_spatial.cpp b/src/fix_ave_spatial.cpp index d3eeeca4ee34661f3f9a8fb95559399d1072e239..d52e4124e5924cf32fc989fc32717b473c08e251 100644 --- a/src/fix_ave_spatial.cpp +++ b/src/fix_ave_spatial.cpp @@ -42,7 +42,7 @@ FixAveSpatial::FixAveSpatial(LAMMPS *lmp, int narg, char **arg) : { if (narg < 11) error->all("Illegal fix ave/spatial command"); - no_convert_box = 1; + no_change_box = 1; nevery = atoi(arg[3]); nfreq = atoi(arg[4]); diff --git a/src/fix_deform.cpp b/src/fix_deform.cpp index 0b41f1b0c14d968a4caf7a5035cf9a3dcb19b650..4ec2510f668248b2324975e03ed0086b6e97433d 100644 --- a/src/fix_deform.cpp +++ b/src/fix_deform.cpp @@ -45,7 +45,7 @@ FixDeform::FixDeform(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) if (narg < 4) error->all("Illegal fix deform command"); box_change = 1; - no_convert_box = 1; + no_change_box = 1; nevery = atoi(arg[3]); if (nevery <= 0) error->all("Illegal fix deform command"); diff --git a/src/style.h b/src/style.h index c751146496933eb80c0a5a758bdcb1fa6087a31c..785d68e56025d918bbcbc852ee2d368e86f91421 100644 --- a/src/style.h +++ b/src/style.h @@ -36,7 +36,7 @@ AtomStyle(hybrid,AtomVecHybrid) #endif #ifdef CommandInclude -#include "convert_box.h" +#include "change_box.h" #include "create_atoms.h" #include "create_box.h" #include "delete_atoms.h" @@ -56,7 +56,7 @@ AtomStyle(hybrid,AtomVecHybrid) #endif #ifdef CommandClass -CommandStyle(convert_box,ConvertBox) +CommandStyle(change_box,ChangeBox) CommandStyle(create_atoms,CreateAtoms) CommandStyle(create_box,CreateBox) CommandStyle(delete_atoms,DeleteAtoms)